Cryptlib
1. 개요
Cryptlib는 프로그래머가 소프트웨어에 암호화 및 인증 서비스를 통합할 수 있도록 설계된 보안 툴킷 라이브러리이다. S/MIME, PGP/OpenPGP 보안 래핑, SSL/TLS 및 SSH 보안 세션, CA 서비스, 보안 타임스탬핑 등 다양한 보안 서비스를 제공하며, X.509, S/MIME, PGP/OpenPGP, SSH/SSL/TLS 데이터 형식을 지원한다. C로 작성되었으며 Windows, Unix/Linux를 포함한 다양한 운영 체제를 지원하며, C/C++, C#/.NET, Delphi, Java, Python, Visual Basic 등의 프로그래밍 언어 바인딩을 제공한다. 다양한 암호화 알고리즘을 지원하며, 2003년 12월 3.1 버전 출시 이후 지속적으로 업데이트되었다.
| 이름 | cryptlib |
|---|---|
| 개발자 | 피터 구트만 |
| 출시일 | 1995년 |
| 최신 버전 | 3.4.5 |
| 최신 출시일 | 2019년 |
| 프로그래밍 언어 | C |
| 장르 | 보안 라이브러리 |
| 라이선스 | 슬리피캣 라이선스 |
| 공식 웹사이트 | cryptlib 공식 웹사이트 |
-
OpenPGP -
PGP (소프트웨어)
PGP는 필 짐머만이 개발한 암호화 소프트웨어로, 수출 규제와 회사 인수를 거쳐 현재는 상용 버전으로 제공되며, 공개 표준인 OpenPGP를 통해 디지털 서명으로 파일과 메시지의 안전한 전달과 발신자 확인을 보장한다. -
OpenPGP -
에니그메일
에니그메일은 인공지능 기술 발전에 따른 윤리적 문제들을 다루는 분야이며, 자율주행차 사고 책임, AI 무기 개발, 일자리 감소, 프라이버시 침해, 알고리즘 투명성 등 다양한 쟁점을 다룬다. -
전송 계층 보안 구현 -
OpenSSL
OpenSSL은 1998년에 설립된 암호화 도구 프로젝트로, 다양한 암호화 알고리즘과 프로토콜을 지원하며, 아파치 라이선스를 채택했고, 보안 문제와 API 호환성 문제 등의 비판을 받았다. -
전송 계층 보안 구현 -
LibreSSL
-
자유 보안 소프트웨어 -
클램윈
클램윈은 ClamAV 엔진 기반의 오픈 소스 백신 소프트웨어로, 트로이 목마, 바이러스, 멀웨어 등 다양한 악성 위협 분석 자료를 제공하며 예약 검사, 수동 검사, 컨텍스트 메뉴 통합 등의 기능을 지원하지만 실시간 감시 기능은 제공하지 않는다. -
자유 보안 소프트웨어 -
OpenSSL
OpenSSL은 1998년에 설립된 암호화 도구 프로젝트로, 다양한 암호화 알고리즘과 프로토콜을 지원하며, 아파치 라이선스를 채택했고, 보안 문제와 API 호환성 문제 등의 비판을 받았다.
2. 기능
cryptlib는 프로그래머가 소프트웨어에 암호화 및 인증 서비스를 통합할 수 있도록 돕는 보안 툴킷 라이브러리이다. 암호화 또는 인증 알고리즘의 세부 사항을 알 필요 없이, 강력한 보안 기능을 응용 프로그램에 추가할 수 있도록 높은 수준의 인터페이스를 제공하며, 400페이지가 넘는 프로그래밍 매뉴얼이 함께 제공된다.
cryptlib는 다음과 같은 다양한 기능을 제공한다.
* [[암호화]] 및 인증 서비스: S/MIME 및 PGP/OpenPGP 보안 래핑, SSL/TLS 및 SSH 보안 세션, CA 서비스(CMP, SCEP, RTCS, OCSP 등), 보안 타임스탬핑 등 완전한 보안 서비스를 구현한다.
* 다양한 암호화 알고리즘 지원: 블록 암호, 해시 함수, MAC, 공개 키 등 다양한 종류의 암호화 알고리즘을 지원한다. (자세한 내용은 "지원 알고리즘" 하위 섹션 참고)
* 표준 데이터 형식 사용: 산업 표준 X.509, S/MIME, PGP/OpenPGP, SSH/SSL/TLS 데이터 형식을 사용하여 암호화되거나 서명된 데이터를 다른 시스템으로 쉽게 전송하여 처리할 수 있다.
* 광범위한 운영 체제 지원: 모든 Windows 버전과 대부분의 Unix/Linux 시스템을 포함한 많은 운영 체제에서 실행된다.
* X.509/[[PKIX]] 인증서 처리: X.509v1에서 X.509v4까지 모든 X.509 버전을 포함한 전체 X.509/PKIX 인증서 처리를 제공한다. SET, Microsoft AuthentiCode, Identrus, SigG, S/MIME, SSL 및 자격 인증서, PKCS #7 인증서 체인, 인증 요청 및 CRL(인증서 폐기 목록) 처리(CRL에 대한 인증서 자동 검사 및 RTCS, OCSP를 이용한 온라인 검사 포함), CMP 및 SCEP를 사용한 인증서 발급 및 폐기를 지원한다.
* 인증 기관(CA) 기능 구현: 온라인 인증서 등록/발급/폐기 및 인증서 상태 검사를 처리하기 위한 완전한 CMP, SCEP, RTCS, OCSP 서버 구현을 제공한다.
* 정교한 키 저장 인터페이스: PKCS #11 장치, PKCS #15 키 파일, PGP/OpenPGP 키 링에서 상용 등급의 RDBMS, 선택적인 SSL 보호 기능이 있는 LDAP 디렉토리에 이르기까지 광범위한 키 데이터베이스 유형을 사용할 수 있도록 한다.
* 외부 암호화 장치 지원: 하드웨어 암호화 가속기, Fortezza 카드, PKCS #11 장치, 하드웨어 보안 모듈(HSM), 암호화 스마트 카드 등 다양한 외부 암호화 장치의 암호화 기능을 사용할 수 있다. FIPS 140 또는 ITSEC/Common Criteria 인증을 받은 다양한 암호화 장치와 함께 사용할 수 있다.
* 다양한 프로그래밍 언어 지원: C로 작성되었으며, BeOS, DOS, IBM MVS, Mac OS X, OS/2, Tandem, 다양한 Unix 버전, VM/CMS, Windows 3.x, Windows 95/98/ME, Windows CE/PocketPC/SmartPhone, Windows NT/2000/XP/Vista를 지원한다. 다른 임베디드 시스템 환경으로 이식 가능하도록 설계되었으며, 표준 DLL로 제공된다. C/C++, C#/.NET, 델파이, Java, 파이썬, Visual Basic (VB)에 대한 언어 바인딩을 사용할 수 있다.
2.1. 지원 알고리즘
Cryptlib는 블록 암호, 해시 함수, MAC, 공개 키 등 다양한 종류의 암호화 알고리즘을 지원한다.
각 암호화 알고리즘에 대한 자세한 내용은 하위 섹션을 참고하면 된다.
2.1.1. 블록 암호
데이터를 고정된 크기의 블록으로 나누어 암호화하는 방식이다.
2.1.2. 해시 함수
해시 함수는 임의의 길이의 데이터를 고정된 길이의 해시 값으로 변환하는 함수이다.
| 알고리즘 | 다이제스트 크기 |
|---|---|
| MD2 | 128 |
| MD4 | 128 |
| MD5 | 128 |
| RIPEMD-160 | 160 |
| SHA-1 | 160 |
| SHA-2/SHA-256 | 256 |
2.1.3. 메시지 인증 코드 (MAC)
메시지 인증 코드(MAC)는 메시지의 무결성과 인증을 보장하기 위해 사용되는 코드이다.
2.1.4. 공개 키 암호 방식
공개 키 암호 방식은 데이터를 암호화하고 복호화할 때 공개 키와 개인 키를 사용하는 방식이다. Cryptlib에서 지원하는 공개 키 암호 방식 알고리즘과 키 크기는 아래 표와 같다.
| 알고리즘 | 키 크기 |
|---|---|
| 디피-헬만 | 4096 |
| DSA | 4096 |
| ECDSA | 521 |
| ECDH | 521 |
| 엘가말 | 4096 |
| RSA | 4096 |
2.2. 보안 서비스
cryptlib는 프로그래머가 소프트웨어에 암호화 및 인증 서비스를 통합할 수 있도록 하는 보안 툴킷 라이브러리이다. 암호화 또는 인증 알고리즘의 세부 사항을 알 필요 없이, 강력한 보안 기능을 응용 프로그램에 추가할 수 있도록 높은 수준의 인터페이스를 제공한다.
최상위 수준에서 cryptlib는 다음과 같은 완전한 보안 서비스 구현을 제공한다.
* S/MIME 및 PGP/OpenPGP 보안 래핑
* SSL/TLS 및 SSH 보안 세션
* CA 서비스 (예: CMP, SCEP, [http://tools.ietf.org/html/draft-malpani-rcsp-00 RTCS], OCSP)
* 보안 타임스탬핑
cryptlib는 산업 표준 X.509, S/MIME, PGP/OpenPGP, SSH/SSL/TLS 데이터 형식을 사용하므로, 암호화되거나 서명된 데이터를 다른 시스템으로 쉽게 전송하여 처리할 수 있다. cryptlib 자체는 모든 Windows 버전과 대부분의 Unix/Linux 시스템을 포함한 많은 운영 체제에서 실행된다. 이를 통해 이메일, 파일 및 EDI 트랜잭션을 디지털 서명으로 인증하고 산업 표준 형식으로 암호화할 수 있다.
2.3. 기타 기능
cryptlib는 X.509/PKIX 인증서 전체를 처리한다(X.509v1부터 X.509v4까지 모든 X.509 버전). SET, Microsoft AuthentiCode, Identrus, SigG, S/MIME, SSL, 자격 인증서, PKCS #7 인증서 체인, 인증 요청 및 CRL(인증서 폐기 목록) 처리(CRL 자동 검사, RTCS 및 OCSP를 이용한 온라인 검사 포함), CMP 및 SCEP를 사용한 인증서 발급 및 폐기를 지원한다. 온라인 인증서 등록/발급/폐기, 인증서 상태 검사를 위한 CMP, SCEP, RTCS, OCSP 서버 구현을 제공하여 전체 범위의 인증 기관(CA) 기능을 구현한다. 인증서 처리와 함께, PKCS #11 장치, PKCS #15 키 파일, PGP/OpenPGP 키 링부터 상용 등급의 RDBMS, 선택적인 SSL 보호 기능이 있는 LDAP 디렉토리에 이르기까지 광범위한 키 데이터베이스 유형을 사용할 수 있는 정교한 키 저장 인터페이스를 제공한다.
cryptlib는 하드웨어 암호화 가속기, Fortezza 카드, PKCS #11 장치, 하드웨어 보안 모듈(HSM), 암호화 스마트 카드 등 다양한 외부 암호화 장치의 암호화 기능을 활용할 수 있다. FIPS 140 또는 ITSEC/Common Criteria 인증을 받은 다양한 암호화 장치와 함께 사용할 수 있다. 암호화 장치 인터페이스는 cryptlib에서 사용 가능한 새로운 기능을 추가하기 위한 범용 플러그인 기능도 제공한다.
cryptlib는 C로 작성되었으며, BeOS, DOS, IBM MVS, Mac OS X, OS/2, Tandem, 다양한 Unix 버전(AIX, Digital Unix, DGUX, FreeBSD/NetBSD/OpenBSD, HP-UX, IRIX, Linux, MP-RAS, OSF/1, QNX, SCO UnixWare, Solaris, SunOS, Ultrix, UTS4 포함), VM/CMS, Windows 3.x, Windows 95/98/ME, Windows CE/PocketPC/SmartPhone, Windows NT/2000/XP/Vista를 지원한다. 다른 임베디드 시스템 환경으로 이식 가능하도록 설계되었다. 표준 DLL로 제공된다. C/C++, C#/.NET, 델파이, Java, 파이썬, Visual Basic (VB)에 대한 언어 바인딩을 사용할 수 있다.
3. 지원 환경
cryptlib는 다양한 운영 체제와 프로그래밍 언어를 지원한다.
4. 출시 역사
cryptlib는 지속적으로 업데이트되어 새로운 기능이 추가되고 보안이 개선되고 있다. cryptlib의 출시 역사는 다음과 같다.