43개의 순수 Object Pascal 유닛으로, 컴포넌트도 디자인 타임 흔적도 없습니다. TBytes를 넘기면 TBytes를 돌려받습니다. 암호화에는 AES-GCM과 ChaCha20-Poly1305, 해싱에는 SHA-3/BLAKE2/Argon2, 서명과 키 교환에는 Ed25519/X25519/RSA, 그리고 X.509 인증서 파싱 및 생성, 포스트 퀀텀 ML-KEM, ML-DSA, SLH-DSA까지 제공하며, 이들의 키와 인증서는 나머지와 똑같이 X.509, PKCS#8, PEM 파일에 담깁니다. 이 패키지에는 같은 Object Pascal로 작성된 TLS 1.3 및 TLS 1.2 엔진도 함께 들어 있습니다. iohNativeTLS로 선택하며, X25519MLKEM768 하이브리드 키 교환이 기본으로 켜져 있습니다. 모든 기본 요소는 uses 절에 추가하는 바로 그 유닛 안에서 직접 구현되어 있습니다. 외부 DLL도, OpenSSL 바인딩도 없으며, 동일한 소스가 Delphi 7부터 RAD Studio 13까지 변경 없이 컴파일됩니다. sgcCrypto는 sgcWebSockets Standard, Professional, Enterprise에 무료로 포함되어 제공되며, Core만 보유한 고객을 위해 단독으로도 판매됩니다(sgcWebSockets Core 런타임 포함).
43개의 순수 함수sgcCrypto_*.pas컴포넌트 없음. 함수를 호출하면 바이트를 돌려받습니다.
AES-GCMsgcAES_GCM_Encrypt
ChaCha20-Poly1305sgcChaCha20Poly1305_Encrypt
SHA-3 / SHAKEsgcSHA3_256
Ed25519 / X25519sgcEd25519_Sign
RSA-PSSsgcRSA_PSS_Sign
ML-KEM / ML-DSAsgcMLKEM_Encapsulate
X.509 / CSRsgcX509_CreateSelfSigned
직접 확인하기
2분 만에 보는 sgcCrypto
Delphi를 위한 최신 암호화예요. AES-GCM, SHA-3, Ed25519, X.509, 양자 내성 ML-KEM을 OpenSSL DLL 배포 없이 사용해요.
43순수 함수 유닛sgcCrypto_*.pas, 컴포넌트 없음
6기능 패밀리대칭, 해싱, 서명, PKI, PQC, OTP
6지원 플랫폼Win32, Win64, Linux64, macOS, iOS, Android
3포스트 퀀텀 FIPS 표준ML-KEM (203), ML-DSA (204), SLH-DSA (205)
2소유하는 방법에디션에 포함되거나 단독으로
구매 전에
먼저 알아 두면 좋은 세 가지
sgcCrypto가 무엇인지, 이미 보유하고 있는지, 어디에서 실행되는지입니다. 세 답 모두 간단합니다.
sgcCrypto는 컴포넌트가 아니라 순수 함수입니다
43개 유닛 전부가 평범한 함수와 프로시저를 내보냅니다. Tsgc* 클래스도 없고, RegisterComponents로 등록되는 것도 없으며, sgcCrypto_Reg.pas도 없습니다. sgcAES_GCM_Encrypt(aKey, aIV, aPlain, aAAD, aTag)를 폼이든 서비스든 콘솔 앱이든 스레드든, 여느 RTL 함수를 호출하듯 그대로 호출하면 됩니다.
모든 라이선스에 전체 소스 코드가 함께 제공되므로, 기본 요소들이 바이너리나 DLL 속으로 사라지는 대신 직접 디버거로 한 단계씩 추적할 수 있습니다.
에디션 중복
이미 sgcWebSockets 에디션을 보유하고 계신가요?
sgcCrypto는 sgcWebSockets Standard, Professional, Enterprise, 그리고 All-Access 안에 추가 비용 없이 포함되어 있습니다. Standard 이상의 에디션 라이선스를 이미 보유하고 있다면 43개 유닛을 모두 이미 갖고 있는 것이며, 더 구매할 필요가 없습니다.
sgcCrypto의 단독 버전은 그 반대의 경우를 위한 것입니다. sgcWebSockets Core만 보유하고 있거나 sgcWebSockets 라이선스가 전혀 없는 상태에서, 전체 에디션을 라이선스하지 않고도 암호화 유닛만 원하는 경우입니다.
플랫폼 범위
sgcCrypto에는 플랫폼 가드가 없습니다
AI나 음성 패키지와 달리, sgcVer.inc의 어떤 것도 sgcCrypto를 Windows로 제한하지 않습니다. 이 유닛들은 평범한 Object Pascal 연산이므로, 동일한 소스로 Win32, Win64, Linux64, macOS, iOS, Android용으로 컴파일됩니다.
플랫폼을 인식하는 유일한 유닛인 sgcCrypto_Random은 동일한 sgcRandomBytes 호출 뒤에서 대상별로 CSPRNG 백엔드를 선택합니다(Windows에서는 BCryptGenRandom, 그 외에는 /dev/urandom). 따라서 사용자 코드는 플랫폼에 따라 분기할 필요가 전혀 없습니다.
구성 내용
43개의 유닛, 6개의 기능 패밀리
모든 유닛은 컴파일된 Object Pascal이며, Delphi 7부터 13까지 또는 C++ Builder 프로젝트 어디에서든 호출할 수 있습니다. 외부 DLL도, OpenSSL 바인딩도, 코드 생성기도 없습니다. 기본 요소는 uses 절에 추가하는 유닛 안에서 직접 구현되어 있습니다.
대칭 암호화5개 유닛
AES, ChaCha20, 그리고 그 위에 구축된 AEAD 구성
sgcCrypto_AES는 CBC, GCM, CTR을 다루고, sgcCrypto_Modes는 ECB, OFB, CFB, 사이퍼텍스트 스틸링 방식의 CTS, AES-CCM, 그리고 AES Key Wrap / 패딩 포함 Key Wrap(RFC 3394 / 5649)을 추가합니다. sgcCrypto_CMAC은 AES-CMAC과 AES-GMAC입니다. sgcCrypto_ChaCha는 ChaCha20, XChaCha20, Salsa20, XSalsa20을 구현하며, sgcCrypto_Poly1305는 이들과 Poly1305를 결합해 RFC 8439의 ChaCha20-Poly1305 및 XChaCha20-Poly1305 AEAD 암호를 만듭니다. AES-CCM은 Zigbee, Bluetooth, TLS CCM 스위트가 이름으로 지정하는 AEAD로, 블록 암호 자체 외에는 아무것도 필요하지 않습니다. 그리고 CBC와 ECB는 둘 다 원하는 패딩 방식, 즉 PKCS#7, ANSI X9.23, ISO 7816-4 등을 받아들여, 언젠가 다른 시스템이 작성한 데이터를 읽어야 하는 날에 대비합니다. sgcAES_GCM_Decrypt와 Poly1305 검증 함수는 인증 태그를 상수 시간으로 비교하며, 검증에 실패하면 평문 반환을 거부합니다.
sgcCrypto_SHA2와 sgcCrypto_Keccak은 SHA-1/2, SHA-3, SHAKE, cSHAKE, KMAC을 다루고, sgcCrypto_Blake2b와 sgcCrypto_Blake2s는 BLAKE2를 추가합니다. sgcCrypto_HMAC은 키 기반 메시지 인증입니다. 비밀번호를 키로 바꾸는 용도로는 sgcCrypto_KDF(PBKDF2), sgcCrypto_HKDF, sgcCrypto_Scrypt, 그리고 Argon2의 세 가지 변형인 d, i, id를 모두 구현하는 Password Hashing Competition 우승작 sgcCrypto_Argon2가 있습니다. sgcCrypto_SipHash는 해시 테이블 키를 위한 빠른 키 기반 해시를 제공하며, sgcCrypto_TLSH는 암호화 다이제스트가 아니라 유사도 거리 함수를 갖춘 퍼지 해시로, 근접 중복 탐지에 유용합니다.
sgcCrypto_Ed25519/Ed448은 서명과 검증을 담당하고, sgcCrypto_X25519/X448은 이에 대응하는 Diffie-Hellman을 수행합니다. sgcCrypto_ECCurves는 secp256k1, 세 가지 Brainpool 곡선, NIST P-256/P-384/P-521까지 일곱 개 곡선에 걸쳐 ECDSA와 ECDH를 추가하며, RFC 6979 결정적 논스와 원시 또는 DER 형태의 서명을 지원하고, 그 위에 Taproot, Nostr, Lightning이 기대하는 x-only 공개 키를 사용하는 BIP-340 Schnorr 서명까지 추가합니다. sgcCrypto_EC는 JOSE 지향의 자매 유닛으로 ES256/384/512 JWS를 직접 서명하고 검증합니다. sgcCrypto_RSA는 PEM 키로부터 곧바로 PKCS#1 v1.5 및 PSS 서명을 검증하며, sgcCrypto_RSA_Keys는 한 걸음 더 나아가 임의 비트 길이의 키 생성, OAEP 및 PKCS#1 v1.5 암호화, 그리고 PKCS#1 형태와 PKCS#8 BEGIN PRIVATE KEY 형태 모두로의 DER/PEM 내보내기를 제공합니다. RSA와 EC 키는 내보내는 것 못지않게 손쉽게 가져올 수도 있어서(DER 또는 PEM), 한 번 생성한 키를 저장했다가 다시 불러와 사용할 수 있으며 프로세스가 실행되는 동안만 존재할 필요가 없습니다. sgcCrypto_ECIES는 X25519 공개 키에 대한 하이브리드 seal/open 암호화로 마무리합니다.
sgcCrypto_ASN1은 DER과 PEM을 읽고 PKCS#1/SEC 1 키를 파싱하며, sgcCrypto_DER은 인증서나 CSR에 필요한 모든 태그를 작성합니다. sgcCrypto_X509는 인증서를 파싱하고, 지정된 발급자가 서명했는지 검증하며, 체인을 따라가며 검증하고, CSR을 검증하며, CRL을 파싱해 폐기 여부를 확인합니다. sgcCrypto_X509_Gen은 자체 서명 인증서나 PKCS#10 CSR을 처음부터 생성하고, CA는 sgcX509_CreateSigned이나 sgcX509_CreateSignedFromCSR로 발급합니다. 전체 주체 및 발급자 구분 이름(DN), 유효 기간, 경로 길이 제약이 있는 CA 플래그, 키 사용 플래그, 확장 키 사용 OID, 이제 RFC 4291의 모든 텍스트 표기 형식으로 IPv6를 받는 IP 주소 SAN, 그리고 SPIFFE 스타일의 서비스 신원을 위한 URI SAN까지 포함한 주체 대체 이름을 다룹니다.
서명은 더 이상 RSA와 EC로만 한정되지 않습니다. sgcX509_MLDSAKey와 sgcX509_SLHDSAKey는 포스트 퀀텀 키를 감싸 sgcX509_CreateSelfSignedEx와 sgcX509_CreateCSREx에 넘겨주므로, 인증서나 CSR을 ML-DSA 또는 SLH-DSA로 서명할 수 있습니다. CA는 ML-KEM 공개 키(RFC 9935)도 인증할 수 있는데, ML-KEM은 서명을 할 수 없으므로 키 소유는 다른 방법으로 증명해야 합니다. 읽기 쪽에서는 TsgcX509PublicKeyType에 x509pkMLDSA, x509pkSLHDSA, x509pkMLKEM이 추가되었고, sgcX509_VerifyChain은 이제 basicConstraints의 경로 길이와 dNSName, iPAddress, rfc822Name, uniformResourceIdentifier, directoryName에 걸친 nameConstraints 확장을 강제합니다. 생성 쪽에서는 PermittedDNSNames, ExcludedDNSNames, PermittedIPRanges, ExcludedIPRanges로 이 값을 기록합니다. EC 인증서는 여전히 RSA 인증서의 대략 3분의 1 크기로 나오면서 검증 속도도 훨씬 빠르기 때문에 새로운 배포 환경은 EC 쪽을 선택합니다.
sgcCrypto_MLKEM은 FIPS 203 키 캡슐화로, 세 가지 매개변수 집합(ML-KEM-512/768/1024)을 제공하며 손상된 암호문에는 암묵적 거부(implicit rejection)로 대응합니다. sgcCrypto_MLDSA는 FIPS 204 서명으로 ML-DSA-44/65/87을 제공합니다. sgcCrypto_SLHDSA는 FIPS 205이며, 128s, 128f, 192s, 192f, 256s, 256f 여섯 가지 SHAKE 매개변수 집합을 모두 지원합니다. ML-KEM 단독으로는 타원 곡선보다 역사가 짧은 격자 가정에 모든 것을 거는 셈이므로, sgcCrypto_MLKEM_Hybrid는 X25519 비밀 값과 ML-KEM 비밀 값을 하나의 공유 키로 결합해, 결과가 고전적인 절반보다 약해지는 일이 없도록 합니다. 이는 업계가 수렴하고 있는 마이그레이션 방식입니다.
같은 유닛이 X-Wing(draft-connolly-cfrg-xwing-kem-10)도 구현합니다. X25519와 ML-KEM-768을 하나의 KEM으로 묶은 것으로, 공개 키 1216바이트, 개인 키 32바이트(시드), 암호문 1120바이트, 공유 비밀 32바이트이며, sgcXWing_GenerateKeyPair, sgcXWing_Encapsulate, sgcXWing_Decapsulate로 사용합니다. 또한 X25519MLKEM768, SecP256r1MLKEM768, SecP384r1MLKEM1024(IANA 코드포인트 0x11EC, 0x11EB, 0x11ED)에 대한 RFC 10024의 TLS 1.3 하이브리드 키 셰어도 만듭니다. 이 세 가지는 독립적인 KEM이 아니라 TLS 키 셰어를 구성할 뿐입니다.
이제 세 알고리즘 모두 키를 X.509 SubjectPublicKeyInfo, PKCS#8 OneAsymmetricKey, PEM으로 읽고 쓰므로, 포스트 퀀텀 키도 RSA나 EC 키와 같은 파일에 담깁니다. ML-DSA와 ML-KEM 개인 키는 TsgcPQCPrivateKeyFormat으로 고르는 세 가지 형식을 가집니다. pqkfSeed는 시드만 기록하고(ML-DSA는 32바이트, ML-KEM은 64바이트 d||z 시드), pqkfExpanded는 확장된 키를 기록하며, pqkfBoth는 둘 다 담습니다. SLH-DSA의 개인 키 형식은 하나뿐입니다. sgcMLDSA_GenerateKeyPairAndSeed와 sgcMLKEM_GenerateKeyPairAndSeed는 키 쌍과 함께 시드도 돌려주므로, 생성 직후에 시드 형식 파일을 바로 기록할 수 있습니다.
sgcCrypto_OTP는 인증 앱이 보여주는 것과 동일한 6자리 HOTP와 TOTP 코드를 생성하고 검증하며, 시계 오차를 흡수하는 상수 시간 검증 윈도우를 사용합니다. sgcCrypto_Encoding은 라이브러리의 나머지 부분이 공유하는 유틸리티 함수를 담고 있습니다. 상수 시간 비교, 안전한 버퍼 초기화, hex, Base64url, Base32입니다. sgcCrypto_Zip_AE2는 개별 ZIP 항목을 암호화하기 위한 WinZip AES 암호화 AE-1과 AE-2를 구현합니다. sgcCrypto_Random은 라이브러리 곳곳에서 생성되는 모든 키와 논스 뒤에 있는 크로스 플랫폼 CSPRNG이며, sgcCrypto_Legacy는 새로운 설계가 아니라 이전 형식과의 상호운용을 위해 MD4/MD5/HMAC-MD5/DES-ECB를 계속 제공합니다.
이 패키지에는 sgcCrypto 기본 요소 위에 작성된 TLS 1.3 및 TLS 1.2 구현도 함께 들어 있습니다. sgcCrypto_*가 아니라 sgcSSL_NativeTLS* 유닛에 있으므로 43개에는 포함되지 않으며, sgcCrypto가 제공되는 곳이라면 어디에나 함께 제공됩니다. sgcWebSockets 클라이언트나 서버에서 속성 하나로 선택하면 되고, 어떤 플랫폼에서도 배포할 것이 없습니다.
// 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;
설정 없이 바로 쓰는 포스트 퀀텀 키 교환
기본 그룹 목록은 X25519와 ML-KEM-768을 결합한 RFC 10024 하이브리드인 X25519MLKEM768로 시작합니다. 따라서 이를 지원하는 상대와의 핸드셰이크는 아무 설정 없이도 이미 포스트 퀀텀입니다. 같은 목록에서 SecP256r1MLKEM768과 SecP384r1MLKEM1024도 사용할 수 있습니다.
어떤 타깃에서도 배포할 것이 없습니다
libssl도, libcrypto도, SChannel도, 플랫폼 TLS 스택도 필요 없습니다. Win32, Win64, Linux64, macOS, iOS, Android에서 모두 같은 Object Pascal 코드가 그대로 동작합니다. 클라이언트에서는 TLSOptions.IOHandler := iohNativeTLS를, 서버에서는 SSLOptions.IOHandler := iohNativeTLS를 설정하면 되며, IOCP와 EPOLL 서버 엔진도 포함됩니다.
컴퓨터가 이미 신뢰하는 루트
NativeTLS_Options.UseSystemRoots를 True로 설정하면 엔진이 RootCertFile에 운영 체제의 신뢰 루트를 추가합니다. Windows에서는 ROOT 저장소이고, 그 밖의 모든 플랫폼에서는 표준 위치에서 처음 발견되는 CA 번들 파일입니다. macOS나 iOS 키체인, Android 저장소는 절대 읽지 않습니다. 기본값은 꺼짐이며, 따라서 앵커는 RootCertFile이 지정한 그대로 유지됩니다. 서버에서는 같은 속성이 서버가 검증하는 클라이언트 인증서에도 적용됩니다.
전환하기 전에 제약을 확인하세요
이 엔진은 TLS 1.3과 TLS 1.2만 지원하며, TLS 1.1, TLS 1.0, SSL은 지원하지 않습니다. 하이브리드 포스트 퀀텀 그룹은 TLS 1.3에만 존재하므로, TLS 1.2 연결에서는 X25519, secp256r1 또는 secp384r1을 사용합니다. 세션 재개와 PSK가 없고, 0-RTT와 QUIC도 없습니다. 해지 확인과 인증서 정책은 검사하지 않으며, 컴포넌트 이벤트 OnSSLVerifyPeer는 이 엔진에서 사용할 수 없습니다. 엔진이 자체 검증 훅을 가지고 있기 때문입니다. 이 가운데 어느 하나라도 필요하다면 OpenSSL이나 플랫폼 백엔드를 계속 사용하세요.
빠른 시작
컴포넌트도, 오브젝트 인스펙터도 없습니다
uses에 유닛을 추가하고 함수를 호출하세요. 아래의 각 호출은 43개 유닛 중 서로 다른 유닛에서 가져온 것으로, 대칭 암호화, 해싱, 서명, 포스트 퀀텀에 걸쳐 있습니다.
태그 검사, HOTP/TOTP 검증, sgcConstantTimeEquals는 상수 시간으로 비교하며, 비밀을 다루는 작업도 마찬가지입니다. AES는 비밀 바이트로 메모리를 인덱싱하거나 분기하지 않는 비트슬라이스 코어에서 실행되고, GHASH는 마스크 아래에서 곱셈을 수행하며, RSA 개인 키 연산은 블라인딩된 뒤 결과를 반환하기 전에 공개 지수와 대조해 검사됩니다. ECDSA 서명, ECDH, EC 키 생성은 상수 시간 스칼라 곱셈을 사용하고, Ed25519 서명은 완전 덧셈 공식을 사용해 스칼라를 고정 윈도우로 읽습니다.
암묵적 거부, 그리고 먼저 검사되는 입력
길이가 올바르지만 복호화되지 않는 암호문은 오류 대신 의사난수 비밀을 생성합니다. 이것이 FIPS 203의 암묵적 거부이며, 공격자는 여기서 아무것도 알아낼 수 없습니다. 형식이 잘못된 공개 키, 크기가 잘못된 암호문이나 키, 해시 검사에 실패하는 개인 키는 어떤 계산보다 먼저 거부되며, 가져온 ML-KEM, ML-DSA, SLH-DSA 개인 키는 일관성을 검사하므로, 서로 맞지 않는 부분으로 이루어진 키가 실수로 로드될 수 없습니다.
Delphi 7부터 13까지, 변경 없음
네이티브 64비트 정수 타입이 있다고 가정하지 않습니다. sgcCrypto_Int64와 TsgcBigInt가 해시, 곡선, 포스트 퀀텀 유닛에 필요한 연산을 에뮬레이션하므로, 동일한 소스가 지원되는 모든 버전에서 컴파일됩니다.
프로세스 밖으로 나가는 것은 없습니다
모든 함수는 사용자가 전달한 데이터에 대해 프로세스 내부에서 실행됩니다. 라이브러리 어디에도 네트워크 호출, 원격 측정, eSeGeCe로의 중계는 존재하지 않습니다.
가격
포함되거나, 단독 패키지로
sgcCrypto는 sgcWebSockets Standard, Professional, Enterprise에 무료로 포함되어 제공됩니다. sgcWebSockets Core만 보유하고 있다면, 개발자 1인 기준 €149부터 시작하는 단독 패키지로도 구매할 수 있습니다. 모든 라이선스에는 전체 소스 코드, 1년간의 업데이트, 50%에서 70%까지의 갱신 할인이 포함됩니다. 팩 1개를 갱신하면 50%, 2개는 60%, 3개 이상은 70%입니다.
sgcCrypto
€149
단독 패키지입니다. Single, Team, Site 라이선스를 제공합니다. sgcWebSockets Standard, Professional, Enterprise를 이미 보유하고 있다면 무료입니다.
43개의 sgcCrypto_*.pas 유닛 전부
sgcWebSockets Core 런타임 포함
Delphi & C++ Builder, 6개 플랫폼 전체
전체 소스 코드
1년간의 업데이트
이미 sgcWebSockets Standard, Professional, Enterprise를 사용 중이신가요? sgcCrypto는 이미 설치 프로그램에 포함되어 있으므로 별도로 주문할 필요가 없습니다.
30일 환불 보장만족하지 않으세요? 구매 후 30일 이내에 전액 환불을 요청하세요. 환불 정책 보기
컴포넌트 부담 없는 암호화
암호화, 해싱, 서명, PKI, 포스트 퀀텀 키 교환을 아우르는 43개의 순수 함수와 그 위에 구축된 TLS 1.3 및 TLS 1.2 엔진이, Delphi나 C++ Builder 코드가 실행되는 곳이라면 어디서든 준비되어 있습니다. 전체 소스 코드, 중계 없음, DLL 없음.