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