오래 못 할 짓 하지 않기
[ 컴퓨터 보안 ] 7. Cryptography - 치환 / 재배열 / 암.복호화 본문
[ 컴퓨터 보안 ] 7. Cryptography - 치환 / 재배열 / 암.복호화
쫑알bot 2024. 10. 15. 12:42암호학이란
: 데이터를 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만 노출되지 않았다면 해당 시스템은 안전하다.
(출처)
한동대학교 고윤민교수님 - 컴퓨터보안
'3학년 2학기 > 컴퓨터 보안(Computer Security)' 카테고리의 다른 글
[ 컴퓨터 보안 ] 9. Cryptography ( 이외 유닛 + DES ) (0) | 2024.10.22 |
---|---|
[ 컴퓨터 보안 ] 8. Cryptography 대칭키 ( + 비대칭키 ) (0) | 2024.10.15 |
[ 컴퓨터 보안 ] 6. Race Condition (0) | 2024.10.06 |
[ 컴퓨터 보안 ] 5. Buffer Overflow (0) | 2024.10.05 |
[ 컴퓨터 보안 ] 4. Capability Leaking / Environment Variable (0) | 2024.09.10 |