주요 내용
시프트 암호
모듈로 연산과 시프트 암호
카이사르 암호는 시프트 암호의 하나입니다. 시프트 암호는 모듈로 연산을 이용해 메시지를 암호화하고 해독하는 방식으로 작동합니다. 시프트 암호는 0부터 25까지의 정수인 키 K를 가집니다. 메시지를 볼 사람에게만 그 키 값을 공유합니다.
암호화 방법
메시지 안의 모든 글자 M 에 대해:
1. 글자를 알파벳 순서대로 0부터 시작하여 숫자로 바꿉니다. 이를 숫자 X라고 합니다.
(A=0, B=1, C=2, ..., Y=24, Z=25)
(A=0, B=1, C=2, ..., Y=24, Z=25)
2. 계산합니다: Y = (X + K) mod 26
3. 다시 0부터 시작하는 순서에 따라 Y를 알파벳으로 변환합니다.
(A=0, B=1, C=2, ...,Y=24, Z=25)
예시: 메시지 암호화에 키 값 K=19인 시프트 암호를 사용하기로 했습니다.
메시지 "KHAN"을 암호화하면 다음과 같습니다:
메시지 "KHAN"을 암호화하면 다음과 같습니다:
키 값 K=19인 시프트 암호를 적용하고 나면, 원래 메시지인 "KHAN"은 암호 텍스트 "DATG"가 됩니다.
메시지를 "DATG"라고 보냅니다.
해독하는 방법
암호 텍스트 안의 모든 글자 C 에 대해:
1. 글자를 알파벳 순서대로 0부터 시작하여 숫자로 바꿉니다. 이를 숫자 Y라고 합니다.
(A=0, B=1, C=2, ..., Y=24, Z=25)
(A=0, B=1, C=2, ..., Y=24, Z=25)
2. 계산합니다: X= (Y - K) mod 26
3. 숫자 X를 0부터 알파벳 순서에 따라 글자로 바꿉니다.
(A=0, B=1, C=2, ...,Y=24, Z=25)
(A=0, B=1, C=2, ...,Y=24, Z=25)
앞서 공유한 키 값 K=19를 이용하여 메시지를 해독하면 다음과 같습니다:
따라서, 키 값 K=19를 이용하여 암호 텍스트 "DATG"를 "KHAN"으로 해독했습니다.
시프트 암호가 안전하지 않은 이유
암호는 암호 텍스트의 복사본은 있지만, 키 값을 모르는 공격자로부터 메시지의 내용을 알아내지 못하도록 해야합니다. 하지만 가능한 키 값이 26개 밖에 없기 때문에, 누구든 메시지를 복구할 때까지 26개의 키를 모두 시도해볼 수 있습니다. 이러한 공격을 brute force attack이라고 합니다.