고전 암호화 현대 암호

Gunter·2024년 1월 28일
0

Cryptography

목록 보기
2/7

고전 암호화 현대 암호

.
.
.

고전 암호

고성능 연산 장치 발견 전, 비교적 간단한 기계와 손 등으로 암복호화를 수행하던 암호
대부분 컴퓨터를 사용하면 쉽게 복호화되어 현대에는 사용되지 않음

일반적으로 치환(Substitution)과 전치(Transposition)의 방법으로 설계
치환 : 평문의 문자를 다른 문자로 바꿈 / 전치 : 평문 문자들의 위치를 바꿈

단순한 고전 암호는 한가지 원리만을 사용하는 치환암호(Substitution Cipher) 또는 전치암호(Transposition Cipher) 이고, 복잡한 고전암호는 두 원리를 모두 사용한다.

치환암호는 단일 문자 치환 암호(Monoalphabetic Substitution Cipher), 다중 문자 치환 암호(Polyalphabetic Substitution Cipher)로 나누어진다.

단일 문자 치환 암호(Monoalphabetic Substitution Cipher)

치환의 대응 관계가 일대일 대응이다.
평문의 ‘A’가 암호문의 ‘B’로 치환된다면, 평문의 다른 어떤 문자도 ‘B’로 치환되지 않는다.

카이사르 암호
- 평문의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 치환
- 알파벳을 밀어낸 횟수를 키(Key)라고 하면, 알파벳은 26자이므로 가능한
키의 갯수는 26개
- 암호학에서 가능한 모든 키의 집합을 키 공간(Key space) 라고 하는데,
카이사르 암호에서 키 공간의 크기는 26

코드북 암호
- 송신자가 책의 페이지 x와 단어의 인덱스 y를 보내면, 수신자는 책 x페이지의
y번째 단어를 확인하여 송신자의 메세지를 해독한다.

다중 문자 치환 암호(Polyalphabetic Substitution Cipher)

평문의 한 문자가 암호문에서 여러 종류의 문자로 치환될 수 있다.

비제네르 암호(Vigenere Cipher)
- 암호화와 복호화는 미리 정해진 키워드를 통해 이뤄진다.
- ‘SKY’ 라는 키워드로 ‘DREAMHACK’을 비제네르 암호화 하는 과정 예시

전치 암호(Trasposition Cipher)
- 평문을 구성하는 문자들의 순서를 재배열하여 암호문을 만든다.
- 평문을 정해진 길이의 블록들로 나누고, 규칙을 적용하여 블록 안의 문자 재배치

Ex) 블록의 길이가 3이고 키가 (3,1,2)일때 평문 DREAM HACK의 암호화

고전 암호를 공격하는 방법

- 전수 키 탐색 공격 : 평문과 암호문을 알 때, 키 공간을 전부 탐색하며 주어진 암호
   문과 같은 암호문을 생성하는 키를찾는 방법. 키 공간의 크기가 작으면 빠른 해독

- 빈도수 공격 : 단일 치환 암호는 일대일 대응이라서 평문의 통계적 특성 유지.
   예를 들면 영어문장에서 알파벳이 사용되는 빈도를 보면 e가 가장 많이 사용되
   므로 E를 A로 치환했다면, 암호문에서 가장 많이 등장하는 알파벳이 A이다.

현대 암호

  • 고전 암호에서는 송신자와 수신자가 같은 키를 가져야 했다. Ex) 카이사르 암호는 알파벳을 미는 칸의 수를 공유, 비제네르 암호에서는 키워드를 공유
  • 이렇게 송신자와 수신자가 같은 키를 공유해야 하는 암호 시스템을 대칭키 암호 시스템(Symmetric Key Cryprosystem) 이라고 한다.
  • 대칭키 암호 시스템은 현대에서 네트워크 도청에 매우 취약하므로, 키가 공유되는 과정을 도청해도 공유되는 키는 알지 못하는 키 공유 알고리즘(Key Sharing Algorithm) 연구
  • 송신자와 수신자가 서로 다른 키를 사용하는 공개키 암호 시스템(Public Key Cryptosystem) 연구 = 비대칭키 암호 시스템(Asymmetric Cryptography)라고도 불림

안전한 암호 시스템은 혼돈(Confusion)확산(Diffusion)의 성질을 만족해야 한다.

혼돈 - 암호문에서 평문의 특성을 알아내기 힘든 성질. 단일 치환 암호는 혼돈 성질 만족
못함
확산 - 평문의 작은 변화가 암호문의 큰 변화로 이어지는 성질. 고전암호에 적용불가

대칭키 암호 시스템

  • 장점 : 공개키 암호 시스템에 비해 속도가 빠름
  • 단점 : 송신자와 수신자가 사전에 키를 교환해야 하는 제약 있음.
    그룹 내에 여러명이 있을 경우, 두 사람마다 서로 다른 키를 생성해서 사용해야함

블록 암호

- 평문을 정해진 크기의 블록 단위로 암호화.
- 예로 블록의 크기가 4바이트라면 평문을 4바이트의 블록으로 쪼개어 각 블록마
   다 암호화 진행		

스트림 암호

- 송신자와 수신자가 공유하는 데이터 스트림을 생성하고 이를 평문에 XOR함
-  평문을 P, 암호문을 C, 스트림을 X라고 할 때, C = P ⊕ X
- X ⊕ X = 0 이므로 수신자를 C ⊕ X = P ⊕ X ⊕ X = P 로 암호문 복호화 가능
- 송신자와 수신자는 스트림을 공유하는 대신, 시드(Seed)라 불리는 작은 값을
   공유하고, 이를 사전에 합의된 함수의 인자로 넣어 스트림을 각자 생성

공개키 암호 시스템

송신자는 수신자의 공개키(Public Key)로 데이터를 암호화하여 수신자에게 전송하고, 수신자는 자신의 비밀키(Private Key)로 이를 복호화한다.

장점 : 키를 한번 생성하고 나면, 새로운 상대와 통신하더라도 키를 다시 만들필요 없음
단점 : 대칭키에 비해 다소 복잡한 연산이 필요하므로 속도가 느림. 또한, 대칭키 암호화 같은 안전성을 제공하려면 대칭키 암호보다 긴 키를 사용해야 함

암호의 기능

  1. 기밀성(Confidentiality)
  2. 무결성(Integrity)
  3. 인증(Authentication)
  4. 부인 방지(Non-repudiation)

0개의 댓글