xKyberCrypto
xKyberCrypto es una biblioteca que busca resolver inicialmente cifrado post-cuántico en fluter basándose en el algoritmo de Kyber, implementada en Dart. Esta biblioteca proporciona funcionalidades de generación de claves, cifrado y descifrado, diseñadas para aplicaciones que requieren alta seguridad criptográfica.
Características
- Generación de pares de claves públicas y privadas mediante el algoritmo Kyber.
- Cifrado de mensajes usando una clave pública para producir una clave compartida.
- Descifrado de mensajes cifrados usando una clave privada para recuperar la clave compartida.
- Generación de ruido determinístico seguro utilizando AES en modo CTR.
Instalación
Para instalar esta biblioteca en tu proyecto de Dart, agrega xkyber_crypto
como dependencia en tu archivo pubspec.yaml
:
dependencies:
xkyber_crypto:
git:
url: https://github.com/xscriptorcodexkyber_crypto.git
dart pub get
import 'dart:typed_data';
import 'package:xkyber_crypto/xkyber_crypto.dart';
void main() {
final xkyber = XKyberCryptoBase();
// Generación de claves pública y privada
final keyPair = xkyber.generateKeyPair();
print('Clave pública: ${keyPair.publicKey}');
print('Clave privada: ${keyPair.privateKey}');
// Mensaje de ejemplo a cifrar
final mensaje = Uint8List.fromList([1, 2, 3, 4, 5, 6, 7, 8]);
// Cifrado utilizando la clave pública
final ciphertext = xkyber.encrypt(mensaje, keyPair.publicKey.coefficients);
print('Mensaje cifrado: $ciphertext');
// Descifrado utilizando la clave privada
final mensajeDescifrado = xkyber.decrypt(ciphertext, keyPair.privateKey.coefficients);
print('Mensaje descifrado: $mensajeDescifrado');
// Generación de ruido determinístico
final seed = Uint8List.fromList([0, 1, 2, 3, 4, 5, 6, 7]);
final ruido = xkyber.generateNoise(seed);
print('Ruido determinístico generado: $ruido');
}
Este ejemplo muestra:
Cómo generar un par de claves pública y privada.
Cómo cifrar y descifrar un mensaje.
Cómo generar ruido determinístico seguro.
API
XKyberCryptoBase
La clase principal para interactuar con la biblioteca xKyberCrypto. Proporciona los siguientes métodos:
generateKeyPair(): Genera un par de claves públicas y privadas.
encrypt(Uint8List message, Uint8List publicKey): Cifra un mensaje usando la clave pública.
decrypt(List<int> ciphertext, Uint8List privateKey): Descifra un mensaje cifrado usando la clave privada.
generateNoise(Uint8List seed): Genera ruido determinístico a partir de una semilla.
Contribuciones
Las contribuciones son bienvenidas. Para contribuir:
Haz un fork de este repositorio.
Crea una rama nueva para tus cambios (git checkout -b feature/nueva-funcionalidad).
Realiza los cambios y haz commit (git commit -m 'Añade nueva funcionalidad').
Sube los cambios a tu repositorio (git push origin feature/nueva-funcionalidad).
Abre un Pull Request en este repositorio.
Licencia
Este proyecto está licenciado bajo la licencia MIT. Esta implementación de cifrado está inspirada en el algoritmo de Kyber y cumple con sus estándares para cifrado post-cuántico.
Libraries
- coefficients_codec
- constant_time_comparison
- deterministic_noise_generator
- hash_utils
- kyber_kem
- kyber_keypair
- kyber_logic
- modular_arithmetic
- noise_generator
- ntt
- polynomial
- polynomial_compression
- xkyber_crypto
- Support for doing something awesome.