암호화 기술은 인터넷 사용이 보편화 됨에 따라 해킹, 바이러스 등의 사이버 범죄 및 개인 정보 유출 문제가 대두되어 컴퓨터를 사용하는 사용자의 신원 확인, 정보 비밀성 유지, 무결성 유지 등의 기능이 필요하게 되어서 나타나게 된 기술이다.
암호화에 대해 알아 보기전에 간략하게 용어들에 대해 정리하겠습니다.
- 암호화 되지 않은 문장을 평문(plaintext)라고 합니다.
- 암호화된 문장을 암호문(ciphertext)이라 합니다.
- 암호화란 평문을 암호문으로 바꾸는 과정 입니다.
- 암호문을 평문으로 바꾸는 과정을 복호화라 합니다.
쉽게 말해 암호화란 주어진 내용의 의미를 파악할 수 없도록 만드는 작업이고, 복호화란 그 암호화된 내용을 다시 파악할 수 있는 내용으로 다시 만드는 작업 입니다.
암호화 방식의 시초의 암호 중 시저 암호에 대해 간략히 알아보고, 그 이후 공개키와 비밀키 암호화 방식에 대해서도 알아보겠습니다.
시저 암호
다음은 시저 암호문의 한 예 입니다.
QHYHU WUXVW EUXWXV
이 암호문은 단순히 알파벳을 왼쪽으로 세 자리 이동해서 작성한 것입니다. 원래 문장(평문)의 문자 A는 암호 문자 D로, B는 E로와 같이 말입니다. 또한 X,Y,Z는 A,B,C로 대체해서 사용하게 됩니다.
표로 나타내자면 다음과 같습니다.
그렇다면 표를 이용해 앞의 암호문을 해독해보면 다음과 같은 결과가 나오게 됩니다.
NEVER TRUST BRUTUS
이렇듯 시저 암호는 평문의 문자 하나하나를 암호문의 문자로 바꾸는데, 이런 방법을 치환형 암호라고 합니다. 시저 암호는 암호화 방법과 암호를 푸는 단서인 키를 가지고 있습니다. 암호화 방법은 “더한다” 이고, 암호화 키는 “3”입니다. 만약 암호화한 메시지를 몰래 복호화하려는 해커가 있다면 해커에게 암호화키가 3일때 보다는 5일때, 5일때보다는 7일 때 더 복잡할 것 입니다. 이처럼 암호화키를 크게 설정하면 할수록 보안적 이점이 많습니다.
치환형 암호 말고도, 원문 문자의 위치를 바꾸어 암호문을 생성하는 전치형 암호법도 있습니다.
ILIKEYOU -> IKEYOUIL
위와 같이 문자를 좌측으로 두칸씩 옮기고 맨 앞의 두자는 뒤로 옮기는 방법입니다.
앞서 설명한 암호화 방식들은 대칭키 암호화 방식이라고도 하며, 암호화와 복호화에 같은키가 사용됩니다. 이러한 고전의 암호화 방식도 있지만, 최근에는 공개키 암호화 방식을 사용해 암호화를 진행합니다.
공개키 암호화(비대칭키 암호화)
비밀키 암호화 방식은 암호화키를 여러 사람이 공유하기 떄문에 암호화키가 유출될 가능성이 높다는 단점이 있습니다.
그림 처럼 사용자 A가 암호화키로 암호화한 암호문을 사용자 B에게 보내는 과정에서 제3자인 사용자 C가 암호화키와 암호문을 탈취하게 되면 사용자 C도 탈취한 암호화키로 암호문을 해독할 수 있게 됩니다.
이런 문제를 해결하기 위해 공개키 암호화 방식에서는 공개키와 비밀키 두 개의 키를 사용합니다.
공개키를 이용해서 암호화를 하고 비밀키를 이용해서 복호화를합니다. 암호문을 해독하려면 비밀키를 알아야 하는 것이죠, 따라서 여러 사람이 공유하는 키는 공개키이고 공개키는 유출되어도 암호문을 해독할 수 없기에 아무런 문제가 없게 됩니다.
사용자 A는 사용자 B의 공개키를 이용해서 암호화한 암호문을 사용자 B에게 보냅니다. 그러면 사용자 B는 자신의 비밀키를 이용해서 암호문을 복호화합니다. 이 과정에서 만약, 사용자 C에게 암호문과 사용자 B의 공개키가 유출된다고 해도 사용자 C는 B의 비밀키가 없으므로 암호문을 해독하지 못합니다.(물론 사용자 B의 비밀키가 유출되면 문제가 생길 수도 있으나, 비밀키는 자신만이 간직하는 키므로 유출될 가능성은 희박합니다.)
참고 자료
'프로그래밍' 카테고리의 다른 글
MSW? (3) | 2023.11.23 |
---|---|
REST API란? (0) | 2023.09.06 |
테스트 커버리지에 대한 생각(SLASH 21 영상 참고) (2) | 2023.06.17 |
SOLID 원칙 (0) | 2023.04.11 |
프로세스와 쓰레드의 차이? (0) | 2022.11.05 |