sgcCrypto : une nouvelle bibliothèque de cryptographie pour Delphi et C++ Builder | eSeGeCe Blog

sgcCrypto : une nouvelle bibliothèque de cryptographie pour Delphi et C++ Builder

· Composants
sgcCrypto cryptography library for Delphi and C++ Builder

sgcCrypto est une nouvelle bibliothèque de cryptographie généraliste pour Delphi et C++ Builder : 43 unités Object Pascal pures couvrant le chiffrement symétrique, le hachage, les signatures numériques, la PKI et l'échange de clés post-quantique. Il n'y a aucun composant à la conception, aucune classe Tsgc* et rien à déposer sur une fiche. Vous ajoutez une unité à votre clause uses et appelez une fonction, exactement comme vous appelleriez une routine de la RTL.

sgcCrypto est fourni gratuitement avec sgcWebSockets Standard, Professional et Enterprise, donc si vous détenez déjà l'une de ces licences, ou All-Access, vous l'avez déjà, rien de nouveau à installer ni à commander. Elle est également vendue comme pack autonome, avec le runtime sgcWebSockets Core inclus, pour les clients qui ne possèdent que Core ou aucune licence sgcWebSockets.

Fonctionnement

Chaque unité exporte des fonctions et procédures simples qui prennent des TBytes en entrée et renvoient des TBytes en sortie. Il n'y a aucun objet de contexte à allouer, aucune interface à implémenter et aucun sgcCrypto_Reg.pas, car il n'y a rien à enregistrer. Le code source Pascal complet est fourni avec chaque licence, de sorte qu'une primitive peut être parcourue pas à pas dans votre propre débogueur au lieu de disparaître dans une DLL ou un binding OpenSSL.

Rien dans la bibliothèque ne dépend d'une bibliothèque externe. Chaque algorithme, d'AES aux schémas de signature post-quantiques, est implémenté directement dans l'unité qui l'expose, et le même code source compile sans modification de Delphi 7 à RAD Studio 13, pour Win32, Win64, Linux64, macOS, iOS et 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;

Chiffrement symétrique et AEAD

sgcCrypto_AES couvre CBC, GCM et CTR. sgcCrypto_Modes ajoute ECB, OFB, CFB, le mode CTS avec vol de texte chiffré, ainsi que l'enveloppement de clé AES avec et sans remplissage (RFC 3394 et RFC 5649), et sgcCrypto_CMAC est l'AES-CMAC. sgcCrypto_ChaCha implémente ChaCha20, XChaCha20, Salsa20 et XSalsa20, et sgcCrypto_Poly1305 associe Poly1305 à ces algorithmes pour former les chiffrements authentifiés ChaCha20-Poly1305 et XChaCha20-Poly1305 de la RFC 8439. Chaque tag d'authentification, qu'il s'agisse de GCM ou de Poly1305, est comparé en temps constant, de sorte qu'une vérification échouée ne révèle jamais à quel point la tentative était proche.

Hachage, dérivation de clés et MAC

sgcCrypto_SHA2 et sgcCrypto_Keccak couvrent SHA-1/2, SHA-3, SHAKE, cSHAKE et KMAC, et sgcCrypto_Blake2b/Blake2s ajoutent BLAKE2. sgcCrypto_HMAC assure l'authentification de messages par clé. Pour transformer un mot de passe en clé, il y a sgcCrypto_KDF (PBKDF2), sgcCrypto_HKDF, sgcCrypto_Scrypt et sgcCrypto_Argon2, qui implémente les trois variantes d'Argon2, d, i et id, la gagnante de la Password Hashing Competition. sgcCrypto_SipHash fournit un hachage rapide à clé pour les clés de table de hachage, et sgcCrypto_TLSH est un hachage de similarité floue, utile pour la détection de quasi-doublons plutôt que comme empreinte cryptographique.

Signatures, échange de clés et PKI

sgcCrypto_Ed25519 et sgcCrypto_Ed448 signent et vérifient, et sgcCrypto_X25519 et sgcCrypto_X448 réalisent l'échange de clés Diffie-Hellman correspondant. sgcCrypto_ECCurves ajoute ECDSA et ECDH sur secp256k1 et les trois courbes Brainpool avec des nonces déterministes selon la RFC 6979, et sgcCrypto_RSA_Keys couvre la génération de clés RSA à n'importe quelle longueur, le chiffrement OAEP et les signatures PSS.

Côté PKI, sgcCrypto_X509 analyse un certificat, vérifie qu'il a été signé par un émetteur donné, parcourt et vérifie une chaîne, et contrôle une CRL pour la révocation. sgcCrypto_X509_Gen génère un certificat X.509 auto-signé ou une CSR PKCS#10 à partir de zéro, y compris les noms alternatifs du sujet, l'usage de la clé et les contraintes de longueur de chemin de la CA, au-dessus d'un générateur DER conçu exactement pour cela.

Cryptographie post-quantique

sgcCrypto implémente également les trois standards post-quantiques du NIST. sgcCrypto_MLKEM est l'encapsulation de clé FIPS 203 sur les trois jeux de paramètres, ML-KEM-512, 768 et 1024, avec rejet implicite en cas de texte chiffré malformé afin qu'une entrée invalide ne révèle jamais d'information. sgcCrypto_MLDSA est la signature FIPS 204, ML-DSA-44/65/87, et sgcCrypto_SLHDSA est le FIPS 205 sur les six jeux de paramètres SHAKE. Comme une hypothèse fondée sur les réseaux euclidiens est plus récente que les courbes elliptiques, sgcCrypto_MLKEM_Hybrid combine un secret X25519 avec un secret ML-KEM en une seule clé partagée, le schéma de migration hybride vers lequel converge l'industrie.

Disponibilité

sgcCrypto est fourni gratuitement avec sgcWebSockets Standard, Professional et Enterprise, et avec All-Access. Si vous détenez déjà l'une de ces licences, les 43 unités sont déjà dans votre installeur, aucune commande séparée n'est nécessaire. Si vous ne possédez que sgcWebSockets Core, ou aucune licence sgcWebSockets, sgcCrypto est également vendue comme pack autonome avec le runtime Core inclus. Chaque licence, incluse ou autonome, est fournie avec le code source Pascal complet et un an de mises à jour.

Vous pouvez consulter la référence complète des unités et l'essayer vous-même sur la page produit sgcCrypto.

Des questions ou des retours ? Contactez-nous, vous recevrez une réponse des personnes qui ont écrit le code.