1. Stream Cipher
- Symmetric Encryption의 종류 중 하나
- 평문을 연속적인 비트 단위로 암호화하는 방식
- 입력이 들어올 때마다 즉시 암호화 결과 생성
- 빠르지만 key 재사용은 불가능
2. LFSR Cipher
- LFSR은 이전 상태들의 선형 결합으로 다음 비트를 생성
- 선형함수 f를 사용해 키 스트림을 생성
3. RC4
- 다양한 키 길이를 사용할 수 있으며, 바이트 단위로 동작
- 빠른 속도가 특징이며 Random Permutation 기반 키 스트림 생성
- 상태 배열 S 초기화(S는 0~255까지의 숫자를 순서대로 저장하는 배열)
1) T 배열 생성: 키 k를 반복적으로 복사해서 만든 256 길이의 배열
2) S 배열을 T 배열로 섞기
- 초기화된 S 배열을 바탕으로 스트림 키 생성
- 이렇게 생성된 키 스트림과 평문을 XOR하면 암호화
- ciphertext와 키 스트림을 XOR하면 복호화
4. Modes of Operation
- 블록 암호는 고정된 길이의 블록 단위로 동작하기 때문에 다양한 크기의 평문을 처리하기 위해선 mode of operation이 필요
- 블록 싸이퍼는 블록 하나만 암호화할 수 있는 기계라면, Mode of Operation은 여러개의 블록을 암호화할 수 있도록 만드는 방식
- ECB, CBC 등이 있음
5. ECB(Electronic Codebook) Mode
- 평문 블록 P1, P2, .., PN 각각을 같은 키 K로 암호화
- substitution attack에 취약
6. CBC(Cipher Block Chaining) Mode
- 평문 블록을 암호화할 때, 첫 블록은 초기화 벡터 IV와 XOR한 후 블록 암호로 암호화됨
C1 = Enc(K, P1⊕IV)
- 이후 각 블록은 이전 암호문 블록과 XOR한 후 암호화됨
Ci = Enc(K, Pi⊕Ci−1)
- 복호화는 Dec(C1, K) ⊕ IV 또는 Dec(Ci, K) ⊕ Ci-1
- 블록들이 서로 연결되어 있어서 보안성 향상
- 병렬 처리 불가능
- 하나의 암호문 블록이 손상되면 이후 블록들도 오류 발생
- IV가 고정되면 위험
7. CFB(Cipher Feedback) Mode
- 초기값 IV를 사용하여 시작하며 IV를 블록 암호로 암호화
- 그 결과의 상위 s비트를 선택
- 이 s비트를 평문 블록과 XOR하여 암호문 블록을 만듬
- 암호문 블록을 다시 shift register에 입력하여 다음 단계에서 IV처럼 사용
- 암호화는 C1 = Enc(K, IV) ⊕ P1 또는 Ci = Enc(K, Ci-1) ⊕ Pi
- 복호화는 P1 = Enc(K, IV) ⊕ C1 또는 Pi = Enc(K, Ci-1) ⊕ Ci
- 블록 암호를 스트림 암호처럼 사용할 수 있게 해줌
- 초기화 벡터 IV는 랜덤하고 예측 불가능해야 하며, 반복되면 보안이 깨질 수 있음
8. OFB(Output Feedback) Mode
- 블록 암호를 스트림 암호처럼 동작하게 만들어주는 방식
- 평문 블록을 직접 암호화하지 않고, 키 스트림을 만들어 그것과 평문을 XOR하는 방식
- 키스트림은 반복적으로 암호화된 출력값을 다시 입력값으로 사용
- 암호화는 Enc(K, Pi) = Xi ⊕Pi
- 복호화는 Enc(K, Ci) = Xi ⊕ Ci
- 키스트림을 미리 계산 가능
9. CTR(Counter) Mode
- 초기 카운터(CTR) 값을 K와 암호화하여 Xi 생성
- Pi와 Xi를 XOR하여 암호문 생성
- CTR 값을 하나씩 증가시키며 같은 방식으로 진행
- 스트림 암호처럼 작동
- CTR만 바뀌면 비결정성 보장
- 병렬 처리 및 미리 계산도 가능
Diffie-Hellman Key Exchange (0) | 2025.06.11 |
---|---|
Discrete Logarithm Problem (0) | 2025.06.11 |
Symmetric Encryption(1) (0) | 2025.04.21 |
Classical Encryption (0) | 2025.04.17 |
Introduction to Information Security and Cryptography (0) | 2025.04.17 |