블록 암호: 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)
    • 통계적인 방법을 포함하여 수학적 이론을 이용하여 해독