카이사르 암호

2024. 4. 2. 21:21대학교/정보보안

암호의 역사 - Caesar cipher(카이사르 암호, 시저 암호)

 

Caesar cipher 암호는 고대 로마에 사용한 암호이다.

 

일정한 문자 수 만큼 평행이동한 방식의 암호이다. 예를 들자면... 

 

abc라는 평문이 있고  3만큼 평행 이동한다고 가정했을때

암호문은 def가 된다.

 

a 가 3번 이동하면? b -> c -> d 이런식으로.

 

평행 이동하는 값이 바로 카이사르 암호의 '키' 가 된다.

 

복호화를 하려면 거꾸로 -3만큼 이동하면 원본 문자가 될 것이다..

 

암튼! 이런 시저 암호는 간단한 원리를 가지고있고, 이해하는데 어렵지 않다.

이 암호는 그렇다면 과연 안전할까?

 

아니다.. 이 암호는 brute force attack(전사 공격)에 약하다. brute force는 말 그대로 힘닿는 데까지 공격이라는 의미다.

키를 모두 다 때려박아서 평문을 얻어내는 공격이다. 그렇다면 카이사르 암호의 키는 몇 가지가 될까??

 

그렇다... 평행 이동을 하는 것 이니, 알파벳은 총 26자, 0까지 포함해서 0~25, 총 26가지다. (0 == 26)

 

그러니까 한 자리에 키 하나당 26가지의 수가 들어오니까 , (알파벳 수 * 키 수) = (26 * 26 = 676) 이다. 676번 때려박으면 1자리를 무조건 맞출수 있다는 결론이 나온다.

 

하지만 지금은 문자 하나 당 키가 다른것이 아니니 어떠한 암호문을 26가지의 키를 순서대로 이용해 모두 복호화 해보면 최대 26가지의 시도 끝에 알아낼 수 있다는 결론이 나온다!!

 

현재는 고대 로마시대가 아니다. 컴퓨터가 등장하고, AI가 등장한 시대이다 이정도의 연산은 컴퓨터를 이용하면 몇초? 몇 밀리초? 만에 처리될 수 있다. 즉 절대로 안전한 암호가 아니다.

 

카이사르 암호문을 생성하는 프로그램과 복호하는 프로그램을 한번 만들어보자.

 

이런식으로 코드를 작성하고..

실행결과를 보면? 아까 설명한대로 def가 나오는것을 확인할 수 있다.

그렇다면 +1을 해서 한다면 efg가 나올것임!!

 

암호화 원리를 알았으니, 이 원리를 이용해서 복호화 할 수 있다.

 

여기는 음수에 관련된 처리가 들어가있다. 일단 좀 헷갈리는데, 간단하게 생각해보자.

양수면 0에서 시작해서 오른쪽으로 늘어나는것이고 음수면 26에서 시작해서 왼쪽으로 감소하는것이다.

 

즉 26에서 왼쪽으로 감소하기 위해서는 26 과 음수 값의 연산이 필요하다. 그래서 

position + a_length(26)을 하는것이고 또다시 계산 값과 26을 나눈 나머지값을 이용한다

 

이 나머지 값은 아까와 원리는 똑같다. 

만약 position 값이 음수가 된다면, posotion + a_length는 무조건 26보다 작을것이고

 

양수라면 26 + position이니까 무조건 26이상의 값을 가진다. 따라서 26으로 나눈 나머지 값을 이용해서 연산을 한다.

 

즉 음수 처리를 위한 +26이고, 양수에서는 26을 빼기 위해서 나머지 연산을 한다.

 

이제 brute force 공격을 해 보겠다.

 

복호 알고리즘에 키를 모조리 넣어 확인하는것~

결국 범위 안에 키가 존재하니까, 한정되니까 모조리 넣어서 올바른것을 찾는 원리!

 

평문으로 lifeisshort를 넣고 암호를 하고 돌려보겠다.

 

 0은 아무것도 하지 않은 암호문이니, 0에서부터 21칸 떨어져있는것이 올바른 평문! 키는 21이라고 할 수 있다.

'대학교 > 정보보안' 카테고리의 다른 글

비즈네르 암호 - Vigenere Cipher  (0) 2024.04.08
단일 치환 암호 만들기 & 해독  (0) 2024.04.03
단일 치환 암호  (0) 2024.04.02