sgcCrypto: Una Nueva Biblioteca de Criptografía para Delphi y C++ Builder | eSeGeCe Blog

sgcCrypto: Una Nueva Biblioteca de Criptografía para Delphi y C++ Builder

· Componentes
biblioteca de criptografía sgcCrypto para Delphi y C++ Builder

sgcCrypto es una nueva biblioteca de criptografía de propósito general para Delphi y C++ Builder: 43 unidades en Object Pascal puro que cubren cifrado simétrico, hashing, firmas digitales, PKI e intercambio de claves post-cuántico. No hay componentes de tiempo de diseño, ni clases Tsgc*, ni nada que arrastrar a un formulario. Se añade una unidad a la cláusula uses y se llama a una función, igual que se llamaría a una rutina de la RTL.

sgcCrypto se incluye gratis con sgcWebSockets Standard, Professional y Enterprise, así que si ya tiene alguna de esas licencias, o All-Access, ya la tiene, sin nada nuevo que instalar ni pedir. También se vende como paquete independiente, con el runtime de sgcWebSockets Core incluido, para los clientes que solo tienen Core o ninguna licencia de sgcWebSockets.

Cómo Funciona

Cada unidad exporta funciones y procedimientos sencillos que reciben TBytes y devuelven TBytes. No hay ningún objeto de contexto que reservar, ninguna interfaz que implementar ni ningún sgcCrypto_Reg.pas, porque no hay nada que registrar. El código fuente completo en Pascal se incluye con cada licencia, de modo que una primitiva se puede recorrer paso a paso en su propio depurador en lugar de desaparecer dentro de una DLL o un binding de OpenSSL.

Nada en la biblioteca depende de una biblioteca externa. Cada algoritmo, desde AES hasta los esquemas de firma post-cuánticos, está implementado directamente en la unidad que lo expone, y el mismo código fuente compila sin cambios desde Delphi 7 hasta RAD Studio 13, para Win32, Win64, Linux64, macOS, iOS y Android.

uses
  sgcCrypto_Random, sgcCrypto_AES, sgcCrypto_Keccak, sgcCrypto_Ed25519,
  sgcCrypto_MLKEM;

var
  vKey, vIV, vPlain, vAAD, vTag, vCipher: TBytes;
  vDigest, vSeed, vSignature, vMessage: TBytes;
  vPublicKey, vPrivateKey, vSharedSecret, vCiphertext: TBytes;
begin
  // AES-256-GCM: authenticated encryption in one call
  vKey    := sgcRandomBytes(32);
  vIV     := sgcRandomBytes(12);
  vPlain  := TEncoding.UTF8.GetBytes('confidential payload');
  vCipher := sgcAES_GCM_Encrypt(vKey, vIV, vPlain, vAAD, vTag);

  // SHA-3-256, one call, no context object to manage
  vDigest := sgcSHA3_256(vPlain);

  // Ed25519: sign a message
  vSeed      := sgcRandomBytes(32);
  vMessage   := TEncoding.UTF8.GetBytes('sign me');
  vSignature := sgcEd25519_Sign(vSeed, vMessage);

  // ML-KEM-768: post-quantum key encapsulation (FIPS 203)
  sgcMLKEM_GenerateKeyPair(mlkem768, vPublicKey, vPrivateKey);
  sgcMLKEM_Encapsulate(mlkem768, vPublicKey, vCiphertext, vSharedSecret);
end;

Cifrado Simétrico y AEAD

sgcCrypto_AES cubre CBC, GCM y CTR. sgcCrypto_Modes añade ECB, OFB, CFB, CTS con robo de texto cifrado, y AES Key Wrap y Key Wrap with Padding (RFC 3394 y RFC 5649), y sgcCrypto_CMAC es AES-CMAC. sgcCrypto_ChaCha implementa ChaCha20, XChaCha20, Salsa20 y XSalsa20, y sgcCrypto_Poly1305 combina Poly1305 con ellos en los cifrados AEAD ChaCha20-Poly1305 y XChaCha20-Poly1305 de RFC 8439. Cada etiqueta de autenticación, ya sea de GCM o de Poly1305, se compara en tiempo constante, de modo que una verificación fallida nunca revela lo cerca que estaba el intento.

Hashing, Derivación de Claves y MACs

sgcCrypto_SHA2 y sgcCrypto_Keccak cubren SHA-1/2, SHA-3, SHAKE, cSHAKE y KMAC, y sgcCrypto_Blake2b/Blake2s añaden BLAKE2. sgcCrypto_HMAC es autenticación de mensajes con clave. Para convertir una contraseña en una clave están sgcCrypto_KDF (PBKDF2), sgcCrypto_HKDF, sgcCrypto_Scrypt y sgcCrypto_Argon2, que implementa las tres variantes de Argon2, d, i e id, la ganadora de la Password Hashing Competition. sgcCrypto_SipHash ofrece un hash rápido con clave para claves de tablas hash, y sgcCrypto_TLSH es un hash de similitud difusa, útil para detección de casi duplicados más que como resumen criptográfico.

Firmas, Intercambio de Claves y PKI

sgcCrypto_Ed25519 y sgcCrypto_Ed448 firman y verifican, y sgcCrypto_X25519 y sgcCrypto_X448 realizan el intercambio de claves Diffie-Hellman correspondiente. sgcCrypto_ECCurves añade ECDSA y ECDH sobre secp256k1 y las tres curvas Brainpool con nonces deterministas RFC 6979, y sgcCrypto_RSA_Keys cubre la generación de claves RSA de cualquier longitud en bits, cifrado OAEP y firmas PSS.

En el lado de PKI, sgcCrypto_X509 analiza un certificado, verifica que fue firmado por un emisor dado, recorre y verifica una cadena, y comprueba una CRL para revocación. sgcCrypto_X509_Gen genera desde cero un certificado X.509 autofirmado o un CSR PKCS#10, incluyendo nombres alternativos del sujeto, uso de clave y restricciones de longitud de ruta de CA, sobre un escritor DER construido exactamente para eso.

Criptografía Post-Cuántica

sgcCrypto también implementa los tres estándares post-cuánticos del NIST. sgcCrypto_MLKEM es encapsulación de claves FIPS 203 en los tres conjuntos de parámetros, ML-KEM-512, 768 y 1024, con rechazo implícito ante un texto cifrado malformado, de modo que una entrada incorrecta nunca revela información. sgcCrypto_MLDSA es firma FIPS 204, ML-DSA-44/65/87, y sgcCrypto_SLHDSA es FIPS 205 en los seis conjuntos de parámetros SHAKE. Como una suposición basada en retículos es más joven que las curvas elípticas, sgcCrypto_MLKEM_Hybrid combina un secreto X25519 con un secreto ML-KEM en una única clave compartida, el patrón de migración híbrido hacia el que converge la industria.

Disponibilidad

sgcCrypto se incluye gratis con sgcWebSockets Standard, Professional y Enterprise, y con All-Access. Si ya tiene alguna de esas licencias, las 43 unidades ya están en su instalador, sin necesidad de pedido aparte. Si solo tiene sgcWebSockets Core, o ninguna licencia de sgcWebSockets, sgcCrypto también se vende como paquete independiente con el runtime de Core incluido. Cada licencia, ya sea incluida o independiente, incluye el código fuente completo en Pascal y un año de actualizaciones.

Puede consultar la referencia completa de unidades y probarlo usted mismo en la página del producto sgcCrypto.

¿Preguntas o comentarios? Contáctenos, recibirá respuesta de las personas que escribieron el código.