보안관제에서 멘토링 하며 받은 사이트에 있는
고전 암호학 중에서도 전치암호학을 혼자 회독하면서
정리한 글을 써볼것이다...
치환(Substitution): 평문의 각 문자를 다른 문자로 치환하는 기법. 평문의 문자와 암호문의 문자가 이루는 대응 관계에 따라 단일 치환 암호, 다중 치환 암호로 구분됨.
전치(Transposition): 평문을 구성하는 문자들의 순서를 바꾸는 기법.
전수 키 탐색 공격(Exhaustive Key Search Attack): 키 공간을 전부 탐색하는 공격 방법. 가능한 키의 수가 적으면 효과적일 수 있으나, 현대 암호는 키 공간의 크기가 매우 넓으므로 이를 대상으로 사용하기 어렵다.
빈도수 분석(Frequency Analysis): 암호문에서 단어가 등장하는 빈도를 분석하여 통계적으로 복호화하는 공격 기법. 특수한 경우에서만 사용될 수 있다.
0. 전치 암호 (Transposition Cipher)
평문의 문자들의 위치 변경,교체로 암호화
= 각 문자의 순서를 바꾸거나 치환의 방법으로 암호문 생성
1. KEYLESS TRANSPOSITION CIPHER
간단한 치환암호인데 KEY 를 정하지 않고도 치환만으로 암복호화가 가능 한것을 말한다
2. RAIL FENCE CIPHER
평문에 문자n개를 지그재그로 나열해 치환을 하여 암호화
= 평문의 문자를 "지그재그" 로 나열하여 암호문 생성
지그재그로 두줄로 나눈뒤 위아래 순서로 문자를 조합해서 암호화 시키는 것예시는 복잡하니 생략하겠다
3.DECIDE THE TABLE THE NUMBER OF COLUMMS
암호화에 사용될 문자의 열 (column)의 수를 정해주고 암호화 하는 방법임
= 이미지: 평문을 열 수로 나누어서 table에 한 행씩 쓰고 작성된 table을 열 순으로 읽으면
암호문을 생성할수 있음 그래서 meet me at the park라는 평문을 암호화를 해보면
M E E T
M E A T
T H E P
A R K
3-1
복호화는
위의 TABLE로 MMTAEEHREAEKTTP 라는 암호학이 만들어진다 복호화 하는 방법은
위의 TABLE을
열 순으로 다시 채우면 된다 열 순을 이미 (4)라고 정해두었으므로,
1.평문의 전체 길이를 열수로 나누고
2.그 개수만큼 하나의 열(cloumn) 에 쓰고
3.작성된 TABLE 을 행순으로 읽으면 다시 평문으로 읽을 수 있다.
해보자면 15의 문자열의 길이를 4로 나누어서 MMTA,EEHR,EAEK,TTP
=
M M T A
E E H R
E A E K
T T P
이렇게 놓고 행(ROW) 즉 세로로 읽으면 처음의 평문을 만들 수 있다 (복호화)
처음 상태였던 평문 MEAT ME AT THE PARK 가 됨.
4.KEYED TRANSPOSITION CIPHER
2번에서한 암호화는 평문을 한 행씩 쓰고 한 열씩 있는 쓰는 방법과 읽는
방법을 변경해서 암호화를 완성 시켰다면
Keyed Transpositon Cipher 에서는 평문을 일정한 조각으로 나누고
나누어진 조각을 특정한 규칙에 맞게 글자간 순서를 변경해서 완성 시킨다.
이때 나누어진 조각을 block이라고 하며 결국 평문을 block단위로 나누어
block에서 전치를 수행하게 되는 것. (이때 block의 값은 정해져있거나 찾아야하는데 여기서는 정해줄것임)
ex))
Enemy Attack Tonight 이라는 문장을 암호화 해보자
block의 크기는 5이고 block 의
치환키는 31452라고 해보자
3 1 4 5 2 ←—— 치환키
1 2 3 4 5
이를 해석해보면 각 block에서
3번째 글자를 먼저 쓰고 1번째 글자를 두 번 째로 4번쨰 글짜를 세번째로 등등등 쓰면서
암호화를 진행하라는 말이다
그렇다면 enemy 라는 단어는 eemyn로 암호화 될것이다
아까 말했던 예시문장을 하나하나 조합해보자면
EEMYNTAACKTKONSHITXG 라는 식으로 암호화가 진행된다.
4-1
복호화를 하려면
키를 먼저 생성해야 하는데 위에서 표해서 첫번째 열이 12345가 되도록 수정하자
1 2 3 4 5
2 5 1 3 4
그럼 이런식으로 되는데 여기서 복호화 키는 25134가 된다 즉 아까 암호화 시켰던 EEMYN block은 복호화키를 이용해 복호화를 시켜주면 ENEMY가 되는것이다.
Transposition Cipher는 키를 활용해이런식으로 수행할수있게 된다.
5. Combined Transposition Cipher
이 방법은 그냥 단순하게 앞선 두개의 방법을 합쳐서 만들어진 암호화 기법이다
3번에서 했던것처럼 table의 열(cloumn)을 정해 table을 생성한 뒤 방금 한 4번의방식처럼
key 를 통해서 치환한다. 그리고 완성된 table을 열 by 열 순으로 읽어 암호문을 완성한다
예제로 아까 했던 Enemy attacks tonight 을 암호화 해보자
사용되는 키는 31452로 함 block은 5이다 block의 사이즈가 5이기 때문에
자동적으로 열의 수 도 5가 되는것이다
위는 완성된 평문의 table이고 밑에 있는것은 31452라는 주어진 key를통해 Column간 순서를 치환 했다
완성된 table은 열 by 열 순서로 읽으면 된다 즉 암호문은 ETTHEAKIMAOTYCNXNTSG 된다.
복호화의 경후에는 열 by 열 순서로 table에 암호문을 채워넣고 아까 했던것처럼 복호화키를 구하면 25134가 되는데
4-1 참고
그걸 이용해서 table의 열을 다시 치환한다 완성된 table을 이번엔 row by row 행 by 행 으로 읽으면 평문을 찾을수 있다
'Cryptography' 카테고리의 다른 글
Hxd와 xor 을 이용한 간단한 문제 만들기 (0) | 2023.07.11 |
---|---|
[Cryptohack] Favourite byte Writeup (1) | 2023.06.23 |
[Dreamhack] Basic_Crypto1 write up (0) | 2023.06.08 |
[Cryptohack] General-challenges Writeup (0) | 2023.05.24 |
Cryptography basic 암호학 개념 / 암호학의특징 (0) | 2023.04.11 |