암호화 방식 알고리즘
- 다양한 보안 알고리즘
암호화, 해시, 키 교환, 전자서명 등
- 암호 방식 분류
(1) 양방향
1.1 대칭키: Stream 방식, Block 방식
cf.
WEP(Wired Equivalent Privacy): RC4 사용, 키 길이 짧고 취약점 많음
WPA(Wi-Fi Protected Access): TKIP 사용, WEP의 임시 대안
WPA2: AES 사용, 현재 주류
WPA3: SAE 기반, 향상된 보안 기능
1.2 비대칭키
구분 | 대칭키(Symmetric Key) | 비대칭키(Asymmetric Key) |
키 종류 | 하나의 키 | 공개키 + 비밀키 (2개) |
사용 방식 | 같은 키로 암호화/복호화 | 공개키로 암호화 → 개인키로 복호화 |
속도 | 빠름 | 느림 |
예시 알고리즘 | AES, DES | RSA, ECC |
키 분배 문제 | 있음 | 상대적으로 덜함 |
키 공유 | 비밀 키를 미리 공유해야 함 | 공개키만 공유 |
대칭키는 통신 쌍마다 별도의 키가 필요해서 n(n-1)/2개를 관리해야 하고,
비대칭키는 사용자 1인당 1쌍의 키만 관리하면 되므로 관리할 키 수가 적다.
(2) 단방향
HASH
- 실 사용 예시
프로토콜/기술 | 사용 알고리즘 | 설명 |
HTTPS | 비대칭(RSA) + 대칭(AES) 해시 | 웹 통신 암호화 |
S/MIME, PGP | 비대칭 + 해시 | 메일 암호화 및 서명 |
IPSec | 대칭(AES) + 해시(HMAC-SHA) | VPN 보안 |
WPA2/3 | 대칭 | 무선 네트워크 암호화 |
PKI / 인증서 | 비대칭 + 해시 | 사용자 인증, 서명 |
- 언제 대칭키를 쓰고, 비대칭키를 쓰는지?
(1) 대칭키
데이터 양이 많고, 빠르게 암호화해야 할 때
📌 예시 상황:
- HTTPS 통신 본문 데이터 암호화
- VPN 통신 데이터 암호화 (IPSec)
- 파일이나 하드디스크 전체 암호화
- 무선 네트워크 보안 (WPA2/3)
(2) 비대칭키
상대방과 키를 미리 공유할 수 없을 때, 또는 신원 확인이 필요할 때
📌 예시 상황:
- 공개키로 암호화 → 수신자가 개인키로 복호화
- 디지털 서명 (개인키로 서명 → 공개키로 검증)
- 세션키 교환 (SSL/TLS 초기 핸드셰이크)
- 이메일 보안 (PGP, S/MIME)
i. 기밀성이 목적일 때
공개키로 암호화 => 개인키로 복호화
보내는 쪽이 공개키로 암호화하고, 수신자는 개인키로 복호화. 수신자만 볼 수 있다.
ii. 무결성/신뢰성(전자서명) 목적일 때
개인키로 서명 => 공개키로 검증
보내는 쪽이 개인키로 서명 -> 받는 쪽이 공개키(보내는 쪽이 공개한 공개키)로 검증
이 메시지는 나(개인키 주인)가 보낸게 맞다는 것을 증명
서명 검증은 누구나 가능하지만, 서명 생성은 개인 키 소유자만 가능
🔄 그럼 실제 통신에서는 어떻게 쓸까?
👉 둘을 함께 쓰는 하이브리드 방식이 일반적이야!
예: HTTPS 동작 과정
- 비대칭키(RSA)로 → 대칭키를 안전하게 교환
- 이후 본문 데이터는 → 대칭키(AES 등)로 빠르게 암호화
1. 대칭 키 암호화 (Symmetric Key Encryption): 한 번에 하나의 데이터 블록 암호화
- 암호화와 복호화에 같은 키를 사용
- 즉, 데이터를 암호화할 때 사용한 비밀키(Secret Key)를 복호화할 때도 그대로 사용한다
- 빠르고 효율적이지만 키 관리가 어려움 (키가 노출되면 보안이 깨짐).
- 키 길이: 암호화에서 사용되는 비밀키의 비트 수 (보안성)
- 블록 크기: 한 번에 암호화되는 데이터 크기(비트 단위) (효율성)
알고리즘 | 키 길이 | 특징 |
AES (Advanced Encryption Standard) | 128, 192, 256bit | -DES 상위 호환, - 현재 가장 널리 사용됨 (보안성+속도 우수) 🔥 - 대칭키 블록 암호화 방식 (블록 크기: 128bit), 128비트 블록 단위로 암호화 |
DES (Data Encryption Standard) | 56bit | - 오래된 암호화 방식 (보안 취약) ❌ - 3DES(Triple DES)로 개선됨, 블록 크기는 64bit, 키 길이 56bit, 16회의 라운드 |
3DES (Triple DES) | 168bit | - DES를 3번 적용해서 보안성 강화 💪 - 속도가 느려서 현재는 잘 안 씀 |
SEED | 128bit | - 1999. 한국(KISA)에서 개발한 블록 암호화 알고리즘 🇰🇷 - 금융권에서 사용됨 |
ARIA | 128, 192, 256bit | - 2004. 국정원과 산학연구협회에서 개발한 암호 알고리즘 🇰🇷 - AES 대체 가능 |
📌 AES가 가장 강력하고 널리 사용됨!
📌 SEED, ARIA는 국내 암호 알고리즘
🔄 동작 흐름
1️⃣. 입력 메시지 준비
- 메시지를 고정된 블록 크기로 나눔 (예: AES는 128비트)
- 부족하면 패딩(Padding)을 붙여 블록 크기에 맞춤
2️⃣. 암호화 키 준비
- 하나의 대칭키를 미리 공유하거나 생성
- 이 키는 암호화·복호화에 동일하게 사용
3️⃣. 각 블록에 대해 암호화 수행
- 블록마다 같은 키를 사용해 암호화
- 암호화 방식은 라운드(round) 단위의 반복 연산
4️⃣. 모든 블록 암호화 완료
- 암호화된 블록들을 순서대로 이어붙이면 → 최종 암호문(ciphertext)
- AES
2001년 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘
DES의 한계를 느낀 NIST에서 공모한 후 발표하였다.
블록 크기는 128비트이며, 키 길이에 따라 명칭 뒤에 128,192,256을 붙여 구분한다.
✅ HTTPS, VPN, 무선 네트워크(Wi-Fi WPA2)
✅ 은행, 전자정부 서비스, 블록체인 등 보안이 중요한 시스템
✅ 파일 암호화 및 데이터 보호 (BitLocker, VeraCrypt 등)
✅ AES는 대칭키 기반 블록 암호화 방식으로 보안성과 속도가 우수함
✅ 128비트 블록 크기 + 3가지 키 길이(128, 192, 256비트) 지원
✅ 현재까지 가장 안전한 암호화 알고리즘 중 하나로 널리 사용됨
⭐️ IDEA (International Data Encryption Algorithm) - 대칭키 암호화 알고리즘
✅ 개념
- 스위스 연방 기술 기관에서 개발한 대칭키 블록 암호 알고리즘
- DES 대체용으로 개발됨 (현재는 AES가 주로 사용됨)
💡 예제
📌 과거 PGP(Pretty Good Privacy) 암호화 프로그램에서 사용됨
🛡 특징
✅ 128비트 키 사용 → DES보다 보안성이 강함
✅ 현재는 AES(고급 암호화 표준)로 대체됨
스위스의 라이와 메시는 1990년 PES를 발표하고, 이후 이를 개선한 IPES를 발표하였다.
IPES는 128비트의 Key를 사용하여 64비트 블록을 암호화하는 알고리즘이며 현재는 IDEA라고 불린다.
Skipjack (기출)
국가 안전 보장국(NSA)에서 개발한 암호화 알고리즘
클리퍼 칩(Clipper Chip)이라는 IC 칩에 내장되어 있다.
80비트의 Key를 사용하여 64비트 블록을 암호화하며,
주로 전화기와 같은 음성 통신 장비에 삽입되어 음성 데이터를 암호화한다.
🔹 Skipjack과 다른 암호화 알고리즘 비교
알고리즘 | 키 길이 | 블록 크기 | 라운드 수 | 보안성 |
Skipjack | 80비트 | 64비트 | 32라운드 | NSA 설계로 불신 (백도어 가능성) |
AES-128 | 128비트 | 128비트 | 10라운드 | 안전 (현재 표준) |
DES | 56비트 | 64비트 | 16라운드 | 취약 (현재 사용 안 함) |
IDEA | 128비트 | 64비트 | ||
3DES | 168비트 | 64비트 | 48라운드 | 보안은 강하지만 느림 |
✅ Skipjack은 80비트 키를 사용하지만, AES(128비트 이상)보다 보안성이 떨어짐
✅ NSA가 설계한 알고리즘이라 정부 감청(백도어) 논란이 있었음
스트림 암호 방식 (Stream Cipher)
데이터를 1비트 또는 1바이트씩 연속적으로 암호화
평문과 동일한 길이의 스트림을 사용하여 비트 단위로 암호화 하는 방식
- RC4: 스트림 암호화 알고리즘.
- LFSR (Linear Feedback Shift Register): 선형 되먹임 시프트 레지스터로 계산하는 암호화 방식.
- SEAL: 스트림 암호화 알고리즘.
- TKIP(Temporal Key Integrity Protocol) (기출)
무선랜 보안에 사용된 WEP를 보완한 데이터 보안 프로토콜
임시 키 무결성 프로토콜
WEP 개선 버전
WEP의 취약성을 보완하기 위해 암호 알고리즘의 입력 키 길이를 128비트로 늘리고 패킷당 키 할당, 키값 재설정 등 키 관리 방식을 개선하였음
✅ 특징:
- 패킷마다 새로운 키를 생성하여 보안 강화
- RC4 스트림 암호화 방식 유지
- 무선 패킷에 대한 무결성 체크 (MIC, Message Integrity Check) 추가
- 하지만 여전히 WPA2보다 보안성이 떨어짐!
✅ 결론:
✔️ WEP보다는 보안성이 높지만, 현재는 WPA2 이상을 사용하는 것이 좋음!
🔥 TKIP의 주요 개선점
1️⃣ 128비트 키 길이로 증가
- WEP에서는 40비트 또는 104비트 키를 사용했어.
- TKIP는 128비트 키를 사용해서 보안을 강화했어.
2️⃣ 패킷당 키 할당 (키를 자주 변경!)
- WEP는 고정된 키를 사용해서 공격자가 쉽게 키를 알아낼 수 있었어.
- TKIP는 패킷마다 새로운 키를 생성하는 방식을 사용해서 보안성을 높였어.
3️⃣ 키값 재설정 (Key Mixing)
- TKIP는 키를 동적으로 변경하는 기능을 추가했어.
- IV(Initialization Vector, 초기화 벡터) 를 변경해서 반복되는 패턴을 방지했어.
4️⃣ 무결성 검사 (MIC, Message Integrity Check) 추가
- WEP는 데이터 무결성을 확인하는 기능이 없어서 패킷을 조작하는 공격(Replay Attack) 에 취약했어.
- TKIP는 MIC(Message Integrity Check)라는 무결성 검사를 추가해서 패킷 변조를 방지했어.
2. 비대칭 키 암호화 (Asymmetric Key Encryption)
- 공개 키(암호화)와 개인 키(복호화)를 사용하여 데이터를 보호.
- 속도가 느리지만 보안성이 뛰어나고 키 관리가 편리함.
알고리즘 | 키 길이 | 특징 |
RSA (Rivest-Shamir-Adleman) | 1024~4096bit | - 1977년 3명의 MIT 수학 교수가 고안한 소인수 분해 기반의 암호화 알고리즘. - 가장 널리 사용되는 공개 키 암호화 방식 🔒 - 속도가 느려서 대칭 키(AES)와 함께 사용됨 |
ECC (Elliptic Curve Cryptography) | 160~521bit | - RSA보다 작은 키로 동일한 보안성 제공 ⚡ - 모바일·IoT 환경에서 사용, RSA 암호 방식의 대안으로 타원 곡선 암호 알고리즘. |
Diffie-Hellman (DH) | 가변적 | - 대칭 키 교환을 위한 알고리즘 (자체 암호화 X), 최초의 공개키 알고리즘으로, 이산대수 기반, 두 사람이 직접 키를 주고받지 않아도 같은 세션키를 동시에 만들어내는 수학적 방법 |
📌 RSA가 가장 많이 사용됨, ECC는 모바일 환경에서 인기!
- ElGamal: 이산대수의 계산이 어려운 문제를 기본 원리로 하는 암호화 알고리즘.
3. 해시 알고리즘 (Hash Algorithm)
해시
임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 알고리즘
복호화가 거의 불가능한 일방향 함수(암호화가 아니라 단방향 변환)
무결성 검증, 정보보호의 다양한 분야에서 활용
알고리즘 | 해시 크기 | 특징 |
SHA-1 (Secure Hash Algorithm 1) | 160bit | - 현재는 보안 취약해서 사용 X ❌ |
SHA-2 (SHA-256, SHA-512 등) | 256~512bit | - 현재 가장 널리 사용됨 🔥 |
SHA-3 | 224~512bit | - SHA-2보다 보안성이 더 강함 💪 |
MD5 (Message Digest Algorithm 5) | 128bit | - 빠르지만 보안 취약 ❌ (충돌 발생 가능), 프로그램이나 파일의 무결성 검사에 사용된다 |
📌 SHA-256이 가장 많이 사용됨! (ex. 블록체인, SSL, 전자서명)
또 N-NASH, SNEFRU 등이 있다
- HAS-160: 국내 표준 서명 알고리즘을 위해 개발된 해시 함수로, MD5와 SHA-1의 장점을 결합한 알고리즘.
MD5 (Message Digest Algorithm5)
1991년 R.rivest가 MD4를 개선한 암호화 알고리즘
각각의 512 비트짜리 입력 메시지 블록에 대해 차례로 동작한다.
각 512비트 입력 메시지 블록을 처리하고 나면 128비트 스테이트의 값이 변하는 암호화 알고리즘
📌 "128비트 스테이트(State)"
- MD5는 내부에 계산 중인 결과값을 저장하는 변수 집합이 있어.
- 이 변수들은 총 128비트(=16바이트) 크기고,
흔히 A, B, C, D 네 개의 32비트 레지스터로 표현돼.
Message => 입력 데이터, 메시지(ex. 파일, 텍스트 등)
Digest => 요약, 정리된 결과물
Algorithm => 처리 방법
“입력 메시지를 고정된 길이의 요약값을 바꿔주는 알고리즘”
어떤 입력이든 128비트(16바이트) 해시값을 생성
입력: "정보처리기사"
MD5 해시: 4b1f9a9f728b243a... (16바이트)
블록 크기 512비트, 키 길이 128비트
데이터(문자열, 파일 등)를 128비트(16바이트) 해시 값으로 변환하는 알고리즘
임의의 길이 데이터를 128비트(32자리 16진수) 해시값으로 변환
🔄 핵심 동작 흐름
- 입력 데이터를 512비트 블록 단위로 분할
- 각 블록을 처리하면서,
- 128비트 스테이트(A, B, C, D) 값을 갱신해 나감
- 모든 블록을 처리한 후의 스테이트 값이 최종 해시값 (Digest)
📌 MD5의 한계
❌ 해시 충돌(Collision) 취약점 존재 → SHA-256, SHA-3 대체 권장
❌ 패스워드 저장에 부적합 → Salt + PBKDF2, bcrypt 사용 필요
4. 전자서명 알고리즘 (Digital Signature Algorithm)
- 데이터를 서명하여 위변조 방지 + 송신자 인증 기능 제공.
디지털 서명: 개인키로 암호화(서명)하고, 공개키로 복호화(검증)
알고리즘 | 특징 |
RSA 전자서명 | - RSA를 이용한 서명 방식 (속도가 느림) |
DSA (Digital Signature Algorithm) | - 정부 기관에서 많이 사용 |
ECDSA (Elliptic Curve DSA) | - ECC 기반 전자서명 (빠르고 보안성 높음) |
📌 ECDSA는 블록체인에서 전자서명 용도로 많이 사용됨!
5. 메시지 인증 코드 (MAC, Message Authentication Code)
- 데이터의 무결성과 인증을 보장하는 기술 (해시 + 대칭키 결합).
알고리즘 | 특징 |
HMAC (Hash-based MAC) | - 해시 함수(SHA-256 등) + 대칭키 사용 |
📌 HMAC-SHA256이 가장 많이 사용됨!
📌 한눈에 보는 정리표
구분 | 알고리즘 | 특징 |
대칭 키 암호화 | ⭐️AES | 가장 많이 사용됨 (강력한 보안) |
SEED | 한국(KISA)에서 개발 | |
ARIA | 국정원에서 개발 | |
비대칭 키 암호화 | ⭐️RSA | 가장 널리 사용됨 (느림) |
ECC | RSA보다 가볍고 빠름 | |
Diffie-Hellman | 키 교환용 (암호화 X) | |
해시 함수 | ⭐️SHA-256 | 현재 가장 많이 사용됨 |
MD5 | 보안 취약 (X) | |
전자서명 | ECDSA | 블록체인에서 사용됨 |
메시지 인증 코드 | ⭐️HMAC | 데이터 무결성 검증 |