Métodos de Criptografia
Para configurações de ligação do gerador de pedidos, os métodos de criptografia incluem a especificação dos algoritmos de criptografia de chave e de dados a ser utilizada para criptografar a mensagem de SOAP. A WSS API para criptografia (WSSEncryption) especifica o nome do algoritmo e o URI (Identificador Uniforme de Recursos) do algoritmo correspondente para os métodos de criptografia de chave e de dados. Se os algoritmos de criptografia de chave e de dados estiverem especificados, somente os elementos criptografados com esses algoritmos serão aceitos.
Algoritmos de Criptografia de Dados
O algoritmo de criptografia de dados é utilizado para criptografar partes da mensagem, inclusive o corpo e a assinatura. Os algoritmos de criptografia de dados especificam o URI do algoritmo para cada tipo de algoritmos de criptografia de dados.
Nome do algoritmo de criptografia de dados | URI de Algoritmo |
---|---|
WSSEncryption.AES128 (valor padrão) | Um URI do algoritmo de criptografia de dados, AES 128: http://www.w3.org/2001/04/xmlenc#aes128-cbc |
WSSEncryption.AES192 | Um URI do algoritmo de criptografia de dados, AES 192: http://www.w3.org/2001/04/xmlenc#aes192-cbc |
WSSEncryption.AES256 | Um URI do algoritmo de criptografia de dados, AES 256: http://www.w3.org/2001/04/xmlenc#aes256-cbc |
WSSEncryption.TRIPLE_DES | Um URI de algoritmo de criptografia de dados, TRIPLE DES: http://www.w3.org/2001/04/xmlenc#tripledes-cbc |
Por padrão, o JCE (Java™ Cryptography Extension) é fornecido com criptografias de força restritas ou limitadas. Para utilizar algoritmos de criptografia AES (Advanced Encryption Standard) de 192 bits e 256 bits, aplique arquivos de políticas de jurisdição limitada.
Para os algoritmos AES256-cbc e AES192-CBC, você deve fazer download dos arquivos de política Java™ Cryptography Extension (JCE) irrestritos a partir do seguinte website: http://www.ibm.com/developerworks/java/jdk/security/index.html.
O algoritmo de criptografia de dados configurado para a criptografia do gerador deve corresponder ao algoritmo de criptografia de dados configurado para decriptografia do consumidor.
Algoritmos de Criptografia de Chaves
Esse algoritmo é utilizado para criptografar e decriptografar chaves. Estas informações chave são utilizadas para especificar a configuração necessária para gerar a chave para assinatura digital e criptografia. As configurações de informações sobre assinatura e de informações sobre criptografia podem compartilhar as informações chave. As informações chave no consumidor são utilizadas para especificar as informações sobre a chave utilizada para validar a assinatura digital na mensagem recebida ou para decriptografar as partes criptografadas da mensagem. O gerador de pedidos é configurado para o cliente.
Os algoritmos de criptografia de chave especificam o URI (Identificador Uniforme de Recursos) do algoritmo do método de criptografia de chave. Os seguintes algoritmos pré-configurados de criptografia de chave são suportados:
WSS API | URI |
---|---|
WSSEncryption.KW_AES128 | Um URI de algoritmo de criptografia de chave, AES 128 de agrupamento de chave: http://www.w3.org/2001/04/xmlenc#kw-aes128 |
WSSEncryption.KW_AES192 | Um URI de algoritmo de criptografia de chave, AES 192 de agrupamento de chave: http://www.w3.org/2001/04/xmlenc#kw-aes192 Restrição: Não utilize o algoritmo de criptografia de chave de 192 bits se quiser que seu aplicativo configurado seja compatível com o BSP (Basic Security Profile).
|
WSSEncryption.KW_AES256 | Um URI de algoritmo de criptografia de chave, AES 256 de agrupamento de chave: http://www.w3.org/2001/04/xmlenc#kw-aes256 |
WSSEncryption.KW_RSA_OAEP (valor padrão) | Um URI de algoritmo de criptografia de chave, RSA OAEP de agrupamento de chave: http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p |
WSSEncryption.KW_RSA15 | Um URI de algoritmo de criptografia de chave, RSA 1.5 de agrupamento de chave: http://www.w3.org/2001/04/xmlenc#rsa-1_5 |
WSSEncryption.KW_TRIPLE_DES | Um URI de algoritmo de criptografia de chave, agrupamento de chave TRIPLE DES: http://www.w3.org/2001/04/xmlenc#kw-tripledes |
- algorithmName
- keyLength
- http://www.w3.org/2001/04/xmlenc#sha256
- http://www.w3.org/2001/04/xmlenc#sha512
Por padrão, o algoritmo RSA-OAEP utiliza uma cadeia nula para a cadeia em octeto com codificação opcional para o OAEPParams. É possível fornecer uma cadeia em octeto com codificação explícita ao especificar uma propriedade de algoritmo de criptografia de chave. Para o nome da propriedade, é possível especificar com.ibm.wsspi.wssecurity.enc.rsaoaep.OAEPparams. O valor da propriedade é o valor codificado na base 64 da cadeia em octeto.
Para os algoritmos de criptografia de chave KW-AES256 e KW-AES192, você deve fazer download dos arquivos de política JCE irrestritos a partir do seguinte website: http://www.ibm.com/developerworks/java/jdk/security/index.html.
O algoritmo de criptografia de chave para o gerador deve corresponder ao algoritmo de criptografia de chave configurado para o consumidor.
Este exemplo fornece um código de amostra para a criptografia para utilizar Triple DES para o método de criptografia de dados e RSA1.5 para o método de criptografia de chave:
// obter o contexto da mensagem
Object msgcontext = getMessageContext();
// gerar a instância WSSFactory
WSSFactory factory = WSSFactory.getInstance();
// gerar a instância do WSSGenerationContext
WSSGenerationContext gencont = factory.newWSSGenerationContext();
// gerar manipulador de retorno de chamada
X509GenerateCallbackHandler callbackHandler = new X509GenerateCallbackHandler(
"",
"enc-sender.jceks",
"jceks",
"storepass".toCharArray(),
"bob",
null,
"CN=Bob, O=IBM, C=US",
null);
// gera o token de segurança utilizado para a criptografia
SecurityToken token = factory.newSecurityToken(X509Token.class,
callbackHandler);
// gera a instância WSSEncryption para criptografar o conteúdo do corpo de SOAP
WSSEncryption enc = factory.newWSSEncryption(token);
enc.addEncryptPart(WSSEncryption.BODY_CONTENT);
// configura o método de criptografia de dados
// DEFAULT: WSSEncryption.AES128
enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES);
// configura o método de criptografia de chave
// DEFAULT: WSSEncryption.KW_RSA_OAEP
enc.setEncryptionMethod(WSSEncryption.KW_RSA15);
// inclui a WSSEncryption na WSSGenerationContext
gencont.add(enc);
// gerar o cabeçalho WS-Security
gencont.process(msgcontext);