대칭키 암호화 🔐

agnusdei·2025년 11월 24일

Information Security

목록 보기
15/96

🔐 대칭키 암호화: 블록 암호 (Block Cipher) 및 스트림 암호 (Stream Cipher) 분석

대칭키 암호화(Symmetric-key Cryptography)는 암호화와 복호화에 동일한 비밀 키를 사용하는 방식으로, 처리 단위에 따라 블록 암호스트림 암호로 나뉩니다. 기술사 수준에서는 이 둘의 동작 원리, 특성, 장단점, 응용 분야블록 암호의 운용 모드에 대한 깊이 있는 이해가 필수적입니다.


1. 블록 암호 (Block Cipher)

블록 암호는 고정된 길이의 블록(Block) 단위로 평문을 암호문으로 변환하는 대칭키 암호 방식입니다. 대표적으로 AES (Advanced Encryption Standard), DES (Data Encryption Standard), ARIA, SEED 등이 있습니다.

1.1. ⚙️ 동작 원리 및 특징

  • 처리 단위: nn비트 (예: 64비트, 128비트)의 고정된 블록 단위로 처리합니다.
  • 변환 방식: 치환(Substitution)순열(Permutation) 연산을 반복적으로 수행하여 평문과 암호문 사이에 복잡한 비선형 관계를 형성합니다 (혼돈과 확산의 원리).
    • 혼돈 (Confusion): 평문과 암호문 사이의 관계를 최대한 복잡하게 만들어 통계적 분석을 어렵게 합니다. (주로 S-Box를 통한 치환 연산)
    • 확산 (Diffusion): 평문의 한 비트 변화가 암호문의 여러 비트에 영향을 미치게 하여 평문 블록의 통계적 특성을 숨깁니다. (주로 P-Box를 통한 순열 연산)
  • 패딩 (Padding): 평문의 길이가 블록 크기의 배수가 아닐 경우, 암호화 전에 마지막 블록에 임의의 데이터를 추가하는 패딩이 필수적입니다.

1.2. 📈 주요 운용 모드 (Modes of Operation)

블록 암호는 단일 블록 처리 방식으로는 보안성이 낮으므로, 가변 길이의 데이터나 연속적인 데이터에 적용하기 위해 다양한 운용 모드(Modes of Operation)가 정의됩니다.

운용 모드약어 및 명칭특징 및 보안성
ECBElectronic Code Book (전자 코드북)가장 단순. 각 블록을 독립적으로 암호화. 동일 평문 블록 \to 동일 암호문 블록이 되어 패턴 노출 취약, 보안성 가장 낮음. 병렬 처리 가능.
CBCCipher Block Chaining (암호 블록 연결)가장 널리 사용. 이전 암호문 블록이 다음 평문 블록과 XOR 연산되어 체인을 형성. IV (Initial Vector) 사용. 동일 평문 블록이라도 다른 암호문 생성. 보안성 높음. 암호화는 병렬 불가, 복호화는 병렬 가능. 오류 전파 발생 (암호문 1비트 오류 \to 복호화 시 해당 블록 전체 + 다음 블록 1비트 오류).
CFB/OFB/CTRCipher Feedback/Output Feedback/Counter블록 암호스트림 암호 형태로 변환하여 운용하는 모드 (블록 암호 기반 스트림 암호). 패딩 불필요. CTR 모드는 병렬 처리와 임의 접근(Random Access)이 용이하여 고속 처리에 유리하며 현대 암호화에서 활용도가 높음.

2. 스트림 암호 (Stream Cipher)

스트림 암호는 비트(Bit) 또는 바이트(Byte) 단위의 평문 스트림을 키 스트림(Key Stream)XOR 연산하여 암호문 스트림을 생성하는 대칭키 암호 방식입니다. 대표적으로 RC4, ChaCha20, A5/1 등이 있습니다.

Ci=PiKiC_i = P_i \oplus K_i
(CiC_i: ii번째 암호문 비트, PiP_i: ii번째 평문 비트, KiK_i: ii번째 키 스트림 비트)

2.1. ⚙️ 동작 원리 및 특징

  • 처리 단위: 1비트 또는 1바이트 단위로 처리합니다.
  • 주요 구성: 난수 생성기 (Pseudo-Random Number Generator, PRNG)를 이용하여 비밀 키를 기반으로 평문의 길이만큼의 키 스트림을 생성하는 것이 핵심입니다.
  • 암호화: 생성된 키 스트림과 평문을 배타적 논리합(Exclusive OR, XOR) 연산하여 암호문을 얻습니다. 복호화는 암호문에 동일한 키 스트림을 다시 XOR하면 평문이 복원됩니다 (CK=(PK)K=P\text{C} \oplus \text{K} = (\text{P} \oplus \text{K}) \oplus \text{K} = \text{P}).
  • 보안성: 키 스트림의 주기(Period)가 길고 통계적 무작위성이 높을수록 보안성이 높아집니다.
  • 키 스트림 재사용 금지: 스트림 암호에서 가장 중요한 보안 원칙은 동일한 키 스트림으로 두 개 이상의 평문을 암호화하지 않는 것입니다. (One-Time Pad 원리 준수)
    • C1C2=(P1K)(P2K)=P1P2C_1 \oplus C_2 = (P_1 \oplus K) \oplus (P_2 \oplus K) = P_1 \oplus P_2
    • 암호문 쌍을 XOR 하면 키 스트림이 상쇄되어 평문 쌍의 XOR 값이 노출되며, 이를 통해 알려진 평문 공격 (Known-Plaintext Attack, KPA)에 취약해집니다.

2.2. 🔄 동기화 방식 (공유 키)

분류동기화 방식특징
동기식 스트림 암호Synchronous Stream Cipher키 스트림이 평문이나 암호문의 영향을 받지 않고 오직 초기화 벡터 (IV)에 의해 독립적으로 생성. 오류 전파가 없어 통신 오류에 강하지만, 송수신자 간 동기화가 필수적.
비동기식 스트림 암호Asynchronous Stream Cipher키 스트림 생성에 이전 암호문 또는 평문의 일부가 피드백되어 사용됨. 자기 동기화 (Self-synchronizing) 특성이 있어 일시적인 동기 오류를 스스로 복구 가능.

3. 블록 암호 vs. 스트림 암호 비교 (기술적 관점)

구분 (Aspect)블록 암호 (Block Cipher)스트림 암호 (Stream Cipher)
처리 단위고정 크기의 블록 (예: 64bit, 128bit)비트 또는 바이트 (1bit, 8bit)
암호화 연산복잡한 치환/순열 (S-Box, P-Box)의 반복 (Feistel 구조 등)키 스트림과 평문의 XOR 연산
속도/효율성상대적으로 느림 (블록 단위 처리), 하드웨어/소프트웨어 모두 적합상대적으로 빠름 (단순 XOR 연산), 하드웨어 구현 용이
오류 전파운용 모드에 따라 발생 (ECB 제외, CBC/CFB 등)없음 (동기식) 또는 제한적 (비동기식)
병렬 처리운용 모드에 따라 가능 (ECB, CTR) 또는 불가능 (CBC 암호화)용이 (비트/바이트 단위 독립적 처리)
주요 응용파일 암호화, 데이터베이스, VPN (IPsec), TLS의 기반실시간 통신 (음성, 영상 스트리밍), 무선 통신 (GSM, LTE)
대표 알고리즘AES, DES, T-DES, ARIA, SEEDRC4, ChaCha20, Salsa20, A5/1
데이터 무결성별도의 MAC (Message Authentication Code) 필요 (CBC-MAC, HMAC 등)별도의 MAC 필요

이러한 블록 암호와 스트림 암호의 기술적 특성과 운용 모드에 대한 이해는 시스템 설계 시 보안성, 성능, 오류 제어 등의 요구사항에 따라 적절한 암호화 메커니즘을 선택하는 데 중요한 기준이 됩니다.

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글