Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 1525|Resposta: 3

Algoritmo de criptografia Curve25519

[Copiar link]
Postado em 2025-2-12 17:05:02 | | | |
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.




Anterior:Plugin de Assistência ao Desenvolvimento de Código VS Angular Série 18 (Trinta e Um)
Próximo:Supercomputador pessoal de IA do Projeto NVIDIA DIGITS
 Senhorio| Postado em 2025-2-12 17:07:50 |
Código de implementação .NET/C#:


Teste




Curve25519.cs (31 KB, Número de downloads: 1, 售价: 10 粒MB)
Postado em 2025-2-13 16:26:18 |
Parece bom, apoie.
Postado em 2025-2-14 09:51:22 |
Parece bom, apoie
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com