블록암호화 운용방식
: 운용방식이란 하나의 키 아래에서 블록암호를 반복적으로 안전하게 하는 절차
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 |
댓글