안녕하세요 마블랑입니다.
이번에 회사업무를 진행하면서 데이터 암호화에 대한 내용을 처음 접했습니다.
암호라고 하면 복잡하고 어렵다는 선입견이 강했습니다. 어떤 암호화 기법을 쓸까 하며 고민을 하던중에 굉장히 쉬운 암호화 기법이 있다는 것을 알았습니다~
쉬운만큼 보안에 약점이 될수 있지만 암호에 대해서는 입문 단계라서 하나씩 배워볼까 합니다.
처음으로 배운 암호는 카이스르 암호라고 불리는 암호입니다.
카이사르의 스펠링이 Caesar 인데 어떠한 언어를 사용하느냐에 따라 시저로 읽을수도 있어서 시저 암호라고도 불리는 것 같습니다.
카이사르 암호를 간단히 말하자면 치환 암호입니다. (치환의 뜻은 바꾸다라는 뜻입니다~)
카이사르 암호에 대해 설명드리기 위해 예시를 들어볼게요~
"Happy new year"를 암호화 해보겠습니다.
평문 : Happy new year
암호문 : Unccl arj lrne
평문을 암호화 해보았습니다.
치환 암호라고 설명을 해드렸으니 눈치가 빠른 분들은 어떤 원리인지 아셨을 겁니다.
평문 Happy의 a와 year의 a 가 암호문에서 n으로 바뀌신걸 보이시나요?
즉 알파벳 a를 n으로 대체하는것이 카이사르 암호라고 하고 치환 암호의 원리입니다.
사실 예시를 암호화 한것은 Rot13이라고 하는 알고리즘인데 알파벳 순서대로 a(1)의 13번째 뒤는 n(14)이기 때문에 a가 n이 되는 것입니다~
더 자세히 설명을 드리면
a -> n
b -> o
c -> p
d -> q
e -> r
f -> s
....
이렇게 각 알파벳이 치환되는 것 입니다.
그럼 이제 Rot13의 복호화에 대해서 설명해 드리겠습니다.
알파벳이 총 몇개인지 알고 있나요? 총 26개 입니다.
그럼 a에서 13번째 뒤에 있는 n을 다시 암호화하면 어떤 알파벳이 될까요?
27번째 알파벳이 되야하지만 26개가 끝인 알파벳에서는 27번째는 없죠..
그럼 다시 처음으로 돌아와서 a가 되는 것입니다.
즉, Rot13의 암호화와 복호화는 동일하다는 것입니다.
다시 말하자면 평문에 암호화를 두번하면 다시 평문이 됩니다~
암호문 : Unccl arj lrne
평문 : Happy new year
Rot13의 치환 암호의 하나지만 대체하는 알파벳 규칙에 따라 Rot12가 될수 있고 Rot14가 될수도 있습니다.
아니면 다른 규칙을 사용해 또다른 알고리즘을 만들수 있어 직접 새로운 알고리즘을 개발할수도 있습니다^^
Rot13을 컴퓨터로 구현을 하게 되면 아스키코드를 이용하여 쉽게 구현할수 있습니다.
하지만 알파벳용 암호 알고리즘이기 때문에 숫자나 특수문자는 적용이 되지 않습니다.
만약 숫자와 특수문자을 암호화 하고 싶다면 알파벳과 다르게 별도로 코드를 구현해야합니다.
데이터 암호화에 대해서 알고 싶어하는 분들에게는 전혀 도움이 되지 않을 정보지만 마블랑처럼 암호화에 대해 어렵다는 선입견을 가지고 있다면 유용한 정보가 될거 같습니다.
암호화에 대해 배울때 키라는 것도 관리를 해야하기 때문에 꽤 어렵게 느껴졌지만 이번에 소개한 카이사르 암호, 치환 암호는 키가 없어서 간단하게 구현할수 있습니다
설명이 너무 중구난방인거 같지만 읽어주셔서 고맙습니다!
댓글