본문 바로가기
보안&네트워크/보안

블록암호화

by kakk789 2021. 12. 31.

블록암호화 운용방식

: 운용방식이란 하나의 키 아래에서 블록암호를 반복적으로 안전하게 하는 절차

 

ECB 모드 : Electric CodeBook mode

- 암호화 키를 사용하기에 보안에 취약
-
동일한 내용을 갖는 평문블록은 암호문도 동일함.(패턴이 존재함)

 

CBC 모드 :  Cipher Block Chaining mode

오라클 패딩 공격 ( CBC 취약점 ) – 패딩 여부에 따라 서버의 응답이 다름.
https://bperhaps.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%8C%A8%EB%94%A9-%EA%B3%B5%EA%B2%A9-%EA%B8%B0%EC%B4%88-%EC%84%A4%EB%AA%85-Oracle-Padding-Attack
- 1
단계 앞에 수행된 암호문 블록을 XOR 평문블록 후 암호화 실행
-
초기화 벡터
  :
최초 1단계 암호문 시에는 바로 전 단계가 존재하지 않으므로 대신할 비트열 블록 준비(초기화 벡터 IV)
-
송수신자간에 미리 약속이 되어있는 값을 이용(공개된 값을 사용해도 됌.)
-
패딩
  :
실제 CBC 모드를 적용할 경우에 암호화 될 평문의 길이는 가변적이라서 패딩 해야함.
  :
마지막 블록이 블록의 길이와 항상 딱 맞아 떨어지지 않음.(부족한 만큼 0 or 임의의 비트로 채움) --> 패딩
-->
만약 평문1과 평문2가 같아도 초기화 벡터값이 다르기 때문에 같은 값이 안나옴(ECB의 단점 해결)
 - IPsec
에서 CBC모드로 사용.(통신의 기밀성)
-
복호화
  :
이전 암호문블록1 XOR 현재 암호문블록2(복호화)

 

CFB 모드 - Cipher-FeedBack mode

- 패딩이 필요없음.(스트링 암호처럼 구성하여 평문과 암호문의 길이가 같다)
 - 1
단계 앞의 암호문 블록을 암호 알고리즘의 입력으로 사용
- CBC
랑 차이점은 CBC는 초기화 벡터계산 시 차이가 난다.
- CBC
같은 경우 초기화 벡터 xor 평문블록 -> 암호화 -> 암호문 블록
- CFB
같은 경우 초기화벡터를 암호알고리즘(암호화) xor 평문블록 -> 암호문 블록
-
복호화시 특이점은  초기화벡터를 암호알고리즘(암호화) xor 암호문 블록 -> 평문블록
****
암호 알고리즘이 생성하는 비트열을 키 스트림(Key stream)이라 부른다.
->
펑문의 데이터를 1비트씩 암호화 하기 때문에 스트림 암호 이기도 하다.  
->
즉 블록 암호화를 사용하여 생성한 키를 이용하는 스트림 암호
-->
재전송 공격(replay attack)가능
-
복호화
:
이전 암호문블록1 암호화 XOR 현재 암호문블록2

 

OFB 모드 - Output-FeedBack mode

- 스트림 암호화의 일종
1
단계 앞의 초기화벡터(암호화됐음)를 암호 알고리즘의 입력으로 사용
- 1
단계 앞의 초기화 벡터를 암호화하여 평문 블록과 XOR
-
최초단계에는 초기화 벡터를 암호화 XOR 평문블록

 

CTR 모드 - CounTeR mode

- 1씩 증가해 가는 카운터를 암호화해서 키 스트림으로 만들어 내는 스트림 암호
-
카운터(암호화) xor 평문블록 -> 암호화블록
-->
현재는 CBC혹은 CTR만 사용함.

 

CBC

- 암호문블록을 평문과 xor 후 암호화

 

CFB

- 암호문블록을 암호화 후 또 암호화해서 평문과 XOR

 

OFB

- 초기화 벡터를 암호화 후 암호화 후 암호화 후 암호화

 

 

특징 설명

: 블록 모드 : ECB, CBC
:
스트림 & 블록모드 : CFB,OFB,CTR
:
/복호화 병렬가능 블록 암호화 : ECB, CTR
:
복호화 시 병렬처리 가능 암호화 : CBC, CFB

모드 장점 단점
ECB
( Electric
CodeBook )
- 간단
- 고속
- 병렬 처리 가능(/복호화)
- 평문 속의 반복이 암호문에 반영
-
암호문 블록의 삭제나 교체 평문 조작 가능

- 비트단위의 에러가 있는 암호문을 복호화 하면 대응하는 블록이 에러
CBC
( Cipher Block Chaining )
- 복호화 병렬
- 임의의 암호문 블록을 복호화 할 수 있음.
(
바로 전의 암호문 블록을 이용한다는 뜻)

- 매우 상식적인 암/복호화 과정임
- 비트 단위의 에러가 있는 암호문을 복호화하면 1블록 전체와 다음 블록의 대응하는 비트가 에러
CFB
( Cipher 
 FeedBack)
- 복호화 병렬
- 패딩 X
- 임의의 암호문 블록을 복호화 할 수 있음.
(
바로 전의 암호문 블록을 이용한다는 뜻)

- 이전의 암호문 블록을 암호화하여 암/복호화에 사용
- 재생공격
- 비트 단위의 에러가 있는 암호문을 복호화 하면 1블록 전체와 다음 블록의 대응하는 비트 에러
OFB
( Output
 Feedback )
- 패딩 X
- /복호화 같은 구조
- 비트 단위의 에러가 있는 암호문을 복호화하면 평문에 대응하는 비트만 에러
- 이전 값의 초기화 벡터만 암호화하여 암/복호화에 사용
- 병렬 X
- 능동적 공격자가 암호문 블록을 비트 반전 시키면 대응하는 평문 블록이 비트 반전
CTR
( CounTeR )
- 패딩 X
- /복호화 같은 구조
- 비트 단위의 에러가 있는 암호문을 복호화하면 평문에 대응하는 비트만 에러
- 블록을 암호화 할 때마다 1씩 카운터를 1씩 늘려 초기화 벡터로 사용
- 능동적 공격자가 암호문 블록을 비트 반전 시키면 대응하는 평문 블록이 비트 반적

 

반응형

'보안&네트워크 > 보안' 카테고리의 다른 글

메일 관련 공격  (0) 2021.12.31
메일 보안 기술 ( MIME, PGP, S/MIME )  (0) 2021.12.31
Meltdown & Spectre  (0) 2021.12.31
FTP Bounce Attack  (0) 2021.12.31
FTP Passive 모드를 사용하는 이유  (0) 2021.12.31

댓글