CS 지식/보안

전통적인 대칭키 암호

윤씅 2024. 8. 11. 00:29

🔑 암호분석

  • 우리가 사용하는 암호가 얼마나 취약한지 측정하기 위해서 암호 분석을 해야한다.



🔑 암호분석 공격의 종류

∎  Ciphertext-only (암호문 단독 공격)

  ⦁   단지 암호문과 알고리즘을 알고 복호화하는 공격

 

  ⦁  전수조사 공격 : 가능한 모든 암호키를 사용해본다.

 

  ⦁   통계적인 공격 : 평문의 특징을 찾아 해독한다.

 

  ⦁   패턴 공격 : 평문의 특징은 아니지만 어떤 패턴을 보일 수 있다. 이것을 공격한다.

 

∎  Known-Plaintext Attack (알려진 평문 공격)

 

이미 공개된 과거의 평문/암호문 쌍을 이용하여 연관성을 이용해 공격한다.

 

∎  Chosen-Plaintext Attack (선택 평문 공격)

공격자가 대상의 컴퓨터에 접속해 평문을 선택하고 그에 대응하는 암호문을 얻는다.

 

∎  Chosen-Ciphertext Attack (선택 암호문 공격)

공격자가 대상의 컴퓨터에 접속해 암호문을 선택하고 그에 대응하는 평문을 얻는다.

 

 

 

🔑 고전암호의 종류

∎  대치암호 : 하나의 기호를 다른 기호로 변경하여 암호문 생성

  • 단일 문자 암호 :
    하나의 문자는 항상 같은 어떠한 문자로 대치된다.
    키 공간이 작기 때문에 전수조사 공격에 취약하다.
    • 덧셈 암호 = 시저 암호 = 이동 암호 :
      - 암호화 ➜ 평문의 문자에 키를 더해 26으로 나눈 나머지의 문자로 대치한다.
      - 복호화 ➜ 암호문의 문자에 키를 빼고 26으로 나눈 나머지의 문자를 반환한다.
      - 암호화와 복호화가 역함수 관계
    • 곱셈 암호 :
      - 평문의 문자에 키를 곱해 26으로 나눈 나머지의 문자로 대치한다.
      - 키는 1,3,5,7,9,11,15,17,19,21,23,25 중에 이루어져야 한다.
      - 암호화와 복호화가 역함수 관계이다.
    • 아핀 암호 :
      - 곱셈과 덧셈을 모두 사용하여 암호화 하고 키도 2개이다.
      - 암호화 : 평문의 문자에 곱셈 키를 곱하고 덧셈키를 더해 26으로 나눈 나머지를 구한다. 그리고 그 수에 대응하는 문자를 반환한다.
      - 복호화 : 암호문의 문자에 덧셈키를 빼고 곱셈 키로 나눈 수에 26으로 나눈 나머지를 구한다. 그리고 그 수에 대응하는 문자를 반환한다.
  • 다중 문자 암호 :
    하나의 문자는 여러가지 문자로 암호화 될 수 있다.
    일대다 대응이 이루어진다.
    해당 문자의 빈도수를 감출 수 있는 장점이 있다.
    • 자동키 암호 :
      - 키수열을 생성한다.(초기 키값, 첫번째 평문자, 두번째 평문자, ...)로 이루어져 있다.
      - 평문과 키수열을 각각 더하고 대응되는 문자로 반환한다.
    • 플레페어 암호 :
      - 키를 5X5 행렬로 그린다.
      - 평문을 두글자씩 자르고 만약 같은 문자가 연속된다면 중간에 가짜 문자를 삽입한다.
      - 총 문자 개수가 홀수가 되면 맨 뒤에 가짜문자를 삽입한다.
      - 짝이 된 두 글자를 키 행렬에서 찾고 같은 행에 있으면 각각의 오른쪽 문자를 반환한다.
      - 같은 열에 있으면 각각의 아래 문자를 반환한다.
      - 그렇지 않으면 두 글자의 행열이 만나는 곳의 문자를 반환한다.
    • Vigenere 암호 :
      - 주어진 키수열을 반복하여 키수열을 만든다.
      - 평문과 키수열을 더한다.

 

 

∎  전치암호 :  대치는 이루어지지 않고 위치만 바뀌는 암호기법

  • 키가 없는 전치암호 :
    • rail fence :

      ABCDEFGHI 라는 평문을 암호화할 경우 두 열로 나누어 지그재그로 적어준 후, 첫번째부터 순서대로 읽는다.
      암호화한 결과, ACEGIBDFH가 된다.
  • 키가 있는 전치암호 :
    • 키를 주어진 블록의 크기로 블록을 나누어준 후, 키 표를 가지고 위치를 바꾸어준다.
  • 두 가지를 결합! :
      1. 평문을 행렬로 재배열한다 (키가 없이 전치)
      2. 키 박스를 가지고 열을 기준으로 섞는다. (키를 사용)
      3. 열 순서대로 읽어 암호문을 만든다 (키가 없이 전치)
    • 키 박스는 암호화, 복호화에서 2개의 키 역할을 하게 된다.

 

 

∎  전치암호 공격

  • 전수조사 공격 : 메시지의 길이가 20이면 열의 개수는 (1,2,4,5,10,20) 중 하나가 된다. 첫번째와 마지막열은 의미가 없기 때문에 나머지 숫자를 가지고 행렬을 만들어 분석해볼 수 있다.

 

∎  이중 전치암호

  • 전치암호의 과정을 두번 거쳐 패턴을 없앤다.