오래 못 할 짓 하지 않기

[ 컴퓨터 보안 ] 7. Cryptography - 치환 / 재배열 / 암.복호화 본문

3학년 2학기/컴퓨터 보안(Computer Security)

[ 컴퓨터 보안 ] 7. Cryptography - 치환 / 재배열 / 암.복호화

쫑알bot 2024. 10. 15. 12:42
728x90

암호학이란

:  데이터를 Encode 과정을 거쳐서 읽을 수 없는 형태로 만드는

  혹은 그 반대 Decode 과정

 

Plain Text ( 평문 )  ↔️ Cipher Text ( 암호문 )

 

 

📌 목적

: To Keep Confidentiality of Data

 

 


암호화 알고리즘의 종류

 

어떻게 바꾸냐에 따라 다르다.

 

- Substitution   = 치환

- Transposition = 재배열   

 

 

Substitution
( 해당 문자를 다른 문자로 대체,치환 )

: Plain message의 text ➡️ 다른 문자 , 숫자 , Symbols 들로 바꾼다.  

 

- Monoalphabetic Substitution Ciphers

: 평문에서의 하나의 문자 ↔️ 다른 문자로 매핑 

 

ex)  Caesar Cipher

 

알파벳을 3개씩 뒤로 미룬이

 

자세하고 구체적인 매커니즘은 아래와 같다.

 

ex) I의 value는 11

   > 11 + 3 = 14 

  > 14 % 26 = 14

  > I ➡️ o 가 된다.

 

예)

 

⚫️ 뚫는 법

1) Brute-force로 다 때려맞춰보기

 

2) Frequency of Characters - 실제로 제일 많이 쓰이는 단어들로 유추하기

 

사용법 ⬇️

 

 I 가 개많이 나옴

실제로는 E가 많이 쓰이므로, 암호인 I는 E일 것이라고 유추

 


 

- Homophonic Substitution Ciphers

: 한 알파벳에 대해 여러 Value로 매핑될 수 있다.

 ➡️ 1:1 매핑으로 인한 단점을 해결

ex) A는 [ D,H,P,R ] 로 해석할 수 있다.

 

 

각 알파벳에 대해 여러 숫자를 할당한다.

➡️ 그 숫자를 돌아가면서 사용한다.

 

= 한 단어에 대해도 경우의 수가 매우 다양하게 나올 수 있다.

 


- Polygram Substitution Ciphers

: Block이나 Word 단위로 대체 된다. ( 한 글자씩 변환될 때 생기는 문제 해결 )

 

 

 

 

 

 


- PolyAlpabetic Substitution Ciphers

: i 번째 문자는, Key set 에서도 i번째 Key값을 가져간다. 

 

 

 

예)

첫 번째 text는 a = 00

key set에서 첫 번째는 12

0 + 12 = 12%26 = 12 ➡️ M 

 

이런 식으로 간다.

 

세 번째 text는 t = 19

ket set에서 세 번째는 19

19 + 19 = 38 % 26 = 12 ➡️ M

 

📌평문에서 같은 문자여도, 위치에 따라(Key값에 따라) 다른 암호문이 나오거나

      같은 암호문이어도, 다른 평문 알파벳이 나올 수도 있다.

 

 


- Vernam Ciphers

: 일회용 비밀번호 KEY로 사용할 수 있는 One - TIme Pad (OTP)를 사용한다.

 

이는 Random set + 일회용이다.

대신 Plaintext의 길이가 얼마인지 알아야 한다.

 

 

Sender Receiver 모두 같은 OTP가 필요하다.

 

 

ex) 암구호 같은 거라 생각하면 됨, 하루쓰고 버리는...

 

 


Transposition

: 문자열의 순서나 배열을 뒤집는다. 

 

뒤집을 때 Key가 필요한지 여부에 따라서 

- Keyless Transposition

- Key Transposition

- 둘 다 합친 거

으로 나뉜다.

 

 

- Rail-Fence  Transpostion ( Keyless )

: 한 글자씩 나눠서, 위에 밑에 위에 밑에 적고 

그렇게 있는 걸 평범한 순서로 다시 적는다.

 

 

예)

 

 

 

- Simple Columnar  Transpostion ( Keyless )

: 정해진 크기의 틀에 글자들을 한 줄에 정해진 수만큼 배열하고 특정한 규칙을 적용하여 읽는다. ex) 세로로 읽기

 

 

(원래 암호문에는 띄어쓰기 안 함, 그냥 보기 편하라고 한 거)

 

1. Plain text를 정해진 크기의 사각형 안에 row에 따라 쓴다.

2. Column에 따라 읽되, 순서대로 읽지 말고, Column 순서도 섞어서 읽는다.

3. 그렇게 읽었을 떄 나오는 값이 Round 1의 결과다

4. 1~3을 적당하다 싶을 정도만큼 반복한다. 

 

 


- Permutation  Transpostion ( Keyed )

전체 message를 n개씩 잘라서

각 자른 덩어리 안에서 순서를 바꾸는 것이다.

 

ex)

가나다라마바사아자차카타파하멍

이렇게 있으면 5개씩 자른다.

 

➡️ 가나다라마  | 바사아자차 | 카타파하멍

 

그런 정해진 Key

즉, 잘린 덩어리 안에서 어떻게 순서를 바꿀 것인지 나타낸 것을 통해서 순서를 재조합한다

31425 라고 한다면

다가라나마 | 아바자사차 | 파카하타멍

이 된다.

 

여기에서 Key는 permutation이 어떻게 되었는지

 = 31452가 key다.

 

 

 

 

 

 


- Combining Two Approaches

: Key 방식 (Permutation) + Keyless 방식 ( Simple Comlumnar ) 를 합치는 방식이다.

 

 

여기에선 Simple Columnar을 먼저 적용한다.

그렇게 나오는 결과를 가지고 Permutation (key = 31452) 를 적용시켜서 돌아가게 한다. 

 

복호화는 그 반대 과정으로 한다.

 



- Encryption


: Plaint text를 Cihper Text로 변환하는 것

 

- Decryption

: Cihper Text를 Plaint text로 변환하는 것

 

 

 

📌안전한 암호화를 위해 필요한 2가지

1) 강력한 암호화 알고리즘

 

2) 오직 Sender / Receiver 측에서만 알고있는 Secret Key

 

 

 

📌Kerckhoff's Principle

암호 시스템에서 알고리즘이나 다른 게 다 노출되어도

Key만 노출되지 않았다면 해당 시스템은 안전하다.

 

 

 

 

 

 

(출처)

한동대학교 고윤민교수님 - 컴퓨터보안