블록 암호화와 운용방식
블록 암호화란
* 평문을 고정된 크기의 블록 단위로 구성하여 암호화 작업을 하는 대칭키 암호화 방식
* 평문의 반복되는 회전 함수로 회전함수의 입력값은 Key 와 이전회전된 결과물이 사용된다.
* 특정한 길이의 블록단위로 동작하기 때문에 가변 길이 데이터를 암호화 하기 위해서는
이들을 블록 단위로 나누어 처리야해 한다.
* 블록들을 어떻게 암호화 할지 정하는 것은 운영방식이라 칭한다.
* 전자북코드(electronic codebook ,ECB)
- 블록 암호화 방식중 가장 간단한 구조
- 암호화 하려는 메세지를 여러개의 블록으로 나누어 암호화하는 방식
= 모든 블럭이 하나의 암호화 키를 사용하므로 반복 공격에 취약
. 하나의 블록만 해독되도 모든 블락을 해독할 수 있음
. 복호화 후 평문을 알기 위해서는 Padding이 필요
. 각 블록이 독립적이므로 블록의 오류가 다른 블록에 영향이 없음
* 암호블록 체인 방식(cipher-block channing , CBC)
- 블록들은 암호화되기 이전에 이전 블록 암호화 결과와 XOR 된다
- 첫 번째 블럭의 경우 최기화 백터를 사용한다.
= 암호시 마다 다른 초기화 백터를 사용하는 것이 좋음
= 암호화 결과가 이전 암호결과에 의존하므로 병렬적으로 처리가 어려움
= 복호화의 경우 각 블록을 복호화 한 이후 이전 암호 블록과 XOR를 하는 병렬처리가 가능
. 초기화 백터 (IV) 사용
. 블록 암호화 방식중 보안강도가 높아 널리사용
. 블럭의 오류가 발생하면 다른 블럭에도 오류를 주는 sife effect가 있음
* 증식적 암호 블록 체인 방식(propagating cipher block changing PCBC)
* 암호 피드백(cipher feedback CFB)
- 암호 피드백은 CBC 의 변형
- 블럭 암호화를 자기 동기 스트림 암호로 변환
= 초기백터 값과 key를 이용하여 암호화 하고 암호화된 값과 평문을 XOR 하여 암호문을 생성
= 생성한 암호문과 다시 key를 이용하여 나온 결과에 평문을 입력하여 암호문을 생성
= 완료되기 전가지 위의 내용을 반복적으로 진행
. 블록 암호화 알고리즘에 따라 shift 연상을 사용하는 경우도 있음
. shift 되는 비트의 양에 따라서 CFB-8 , CFB-1 이라 하며
. 암복호화 연산의 Round 마다 IV로 부터 shift 된 값을 사용
* 출력 피드백 (output feedback)
- 블록 암호화를 동기식 스트림 암호로 변환
- XOR 의 대칭 성질을 이용한 암호화 방식이라 암호화와 복호화 방식이 동일
* 카운터 (Counter CTR)
- 블록 암호를 스트림 암호로 변환하는 구조를 가짐
- 카운터 방식에서는 각 블럭마다 현재의 블럭이 몇 번째인지 값을 가지고와 그숫자와 Nonce를 결합하여
블록 암호화의 입력으로 사용
- 각 블럭 암호에서 연속적인 난수를 얻어 암호화하려는 문자열과 XOR을 진행
- 카운터 모드는 각블럭의 암호호와 복호화가 이전 블록에 의존하지 않아 병렬적으로 동작이 가능
- 문자열에서 원하는 부분만 복호화 하는 것도 가능
. CTR은 스트림 암호화 일종
. 암복호가 같응 구조로 구현이 간단
이미지 출처
https://ko.wikipedia.org/wiki/%EB%B8%94%EB%A1%9D_%EC%95%94%ED%98%B8_%EC%9A%B4%EC%9A%A9_%EB%B0%A9%EC%8B%9D#%EC%A0%84%EC%9E%90_%EC%BD%94%EB%93%9C%EB%B6%81_(ECB)
블럭 암호 공격 (0) | 2020.08.07 |
---|---|
Feistel SPN 구조 (0) | 2020.08.05 |
안전하고 효율적인 데이터 활용을 위한 「신용정보의 이용 및 보호에 관한 법률」 시행령 개정 (0) | 2020.07.29 |
암호 해독 공격 방법 정리 (0) | 2020.07.29 |
디지털 저작권 관리 (0) | 2020.07.29 |
댓글 영역