K_blueprint

카이사르(Caesar) 암호 / 자리이동 암호 / 블록 암호 본문

Info-sec/cryptography

카이사르(Caesar) 암호 / 자리이동 암호 / 블록 암호

GODAGO 2024. 6. 1. 23:14
728x90
반응형

※ 암호학이란?

 

  • 정보 보호를 위해 언어적 및 수학적 방법론을 다루는 학문
  • '암호화 기법', '암호해독 기법'이 존재한다.
  • 암호화 : 메시지를 안전하게 만드는 과정

 

(기본 정보)

평문 : 누구나 읽을 수 있는 본래의 문서나 문장

암호문 : 평문을 암호 키, 혹은 암호 알고리즘을 이용하여 암호처리한 문서

 

 

암호를 가장 먼저 사용한 사람으로는 율리우스 카이사르(julius Caesar)가 있다.

그는 "각 글자를 세 글자 위에 있는 글자로 바꾸어 암호문을 제작"하였는데 이것이 암호학의 시작이라고 볼 수 있다.

 

 

카이사르 암호

 

  • 카이사르 암호를 다루기 전에 각 글자(알파벳)를 Base64의 형태로 변환시킬 필요가 있는데 관련 표는 아래와 같다.
0 A 16 Q
1 B 17 R
2 C 18 S
3 D 19 T
4 E 20 U
5 F 21 V
6 G 22 W
7 H 23 X
8 I 24 Y
9 J 25 Z
10 K    
11 L    
12 M    
13 N    
14 O    
15 P    

(편의상 대문자 문자까지만 기재하겠습니다.)

  • 즉, 위의 표를 베이스로 음이 아닌 25 이하의 정수 p(p <25)에 의해 정의된 함수는 f로 표현이 가능하다.
    • 이러한 함수를 f(p) = (p+3) mod 26으로 나타낼 수 있다.
  • 카이사르 암호문 예제는 아래와 같다.

 

평문 " MEET YOU IN THE PARK"를 카이사르 암호를 이용하여 만들었을 때 만들어진 암호문은 무엇일까?

 

여기서는 위의 표를 바탕으로 먼저 문자를 숫자로 바꿔줘야 하는데

12 4 4 19       24 14 20       8 13       19 7 4       15 0 17 10

이렇게 된다. 이제 이를 이용하여 f(p) = (p+3) mod 26으로 대치하면

15 7 7 22       1 17 23       11 16       22 10 7       18 3 20 13

이 된다. 쉽게 말해 3씩 증가한 것!(3자리 우측 시프트)

이제 이를 다시 문자로 바꿔주기만 하면 암호문을 얻을 수 있다.

암호문 : "PHHW BRX LQ WKH SDUN"

( 주의 : 마지막 숫자인 25에서 넘어가게 되면 처음으로 돌아와 계산하면 된다!
ex. 24에서 (p) = (p+3) mod 26 적용 >>> 1)

 

  • 그럼 반대로 카이사르 암호에 의해 암호화된 암호문에서 평문을 복원하려면 어떻게 해야 할까?
    • f의 역함수인 f^-1을 사용하면 된다.(즉, f^-1(p) = (p-3) mod 26)
    • 이를 '암호해독'이라 한다.

 

 

※ 자리이동 암호

 

  • 카이사르 암호를 일반화하는 방법들 중 '각 글자에 대응하는 숫자들을 3씩 증가시키는 대신 k번 씩 증가시키는 것
    • 함수 f(p) = (p+k) mod 26으로 나타낼 수 있다.
    • 여기서 정수 k는 키(key)라고 한다.
  • 자리이동 암호 예제는 아래와 같다.

 

키 k = 11로 자리이동 암호법을 사용하여 평문 "STOP GLOBAL WARMING"을 암호화하라.

 

여기서도 우선 위의 카이사르 암호법 문제와 동일하게 문자를 숫자로 바꿔준다.

18 19 14 15       6 11 14 1 0 11       22 0 17 12 8 13 6

이 문자열의 각 수에 f(p) = (p+11) mod 26으로 대치하면 아래의 문자열을 얻게 된다.

3 4 25 0       17 22 25 12 11 22       7 11 2 23 19 24 17

마지막으로 이 문자열을 글자로 옮기면 아래의 암호문이 도출된다.

암호문 : "DEZA RWZMLW HLCXTYR"

 

이번엔 반대로 자리이동 함수를 이용해서 암호화한 암호문평문으로 해독해 보는 예제를 풀어보자.

 

k = 7로 자리이동 암호법을 사용하여 암호화한 암호문 "LEWLYPLUJL PZ H NYLHA  ALHJOLY"를 해독하라.

 

여기서도 동일하게 문자를 숫자로 변환하면

11 4 22 11 24 15 11 20 9 11       15 25       7       13 24 11 7 0       0 11 7 9 14 11 24

그리고 k=7로 자리이동 암호법이 사용되었다는 말은 7씩 이동되었다는 말과 동일하기에

반대로 k = -7씩 이동해 준다.

4 23 15 4 17 8 4 13 2 4       8 18       0       6 17 4 0 19       19 4 0 2 7 4 17

이제 위의 숫자들을 문자로 바꿔주면 해독된 평문을 볼 수 있다.

평문 : "EXPERIENCE IS A GREAT TEACHER"

 

 

※ 블록 암호

 

  • 자리이동 암호법과 같은 암호들은 '문자 암호' 혹은 '단일자 암호'라 하는데 이는 암호문에서의 글자수의 빈도를 이용한 공격에 취약하기 때문에 보다 보안 강도가 높은 '블록 암호'가 존재한다.
  • 각 글자를 다른 글자로 대체하는 대신, 한 블록의 글자들을 다른 블록의 글자들로 대치하는 방식의 암호이다.
  • 간단한 형태의 블록 암호를 '전치 암호'라 한다.
  • 전치 암호의 예제는 아래와 같다.

 

'a'를 순열이라 했을 때 a(1) = 3, a(2) = 1, a(3) = 4, a(4) = 2인 집합 {1, 2, 3, 4}의 순열 a에 기반한 전치암호를 사용하여

(1) 평문 PIRATE ATTACK을 암호화하라.

(2) 전치 암호로 암호화한 암호문 SWUE TRAE OEHS를 해독하라.

 

(1) 풀이

여기서는 먼저 문제의 내용처럼 평문을 4자리씩 끊어서 생각해야 한다.

PIRA TEAT TACK

그리고 첫 번째 글자는 세 번째로, 두 번째 글자는 첫 번째로, 세 번째 글자는 네 번째로, 네 번째 글자는 두 번째로 보낸다.

암호문 : IAPR ETTA AKTC

 

(2) 풀이

a의 역인 a^-1을 생각해 보면 위의 조건과 반대로 행하면 되는데

첫 번째 글자는 두 번째로, 두 번째 글자는 네 번째로, 세 번째 글자는 첫 번째로, 네 번째 글자는 세 번째로 보낸다.

이후 각각의 블록에 a^-1을 적용하면

USEW ATER HOSE가 된다.

이제 이를 자연스럽게 묶으면

USE WAWTER HOSE라는 문장이 나오게 된다.

 

 

다음 포스팅은 공개키 암호화 기술인 RSA 암호 시스템에 대한 내용으로 들고 오겠습니다!

 

 

참고 도서 : "Rosen의 이산수학 8판"

 

728x90
반응형