각진 세상에 둥근 춤을 추자
암호화 알고리즘과 암호화 키 생성 도구 본문
암호화 알고리즘 (Encryption Algorithm)
암호 알고리즘은 데이터를 암호화하고 복호화하여 외부의 공격이나 도청으로부터 보호하는 수단이다.
암호 알고리즘을 사용하면 평문(Plaintext)을 읽을 수 없는 암호문(Ciphertext)로 변환하여 허가된 사용자만이 해당 데이터를 복호화할 수 있도록 만든다.
이를 통해 데이터의 기밀성(Confidentiality), 무결성(Integrity), 출처 인증(Authentication)을 보장한다.
먼저, 암호화와 관련된 용어 중에서 양방향, 단방향, 대칭, 비대칭은 암호화 방식의 특성과 목적을 이해하는 데 중요한 개념이다.
개념 | 설명 |
양방향 암호화 | 암호화한 데이터를 복호화할 수 있는 방식. 보안이 필요한 데이터를 주고받을 때 사용된다. |
단방향 암호화 | 암호화한 데이터를 복호화할 수 없는 방식. 해싱(Hashing)을 이용한 암호화 방식 데이터 무결성 검증 또는 패스워드 저장에 사용된다. |
대칭키 암호화 | 하나의 동일한 키로 암복호화를 수행하는 방식 |
비대칭키 암호화 | 공개키와 개인키라는 두 개의 다른 키를 사용하는 방식 |
양방향 암호화
1. 대칭키 암호화 (Symmetric Key Encryption)
대칭키 암호화는 하나의 키로 암호화와 복호화를 모두 수행하는 방식이다.
암호화 유형 | 설명 | 예시 |
스트림 방식 | - 데이터를 한 비트 또는 한 바이트 단위로 암호화하는 방식 (평문을 연속된 데이터 스트림으로 보고, 그 스트림을 하나씩 암호화하는 방식) - 빠른 속도, 낮은 메모리 사용 |
RC4, Salsa20, ChaCha20 |
블록 방식 | - 데이터를 고정된 크기의 블록으로 나누어 암호화하는 방식 - 일반적으로 64비트, 128비트 크기의 블록 단위로 평문을 암호화하며, 만약 데이터가 블록 단위에 맞지 않으면 패딩(padding)을 추가해 암호화 - 블록 암호화 방식은 다양안 운영 모드(ECB, CBC, CFB, OFB 등)로 동작 - 복잡한 연산 수행, 스트림 암호화보다 늦은 처리 속도 |
AES, DES, 3DES |
2. 비대칭키 암호화 (Asymmetric Key Encryption)
비대칭키 암호화는 서로 다른 두 개의 키(공개키, 개인키)를 사용하여 암호화와 복호화를 수행하는 방식이다.
암호화 유형 | 설명 | 예시 |
인수분해 | - 큰 소수의 곱을 인수분해하는 계산의 어려움을 기반으로 한 암호화 방식 - 두 개의 큰 소수를 곱하여 공개키를 만들고 이를 사용해 데이터를 암호화한다. - 개인키는 소수들을 알고 있어야만 생성할 수 있다. |
RSA |
이산대수 | - 유한한 집합에서의 이산 로그 문제를 사용하여 암호화를 구현하는 방식 | Diffie-Hellman 키 교환, DSA |
타원곡선 방정식 | - 타원 곡선 위의 점들을 이용한 암호화 방식 - 짧은 키 길이로도 높은 보안성 제공 |
ECC, ECDSA |
단방향 암호화
데이터를 암호화한 후 다시 복호화할 수 없는 방식으로, 주로 해시 함수(Hash Function)를 통해 구현된다.
해시 알고리즘 | MD 길이 (출력 해시 길이) | 블록 길이 | 최대 메시지 길이 | 특징 |
SHA-256 | 256 bit | 512 bit | 2^64-1 bit | 높은 보안성, 널리 사용 |
SHA-512 | 512 bit | 1024 bit | 2^128-1 bit | 큰 데이터 셋에 적합 |
SHA3-256 | 256 bit | 1088 bit | 이론상 무제한 | 보안성 강화, 출돌 저항성 우수 |
(* SHA2 이하의 해시 함수인 MD5, SHA-1은 권고되지 않는다.)
국내외 권고 암호 알고리즘
1. 대칭키 암호화 알고리즘 (블록암호)
분류 | NIST(미국) | CRYPTREC(일본) | ECRYPT(유럽) | 국내 |
대칭키 암호 알고리즘 | AES |
AES Camellia |
AES Camellia Serpent |
SEED HIGHT ARIA LES |
국내외에서 AES(Advanced Encryption Standard)는 널리 사용되는 대칭키 암호화 알고리즘으로, 전 세계적으로 미국 표준으로 자리잡고 있다.
국내에서는 AES와 더불어 SEED, HIGHT, ARIA, LEA와 같은 암호 알고리즘이 권고되고 있다.
(3TDEA: 현재 보안성과 성능 문제로 더 이상 권장되지 않는다.)
(1) SEED
- 한국인터넷진흥원(KISA)이 개발한 대칭키 암호화 알고리즘으로 128비트 블록 크기의 128비트 키 길이를 사용한다.
- 주로 전자금융거래, 공인인증서 시스템에 주로 사용된다.
(2) HIGHT
- 경량 암호 알고리즘으로 경량 기기나 저전력 환경을 위한 암호화 방식이다.
- 64비트 블록 크기와 128비트 키 길이를 사용한다.
- 주로 사물인터넷(IoT) 기기, 센서 네트워크 등 저전력 및 소형 장치에서 사용된다.
(3) ARIA
- 국내에서 개발된 고성능 블록 암호 알고리즘으로 AES와 유사한 128, 192, 256 비트 키 길이와 128비트 블록 크기를 사용한다.
- 주로 금융, 공공기관, 국방과 같은 보안이 중요한 환경에서 AES의 대안으로 사용된다.
(4) LES
- 경량 고속 암호 알고리즘으로 소형 기기와 모바일 환경에 최적화된 암호화 방식이다.
- 128비트 블록 크기와 128, 192, 256비트 키 길이를 사용한다.
2. 공개키 암호 알고리즘
분류 | NIST(미국) | CRYPTREC(일본) | ECRYPT(유럽) | 국내 |
암/복호화용 | RSA | RSA-OAEP | RSA-OAEP | RSAES |
3. 해시함수
분류 | NIST(미국) | CRYPTREC(일본) | ECRYPT(유럽) | 국내 |
해시함수 | SHA2, SHA3, | SHA2, SHA3 | SHA2, SHA3 | SHA2, SHA3 |
암호화 키 생성 도구 (Key Derivation Function, KDF)
암호화 키 생성 도구는 암호화 알고리즘에서 사용할 키를 생성하는 데 사용된다.
비밀번호나 임의의 입력값을 사용해 안전한 암호화 키를 생성한다.
종류 | 설명 |
scrypt | 메모리-하드 함수로 설계. 특히 GPU 기반 공격 저항에 효과적 주로 비밀번호 기반 암호화에서 키 생성 시 사용 암호화폐 지갑, 암호화 통신 등 |
Argon2 | 메모리-하드 함수로 설계 비밀번호 해싱 및 키 유도에 사용 |
bcrypt | 암호화 키 생성 시 솔트를 포함하여 여러 번 반복 연산을 통해 해시 값 생성 주로 비밀번호 저장이나 암호화 키 생성에 사용 현재 솔트 길이, 출력 크기의 제한과 메모리-하드 특성 부족으로 Argon2나 scrypt가 대체되고 있다. |
HKDF | HMAC 기반의 키 유도 함수 특히 TLS, SSL과 같은 프로토콜에서 주로 사용 세션 키 생성과 같은 암호화 통신에서 주로 사용되며, AES와 같은 대칭키 암호화에서 사용할 수 있는 키를 생성하는 데 적합 |
PBKDF2 | 비밀번호, salt, 반복횟수, 생성하고자 하는 비밀키의 길이를 입력으로 비밀키를 출력한다. salt는 난수발생기 등을 이용하여 생성하고 최소 128비트 이상의 길이를 사용하는 것을 권고 반복횟수는 최소 1,000번 이상을 권고 |
* 메모리-하드 함수는 알고리즘이 실행될 때 메모리 자원을 많이 필요로 한다.
즉, 기존의 CPU의 성능만 의존하는 공격과 달리, 메모리-하드는 메모리와 CPU 성능을 동시에 요구한다.
(참고)
https://www.dailysecu.com/news/articleView.html?idxno=824
https://pages.nist.gov/800-63-3/sp800-63b.html#memsecretver
https://www.kisa.or.kr/2060305/form?postSeq=5&page=1
https://www.kisa.or.kr/2060305/form?postSeq=7&page=1
'보안' 카테고리의 다른 글
암호 키 생성: 결정론적 난수발생기(DRBG) (1) | 2024.09.09 |
---|---|
암호 키 관리와 암호 키 보호 (1) | 2024.09.05 |
암호 키 생성 방식 (0) | 2024.09.05 |
개발자 도구 페이로드 평문 패스워드 노출: 클라이언트 측 RSA 암호화를 활용한 로그인 (2) - CAPTCHA 적용에 대해 (1) | 2024.08.26 |
개발자 도구 페이로드 평문 패스워드 노출: 클라이언트 측 RSA 암호화를 활용한 로그인 (1) (0) | 2024.08.22 |