CFB 모드
CBC 모드와 CFB 모드 비교
● Cipher FeedBack 모드(암호 피드백 모드) -> 피드백(FeedBack): 암호화 입력의 사용 의미
● CFB 모드에서는 1단계 앞의 암호문 블록을 암호알고리즘의 입력으로 사용
초기화 벡터
최초의 암호문 블록을 만들어낼 때는 1단계 앞의 출력이 존재하지 않으므로 대신에 IV를 사용'
CFB 모드는 평문 블록과 암호문 블록 사이에 오직 XOR만 있음
CFB 모드와 스트림 암호
CFP 모드는 평문 블록과 암호문 출력의 XOR를 이용 암호문을 생성
XOR에 의한 암호화와 비슷 (일회용 패드 : 평문 XOR 랜덤 비트열)
키 스트림 (Key Stream)
- CFB 모드에서 암호 알고리즘이 생성하는 비트열
- 키 스트림을 생성하기 위한 의사 난수 생성기로서 암호 알고리즘을 이용
- 초기화 벡터는 의사 난수 생성기의 seed(종자)에 해당
CFB 모드는 평문 데이터 1 비트씩 암호화 가능
CFB 모드의 복호화
CFB 모드에서 복호화를 수행할 경우 블록 암호알고리즘 자체는 암호화를 수행하고 있다는 것에 주의 키 스트림은 암호화에 의해 생성
CFB 모드에 대한 공격
재전송 공격(Replay Attack)
오늘 수신한 암호문의 복호화
OFB 모드
OFB 모드란?
● Output-FeedBack 모드(출력 피드백 모드)
● OFB 모드에서는 암호 알고리즘의 출력을 암호알고리즘
● 평문 블록은 암호 알고리즘에 의해 직접 암호화되고 있는 것은 아님
● "평문블록"과 "암호 알고리즘의 출력"을 XOR 해서 "암호문 블록"을 만든다.
OFB 모드에 의한 암호화
OFB 모드에 의한 복호화
초기화 벡터
● CBC 모드나 CFB 모드와 마찬가지로 초기화 벡터(IV)를 사용
● 초기화 벡터는 암호화 때마다 다른 랜덤 비트열을 이용
CFB 모드와 OFB 모드의 비교
1) OFB 모드와 CFB 모드의 암호 알고리즘 비교
OFB 모드와 CFB 모드에서는 암호 알고리즘으로의 입력만이 다르다.
CFB : 1개의 암호문 블록이 암호 알고리즘의 입력
● 암호문 블록은 암호 알고리즘으로 피드백
● 평문 블록1의 암호화를 수행하지 않고 평문 블록 2를 먼저 암호화 할 수 없음
OFB : 암호알고리즘의 입력으로 한단계 앞의 출력 사용
● 출력을 피드백
● 평문블록과 관계없이 암호알고리즘을 XOR하기 위해 키스트림 준비 기능
CTR 모드
카운터 만드는 법
1) CTR(CounTeR) 모드
● CTR 모드는 1씩 증가해 가는 카운터를 암호화해서 키 스트림을 만들어 내는 스트림 암호
● 블록을 암호화할 때마다 1씩 증가해가는 카운터를 암호화해서 키 스트림을 만든다.
2) 카운터 만드는 법 카운터 초기값
● 암호화 때마다 다른 값(Nonce, 비표)을 기초로 해서 작성
CTR 모드 암호화
CTR 모드 복호화
OFB 모드와 CTR 모드의 비교
CTR 모드의 특징
● CTR 모드의 암호화의 복호화는 완전히 같은 구조
● 프로그램으로 구현하는 것이 매우 간단
● OFB 모드와 같은 스트림 암호의 특징
● CTR 모드에서는 블록을 임의의 순서로 암호화/복호화 할 수 있다.
● 병렬 처리가 가능한 시스템에서는 CTR 모드를 이용하여 자료를 고속으로 처리
오류와 기밀성
CTR 모드의 암호문 블록에서 1비트의 반전이 발생한다고 가정
● 복호화를 수행하면, 반전된 비트에 대응하는 평문 블록의 1비트만이 반전 되고, 오류는 확대되지 않는다.
OFB 모드에서는 키 스트림의 1블록을 암호화한 결과가, 암호전의 결과와 우연히 같아졌다고 하면, 그 이후 키 스트림은 완전히 같은 값이 반복된다.
● CTR 모드에서는 그런 걱정은 없음
'CS > 공통' 카테고리의 다른 글
Design Pattern 디자인 패턴 종류 (0) | 2024.09.22 |
---|---|
사용자 인증(Authentication)과 권한 부여(Authorization)에 대한 이해 (0) | 2024.07.25 |
Debug - Release 차이 (0) | 2023.12.01 |
SDK, API의 개념과 차이점 (0) | 2023.10.09 |
모듈 Module (0) | 2023.08.24 |