sgcWebSockets Standard'dan itibaren dahilAyrıca bağımsız olarak satılır
sgcCrypto — Delphi ve C++ Builder için Modern Bir Kriptografi Kütüphanesi
43 saf Object Pascal birimi, bileşen yok, tasarım zamanı izi yok: TBytes içeri girer, TBytes dışarı çıkar. Şifreleme için AES-GCM ve ChaCha20-Poly1305, hashing için SHA-3/BLAKE2/Argon2, imzalar ve anahtar değişimi için Ed25519/X25519/RSA, X.509 sertifika ayrıştırma ve üretimi, ve anahtarları ile sertifikaları diğer her şeyle aynı X.509, PKCS#8 ve PEM dosyalarına giren kuantum sonrası ML-KEM, ML-DSA ve SLH-DSA. Paket ayrıca aynı Object Pascal ile yazılmış, iohNativeTLS ile seçilen ve varsayılan olarak X25519MLKEM768 hibrit anahtar değişimi açık gelen bir TLS 1.3 ve TLS 1.2 motoru da taşır. Her ilkel, uses cümlenize eklediğiniz birimin içinde doğrudan uygulanır: harici bir DLL yoktur, OpenSSL bağlaması yoktur, ve aynı kaynak Delphi 7'den RAD Studio 13'e kadar değişmeden derlenir. sgcCrypto, sgcWebSockets Standard, Professional ve Enterprise ile birlikte ücretsiz gelir, ve yalnızca Core'a sahip müşteriler için de bağımsız olarak satılır (sgcWebSockets Core çalışma zamanını pakete dahil ederek).
3Kuantum sonrası FIPS standardıML-KEM (203), ML-DSA (204), SLH-DSA (205)
2Sahip olma yoluBir sürüme dahil, ya da bağımsız
SATIN ALMADAN ÖNCE
Önce Bilmeye Değer Üç Şey
sgcCrypto'nun ne olduğu, buna zaten sahip olup olmadığınız ve nerede çalıştığı. Üç yanıt da kısa.
sgcCrypto saf fonksiyonlardır, bileşen değil
43 birimin her biri sade fonksiyonlar ve yordamlar dışa aktarır. Bir Tsgc* sınıfı yoktur, hiçbir şey RegisterComponents'lanmaz ve bir sgcCrypto_Reg.pas yoktur. sgcAES_GCM_Encrypt(aKey, aIV, aPlain, aAAD, aTag)'i, herhangi bir RTL fonksiyonunu çağıracağınız şekilde, bir formdan, bir hizmetten, bir konsol uygulamasından veya bir iş parçacığından çağırırsınız.
Tam kaynak kodu her lisansla birlikte gelir, böylece ilkeller bir ikili dosyanın veya bir DLL'in içinde kaybolmak yerine kendi hata ayıklayıcınızda adım adım izlenir.
Sürüm örtüşmesi
Zaten bir sgcWebSockets sürümüne mi sahipsiniz?
sgcCrypto, sgcWebSockets Standard, Professional ve Enterprise'ın içinde, ayrıca All-Access'in içinde, ek bir ücret olmadan gelir. Standard'dan itibaren herhangi bir sürüm lisansına zaten sahipseniz, 43 birimin tamamına zaten sahipsiniz, satın alınacak başka bir şey yoktur.
sgcCrypto, tersi durum için bağımsız olarak da vardır: yalnızca sgcWebSockets Core'a sahipsiniz, ya da hiç sgcWebSockets lisansınız yok, ve tam bir sürüm lisanslamadan kripto birimlerini istiyorsunuz.
Platform kapsamı
sgcCrypto'da platform kısıtlaması yoktur
Yapay zeka veya konuşma paketlerinin aksine, sgcVer.inc içinde sgcCrypto'yu Windows ile sınırlayan hiçbir şey yoktur. Birimler sıradan Object Pascal aritmetiğidir, bu yüzden aynı kaynaktan Win32, Win64, Linux64, macOS, iOS ve Android için derlenirler.
Tek platform-farkındalıklı birim olan sgcCrypto_Random, hedef başına bir CSPRNG arka ucu seçer (Windows'ta BCryptGenRandom, başka yerlerde /dev/urandom), hepsi aynı sgcRandomBytes çağrısının arkasında; böylece kodunuz platforma göre dallanmaz.
KUTUDA NELER VAR
43 Birim, Altı Yetenek Ailesi
Her birim, herhangi bir Delphi 7'den 13'e ya da C++ Builder projesinden çağrılabilen derlenmiş Object Pascal'dır. Harici bir DLL, OpenSSL bağlaması veya kod üreticisi yoktur: ilkeller, uses cümlenize eklediğiniz birimin içinde doğrudan uygulanır.
Simetrik5 birim
AES, ChaCha20 ve üzerine kurulu AEAD yapıları
sgcCrypto_AES, CBC, GCM ve CTR'yi kapsar; sgcCrypto_Modes, ECB, OFB, CFB, şifreli metin çalma (CTS), AES-CCM ve AES Key Wrap / Padding'li Key Wrap'i ekler (RFC 3394 / 5649); sgcCrypto_CMAC, AES-CMAC ve AES-GMAC'tır. sgcCrypto_ChaCha, ChaCha20, XChaCha20, Salsa20 ve XSalsa20'yi uygular, ve sgcCrypto_Poly1305, Poly1305'i bunlarla eşleştirerek RFC 8439'daki ChaCha20-Poly1305 ve XChaCha20-Poly1305 AEAD şifrelerine dönüştürür. AES-CCM, Zigbee'nin, Bluetooth'un ve TLS CCM paketlerinin isim olarak belirttiği AEAD'dir, çünkü blok şifrenin kendisinin ötesinde hiçbir şeye ihtiyaç duymaz, ve CBC ile ECB, başka bir sistemin ne yazdığını okumak zorunda kaldığınız gün için, seçtiğiniz dolgu şemasını (PKCS#7, ANSI X9.23, ISO 7816-4 ve gerisini) alabilir. sgcAES_GCM_Decrypt ve Poly1305 doğrulayıcıları, kimlik doğrulama etiketini sabit zamanda karşılaştırır ve etiket başarısız olduğunda düz metni döndürmeyi reddeder.
sgcCrypto_SHA2 ve sgcCrypto_Keccak, SHA-1/2, SHA-3, SHAKE, cSHAKE ve KMAC'i kapsar; sgcCrypto_Blake2b ve sgcCrypto_Blake2s, BLAKE2'yi ekler. sgcCrypto_HMAC, anahtarlı mesaj kimlik doğrulamasıdır. Bir parolayı bir anahtara dönüştürmek için: sgcCrypto_KDF (PBKDF2), sgcCrypto_HKDF, sgcCrypto_Scrypt ve Argon2'nin üç varyantının tamamını (d, i ve id) uygulayan, Password Hashing Competition kazananı sgcCrypto_Argon2. sgcCrypto_SipHash, hash tablosu anahtarları için hızlı bir anahtarlı hash verir, ve sgcCrypto_TLSH, kriptografik bir özet değil, benzer-yakın tespit için yararlı bir benzerlik-mesafe fonksiyonuna sahip bulanık bir hash'tir.
Ed25519/Ed448, X25519/X448, secp256k1, Brainpool ve RSA
sgcCrypto_Ed25519/Ed448 imzalar ve doğrular; sgcCrypto_X25519/X448, eşleşen Diffie-Hellman'ı yapar. sgcCrypto_ECCurves, yedi eğri üzerinde, secp256k1, üç Brainpool eğrisi ve NIST P-256/P-384/P-521 üzerinde, RFC 6979 deterministik nonce'larıyla ve ham veya DER biçiminde imzalarla ECDSA ve ECDH ekler, ve üstüne, Taproot'un, Nostr'un ve Lightning'in beklediği yalnızca-x açık anahtarlarıyla BIP-340 Schnorr imzalama ekler. sgcCrypto_EC, JOSE odaklı kardeşidir: bir JWS'i doğrudan imzalar ve doğrular, ES256/384/512. sgcCrypto_RSA, bir PEM anahtarından doğrudan PKCS#1 v1.5 ve PSS imzalarını doğrular, ve sgcCrypto_RSA_Keys, herhangi bir bit uzunluğunda anahtar üretimi, OAEP ve PKCS#1 v1.5 şifrelemesi, ve hem PKCS#1 hem de PKCS#8 BEGIN PRIVATE KEY biçiminde DER/PEM dışa aktarımıyla daha da ileri gider. RSA ve EC anahtarları, dışa aktarıldıkları kadar kolayca, DER veya PEM olarak içe de aktarılır; bu yüzden bir kez üretilen bir anahtar, yalnızca sürecin ömrü kadar değil, kaydedilip yeniden yüklenebilir. sgcCrypto_ECIES, bir X25519 genel anahtarına hibrit mühürleme/açma şifrelemesiyle bunu tamamlar.
X.509 sertifikalarını okuyun, doğrulayın ve üretin
sgcCrypto_ASN1, DER ve PEM'i okur ve PKCS#1/SEC 1 anahtarlarını ayrıştırır; sgcCrypto_DER, bir sertifikanın veya CSR'ın ihtiyaç duyduğu her etiketi yazar. sgcCrypto_X509, bir sertifikayı ayrıştırır, belirli bir yayıncı tarafından imzalandığını doğrular, bir zinciri yürüyüp doğrular, bir CSR'ı doğrular ve iptali kontrol etmek için bir CRL'yi ayrıştırır. sgcCrypto_X509_Gen, sıfırdan bir kendinden imzalı sertifika veya bir PKCS#10 CSR üretir, bir CA ise sgcX509_CreateSigned ya da sgcX509_CreateSignedFromCSR ile yayınlar: tam konu ve yayıncı ayırt edici adı, geçerlilik penceresi, yol uzunluğu kısıtlamalı CA bayrağı, anahtar kullanımı bayrakları, genişletilmiş anahtar kullanımı OID'leri ve artık RFC 4291'in herhangi bir metin biçimindeki IPv6 adreslerini de kabul eden IP adresi SAN'ları ile SPIFFE tarzı hizmet kimlikleri için URI SAN'ları dahil konu alternatif adları.
İmzalama artık RSA ve EC ile sınırlı değildir. sgcX509_MLDSAKey ve sgcX509_SLHDSAKey, kuantum sonrası bir anahtarı sgcX509_CreateSelfSignedEx ve sgcX509_CreateCSREx için sarmalar, böylece bir sertifika ya da bir CSR ML-DSA veya SLH-DSA ile imzalanabilir. Bir CA ayrıca, imzalayamayan bir ML-KEM genel anahtarını da sertifikalandırabilir (RFC 9935); bu durumda sahiplik başka bir yolla kanıtlanmalıdır. Okuma tarafında TsgcX509PublicKeyType türüne x509pkMLDSA, x509pkSLHDSA ve x509pkMLKEM eklendi, ve sgcX509_VerifyChain artık basicConstraints yol uzunluğunu ve nameConstraints uzantısını dNSName, iPAddress, rfc822Name, uniformResourceIdentifier ve directoryName üzerinde zorunlu kılar; üretim tarafında bunlar PermittedDNSNames, ExcludedDNSNames, PermittedIPRanges ve ExcludedIPRanges ile yazılır. Bir EC sertifikası hâlâ bir RSA sertifikasının kabaca üçte biri boyutunda çıkar ve çok daha hızlı doğrulanır; yeni dağıtımların birine başvurmasının nedeni budur.
ML-KEM, ML-DSA ve SLH-DSA, artı bir hibrit birleştirici
sgcCrypto_MLKEM, üç parametre setiyle (ML-KEM-512/768/1024) FIPS 203 anahtar kapsülleme yapar. sgcCrypto_MLDSA, FIPS 204 imzalamadır, ML-DSA-44/65/87. sgcCrypto_SLHDSA, FIPS 205'tir, altı SHAKE parametre setinin tamamı: 128s, 128f, 192s, 192f, 256s, 256f. ML-KEM tek başına her şeyi eliptik eğrilerden daha genç bir kafes varsayımına bağladığından, sgcCrypto_MLKEM_Hybrid, bir X25519 gizli anahtarını ve bir ML-KEM gizli anahtarını tek bir paylaşılan anahtarda birleştirir; böylece sonuç asla klasik yarıdan daha zayıf olmaz — sektörün yakınsadığı geçiş deseni budur.
Aynı birim, X25519 ile ML-KEM-768'i tek bir KEM olarak birleştiren X-Wing'i (draft-connolly-cfrg-xwing-kem-10) de uygular: 1216 baytlık bir genel anahtar, 32 baytlık bir özel anahtar (tohum), 1120 baytlık bir şifreli metin ve 32 baytlık bir paylaşılan gizli anahtar; sgcXWing_GenerateKeyPair, sgcXWing_Encapsulate ve sgcXWing_Decapsulate üzerinden. Ayrıca X25519MLKEM768, SecP256r1MLKEM768 ve SecP384r1MLKEM1024 için RFC 10024'ün TLS 1.3 hibrit anahtar paylaşımlarını oluşturur (IANA kod noktaları 0x11EC, 0x11EB ve 0x11ED). Bu üçü bağımsız KEM değildir, yalnızca bir TLS anahtar paylaşımı oluştururlar.
Üç algoritmanın tamamı artık anahtarları X.509 SubjectPublicKeyInfo, PKCS#8 OneAsymmetricKey ve PEM olarak okur ve yazar, böylece kuantum sonrası bir anahtar bir RSA ya da EC anahtarıyla aynı dosyalarda yaşar. ML-DSA ve ML-KEM özel anahtarlarının, TsgcPQCPrivateKeyFormat ile seçilen üç biçimi vardır: pqkfSeed yalnızca tohumu yazar (ML-DSA için 32 bayt, ML-KEM için 64 baytlık d||z tohumu), pqkfExpanded genişletilmiş anahtarı yazar, pqkfBoth ikisini birden taşır. SLH-DSA'nın tek bir özel anahtar biçimi vardır. sgcMLDSA_GenerateKeyPairAndSeed ve sgcMLKEM_GenerateKeyPairAndSeed, tohumu anahtar çiftiyle birlikte geri verir, böylece üretimden hemen sonra tohum biçimli bir dosya yazılabilir.
Tek kullanımlık parolalar, kodlama ve şifreli ZIP girdileri
sgcCrypto_OTP, bir kimlik doğrulayıcı uygulamasının gösterdiği aynı altı haneli kodları, saat kaymasını emen sabit zamanlı bir doğrulama penceresiyle, HOTP ve TOTP kodları olarak üretir ve doğrular. sgcCrypto_Encoding, kütüphanenin geri kalanının paylaştığı yardımcı fonksiyonları tutar: sabit zamanlı karşılaştırma, güvenli tampon sıfırlama, hex, Base64url ve Base32. sgcCrypto_Zip_AE2, tek tek ZIP girdilerini şifrelemek için WinZip AES şifrelemesini, AE-1 ve AE-2'yi uygular. sgcCrypto_Random, kütüphanenin başka yerinde üretilen her anahtarın ve nonce'un arkasındaki platformlar arası CSPRNG'dir, ve sgcCrypto_Legacy, yeni tasarımlar için değil, daha eski biçimlerle birlikte çalışabilirlik için MD4/MD5/HMAC-MD5/DES-ECB'yi kullanılabilir tutar.
Aynı Object Pascal ile Yazılmış Bir TLS 1.3 ve TLS 1.2 Motoru
Paket ayrıca sgcCrypto ilkelleri üzerine yazılmış bir TLS 1.3 ve TLS 1.2 uygulaması da taşır. sgcCrypto_* içinde değil, sgcSSL_NativeTLS* birimlerinde yer alır, bu yüzden 43 birimden biri değildir ve sgcCrypto nereye gidiyorsa oraya gider. Herhangi bir sgcWebSockets istemcisinde ya da sunucusunda tek bir özellikle seçin; hiçbir platformda dağıtılacak bir şey yoktur.
// Client: no OpenSSL, no SChannel, no platform TLS stack
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohNativeTLS;
// Lowest version allowed: tls1_2 negotiates TLS 1.3 or TLS 1.2, tls1_3 only TLS 1.3
WSClient.TLSOptions.Version := tls1_2;
WSClient.TLSOptions.RootCertFile := 'roots.pem';
// Optional: also trust the roots the operating system already trusts
WSClient.TLSOptions.NativeTLS_Options.UseSystemRoots := True;
// Both lists are OpenSSL style, colon separated. This group list is the default.
WSClient.TLSOptions.NativeTLS_Options.Groups :=
'X25519MLKEM768:X25519:secp256r1:secp384r1';
// Only TLS 1.3 suites here means TLS 1.3 only. Leave it empty for the default,// which adds the TLS 1.2 ECDHE suites with AES-GCM and ChaCha20-Poly1305.
WSClient.TLSOptions.NativeTLS_Options.CipherSuites :=
'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256';
// Server: the same switch on SSLOptions, IOCP and EPOLL engines included
WSServer.SSLOptions.IOHandler := iohNativeTLS;
Kutudan çıktığı gibi kuantum sonrası anahtar değişimi
Varsayılan grup listesi, X25519 ile ML-KEM-768'in RFC 10024 hibriti olan X25519MLKEM768 ile başlar, böylece destekleyen bir eşle yapılan el sıkışma hiçbir yapılandırma olmadan kuantum sonrasıdır. SecP256r1MLKEM768 ve SecP384r1MLKEM1024 aynı listede kullanılabilir.
Her hedefte, dağıtılacak hiçbir şey yok
libssl yok, libcrypto yok, SChannel yok, platform TLS yığını yok; Win32, Win64, Linux64, macOS, iOS ve Android'de yalnızca aynı Object Pascal. Bir istemcide TLSOptions.IOHandler := iohNativeTLS, bir sunucuda SSLOptions.IOHandler := iohNativeTLS ayarlayın; IOCP ve EPOLL sunucu motorları dahildir.
Makinenin zaten güvendiği kökler
NativeTLS_Options.UseSystemRoots değerini True yaptığınızda motor, işletim sisteminin güvenilen köklerini RootCertFile dosyasına ekler: Windows'ta ROOT deposu, diğer her platformda ise standart konumlar arasında bulunan ilk CA paket dosyası. macOS ya da iOS anahtarlığını veya Android deposunu asla okumaz. Varsayılan olarak kapalıdır, bu yüzden güven çapaları tam olarak RootCertFile dosyasının belirttiği gibi kalır. Bir sunucuda aynı özellik, doğruladığı istemci sertifikaları için geçerlidir.
Geçmeden önce sınırları bilin
Motor yalnızca TLS 1.3 ve TLS 1.2 konuşur, TLS 1.1, TLS 1.0 ya da SSL yoktur; hibrit kuantum sonrası gruplar yalnızca TLS 1.3'te bulunur, bu yüzden bir TLS 1.2 bağlantısı X25519, secp256r1 ya da secp384r1 kullanır. Oturum devam ettirme ve PSK yoktur, 0-RTT ve QUIC yoktur. Sertifika iptali ve sertifika ilkeleri kontrol edilmez ve bileşen olayı OnSSLVerifyPeer bu motorda kullanılamaz, motorun kendi doğrulama kancaları vardır. Bunlardan birine ihtiyacınız olduğunda OpenSSL'de ya da bir platform arka ucunda kalın.
HIZLI BAŞLANGIÇ
Bileşen Yok, Object Inspector Yok
uses'a bir birim ekleyin ve bir fonksiyon çağırın. Aşağıdaki her çağrı, 43 birimin farklı birinden gelir; simetrik, hashing, imzalar ve kuantum sonrası kriptografiyi kapsar.
Etiket kontrolleri, HOTP/TOTP doğrulaması ve sgcConstantTimeEquals sabit zamanda karşılaştırır, gizli veri üzerindeki iş de öyledir. AES, belleği hiçbir zaman gizli bir baytla indekslemeyen ve gizli bir bayta göre dallanmayan bitslice bir çekirdek üzerinde çalışır, GHASH bir maske altında çarpar, RSA özel anahtar işlemleri ise herhangi bir şey döndürülmeden önce kör edilir ve genel üsse karşı kontrol edilir. ECDSA imzalama, ECDH ve EC anahtar üretimi sabit zamanlı bir skaler çarpma kullanır, Ed25519 imzalama ise skaleri sabit pencerelerle ve tam bir toplama formülüyle okur.
Örtük ret ve önce kontrol edilen girdiler
Doğru uzunlukta olup çözülemeyen bir şifreli metin, hata yerine sözde rastgele bir gizli anahtar üretir; bu, FIPS 203'e göre örtük rettir ve saldırgan bundan hiçbir şey öğrenmez. Bozuk bir genel anahtar, yanlış boyutta bir şifreli metin veya anahtar ve hash kontrolünü geçemeyen bir özel anahtar herhangi bir hesaplamadan önce reddedilir; içe aktarılan bir ML-KEM, ML-DSA veya SLH-DSA özel anahtarı da tutarlılık açısından kontrol edilir, böylece parçaları birbirine ait olmayan bir anahtar yanlışlıkla yüklenemez.
Delphi 7'den 13'e, değişmeden
Yerel bir 64 bitlik tam sayı türü varsayılmaz. sgcCrypto_Int64 ve TsgcBigInt, hash'lerin, eğrilerin ve kuantum sonrası birimlerin ihtiyaç duyduğu aritmetiği taklit eder; böylece aynı kaynak desteklenen her sürümde derlenir.
Hiçbir şey sürecinizden dışarı çıkmaz
Her fonksiyon, ilettiğiniz veriler üzerinde süreç içinde çalışır. Kütüphanenin hiçbir yerinde ağ çağrısı, telemetri veya eSeGeCe aktarımı yoktur.
FİYATLANDIRMA
Dahil, ya da Bağımsız Bir Paket
sgcCrypto, sgcWebSockets Standard, Professional ve Enterprise ile birlikte ücretsiz gelir. Yalnızca sgcWebSockets Core'a sahipseniz, tek bir geliştirici için €149 fiyatından başlayan kendi paketi olarak da satılır. Tüm lisanslar tam kaynak kodunu, 1 yıllık güncellemeleri ve 50% ile 70% arasında bir yenileme indirimini içerir: tek bir paketi yenilediğinizde 50%, iki pakette 60%, üç veya daha fazla pakette 70%.
sgcCrypto
€149
Bağımsız paket. Single, Team ve Site lisansları mevcuttur. sgcWebSockets Standard, Professional veya Enterprise'a zaten sahipseniz ücretsizdir.
Tüm 43 sgcCrypto_*.pas birimi
sgcWebSockets Core çalışma zamanı dahildir
Delphi ve C++ Builder, altı platformun tamamı
Tam kaynak kodu
1 yıl güncelleme
Zaten sgcWebSockets Standard, Professional veya Enterprise'da mısınız? sgcCrypto zaten kurulumunuzun içindedir, sipariş gerekmez.
30 Günlük Para İade GarantisiMemnun kalmadınız mı? Satın alımdan sonraki 30 gün içinde tam para iadesi talep edin. İade politikasına bakın
Bileşen Yükü Olmadan Kriptografi
Şifrelemeyi, hashing'i, imzaları, PKI'yı ve kuantum sonrası anahtar değişimini kapsayan 43 saf fonksiyon, artı bunların üzerine kurulu bir TLS 1.3 ve TLS 1.2 motoru; Delphi veya C++ Builder kodunuzun zaten çalıştığı her yerde hazır. Tam kaynak kodu, aktarım yok, DLL yok.