CrypTool

CrypTool


 


CrypTool 개요

CrypTool은 보안 관련 응용에서 널리 사용되거나 잘 알려진 거의 모든 종류의 암호 알고리즘들을 약 40여개의 함수만으로 구현하여 쉽게 사용할 수 있도록 만든 암호 API이다. CrypTool API는 주로 RSA사의 BSAFE와 PKCS#11의 CryptoKi를 참고로 하여 설계하였으며, 이들 API보다 훨씬 광범위한 암호 알고리즘들을 지원한다. CrypTool에서 제공하는 API 함수는 크게 다음과 같은 7개 그룹으로 나눌 수 있다.

  1.  Object Management Functions
  2. Key Management Functions
  3. Encrypt/Decrypt Functions
  4. (Message Digest) Message Digest Functions
  5. MAC(Message Authentication Code)  Sign/Verify Functions
  6. Diffie-Hellman Key Agreement
  7. Pseudo-Random Number Generator (PRNG)

CrypTool, MAC:

CrypTool
블럭 암호 (64 비트) DES, DES3, DESX, RC5, BLOWFISH, CAST128, IDEA, SAFER , RC2
(128 비트) SEED, CRYPTON, CAST256, RC6, TWOFISH, RIJNDAEL, MARS, SERPENT
Mode of Operation :
ECB, ECB_CTS, CBC, CBC_PAD, CBC_CTS, OFB, CFB, Counter
스트림 암호 RC4, SEAL
해쉬 함수 MD5, SHA1, SHA256, SHA384, SHA512, RMD128, RMD160, RMD256, RMD320, HAS160, TIGER
MAC 함수 HMAC-XXX, KMAC-XXX (XXX : 해쉬 함수)
YYY-MAC (YYY : 블럭 암호); FIPS 113, ISO/IEC 9797-1)
공개키 암호 RSA (PKCS#1 v2.1, P1363)
공개키 서명 RSA (PKCS#1 v2.1, P1363), DSA (FIPS186-2), ECDSA (X9.62), KCDSA (표준안), ECKCDSA (표준안)
키 분배 Diffie-Hellman (DH) (PKCS#3, X9.42, RFC 2631)
Elliptic Curve Diffie-Hellman (EC-DH)
키 암호화 RFC 2630, S/MIME WG Drafts, Proprieatary
키 유도 Password-based : PKCS#5, PKCS#12, PKIX (RFC 2510)
General : IEEE P1363, X9.42, IPSEC, etc.
의사 난수 생성 SPRING (퓨쳐시스템 자체 개발 의사 난수 생성기)

 

CrypTool API

 

Function Description
CT_CreateAlgContext ALG_CONTEXT
CT_SetAlgAttributes ALG_CONTEXT
CT_GetAlgAttributes ALG_CONTEXT
CT_DestroyAlgContext ALG_CONTEXT
CT_CreateKeyStruct
CT_DestroyKeyStruct

Function Description
CT_GenerateKey 랜덤하게 비밀키 생성
CT_GenerateParameters 공개키 암호용 도메인 파라미터 생성
CT_ValidateParameters 공개키 암호용 도메인 파라미터 검증
CT_GenerateKeyPair 공개키 암호용 키쌍 생성
CT_ValidatePublicKey 공개키 암호용 공개키 검증
CT_DeriveKey Base key로부터 비밀키 유도
CT_WrapKey 키 암호용 키로 비밀키 암호화
CT_UnwrapKey 키 암호용 키로 비밀키 복호화

 

Function Description
CT_EncryptInit Multi-part message 암호화를 위한 초기화
CT_EncryptUpdate Multi-part message의 각 message 암호화
CT_EncryptFinal Multi-part message 암호화의 마무리 과정
CT_EncryptAll Signle-part message 암호화
CT_DecryptInit Multi-part message 복호화를 위한 초기화
CT_DecryptUpdate Multi-part message의 각 message 복호화
CT_DecryptFinal Multi-part message 복호화의 마무리 과정
CT_DecryptAll Signle-part message 복호화

해쉬 함수

임의의 길이의 메세지를 압축하여 일정길이의 해쉬값(Message Digest)을 계산한다.

Function Description
CT_DigestInit Multi-part data 해쉬를 위한 초기화
CT_DigestUpdate Multi-part data의 각 data를 해쉬에 추가함
CT_DigestFinal Multi-part data 해쉬의 마무리 과정
CT_DigestAll Signle-part data 해쉬

서명 및 MAC 함수

공개키 암호를 이용한 서명이나, 해쉬함수 혹은 비밀키 암호를 이용한 MAC(Message Authentication Code) 등을 생성/검증한다.

Function Description
CT_SignInit Multi-part data 서명을 위한 초기화
CT_SignUpdate Multi-part data의 각 data를 서명에 추가함
CT_SignFinal Multi-part data 서명의 마무리 과정
CT_SignAll Signle-part data 서명
CT_VerifyInit Multi-part data 서명검증을 위함 초기화
CT_VerifyUpdate Multi-part data의 각 data를 서명검증에 추가함
CT_VerifyFinal Multi-part data 서명검증의 마무리 과정
CT_VerifyAll Multi-part data 서명검증

키 분배 함수

키나 파라미터의 생성/검증, 분배, 저장/전송 등에 필요한 기능을 제공한다.

Function Description
CT_GenerateEphemeralKey DH/ECDH의 일회용 키쌍 생성
CT_ComputeSharedKey DH/ECDH의 공유키 생성

(Pseudo-Random Number) SPRING(Strong Pseudo-Random Number Generator)

Function Description
CT_RandomInit 입력 ID로 SPRING을 초기화
CT_RandomUpdate SPRING에 외부 seed 추가
CT_RandomFinal SPRING을 종료함
CT_GenerateRandomBytes 필요한 크기의 난수 생성