블록 암호: Difference between revisions
From CS Wiki
No edit summary |
No edit summary |
||
Line 4: | Line 4: | ||
* 평문을 일정한 크기의 블록으로 잘라낸 후 각 블록을 암호화하는 방식 | * 평문을 일정한 크기의 블록으로 잘라낸 후 각 블록을 암호화하는 방식 | ||
* 일반적으로 블록의 크기는 8비트 또는 16비트의 배수 | * 일반적으로 블록의 크기는 8비트 또는 16비트의 배수 | ||
* 복호화 알고리즘은 암호 알고리즘의 역함수 | |||
* 메시지의 길이가 n비트보다 작다면 n비트 블록을 만들기 위해 패딩(padding)이 추가 | |||
== 치환(Substitution)과 전치(Transposition) == | |||
* 블록 암호는 비트단위의 치환 혹은 전치 암호로 동작된다. | |||
* 치환암호에서 평문과 암호문의 0과 1의 비트 개수는 다르다. | |||
* 전치암호에서 메시지의 길이가 n일 떄, 평문 혹은 암호문의 개수는 2^n이다. | |||
* 현대블록암호는 전수공격을 예방하고자 치환암호로 설계된다. | |||
== 구성 요소 == | |||
이동요소(Shift) + 교환요소(Swap) + 분할요소(Split) + 조합요소 + 전치 장치(P-Box) + 치환 장치(S-Box) + XOR 연산(exclusive-OR) | |||
혼돈과 확산의 성질을 만족시킨다. | |||
=== P-박스 === | |||
* 단순 P-박스 : 전치 과정을 병렬적을 수행한다. 역함수가 존재한다. | |||
* 축소 P-박스 : n비트를 입력 받아 m비트를 출력한다. (단, n > m) | |||
* 확장 P-박스 : n비트를 입력 받아 m비트를 출력한다. (단, n<m) | |||
=== S-박스 === | |||
* 치환 암호의 축소 모형으로 입력 비트와 출력 비트가 같은 경우에만 역함수가 존재한다. | |||
== 합성 암호(Product Ciphers) == | |||
; Shannon은 치환, 전치, 그리고 기타 요소를 결합한 합성 암호를 소개 | |||
* 혼돈(confusion)은 암호문과 키의 관계를 숨기는 것 | |||
* 확산(diffusion)은 평문의 통계적 성질을 숨기는 것, 평문과 암호문의 관계를 숨기는 것 | |||
== 라운드(Rounds) == | |||
* 반복적인 합성 암호를 라운드라고 하며 이를 통해 확산과 혼돈 성질을 얻는다. | |||
== 종류 == | == 종류 == |
Revision as of 02:09, 22 June 2019
- Block Cipher
- 평문을 일정한 크기의 블록으로 잘라낸 후 각 블록을 암호화하는 방식
- 일반적으로 블록의 크기는 8비트 또는 16비트의 배수
- 복호화 알고리즘은 암호 알고리즘의 역함수
- 메시지의 길이가 n비트보다 작다면 n비트 블록을 만들기 위해 패딩(padding)이 추가
치환(Substitution)과 전치(Transposition)
- 블록 암호는 비트단위의 치환 혹은 전치 암호로 동작된다.
- 치환암호에서 평문과 암호문의 0과 1의 비트 개수는 다르다.
- 전치암호에서 메시지의 길이가 n일 떄, 평문 혹은 암호문의 개수는 2^n이다.
- 현대블록암호는 전수공격을 예방하고자 치환암호로 설계된다.
구성 요소
이동요소(Shift) + 교환요소(Swap) + 분할요소(Split) + 조합요소 + 전치 장치(P-Box) + 치환 장치(S-Box) + XOR 연산(exclusive-OR) 혼돈과 확산의 성질을 만족시킨다.
P-박스
- 단순 P-박스 : 전치 과정을 병렬적을 수행한다. 역함수가 존재한다.
- 축소 P-박스 : n비트를 입력 받아 m비트를 출력한다. (단, n > m)
- 확장 P-박스 : n비트를 입력 받아 m비트를 출력한다. (단, n<m)
S-박스
- 치환 암호의 축소 모형으로 입력 비트와 출력 비트가 같은 경우에만 역함수가 존재한다.
합성 암호(Product Ciphers)
- Shannon은 치환, 전치, 그리고 기타 요소를 결합한 합성 암호를 소개
- 혼돈(confusion)은 암호문과 키의 관계를 숨기는 것
- 확산(diffusion)은 평문의 통계적 성질을 숨기는 것, 평문과 암호문의 관계를 숨기는 것
라운드(Rounds)
- 반복적인 합성 암호를 라운드라고 하며 이를 통해 확산과 혼돈 성질을 얻는다.
종류
구현 방식
- ECB : 간단, 고속, 위험
- CBC : 한 블록 내에서 에러 전파, 다른 블록에 1비트 영향
- CFB : 스트림 모드, 약한 에러전파
- OFB : 스트림 모드, CTR사용을 권장
- CTR : 스트림 모드, 권장됨
공격
- 블록 암호의 키를 찾기 위한 공격 기법들
- 차분 공격(Differential Cryptanalysis)
- 1990년 Biham과 Sharmir가 개발
- 선택 평문 공격
- 두 평문 블록들의 비트 차이에 대응되는 암호문 블록의 비트 차이를 이용하여 키를 찾는다.
- 선형 공격(Linear Cryptanalysis)
- 1993년 Matsui가 개발
- 알려진 평문 공격
- 알고리즘 내부의 비선형 구조를 선형화시켜 키를 찾는다.
- 전수 공격(Exhaustive Key Search)
- 1977년 Diffie와 Hellan이 개발
- 암호화 시 발생 가능한 모든 경우에 대해 조사
- 현실적으로 적용하기 힘든 경우가 많음
- 통계적 분석 공격(Statistic Analysis)
- 암호문에 대한 평문의 단어 빈도등 통계적인 자료를 분석하여 해독
- 수학적 분석 공격(Mathematical Analysis)
- 통계적인 방법을 포함하여 수학적 이론을 이용하여 해독