블록 암호: 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)과 전치(Transposition) ==
== 치환과 전치 ==
;Substitution and Transposition
* 블록 암호는 비트단위의 치환 혹은 전치 암호로 동작된다.
* 블록 암호는 비트단위의 치환 혹은 전치 암호로 동작된다.
* 치환암호에서 평문과 암호문의 0과 1의 비트 개수는 다르다.
* 치환암호에서 평문과 암호문의 0과 1의 비트 개수는 다르다.
Line 26: Line 27:
* 치환 암호의 축소 모형으로 입력 비트와 출력 비트가 같은 경우에만 역함수가 존재한다.
* 치환 암호의 축소 모형으로 입력 비트와 출력 비트가 같은 경우에만 역함수가 존재한다.


== 합성 암호(Product Ciphers) ==
== 합성 암호 ==
; 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)
    • 통계적인 방법을 포함하여 수학적 이론을 이용하여 해독