1️⃣ 암호 알고리즘 (Encryption Algorithm)
1) 개념
데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기술이다. 즉 평문(plain text)을 특정 키를 사용해 쉽게 해독할 수 없는 암호문(crypto text)으로, 혹은 그 반대로 변환하는 것을 말한다.
- 기밀성 (Confidentiality) : 인가된 사용자에 대해서만 자원 접근이 가능해야 한다는 특성
- 무결성 (Integrity) : 인가된 사용자에 대해서만 자원 수정이 가능하며, 전송 중인 정보는 수정되지 않아야 한다는 특성
- 가용성 (Availability) : 인가된 사용자는 가지고 있는 권한 범위 내에서 언제든 자원 접근이 가능해야 한다는 특성
2) 종류
2️⃣ 양방향 방식
1) 대칭키 암호화 방식 (Symmetric-key Encryption)
대칭키 암호 알고리즘은 하나의 키로 암호화와 복호화를 모두 수행하는 알고리즘이다. 따라서 암호문으로 변환하는 암호키와 평문으로 해독하는 해독키가 같다. 해당 키를 '비밀키(Secret Key)'라고 하며 비밀키 전달을 위한 키 교환이 필수적이다. 스트림 암호 방식과 블록 암호 방식이 있으며, 대표적으로 LSFR, SEAL, DES, 3DES, AES 등의 방식이 있다.
방식 | 방식 |
스트림 암호 방식 | 매우 긴 주기의 난수열을 발생시켜 평문과 함께 암호문을 생성하는 방식 |
블록 암호 방식 | 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화하는 블록 암호 알고리즘을 반복하는 방식 |
알고리즘 | 암호화 방식 | 설명 |
DES | 블록 | 블록 크기 64bit, 키 길이 56bit 인 Feistel 구조, 16 라운드 암호화 알고리즘. 보안이 더욱 강화된 3 DES에 활용 |
AES | 블록 | 블록 크기 128bit, 키 길이에 따라 128bit, 192bit, 256bit로 분류. 10, 12, 14 라운드로 분류되며, 각 라운드는 4가지 계층으로 구성. 3 DES 성능 문제를 개선하기 위해 개발. |
ARIA | 블록 | 블록 크기 128bit, 키 길이에 따라 128bit, 192bit, 256bit로 분류. 경량 환경 및 하드웨어 효율성 향상을 위해 개발. ARIA의 대부분 연산은 XOR같은 단순 바이트 단위 연산. |
IDEA | 블록 | 128bit의 키 사용, 64bit의 평문을 8라운드에 거쳐 64bit로 만듦. DES를 대체하기 위해 개발. |
Skipjack | 블록 | Clipper 칩에 내장된 블록 알고리즘. 주로 64bit의 입출력, 80bit의 키, 32라운드를 가짐. |
LFSR | 스트림 | 시프트 레지스터의 일종, 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조로 되어 있는 알고리즘. 주로 사용되는 선형 함수는 XOR, 초기 비트 값은 'Seed' 라고 불림. |
2) 비대칭키 암호화 방식 (Asymmetric-key Encryption)
비대칭키 암호화 알고리즘은 사전에 개인 키를 나눠 가지지 않은 사용자들이 안전하게 통신하는 방식이다. 대칭키 암호화 방식과는 다르게 공개키(Public Key)와 개인키(Private Key) 쌍으로 구성되어 있으며, 공개키 암호화 및 전자 서명과 같은 공개키 암호 시스템에서 사용된다. 대표적으로 DH, RSA, ECC, EIGamal 등의 방식이 있다.
- 공개키(Public Key) : 암호화와 인증에 사용된다. 모든 사람에게 공개되며, 다른 사람이 메시지를 보낼 때 해당 공개키를 사용해 메시지를 암호화할 수 있다. 암호화된 메시지는 공개키로만 해독할 수 있는 개인키로만 해독할 수 있다.
- 개인키(Private Key) : 메시지의 해독 및 전자 서명을 생성하는 등에 사용된다. 공개되지 않는 비밀 키로, 오직 소유자만이 알고 있어야 한다. 개인키로 암호화된 메시지는 해당 공개키로만 해독할 수 있다.
알고리즘 | 설명 | |
DH(디피-헬만) | 최초의 공개키 알고리즘, 유한 필드 내에서 이산대수의 계산이 어려운 문제를 기본 원리로 한다. | |
RSA | 큰 인수의 곱을 소인수 분해하는 수학적 알고리즘을 이용한다. | |
ECC | 유한체 위에서 정의된 타원곡선 군에서의 이산대수의 문제를 기본 원리로 한다. | |
ElGamal | 이산대수의 계산이 어려운 문제를 기본 원리로 하며, RSA와 유사하게 전자서명과 데이터 암호화 및 복호화에 사용 가능하다. |
3) 대칭 키 암호화 방식 vs 비대칭 키 암호화 방식
비교 대상 | 대칭 키 암호화 방식 | 비대칭 키 암호화 방식 |
키 | 대칭 키 (비밀 키) | 비대칭 키 (공개키 + 사설 키) |
키 관계 | 암호화 키 = 복호화 키 | 암호화 키 != 복호화 키 |
키 개수 | n(n-1) / 2 | 2n |
암호 알고리즘 | 공개 | 공개 |
장점 | 계산 속도가 빠르다. | 암호화 키를 사전에 공유하지 않아도 된다. 관리해야 할 키 개수가 적다. |
단점 | 키 분배 및 관리가 어렵다. 기밀성만 보장한다. |
계산 속도가 느리다. |
알고리즘 | DES, 3DES, AES, LFSR, SEAL 등 | DH, RSA, ECC, ElGamal 등 |
3️⃣ 단방향 방식 (해시 암호 방식)
단방향 암호화 방식은 해시 암호 방식이라고도 불리며, 주어진 입력 값을 고정 길이의 고유 해시 값으로 변환하는 방식이다. 다음은 해시 함수의 특성이다.
- 고유성 : 서로 다른 입력 값에 대해 유일한 해시 값이 생성된다.
- 고정 길이 출력 : 어떤 크기의 입력도 항상 고정된 길이의 해시 값으로 변환된다.
- 무결성 : 입력 값이 조금만 바뀌어도 해시 값은 완전히 달라진다.
- 압축성 : 아주 큰 데이터도 작은 크기의 해시 값으로 변환된다.
- 반환 속도 : 빠른 속도로 해시 값을 계산할 수 있어야 한다.
해시 암호 방식은 단방향성을 가지기 때문에, 해시 값으로부터 기존 입력 값을 복구할 수 없다. 즉, 해시 암호화 알고리즘이 적용된 정보는 복호화할 수 없다. 따라서 주로 데이터 무결성 검사, 메시지 인증, 비밀번호 저장 등에 사용된다.
가장 널리 사용되는 해시 함수 중 하나는 SHA (Secure Hash Algorithm) 시리즈이다. 예를 들어 SHA-256은 256bit(32byte)의 해시 값을 생성하는 함수이다. MD5와 SHA-1은 과거에 많이 사용되었지만, 현재 보안 취약점이 발견되어 권장하지 않는다.
1) MAC 방식
MAC (Message Authentication Code) 방식은 키를 사용하는 메시지 인증 코드로, 메시지의 정당성을 검증하기 위해 메시지와 함께 전송되는 값이다. MAC는 비밀키를 사용해 메시지에 대한 인증 코드를 생성하는 방식으로, 메시지의 무결성과 송신자의 인증을 보장한다. (무결성 + 인증). MAC는 메시지의 내용과 키에 대한 공격이 있을 경우 무력화될 수 있기 때문에 안전한 키 관리가 필요하다.
2) MDC 방식
MDC (Modification Detection Code) 방식은 키를 사용하지 않는 변경 감지 코드로, 수신자는 받은 데이터로부터 새로운 MDC를 생성하여 송신자에게 받은 MDC와 비교하여 해당 메시지가 변경되어 않았음을 보장하는 값이다. MDC는 해시 함수를 사용해 메시지의 해시값을 생성하는 방식으로, 메시지의 무결성을 보장한다. 송신자는 메시지와 함께 해당 해시 값을 전송하고, 수신자는 동일한 해시 함수를 사용해 메시지의 해시 값을 다시 계산하여 비교한다. MDC는 보안성과 안정성이 높지만, 메시지의 무결성만 보장하며 인증은 보장하지 않는다.
비교 대상 | MAC | MDC |
암호화 방식 | 메시지 인증 코드를 생성하는 데 비밀 키 사용 | 메시지 요약 값을 생성하기 위해 해시 함수 사용 |
보호 대상 | 무결성 + 인증 | 무결성 |
3) 알고리즘 종류
알고리즘 | 설명 |
MD5 | 각각 512bit의 입력 메시지 블록에 대해 차례대로 동작하여 128bit의 해시값을 생성. MD4를 개선한 암호화 알고리즘. 프로그램이나 파일의 무결성 검사에 사용. |
SHA-1 | 160bit 해시값을 생성. 1993년 미 정부 표준으로 지정되었고, DSA(Digital Signature Algorithm)에서 사용. |
SHA-256/284/512 | SHA 알고리즘의 한 종류로, 256bit의 해시값을 생성하는 해시함수. AES의 키 길이인 128, 192, 256bit에 대응하도록 출력 길이를 늘인 해시 알고리즘. |
HAS-160 | 국내 표준 서명 알고리즘을 위해 개발된 해시함수. MD5와 SHA1의 장점을 취해 개발. |
HAVA | 메시지를 1024bits 블록으로 나눠 128, 160, 192, 224, 256bit인 메시지 다이제스트를 출력하는 해시 알고리즘 |
참고
정보처리기사 개념서