대칭키
암호화와 복호화에 동일한 키 하나를 사용하는 암호화 방식입니다.
핵심 구조
[키 A] → 암호화/복호화에 동일하게 사용
암호화: 평문 + 키A → 암호문
복호화: 암호문 + 키A → 평문
주요 특징
| 항목 | 내용 |
|---|---|
| 키 개수 | 1개 |
| 키 배송 문제 | 있음 (키 전달 중 탈취 위험) |
| 속도 | 빠름 (공개키 대비) |
| 대표 알고리즘 | AES, DES, 3DES |
키 배송 문제
A가 B에게 키를 전달하는 과정에서
제3자가 키를 탈취하면 → 암호문도 복호화 가능
→ 이를 해결하기 위해 공개키 방식을 활용
실사용 예시
| 사례 | 내용 |
|---|---|
| HTTPS | 공개키로 키 교환 후 실제 통신은 대칭키로 수행 |
| 파일 암호화 | AES로 대용량 파일 암호화 |
| DB 암호화 | 저장 데이터 암호화 |
Java 예시 (AES)
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(256);
SecretKey secretKey = keyGen.generateKey();
Cipher cipher = Cipher.getInstance("AES");
// 암호화
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encrypted = cipher.doFinal("plaintext".getBytes());
// 복호화
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decrypted = cipher.doFinal(encrypted);
대칭키는 속도가 빠르다는 장점 때문에 대용량 데이터 암호화에 적합하며, 키 배송 문제는 공개키 방식과 혼합하여 해결합니다.