IT 그리고 정보보안/Knowledge base

암호학에서의 치환 그리고 전위

plummmm 2021. 4. 16. 05:55
반응형

먼저, 고전적인 암호화 방식인 치환 암호에 대해 알아보자.

말그대로 평문 문자를 각각 대응하는 값으로 치환하는 간단한 알고리즘이다.

 

여기서 k번 만큼 밀어내어 문자를 대응시키는데 요걸 Shift cipher(시프트 암호) 라고 한다.

그리고 만약 k가 3이라면 그게 Caesar cipher(시저 암호) 이다. 간단하죠?

 

만약 시저암호화를 시킨다면,

이렇게 되겠죠? 

그림 출처 : http://ko.wikipedia.org/wiki/

 

 

W를 3칸 뒤로 밀어뿌면 Z이고, 

A를 3칸 밀어뿌면 D가 나오니 대칭이 딱 맞군.

 

이런식으로 알파벳을 대응시켜 치환하는 것을 통틀어 치환암호라고 한다.

 

뭐 대표적으로 위와 같은 그림처럼 대응 시켜 치환한다.

 

다음은 Permutation/Transposition 에 대해 알아보자.

영어를 의미상으로 해석하면 Permutation 은 "치환" 인데..음??

치환은 substitution 이라고 했는데.. Permutation 도 치환인가!!? 아니다.

 

이게 우리나라말로 번역하면서 뭔가 오류가 생긴다 ..

Substitution은 원문의 글자를 다른 글자로 바꿔치기 하는 것 ( 굳이 따지면 이게 진짜 치환)

Permutation은 원문의 글자들의 순서를 마구 뒤섞는 것이다.

 

Substitution은 글자는 바뀌지만 순서는 그대로이고, Permutation은 원글자가 유지되지만 순서가 뒤죽박죽 되는 것이다.

여기는 Permutation/Transposition 에 대한 포스팅이니.. 그에 대한 내용을 얘기함.

Permutation/Transposition은 한번만 하면 쉽게 뽀록나니까 두번씩 이렇게 한다.

 

 

요즘 현대 암호는 product cipher 즉, 혼합암호라고 하여 Permutation 과 Substitution을 섞어서 사용한다.

간단한 예로 Feistel Cipher 라는 것이 있다. 

 

간단하게 설명하자면, 입력 비트를 둘로 쪼갠다. 하나는 Round Function 이라는 친구에 의해 나온 결과값,

나머지 하나는 그냥 그대로 출력하여 두 비트의 순서를 뒤섞는다. 이걸 여러 round를 수행하면 강력한 암호문을 만들 수 있다는 그런 구조.

반응형