2023. 11. 5. 14:08ㆍSWU_1학년 2학기/현대 암호학 기초
📌 블록 암호
- 블록 암호
- 𝑚 비트 단위로 암호화
- 평문의 길이가 𝑚 비트 이상인 경우
- 평문을 블록 단위로 분할
- Naïve approach
- 분할 평문 블록 별로 암/복호화 → 안전성에 문제가 있음
▶ 메시지 패딩 (Padding)
- 마지막 평문 블록이 암호 알고리즘에서 정의한 블록 길이에 미치지 못하는 경우
- 예를들어 AES는 한 블록 크기가 128 비트
- 평문의 길이가 192 비트인 경우 블록 구성 방법이 필요
패딩
- 블록 길이를 만족하도록 약속한 방식으로 적 당한 길이의 비트열/바이트열 추가
- 예를 들어 10…0 으로 채움 (비트 패딩)
- 표준에 따라 다르다.
- 복호화 했을 때 마지막 평문 블록에서 패딩 파트는 제외하고 평문으로 decode 된다.
▶ 블록 암호 모드
복수의 평문 블록을 어떤 방식으로 암호화할지를 정의하는 메커니즘이다.
5개의 주요 모드가 존재
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 등 인터넷에서 블록 암호 사용시 사용되는 모드
- 초기화 벡터가 필요 (IV, Initialization Vector)
- 0번째 암호문 블록을 대신하는 임의의 난수 벡터
- 암호화마다 다른 초기화 벡터를 사용한다.
- IV 를 포함하여 암호문이 구성된다.
- 마지막 평문 블록에 대해 패딩 적용이 필요하다.
형태
CBC 모드 암호화 / 복호화
특징
- 동일 평문이 같은 암호문으로 암호화되지 않는다.
- 암호화 단계
- 이전 암호문 블록과 XOR
- 위 결과에 대한 암호화중간 평문 블록만 뽑아서 암호화 할 수는 없음
- 블록𝑖 를 암호화하기 위해서는 앞선 암호문 블록이 필요
- 즉, 앞선 평문 블록에 대한 암호문 블록이 있어야 현재 평문 블록 암호화 가능
- 암호화 단계
- ECB 모드 경우는 중간 블록을 선택하여 암호화 가능
- 암호화 과정은 병렬처리 불가능
- 복호화 과정은 병렬처리 가능
- 현재 암호문 블록 & 직전 암호문 블록이 있으면 복호화 가능
- 블록의 길이는 유지하면서 암호문 블록 1개가 파손된 경우
- 즉, 어떤 암호문 블록 내에서 몇 비트에 오류가 발생한 경우
- 이 경우 복호화 했을 때 영향을 받는 평문은 아래 2개 평문 블록으로 한정됨
- 현재 평문 블록, 다음 평문 블록
- 중간에 블록 유실이 발생한 경우
- 즉, 전달 받은 암호문에 어떤 블록이 통째로 유실된 경우
- 유실된 블록에 대응하는 평문 블록은 복구가 불가능하고, 그 바로 다음 평문 블록에는 오류가 발생
- 이후에는 정상적인 복호화 수행 → 자기 동기 기능 제공 IV 내에서 원하는 위치에서 비트 반전을 일으키는 경우
- 평문 블록1에서 해당 위치에 비트 반전 발생
- 즉, IV 조작으로 공격자가 원하는 위치에서 오류를 일으킬 수 있다.
📌 CFB 모드
- Cipher Feedback
- 일회용 패드와 비슷한 구조
- 키스트림을 생성하고 이를 평문과 XOR
- 블록 암호를 스트림 암호로 쓸 수 있는 모드
- 일회용 패드와 비슷한 구조
- 초기화 벡터가 필요 (IV, Initialization Vector)
- 0번째 암호문 블록을 대신하는 임의의 난수 벡터
- 암호화마다 다른 초기화 벡터를 사용
- IV 를 포함하여 암호문이 구성됨
형태
CFB 모드 암호화 / 복호화
- 평문 자체에 블록 암호 알고리즘이 적용되는 것이 아니다.
- 암호화는 평문과 키스트림의 XOR 방식
- 평문에 대한 패딩이 필요없다.
- 블록 암호의 복호화 알고리즘이 사용되지 않는다.
- 암호화 과정은 병렬처리 불가능
- 복호화 과정은 병렬처리 가능
- 현재 암호문 블록, 직전 암호문 블록 입력만 있으면 복호화 가능
- 재전송 공격이 가능 (Replay attack)
- 같은 키를 사용하는 경우 예전의 암호문을 이용한 새로운 의미 있는 암호문 생성 가능
- 블록의 길이는 유지 하면서 암호문 블록 1개가 파손된 경우
- 즉, 어떤 암호문 블록 내에서 몇 비트에 오류가 발생한 경우
- 현재 평문 블록의 해당 비트 오류 + 다음 평문 블록 전체에서 오류 발생
- 중간에 블록 유실이 발생한 경우
- 즉, 전달 받은 암호문에 어떤 블록이 통째로 유실된 경우
- 유실된 블록에 대응하는 평문 블록은 복구가 불가능하고, 그 바로 다음 평문 블록에는 오류가 발생
- 이후에는 정상적인 복호화 수행 → 자기 동기 기능 제공
📌 OFB 모드
- Output Feedback
- CFB와 비슷한 구조
- 키스트림을 생성하고 이를 평문과 XOR
- 블록 암호를 스트림 암호로 쓸 수 있는 모드 (평문에 대한 패딩 필요X)
- CFB와 비슷한 구조
- 초기화 벡터가 필요 (IV, Initialization Vector)
- 0번째 암호문 블록을 대신하는 임의의 난수 벡터
- 암호화마다 다른 초기화 벡터를 사용
- IV 를 포함하여 암호문이 구성됨
형태
(복호화는 암호문블록과 평문 블록 위치만 다름)
- 평문과 상관없이 키스트림을 미리 생성하는 것이 가능하다.
- CFB 모드의 경우는 키스트림이 이전 평문 블록 정보에 의존
- OFB 모드의 경우는 키스트림이 이전 평문 블록 정보에 독립
- 암호화 구조와 복호화 구조가 같음
- 블록 암호의 복호화 알고리즘이 사용되지 않음
- 암/복호화 과정 모두 병렬처리 불가능
- 암호화와 복호화를 위해서는 앞선 블록에서의 연산처리 결과로 얻어지는 키스트림이 필요 →순차적으로만 처리 가능
- 블록의 길이는 유지 하면서 암호문 블록 1개가 파손된 경우
- 즉, 어떤 암호문 블록 내에서 몇 비트에 오류가 발생한 경우
- 현재 평문 블록의 해당 비트에만 오류 발생
📌 CTR 모드
- Counter
- 키스트림을 생성하고 이를 평문과 XOR하는 구조
- 초기화 벡터를 블록마다 1씩 증가시키고 이를 암호화하여 평문과 XOR
- 블록 암호를 스트림 암호로 쓸 수 있는 모드 (평문에 대한 패딩 필요X)
- 키스트림을 생성하고 이를 평문과 XOR하는 구조
- 초기화 벡터가 필요 (IV, Initialization Vector)
- 0번째 암호문 블록을 대신하는 임의의 난수 벡터
- 암호화마다 다른 초기화 벡터를 사용한다.
- IV 를 포함하여 암호문이 구성된다.
형태
- 암호화 알고리즘과 복호화 알고리즘이 완전히 같은 구조
- 블록 암호의 복호화 알고리즘이 사용되지 않음
- 임의의 블록에 대해 암/복호화 할 수 있음
- 키스트림이 CTR 에만 의존 → 해당 CTR 에 따라 암/복호화 가능
- 병렬 암/복호화 가능
- 상용 암호화 알고리즘에서 많이 쓰임
- 블록의 길이는 유지 하면서 암호문 블록 1개가 파손된 경우
- 즉, 어떤 암호문 블록 내에서 몇 비트에 오류가 발생한 경우
- 현재 평문 블록의 해당 비트에만 오류 발생
📌 요약
ECB
[ 장점 ]
1. 고속
2. 병렬처리 가능
[ 단점 ]
1. 패딩 필요
2. 평문 반복 → 암호문 반복
3. 암호문 블록 삭제/교체에 의한 평문 조작 가능
4. 복호화 오류없는 재전송 공격 가능
CBC
[ 장점 ]
1. 평문 반복이 암호문에 반영되지 않음
2. 복호화 과정은 병렬처리 가능
3. 임의의 암호문 블록 복호화 가능
[ 단점 ]
1. 패딩 필요
2. 암호화 과정 병렬처리 불가능
3. 암호문 블록내 비트 단위 에러가 발생하면 현재 평 문 및 다음 평문 블록까지 에러 발생
4. 약간의 복호화 오류가 있는 재전송 공격 가능
CFB
[ 장점 ]
1. 스트림 암호 방식 (패딩 불필요)
2. 복호화 과정은 병렬처리 가능
3. 임의의 암호문 블록 복호화 가능
[ 단점 ]
1. 암호화 과정 병렬처리 불가능
2. 암호문 블록내 비트 단위 에러가 발생하면 현재 평문 및 다음 평문 블록까지 에러 발생
3. 약간의 복호화 오류가 있는 재전송 공격 가능
OFB
[ 장점 ]
1. 스트림 암호 방식 (패딩 불필요)
2. 키스트림을 미리 발생시켜 사전에 암/복호화 준비 가능
3. 암호화 구조 = 복호화 구조
4. 암호문 블록내 비트 단위 에러가 발생하면 현재 평 문에만 한정됨
[ 단점 ]
1. 암호화 과정 병렬처리 불가능
2. 적극적 공격자가 암호문 블록 비트를 반전시키면 대응 평문 블록의 해당 비트가 반전
CTR
[ 장점 ]
1. 스트림 암호 방식 (패딩 불필요)
2. 키스트림을 미리 발생시켜 사전에 암/복호화 준비 가능
3. 암호화 구조 = 복호화 구조
4. 암호문 블록내 비트 단위 에러가 발생하면 현재 평 문에만 한정됨
[ 단점 ]
1. 적극적 공격자가 암호문 블록 비트를 반전시키면 대응 평문 블록의 해당 비트가 반전
'SWU_1학년 2학기 > 현대 암호학 기초' 카테고리의 다른 글
11주차_현대암호학 기초 [RSA 암호시스템] (0) | 2023.11.19 |
---|---|
10주차_현대암호학 기초 [기초 대수학] (0) | 2023.11.14 |
4주차_현대암호학 기초 (2) | 2023.10.08 |
3주차_ 현대암호학 기초 < 암호 안전성과 공격 모델 > (1) | 2023.10.01 |
3주차_현대암호학 기초 < 고전 암호 > (2) | 2023.10.01 |