Criptografia e descriptografia (keytool)

Pessoal,

Eu tenho uma dúvida com criptografia e descriptografia, na verdade minha maior dúvida é no caso da descriptografia.

Por exemplo, vamos supor que eu encriptei uma string, gerei meu certificado, gerei a chave pública (X.509).

Minha dúvida é: Como o cliente que tem a chave pública (X.509) vai fazer a descriptografia dos dados?

Eu olhei o tutorial do Daniel Destro e entendi tudo, só não sei como usar esta chave X.509 para fazer o processo inverso.

Alguém tem algum bloco de código usando esta chave?

[]s

Aí vai um link interessante… principalmente pelas imagens toscas que demonstram de forma facil a ideia da criptografia assimetrica.
http://pt.wikipedia.org/wiki/Criptografia_de_chave_pública

  Mas de uma forma geral é o seguinte. Você não manda uma msg criptografada até que a pessoa te de a chave publica dela. A idéia é você dar a chave publica e dizer: "Criptografa a msg com essa chave que te mandei pois apenas eu sei decodificá-la". Em aplicações seguras acontece uma troca de chaves públicas (handshake) para que pc possa possibilitar ao outro pc uma forma de criptografar a msg de forma q apenas o dono da chave privada possa decriptar.

O fato é, a outra pessoa vai saber por já gerei a chave pública para ela.

veja: http://www.guj.com.br/java.tutorial.artigo.141.1.guj

Só preciso saber descriptografar visto que a pessoa já tem com ele a chave pública X.509

[]s

Chave publica = criptografa
Chave privada = descriptografa

Não tem como decriptar se você estiver sem a chave privada.

Putz…

Acho que estou entendendo…

O fluxo seria assim:

1 - Eu tenho a chave pública e privada
2 - Forneço ao meu cliente uma cópia da chave pública (X.509)
3 - Meu cliente criptografa algo e me envia
4 - Eu tenho a chave privada (JKS) consigo descriptografar

Mas ainda tenho uma dúvida, como vou saber que o meu cliente é realmente o meu cliente? Não sei se vc entendeu, como eu sei que ele usou a minha chave?

[]s

Um algoritmo de criptografia por si só não dá subsidios para fazer isto. É necessário usar algum protocolo de comunicação seguro. O SSL é um bom exemplo:
http://en.wikipedia.org/wiki/Secure_Sockets_Layer

O PKCS#7 também é um protocolo para troca de arquivos criptografados:
http://en.wikipedia.org/wiki/PKCS

Tem um esquema usando XML que ajuda a entender também:
http://www.w3.org/TR/xmldsig-core/

[edit] Desculpe, mas o exemplo acima em XML não é bem o que você quer. Isto é para assinatura de mensagem, e não criptografia de mensagem. [/edit]

Em todos os casos, o principio é que junto da mensagem, você envie alguma referencia do certificado que foi usado para criptografar a mensagem. Isto só irá funcionar se for usado algum esquema de controle dos certificados (CA ou PKI), pois se não fica difícil identificar a chave usada.

Aconselho você a estudar sobre assinatura digital também (Digital Signature).

[quote=mauriciorocha665]Chave publica = criptografa
Chave privada = descriptografa

Não tem como decriptar se você estiver sem a chave privada.[/quote]

Mauricio pelo o que vc disse se eu tenho a chave publica posso criptografar uma mensagem, pois meu ws que tenho que me conectar apenas me passaram a chave public, creio que eu mande as informações criptografadas e eles me respondem de forma normal sem criptografica, minha duvida agora é como criptografar uma mensagem depois que tenho a chave publica. Alguem pode me ajudar?

Um algoritmo de criptografia por si só não dá subsidios para fazer isto. É necessário usar algum protocolo de comunicação seguro. O SSL é um bom exemplo:
http://en.wikipedia.org/wiki/Secure_Sockets_Layer

O PKCS#7 também é um protocolo para troca de arquivos criptografados:
http://en.wikipedia.org/wiki/PKCS

Tem um esquema usando XML que ajuda a entender também:
http://www.w3.org/TR/xmldsig-core/

[edit] Desculpe, mas o exemplo acima em XML não é bem o que você quer. Isto é para assinatura de mensagem, e não criptografia de mensagem. [/edit]

Em todos os casos, o principio é que junto da mensagem, você envie alguma referencia do certificado que foi usado para criptografar a mensagem. Isto só irá funcionar se for usado algum esquema de controle dos certificados (CA ou PKI), pois se não fica difícil identificar a chave usada.

Aconselho você a estudar sobre assinatura digital também (Digital Signature).[/quote]

Uma foram seria que do mesmo jeito que vc tem uma chave publica e privada, o teu cliente tambem tenha.

Assim ele fornece a vc a chave publica e vc pode confirmar que é dele mesmo a chave.

Este é o conceito de certificado digital, claro que adicionado mais alguns detalhes.