Escolhendo Métodos de Decriptografia para a Ligação de Consumidor
Para configurar o cliente para decriptografia de resposta para ligação do consumidor, especifique quais métodos de algoritmo de transformação e dados usar quando o cliente decriptografar as mensagens SOAP.
Antes de Iniciar
Antes de concluir estas etapas, leia as informações de criptografia XML para familiarizar-se com a criptografia e a decriptografia das mensagens SOAP.
Para concluir a configuração da decriptografia para proteger as mensagens SOAP, é necessário concluir as seguintes tarefas:
- Configurar a decriptografia das partes da mensagem SOAP
- Especificar os métodos de decriptografia.
É possível configurar os métodos de decriptografia utilizando as APIs WSSDecryption e WSSDecryptPart. Ou, também é possível configurar os conjuntos de política utilizando o console administrativo para configurar os métodos de decriptografia.
Sobre Esta Tarefa
Algumas das definições relacionadas à criptografia são baseadas na especificação XML-Encryption. As seguintes informações definem alguns termos relacionados à criptografia de dados.
- Algoritmo do Método de Criptografia de Dados
- Os algoritmos de criptografia de dados especificam o URI (Identificador
Uniforme de Recursos) do algoritmo do método de criptografia de dados. Este algoritmo criptografa e decriptografa os dados em blocos de tamanho fixo
de vários octetos.
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.
- Algoritmo do Método de Criptografia de Chaves
- Os algoritmos de criptografia de chave especificam o URI (Identificador
Uniforme de Recursos) do algoritmo do método de criptografia de chave. O algoritmo representa os algoritmos de criptografia de chave pública que são
especificados para criptografar e decriptografar as chaves. Por padrão, o algoritmo RSA_OAEP utiliza o algoritmo de compilação de mensagens SHA1 para computar uma compilação de mensagens como parte da operação de criptografia. Opcionalmente, você pode utilizar o algoritmo de compilação de mensagem SHA256 ou SHA512 ao especificar uma propriedade do algoritmo de criptografia de chave. O nome da propriedade é: com.ibm.wsspi.wssecurity.enc.rsaoaep.DigestMethod. O valor da propriedade é um dos seguintes URIs do método de compilação:
- 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.
Importante: É possível configurar este método de compilação e as propriedades OAEPParams apenas no lado do gerador. Do lado do consumidor, estas propriedades são lidas a partir da mensagem SOAP recebida.Para os algoritmos de criptografia KW_AES256 e KW_AES192, você deve fazer download dos arquivos de políticas irrestrito do JCE a partir do seguinte website: http://www.ibm.com/developerworks/java/jdk/security/index.html.
Importante: O país de origem pode restringir a importação, posse, uso ou a reexportação para outro país de software de criptografia. Antes de fazer o download ou de usar os arquivos de políticas não-restritas, você deverá consultar as leis do seu país, as regulamentações e as políticas referentes à importação, posse, uso e reexportação do software criptografado para determinar se ele é permitido.
Para concluir a configuração de decriptografia, você deve especificar o URI (Identificador Uniforme de Recursos) do algoritmo e seu tipo de uso. Se o URI for utilizado para vários tipos de uso, você terá que definir o URI para cada tipo de uso. O WebSphere Application Server suporta os seguintes tipos de uso de decriptografia:
Tipos de Uso | Description |
---|---|
Criptografia de Dados | Especifica o URI do algoritmo utilizado para criptografia e decriptografia de dados. Criptografa e decriptografa os dados em blocos de tamanho fixo de vários octetos. |
Criptografia de Chave | Especifica o URI do algoritmo utilizado para criptografia e decriptografia da chave de criptografia. |
Para configurar os algoritmos de parte decriptografada e de decriptografia, utilize as APIs WSSDecryption e WSSDecryptPart ou configure os conjuntos de política utilizando o console administrativo.
- Utilize a API WSSDecryption para configurar o algoritmo de criptografia de dados e os métodos do algoritmo de criptografia de chave.
- Utilize a API WSSDecryptPart para configurar um método do algoritmo de transfomação.
O processo WSS API conclui as seguintes etapas de alto nível para especificar quais métodos de algoritmo de parte criptografada e decriptografada usar ao configurar o cliente para decriptografia de resposta:
Procedimento
Resultados
Exemplo
O seguinte exemplo fornece o código da WSS API de amostra para decriptografar o conteúdo do corpo bem como alterar a criptografia de dados e os algoritmos de criptografia de chave dos valores padrão:
// Obter o contexto da mensagem
Object msgcontext = getMessageContext();
// Gerar a instância do WSSFactory
WSSFactory factory = WSSFactory.getInstance();
// Gerar a instância do WSSConsumingContext
WSSConsumingContext gencont = factory.newWSSConsumingContext();
// Gerar o manipulador de retorno de chamada
X509ConsumeCallbackHandler callbackHandler = new
X509ConsumeCallbackHandler(
"",
"enc-sender.jceks",
"jceks",
"storepass".toCharArray(),
"alice",
"keypass".toCharArray(),
"CN=Alice, O=IBM, C=US");
// Gerar a instância do WSSDecryption
WSSDecryption dec = factory.newWSSDecryption(X509Token.class,
callbackHandler);
// Configurar os candidatos para o método de criptografia de dados
// DEFAULT : WSSDecryption.AES128
dec.addAllowedEncryptionMethod(WSSDecryption.AES128);
dec.addAllowedEncryptionMethod(WSSDecryption.AES192);
// Configurar os candidatos para o método de criptografia de chave
// DEFAULT : WSSDecryption.KW_RSA_OAEP
dec.addAllowedKeyEncryptionMethod(WSSDecryption.KW_TRIPLE_DES);
// Incluir o WSSDecryption no WSSConsumingContext
concont.add(dec);
// Validar o cabeçalho do WS-Security
concont.process(msgcontext);