블록암호와 관련된 내용을 먼저 익히고 읽는 것을 추천합니다
+) Naïve approach
분할 평문 블록 별로 암/복호화
-> 안전성에 문제가 있음
메시지 패딩(Padding)
마지막 평문 블록이 암호 알고리즘에서 정의한 블록 길이에 미치지 못하는 경우
- 패딩
불록 길이를 만족하도록 약속한 방식으로 적당한 실이의 비트열/바이트열 추가
복호화했을 때 마지막 평문 블록에서 패딩파트는 재외하고 평문으로 decode
블록 암호 모드
ECB 모드 | Electric Codebook (전자 코드북) |
CBC 모드 | Cipher Block Chaining (암호 블록 체이닝) |
CFB 모드 | Cipher Feedback (암호 피드백) |
OFB 모드 | Output Feedback (출력 피드백) |
CTR 모드 | Counter (카운터) |
ECB 모드
- Naïve approach대로 암호화
평문 블록별로 독립적으로 암/복호화 진행
개별 암/복호화에서는 같은 키를 사용
- 가장 간단한 모드
- 동일한 평문은 동일한 암호문으로 암호화됨 (일대일 관계, 암호문 통해 평문 패턴 분석 가능)
- Confidentiality 보호에 매우 취약함 -> 사용하지 않음
- 병렬적으로 암/복호화 처리 가능
모든 평문/암호문 블록이 독립적
CBC 모드
- Cipher Block Chaining
암호문 블록을 체인으로 연결시키는 방식
SSL/TLS 등 인터넷에서 블록 사용시 사용되는 모드
- 초기화 벡터가 필요
- 마지막 평문 블록에 대해 패딩 적용 필요
- 동일 평문이 같은 암호문으로 암호화되지 않음
- 중간 평문 블록만 뽑아서 암호화 할 수는 없음 (c.f. ECB 모드)
- 블록의 길이는 유지하면서 암호문 블록 1개가 파손된 경우 복호화했을 때 현재 평문 블록과 다음 평문 블록이 영향을 받음
- 중간에 블록 유실이 발생한 경우 유실된 블록에 대응하는 평문 블록은 복구가 불가능하고, 그 바로 다음 평문 블록에는 오류가 발생
- 자기 동기 기능 제공
- IV 내에서 원하는 위치에서 비트 반전 발생
(IV 조작으로 공격자가 원하는 위치에서 오류를 일으킬 수 있음)
CFB 모드
- Cipher Feedback
일회용 패드와 비슷한 구조
키스트림을 생성하고 이를 평문과 XOR
블록 암호를 스트림 암호로 쓸 수 있는 모드
- 초기화 벡터가 필요
- 암호화는 평문과 키스트림의 XOR 방식이며 평문에 대한 패딩이 필요하지 않다.
- 블록 암호의 복호화 알고리즘이 사용되지 않음
- 암호화 과정은 병렬x, 복호화 과정은 병렬처리o
- 재전송 공격이 가능 (Replay attack)
같은 키를 사용하는 경우 예전의 암호문을 이용한 새로운 의미 있는 암호문 생성 가능
- 블록의 길이는 유지 하면서 암호문 블록 1개가 파손된 경우 현재 평문 블록의 해당 비트 오류와 다음 평문 블록 전체에서 오류 발생
- 비동기식
OFB 모드
- Output Feedback
CFB와 비슷한 구조
키스트림을 생성하고 이를 평문과 XOR
블록 암호를 스트림 암호로 쓸 수 있는 모드
- 초기화 벡터가 필요
- 평문과 상관없이 키스트림을 미리 생성하는 것이 가능함
- 암호화 구조와 복호화 구조가 같음
- 블록 암호의 복호화 알고리즘이 사용되지 않음
- 암/복호화 과정 모두 병렬처리 불가능 (순차적으로만 가능)
- 블록의 길이는 유지하면서 암호문 블록 1개가 파손된 경우 현재 평문 블록의 해당 비트에만 오류가 발생한다.
CTR 모드
- Counter
키스트림을생성하고 이를 평문과 XOR하는 구조
블록 암호를 스트림 암호로 쓸 수 있는 모드
- 초기화 벡터가 필요하다
- 암호화 알고리즘과 복호화 알고리즘이 완전히 같은 구조
- 블록 암호의 복호화 알고리즘이 사용되지 않음
- 임의의 블록에 대해 암/복호화 할 수 있음
- 상용 암호화 알고리즘에서 많이 쓰임
- 블록의 길이는 유지하면서 암호문 블록 1개가 파손된 경우 현재 평문 블록의 해당 비트에만 오류 발생
'공부해요 > 현대암호학기초' 카테고리의 다른 글
#9. RSA 암호 시스템 (1) | 2023.11.22 |
---|---|
#8. 기초 대수학 (1) | 2023.11.14 |
#4. 일회용 패드 & 블록 암호 (1) | 2023.10.09 |
#3-2. 암호 안전성과 공격 모델 (1) | 2023.10.02 |
#3-1. 고전암호 (1) | 2023.10.02 |