296장. XML Security DataFormat
Camel 버전 2.0에서 사용 가능
XMLSecurity Data Format은 Document, Element 및 Element Content 수준에서 XML 페이로드의 암호화 및 암호 해독을 용이하게 합니다(simil을 사용한 동시 다중 노드 암호화/암호 해독 포함). XML 서명 사양을 사용하여 메시지에 서명하려면 Camel XML Security 구성 요소를 참조하십시오.
암호화 기능은 Apache XML Security(Santuario) 프로젝트를 사용하여 지원되는 형식을 기반으로 합니다. 대칭 암호화/암호화는 현재 Triple-DES 및 AES(128, 192, 256) 암호화 형식을 사용하여 지원됩니다. 필요에 따라 나중에 추가 형식을 쉽게 추가할 수 있습니다. 이 기능을 사용하면 Camel 사용자가 경로를 통해 디스패치되거나 수신되는 동안 페이로드를 암호화/암호 해독할 수 있습니다.
Camel 2.9부터 사용 가능: XMLSecurity Data Format은 비대칭 키 암호화를 지원합니다.
이 암호화 모델에서 대칭 키가 생성되어 XML 콘텐츠 암호화 또는 암호 해독을 수행하는 데 사용됩니다. 그러면 이 "컨텐츠 암호화 키"는 수신자의 공개 키를 "키 암호화 키"로 활용하는 비대칭 암호화 알고리즘을 사용하여 자체적으로 암호화됩니다. 비대칭 키 암호화 알고리즘을 사용하면 수신자의 개인 키 소유자만 생성된 대칭 암호화 키에 액세스할 수 있습니다. 따라서 개인 키 소유자만 메시지를 디코딩할 수 있습니다. XMLSecurity Data Format은 비대칭 키 암호화를 사용하여 메시지 콘텐츠 및 암호화 키를 암호화하고 해독하는 데 필요한 모든 논리를 처리합니다.
XMLSecurity Data Format은 암호화를 위해 콘텐츠를 선택하는 Cryostat 쿼리를 처리할 때 네임스페이스에 대한 지원도 향상되었습니다. 네임스페이스 정의 매핑은 데이터 형식 구성의 일부로 포함될 수 있습니다. 이렇게 하면 Cryostat 쿼리의 접두사 값과 대상 xml 문서가 동일한 문자열이 아닌 경우에도 true 네임스페이스 일치가 활성화됩니다.
296.1. XMLSecurity Options
XML Security dataformat은 아래에 나열된 13가지 옵션을 지원합니다.
이름 | 기본 | Java Type | 설명 |
---|---|---|---|
xmlCipherAlgorithm |
|
| XML 메시지 콘텐츠의 암호화/암호 해독에 사용할 암호화 알고리즘입니다. 사용 가능한 선택 사항은 다음과 같습니다. XMLCipher.TRIPLEDES XMLCipher.AES_128 XMLCipher.AES_128_GCM XMLCipher.AES_192 XMLCipher.AES_192_GCM XMLCipher.AES_256 XMLCipher.AES_256_GCM XMLCipher.SEED_128 XMLCipher.CAMELLIA_GCM XMLCipher XMLCipher.CAMELLIA_192 XMLCipher.CAMELLIA_256 기본값은 MLCipher.TRIPLEDES입니다. |
passPhrase |
| 콘텐츠를 암호화/암호 해독하기 위해 passPhrase로 사용되는 문자열. passPhrase를 제공해야 합니다. passPhrase를 지정하지 않으면 기본 passPhrase가 사용됩니다. passPhrase를 적절한 암호화 알고리즘과 함께 사용해야 합니다. 예를 들어 TRIPLEDES를 사용하여 passPhase는 유일한 다른 24 Cryostat 키일 수 있습니다. | |
passPhraseByte |
| 콘텐츠를 암호화/암호 해독하기 위해 passPhrase로 사용되는 바이트입니다. passPhrase를 제공해야 합니다. passPhrase를 지정하지 않으면 기본 passPhrase가 사용됩니다. passPhrase를 적절한 암호화 알고리즘과 함께 사용해야 합니다. 예를 들어 TRIPLEDES를 사용하여 passPhase는 유일한 다른 24 Cryostat 키일 수 있습니다. | |
secureTag |
| 암호화/암호 해독을 위해 선택한 XML Element에 대한 Cryostat 참조입니다. 태그를 지정하지 않으면 전체 페이로드가 암호화/암호화됩니다. | |
secureTagContents |
|
| XML Element를 암호화할지 또는 XML Element false = Element Level true = Element Content Level의 내용을 지정하는 부울 값입니다. |
keyCipherAlgorithm |
|
| 비대칭 키의 암호화/암호 해독에 사용할 암호화 알고리즘입니다. 사용 가능한 선택 사항은 다음과 같습니다. XMLCipher.RSA_v1dot5 XMLCipher.RSA_OAEP.RSA_OAEP_11 기본값은 XMLCipher.RSA_OAEP입니다. |
recipientKeyAlias |
| 비대칭 키 암호화 또는 암호 해독을 수행할 때 KeyStore에서 수신자의 공개 또는 개인 키를 검색할 때 사용할 키 별칭입니다. | |
keyOrTrustStoreParametersId |
| 보낸 사람의 trustStore 또는 수신자의 keyStore를 나타내는 KeyStore 인스턴스를 생성하고 로드하는 데 사용되는 KeyStore 인스턴스를 레지스트리의 조회를 나타냅니다. | |
keyPassword |
| KeyStore에서 개인 키를 검색하는 데 사용할 암호입니다. 이 키는 비대칭 암호 해독에 사용됩니다. | |
digestAlgorithm |
|
| RSA OAEP 알고리즘과 함께 사용할 다이제스트 알고리즘입니다. 사용 가능한 선택 사항은 XMLCipher.SHA1 XMLCipher.SHA256 XMLCipher.SHA512입니다. 기본값은 XMLCipher.SHA1입니다. |
mgfAlgorithm |
|
| RSA OAEP 알고리즘과 함께 사용할 MGF 알고리즘입니다. 사용 가능한 선택 사항은 EncryptionConstants.MGF1_SHA1 EncryptionConstants.MGF1_SHA256 EncryptionConstants.MGF1_SHA512 입니다. 기본값은 EncryptionConstants.MGF1_SHA1입니다. |
addKeyValueForEncryptedKey |
|
| EncryptedKey 구조에서 세션 키를 KeyValue로 암호화하는 데 사용되는 공개 키를 추가할지 여부입니다. |
contentTypeHeader |
|
| 데이터 형식이 이렇게 할 수 있는 경우 데이터 형식의 형식으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식의 애플리케이션/xml은 XML로 마샬링하거나 데이터 형식의 경우 JSon으로 마샬링하는 애플리케이션/json의 경우 애플리케이션/json입니다. |
296.1.1. 키 Cipher 알고리즘
Camel 2.12.0부터 기본 Key Cipher Algorithm은 이제 XMLCipher.RSA_OAEP 대신 XMLCipher.RSA_v1dot5입니다. XMLCipher.RSA_v1dot5의 사용은 다양한 공격으로 인해 권장되지 않습니다. RSA v1.5를 키 암호화 알고리즘으로 사용하는 요청은 키 암호화 알고리즘으로 명시적으로 구성되지 않는 한 거부됩니다.