urve25519 é o mais alto nível de função Diffie-Hellman disponível para uma ampla variedade de cenários, projetado pelo Professor Daniel J. Bernstein. Em criptografia, Curve25519 é uma curva elíptica que oferece segurança de 128 bits e foi projetada para uso com o esquema de negociação de chaves Diffie-Hellman (ECDH) de curvas elípticas. É uma das curvas ECC mais rápidas e não é coberta por nenhuma patente conhecida.
Dada a chave de 32 bytes do usuário, a curva25519 calcula a chave pública de 32 bytes do usuário. Considerando a chave pública de 32 bytes desse usuário e a de 32 bytes de outro usuário, a curva25519 calcula uma chave compartilhada de 32 bytes para ambos os usuários usarem. Esse segredo pode então ser usado para autenticar e criptografar informações para ambos os usuários.
2. Baixar e compilar Curve25519
A biblioteca curve25519 calcula a função curve25519 em uma velocidade muito alta. A biblioteca possui uma ampla variedade de aplicações. Você pode e deve aplicá-lo no seu próprio programa em vez de vincular a uma biblioteca compartilhada; O código compilado tem cerca de 16KB, dependendo da CPU.
Baixar e compilar
Baixar
compilar
3. Use Curve25519
Para qualquer programa C que use curve25519, modifique o programa para incluir curve25519.h e modifique o makefile para vincular o programa a curve25519.a e declarar que o programa depende de curve25519.a e curve25519.h.
Chaves de computação
Internamente, para gerar uma chave curva25519 de 32 bytes, primeiro gerar um segredo de 32 bytes aleatórios a partir de uma fonte de segurança criptográfica: mysecret[0], mysecret[1], ..., mysecret[31]. Então faça o seguinte: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; Gerar uma chave Curve25519 de 32 bytes: mysecret[0], mysecret[1], ..., mysecret[31].
No futuro, a versão da biblioteca suportará uma função de compressão curve25519_ que comprime 128 bytes de hashing em 32 bytes, adicionando alguma proteção contra geradores de números aleatórios insuficientes; Uma função de curve25519_ clamp que converte 32 bytes em uma chave; e uma combinação mais fácil de usar de curve25519_ funções de geração de chaves, que convertem diretamente 128 bytes em chaves.
Chaves públicas de cálculo
Para gerar uma chave pública de 32 bytes que corresponda à chave de 32 bytes mypublic[0], mypublic[1], ..., mypublic[31], chame a função curve25519(meupublico, meusecreto, basepoint); onde o ponto base constante é:
const não assinado char basepoint[32] = {9}; Versões futuras da biblioteca suportarão funções públicas curve25519_ mais concisas.
Gerar uma chave compartilhada
Dado o nome de outro usuário de Curve25519 chave pública hispublic[0], hispublic[1], ..., hispublic[31], chamada
curve25519(compartilhado, meusegredo, seu público); Gerar chaves compartilhadas de 32 bytes compartilhadas[0], compartilhadas[1], ..., compartilhadas[31]. Outra pessoa pode gerar a mesma chave compartilhada com base na sua própria chave privada, assim como na sua chave pública. Assim, ambos podem hashar essa chave compartilhada e usar o resultado como chave, por exemplo, para Poly1305-AES. Versões futuras da biblioteca suportarão uma função de extensão curve25519_ que faz hash direto de uma chave de 32 bytes para gerar 128 bytes como chave, sendo a mais fácil de usar, uma combinação curve25519_ função compartilhada.
4. Referência
[Ed25519 e Curve25519 explicados]O login do hiperlink está visível. [Curva25519 criptografia e descriptografia e uso ED25519 de assinaturas]O login do hiperlink está visível. [ED25519]O login do hiperlink está visível. [Implementação de ED25519 Android]O login do hiperlink está visível. [[ED25519 Implementação em C]O login do hiperlink está visível. [ed25519 Implementação em Java]O login do hiperlink está visível.
Original:O login do hiperlink está visível. |