블록 암호 모드 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
[[분류:보안]] | [[분류:보안]][[분류:암호학]] | ||
[[분류:암호학]] | |||
;Block Cipher Mode; Block Cipher Modes of Operation | ;Block Cipher Mode; Block Cipher Modes of Operation | ||
;[[블록 암호]]에서 블럭 단위로 암·복호화 되는 과정을 반복적으로 운용하는 절차 | ;[[블록 암호]]에서 블럭 단위로 암·복호화 되는 과정을 반복적으로 운용하는 절차 | ||
==종류== | == 종류 == | ||
===[[ECB 모드]]=== | === [[ECB 모드]] === | ||
* 각 블록은 동일한 키를 이용하여 독립적으로 암호화 | |||
* 평문 조작이 가능하고 재전송 공격에 취약 | |||
* 간단한 구현, 고속 암복호화, 병렬처리 가능 | |||
*각 블록은 | === [[CBC 모드]] === | ||
*평문 | * 각 평문 블록은 이전 블록 암호문와 XOR 연산 후 암호화 | ||
* | * IV -> 평문 블록1과 XOR -> 암호화 -> 암호문 블록1 -> 평문 블록2와 XOR -> 암호화 -> 암호문 블록2 ... | ||
* Initial Vector 사용, 오류 파급 발생 | |||
* 패딩 사용 | |||
* 암복호화 병렬처리 불가 | |||
===[[ | ==== 활용 ==== | ||
* 보안적으로 가장 강력한 암호화 모드로 평가 | |||
* [[IPSec]], [[커버로스]] 등에서 사용 | |||
* | === [[CFB 모드]] === | ||
*IV -> 평문 블록1과 XOR -> | * 이전 암호문을 암호화하여 평문과 XOR(평문에 대한 직접 암호화 없음) | ||
*Initial Vector 사용, 오류 파급 발생 | * IV -> 암호화 -> 평문 블록1과 XOR -> 암호문 블록1 -> 암호화 -> 평문 블록2와 XOR -> 암호문 블록2 ... | ||
*패딩 | * Initial Vector 사용, 오류 파급 발생 | ||
* | * 패딩 사용하지 않음(스트림 암호처럼 Bit 단위 암호화) | ||
* 암호화는 순차적으로, 복호화는 병렬처리 가능 | |||
* 평문과 암호문의 길이가 같음 | |||
=== [[OFB 모드]] === | |||
* 이전 암호 알고리즘의 출력을 암호화하여 평문과 XOR(평문에 대한 직접 암호화 없음) | |||
* IV -> 암호화 -> 평문 블록1과 XOR -> 암호문 블록1 -> IV를 한번 더 암호화 -> 평문 블록2와 XOR -> 암호문 블록2 ... | |||
* IV를 암호화하여 키 생성 | |||
* Initial Vector 사용, 오류 파급 없음 | |||
* 평문과 암호문의 길이가 같음 | |||
* 암호문을 동일하게 한번 더 암호화하면 복호화됨 | |||
===[[OFB 모드]]=== | |||
*이전 암호 알고리즘의 출력을 암호화하여 평문과 XOR(평문에 대한 직접 암호화 없음) | |||
*IV -> 암호화 -> 평문 블록1과 XOR -> 암호문 블록1 -> IV를 한번 더 암호화 -> 평문 블록2와 XOR -> 암호문 블록2 ... | |||
*IV를 암호화하여 키 생성 | |||
*Initial Vector 사용, 오류 파급 없음 | |||
*평문과 암호문의 길이가 같음 | |||
*암호문을 동일하게 한번 더 암호화하면 복호화됨 | |||
==== OFB와 CFB의 비교 ==== | |||
* 암호 알고리즘으로의 입력만이 다름 | |||
* CFB 모드: 1개 앞의 암호문 블록이 암호 알고리즘으로의 입력 | |||
* OFB 모드: 암호 알고리즘의 한 단계 앞의 출력이 암호 알고리즘으로의 입력 | |||
[[파일:CFB모드와 OFB모드 비교.png|400px]] | [[파일:CFB모드와 OFB모드 비교.png|400px]] | ||
===[[CTR 모드]]=== | === [[CTR 모드]] === | ||
* 1씩 증가해가는 카운터를 암호화해서 키 스트림을 만들어내는 스트림 암호 모드 | |||
*1씩 증가해가는 카운터를 암호화해서 키 스트림을 만들어내는 스트림 암호 모드 | * 카운터를 암호화한 비트열과 평문 블록을 XOR | ||
*카운터를 암호화한 비트열과 평문 블록을 XOR | * 오류의 파급 없음 | ||
*오류의 파급 없음 | * 암복호화 병렬처리 가능 | ||
*암복호화 병렬처리 가능 | * IV는 사용하지 않고 카운터 값 사용 | ||
*IV는 사용하지 않고 카운터 값 사용 | |||
==비교== | == 비교 == | ||
{| class="wikitable" | {| class="wikitable" | ||
!스케줄링 | ! 스케줄링 | ||
!IV 필요 | ! IV 필요 | ||
!오류 파급 | ! 오류 파급 | ||
!패딩 사용 | ! 패딩 사용 | ||
(평문 암호문 길이 다름) | (평문 암호문 길이 다름) | ||
!암호화 병렬처리 | ! 암호화 병렬처리 | ||
!복호화 병렬처리 | ! 복호화 병렬처리 | ||
!결과 형태 | ! 결과 형태 | ||
|- | |- | ||
|ECB | | ECB | ||
|X | | X | ||
|X | | X | ||
|O | | O | ||
|O | | O | ||
|O | | O | ||
|Block | | Block | ||
|- | |- | ||
|CBC | | CBC | ||
|O | | O | ||
|O | | O | ||
|O | | O | ||
|X | | X | ||
| | | X | ||
|Block | | Block | ||
|- | |- | ||
|CFB | | CFB | ||
|O | | O | ||
|O | | O | ||
|X | | X | ||
|X | | X | ||
|O | | O | ||
|Stream | | Stream | ||
|- | |- | ||
|OFB | | OFB | ||
|O | | O | ||
|X | | X | ||
|X | | X | ||
|X | | X | ||
|X | | X | ||
|Stream | | Stream | ||
|- | |- | ||
|CTR | | CTR | ||
|카운터 | | 카운터 | ||
|X | | X | ||
|X | | X | ||
|O | | O | ||
|O | | O | ||
|Stream | | Stream | ||
|} | |} |