공부해요/현대암호학기초

#7. 블록 암호 모드

yenas0 2023. 11. 7. 04:55
반응형

 

https://yenas0.tistory.com/71

 

#4. 일회용 패드 & 블록 암호

1. 비트 연산 & 선형 함수 2. 일회용 패드 (One-Time Pad) 3. 블록 암호 (Block Cipher) 4. DES (Data Encryption Standard) 1. 비트 연산 & 선형함수 1) 비트 연산 비트열 - 0과 1로 표현된 수열 - 어떤 수 x가 n비트 x는 0

yenas0.tistory.com

 

블록암호와 관련된 내용을 먼저 익히고 읽는 것을 추천합니다

 

 

+) 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 보호에 매우 취약함 -> 사용하지 않음

 

- 병렬적으로 암/복호화 처리 가능

모든 평문/암호문 블록이 독립적

 

https://itwiki.kr/w/ECB_%EB%AA%A8%EB%93%9C

 

 

 

 

CBC 모드

- Cipher Block Chaining

암호문 블록을 체인으로 연결시키는 방식

SSL/TLS 등 인터넷에서 블록 사용시 사용되는 모드

 

- 초기화 벡터가 필요

 

- 마지막 평문 블록에 대해 패딩 적용 필요

 

- 동일 평문이 같은 암호문으로 암호화되지 않음

 

- 중간 평문 블록만 뽑아서 암호화 할 수는 없음 (c.f. ECB 모드)

 

- 블록의 길이는 유지하면서 암호문 블록 1개가 파손된 경우 복호화했을 때 현재 평문 블록과 다음 평문 블록이 영향을 받음

 

- 중간에 블록 유실이 발생한 경우 유실된 블록에 대응하는 평문 블록은 복구가 불가능하고, 그 바로 다음 평문 블록에는 오류가 발생

 

- 자기 동기 기능 제공

 

- IV 내에서 원하는 위치에서 비트 반전 발생

(IV 조작으로 공격자가 원하는 위치에서 오류를 일으킬 수 있음)

 

https://itwiki.kr/w/CBC_%EB%AA%A8%EB%93%9C

 

 

 

 

 

CFB 모드

- Cipher Feedback

일회용 패드와 비슷한 구조

키스트림을 생성하고 이를 평문과 XOR

블록 암호를 스트림 암호로 쓸 수 있는 모드

 

- 초기화 벡터가 필요

 

- 암호화는 평문과 키스트림의 XOR 방식이며 평문에 대한 패딩이 필요하지 않다.

 

- 블록 암호의 복호화 알고리즘이 사용되지 않음

 

- 암호화 과정은 병렬x, 복호화 과정은 병렬처리o

 

- 재전송 공격이 가능 (Replay attack)

같은 키를 사용하는 경우 예전의 암호문을 이용한 새로운 의미 있는 암호문 생성 가능

 

- 블록의 길이는 유지 하면서 암호문 블록 1개가 파손된 경우 현재 평문 블록의 해당 비트 오류와 다음 평문 블록 전체에서 오류 발생

 

- 비동기식

 

https://itwiki.kr/w/CFB_%EB%AA%A8%EB%93%9C

 

 

 

 

 

 

OFB 모드

- Output Feedback

CFB와 비슷한 구조

키스트림을 생성하고 이를 평문과 XOR

블록 암호를 스트림 암호로 쓸 수 있는 모드

 

- 초기화 벡터가 필요

 

- 평문과 상관없이 키스트림을 미리 생성하는 것이 가능함

 

- 암호화 구조와 복호화 구조가 같음

 

- 블록 암호의 복호화 알고리즘이 사용되지 않음

 

- 암/복호화 과정 모두 병렬처리 불가능 (순차적으로만 가능)

 

- 블록의 길이는 유지하면서 암호문 블록 1개가 파손된 경우 현재 평문 블록의 해당 비트에만 오류가 발생한다.

 

https://itwiki.kr/w/OFB_%EB%AA%A8%EB%93%9C

 

 

 

 

 

CTR 모드

- Counter

키스트림을생성하고 이를 평문과 XOR하는 구조

블록 암호를 스트림 암호로 쓸 수 있는 모드

 

- 초기화 벡터가 필요하다

 

- 암호화 알고리즘과 복호화 알고리즘이 완전히 같은 구조

 

- 블록 암호의 복호화 알고리즘이 사용되지 않음

 

- 임의의 블록에 대해 암/복호화 할 수 있음

 

- 상용 암호화 알고리즘에서 많이 쓰임

 

- 블록의 길이는 유지하면서 암호문 블록 1개가 파손된 경우 현재 평문 블록의 해당 비트에만 오류 발생 

 

https://itwiki.kr/w/CTR_%EB%AA%A8%EB%93%9C

반응형

'공부해요 > 현대암호학기초' 카테고리의 다른 글

#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