Criptografia com chaves assimétricas  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
jordy
Thread.start()
[Avatar]

Membro desde: 24/09/2003 14:47:22
Mensagens: 37
Localização: Brasília/DF
Offline

Olá pessoal,
Estou precisando fazer um esquema de criptografia com chaves assimétricas combinada com assinatura digital em java, ou seja, um lado manda um texto criptografado e assinado digitalmente e o outro recebe, valida a assinatura digital e descriptografa o texto. Já li o tutorial do GUJ sobre segurança, mas o que estou precisando é algo mais especifico. Alguém já implementou algo do tipo ou tem alguma idéia do caminho que devo seguir??
Obrigado.
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Sem querer ser chato, mas já sendo.

Se voce quer fazer simplesmente para aprender como é, perfeito, caso voce esteja planejando usar isso em uma aplicação real ai vão algumas dicas:

Aprenda com protocolos já estabelecidos, vide SSH, TLS, PKCS #11 e #13 (acho que são esses 2), IPSEC e Kerberos.
Verifique se o seu protocolo sabe lidar com problema como replay atack, key escrow, eaves dropping, man-on-middle e data injection.
O melhor protocolo do mundo mal implementado é tão ruim quanto o pior feito de forma correta.


Ok, aqui vão algumas dicas para como projetar seu protocolo:

Utilize geradores seguros de números aleatorios.
Faça a troca de chaves via um método conhecido, IKE me vem a cabeça alem do PKCS #?? que trata disso
Ele tem que ter controle digesting e sequencing.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
jordy
Thread.start()
[Avatar]

Membro desde: 24/09/2003 14:47:22
Mensagens: 37
Localização: Brasília/DF
Offline

louds,
Valeu pelas dicas. Não achei que você foi chato, toda informação contribui para o enriquecimento da discussão.
Na verdade estou me interessando agora pelo assunto de criptografia, então os meus conceitos não estão muito bem fundamentados, mas o objetivo mesmo é aprender como fazer isso na linguaguem que estou programando atualmente, no caso, java. Vou pesquisar as siglas e os conceitos que você passou, mas voltando agora ao java em si, no caso do algoritmo de criptografia, eu preciso implementar na mão ou existe alguma classe que faz isso?
Obrigado mais uma vez.
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Louds,

você é irmão mais novo do Kevin Mitnick?

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Não Daniel, mas com segurança ou você tem tudo ok, ou não tem; como a primeira opção é ingenuidade ou mentira, para poder falar no assunto sem muito medo de errar você nunca pode ficar para traz. Fora que isso é um assunto que eu interesso muito.

jordy, é sempre chato falar, "não invente, use algo já testado e provado", isso porque é trivial cometer algum erro trabalhando com segurança.

Quanto a fazer oque voce quer, agora eu li direito seu post, da uma olhada no PGP, ele criptografa e assina uma mensagem usando RSA.

Eu já implementei RSA em java para um projeto da faculdade, criptografar e assinar é trivial de se implementar, só que infelizmente eu perdi esse trabalho de 1 ano atraz.

Por sinal, eu sugiro voce começar a entender sistemas de chave pública pelo RSA, que, de longe, é o algoritmo mais facil, Diffie-Hellman (que usa logaritmos discretos) e sistemas de curvas elípticas são muito chatos de aprender. Nesse site www.rsa.com voce acha alguns bons pdf's falando como funciona, qual a mágica, e uma implementação em C.


PS: Daniel, eu tenho o livro do Mitnick, já lí umas duas vezes pelo menos, já lí todos livros sobre ele também, os 2 do john markoff e o do littman, e assisti o filme que fala sobre o meliante, Freedom Downtime.
PS2: Tirando o livro do Kevin, não recomendo nenhum dos itens acima.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Vou tentar ler o do Mitnick... valeu pelas dicas.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Só uma coisa, o livro do Kevin falar sobre o fator humano na segurança apenas, fala muito sobre engenharia social.

Um autor que eu recomendo sempre é o Bruce Schneier, fundador da www.counterpane.com, autor da melhor newsletter mensal de segurança e vários livros sobre criptografia e segurança.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Bom, como segurança (termos técnicos) não é meu interesse, ler o livro do Mitnick seria mesmo interessante.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

O `Trues and Lies`do Schneier é outra boa pedida.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Já ouviu falar do tal de Kimble (www.kimble.org), um alemão, ex-hacker e lunático que ficou milhardário com uma empresa de segurança?

Ele tem algumas extravagâncias a lá Larry Elison tbm.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
jordy
Thread.start()
[Avatar]

Membro desde: 24/09/2003 14:47:22
Mensagens: 37
Localização: Brasília/DF
Offline

Valeu louds, já tenho um bom indicativo por onde começar a estudar.
ozielneto
JavaEvangelist
[Avatar]

Membro desde: 21/03/2003 23:05:48
Mensagens: 485
Localização: Assis - SP
Offline

Olá..

Sugiro você estudar todo o modelo de Segurança da JRE!

Somente criptografia assimétrica baseada em PKI não resolve..

NO J2EE a segurança tbm deve estar distribuida.

Veja aqui..

http://java.sun.com/docs/books/tutorial/security1.2/index.html
http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Security.html

Use as APIs de Java para facilitar a sua vida.. Não vale a pena ficar estudando como implementar a criptografia, mas como fazer bom uso dela..

[]'s

Arquitetor Sênior e Consultor de TI
Web Site
e-mail
[Email] [WWW] [MSN]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Oziel, voce anda vendo muitos gnomos ultimamente.

Ninguém aqui falou em J2EE, por que ai é muito mais prático e seguro utilizar a infra do container.


Use as APIs de Java para facilitar a sua vida.. Não vale a pena ficar estudando como implementar a criptografia, mas como fazer bom uso dela..


Isso foi uma declaração de ingenuidade ou oque? Segurança e criptografia tem que ser levadas muito a sério e ter um profundo conhecimento do que esta sendo feito para somente assim fazer direito. Ponto, não existe atalho nem API que te resolva o problema.

Com o JCE e o Security Framework voce pode agilizar a geração de chaves, assinaturas, e blocos criptografados, porem se voce não utilizar isso de forma segura, teu sistema está tão seguro quanto se tivesse usado plain text direto.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team