각진 세상에 둥근 춤을 추자

암호화 알고리즘과 암호화 키 생성 도구 본문

보안

암호화 알고리즘과 암호화 키 생성 도구

circle.j 2024. 9. 5. 17:18

암호화 알고리즘 (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-1 160 bit 512 bit 2^64-1 bit 보안 취약, 더 이상 권장되지 않음
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 이론상 무제한 보안성 강화, 출돌 저항성 우수
MD5 128 bit 512 bit 2^64-1 bit 보안성 낮음, 충돌 공격에 취약

(* SHA2 이하의 해시 함수인 MD5, SHA-1은 권고되지 않는다.)

해시 함수를 이용한 비밀번호 암호화 개념


국내외 권고 암호 알고리즘 

 

1. 대칭키 암호화 알고리즘 (블록암호)

분류 NIST(미국) CRYPTREC(일본) ECRYPT(유럽) 국내
대칭키 암호 알고리즘 AES
3TDEA
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 성능을 동시에 요구한다. 

 

PBKDF의 일반적인 구조

 


(참고)

https://www.dailysecu.com/news/articleView.html?idxno=824

 

[인터뷰] 김승주 고려대 교수 “암호화의 문제점은...” - 데일리시큐

개인정보보호법이 시행되면서 기업들의 암호화에 대한 관심이 높아지고 있다. 특히 어떤 암호화 알고리즘을 사용해야 안전할지, 그리고 어떤 암호화 솔루션을 도입해야 할지 기업 입장에서는

www.dailysecu.com

https://pages.nist.gov/800-63-3/sp800-63b.html#memsecretver

 

NIST Special Publication 800-63B

NIST Special Publication 800-63B

pages.nist.gov

https://www.kisa.or.kr/2060305/form?postSeq=5&page=1

 

KISA 한국인터넷진흥원

 

www.kisa.or.kr

https://www.kisa.or.kr/2060305/form?postSeq=7&page=1

 

KISA 한국인터넷진흥원

 

www.kisa.or.kr