암호의 특성

  • 기밀성(Confidentiality): 암호화된 내용이 무엇인지 알 수 없어야 함
  • 무결성(Integrity): 원본과 확실한 데이터라는 것
  • 인증(Authentication): 권한이 있는 사람만 접근할 수 있음

 

암복호화 설명

평문(plaintext): 원래 송신자가 전달하려는 원본 메세지
암호문(ciphertext): 송신자와 수신자만 전달 내용을 알 수 있도록 키를 사용해서 알아볼 수 없게 만든 메세지
암호화(encryption): 평문을 암호문으로 바꾸는것
복호화(decryption): 암호문을 평문으로 바꾸는것
키(key): 암복호화에 쓰이는 특정한 값 (자물쇠 열고 잠그는것처럼 키를 사용해서 암복호화를 진행하고 키를 모르면 복호화가 어려움)
 

암호화(encrypt)와 복호화(decrypt)


암호화를 저 그림으로 설명하자면
ex) hello? 라는 평문이 있다고 치면 암호화키를 통해 Olel?h 이런식으로 알아볼수 없도록 만드는 것이 암호화이고
그 암호문을 해커가 중간에서 평문을 알아볼수 없도록 하는것이 암호화의 궁극적인 목표라고 볼 수 있다.
 
복호화란 위처럼 암호화키를 통해 평문을 암호화 시켜서 만든 암호문을 복호화 키를 통해 평문으로 만드는것이다 최종적으로 궁극적으로 평문 ex) hello가 특정한 사람만 볼수있도록 , 즉
특정한 사람만 암호화된 암호문을 평문으로 바꿀수있는 복호화 키를 풀수있도록 어떠한 장치를 설정하면 중간에서 해커나 다른 3자가 볼수없게 된다. 이것이 암복호화의 기초이다.
 
여기서 암호화 키 와 복호화 키가 같은 암호알고리즘을 aes , 암복호화 키가 다른 공개 비대칭키 암호알고리즘을 rsa라고 한다 
추가로 des 라고 매우 오래된 대칭키 알고리즘이 있는데 취약해서 잘 사용하지 않는다..
 

인코딩(Encoding)과 디코딩(Decoding)

 인코딩(encoding)은 말 그대로 Code 화 한다는 뜻이다 즉, A의 형태를 코드화 하는것이다
반대로 디코딩(decoding)은 Code에서 A의 모습으로 되돌리는 것이다 
 
인코딩과 암호화는 목적과 성질이 아예 다르다 
인코딩은 표현 방법을 코드로 바꾸는 것이고, 암호화는 특정한 사람이외에는 남이 정보를 알아보지 못하게 하는 것이다.
그렇다면 반대로 디코딩과 복호화 과정도 똑같은 이유로 차이가 난다
또, encoding decoding에는
KEY가 존재하지 않는다는 점이 가장 큰 차이이다

 
 
 


보안관제에서 멘토링 하며 받은 사이트에 있는
고전 암호학 중에서도 전치암호학을 혼자 회독하면서
정리한 글을 써볼것이다...

 

치환(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 행 으로 읽으면 평문을 찾을수 있다
 

 
 
 
 

+ Recent posts