암호학이란?
어렸을 적 애지중지 여기던 온라인 게임 캐릭터가 어느순간 해킹을 당해 빈털터리가 됐던 경험이 없으신 분들이 있을까요? 그럴때마다 여러분들은 보다 더 복잡한 비밀번호를 설정하며 계정을 보호하고자 노력했을 것입니다. 이처럼 암호학은 우리의 일상생활에서 아주 넓은 범위에 적용된 학문입니다.
개요
“암호학”이란, 정보를 보호하기 위해 언어적, 수학적인 방법론을 다루는 학문으로 컴퓨터, 통신 등 여러 학문 분야에서 폭넓게 쓰이고 있습니다. 초기의 암호는 주로 메시지 보안을 위해 군사용으로 사용되었지만, 현재는 메시지 이외에도 인증, 전자서명이나 비밀정보를 보호하기 위해 연구되며 발전하고 있습니다.
아래에 서술된 글을 이해하기 위해선 암호학에서 사용되는 필수적인 용어에 대해 알아야 합니다.
메시지를 예로 들었을 때, 암호를 이용하여 보호해야할 메시지는 “평문”이라 하고 평문을 암호학적 방법으로 변환한 것은 “암호문”이라 합니다.
이때 평문을 암호문으로 변환하는 과정은 “암호화”라고 하며, 암호문을 다시 평문으로 변환하는 과정을 “복호화”라고 부릅니다.
마지막으로 평문을 암호화하거나 복호화할 때 사용되는 도구가 “키(Key)”입니다.
암호학의 역사
암호학은 비밀문서, 전쟁 중의 작전과 첩보 등을 비밀리에 전달하기 위해 수천년전부터 사용되었습니다.
고대 암호체계에서 가장 대표적인 방법은 “스키테일 암호”입니다. 기원전 400년경 고대 그리스에서는 특정 지름을 가지는 막대에 종이를 감고 평문을 횡으로 쓴 다음, 종이를 풀어 문자를 재배치하는 원리로 암호를 만들었습니다. 이 때, 암호문 송신자와 수신자는 같은 지름의 막대를 공유하는데, 이 막대가 키라고 할 수 있습니다.
< 출처 : 위키백과 >
근대에는 두 차례의 세계대전을 거치며 통신 기술의 발달과, 기계식 계산기에 대한 연구를 바탕으로 암호학에도 많은 발전이 있었습니다.
가장 대표적인 암호체계로 2차 세계대전 중 독일군이 사용하던 에니그마 암호가 있습니다. 에니그마 암호는 각기 다른 몇개의 암호판을 전기적으로 연결하여 정보를 입력하면 전기적 조합에 의해 자동적으로 새로운 암호문을 출력해 냈습니다. 이 때 사용된 키는 에니그마 암호기였습니다.
현대의 암호체계는 1970년대 후반, 스탠버드 대학에서 공개키 암호(비대칭키 암호)의 개념을 발표하며 활성화 되었습니다. 비대칭키 암호화 방식에서 송신자와 수신자는 각각 공개키와 비공개키 두 개의 키를 생성했습니다. 암호화에 사용되는 공개키는 공개해 정보를 보호하기 위해 사용할 수 있습니다. 복호화에 사용되는 비공개키는 사용자가 안전하게 보관하여 정보의 유출을 방지합니다.
암호학의 방식
현대 암호학에서 평문의 암호화 방식은 크게 “대칭키 암호화 방식”과 “비대칭키 암호화 방식(공개키 암호화 방식)” 두가지가 있습니다. 대칭키 암호화 방식은 암복호화에 사용하는 키가 동일한 암호화 방식을 뜻합니다. 이와 반대로, 비대칭키 방식은 암복호화에 사용하는 키가 다른 암호화 방식을 뜻합니다.
이해를 돕기 위해 예를 들어 보겠습니다.
A가 B에게 전달해야할 비밀정보가 있어 그 정보를 작은 금고에 넣어 보낸다고 할때, “대칭키 암호화 방식”에서는 A는 B가 비밀정보를 열어볼 수 있도록 금고의 열쇠 또한 같이 전달 해야합니다. 이 때, 키를 같이 보내는 과정에서 키가 탈취당한다면 B만 보아야 할 비밀정보가 노출되는 위험이 발생합니다. 또한 정보를 주고 받아야 할 사람이 많아질수록 각각의 키가 필요하기 때문에 관리해야 할 키가 방대하게 많아지게 됩니다.
< 대칭키 암호화 방식, 키가 탈취당할 경우 비밀정보가 노출될 수 있음 >
“비대칭키 암호화 방식”에서 A와 B는 각각 자물쇠 a1, b1과 키 a2, b2를 가지고 있습니다. 만약 A가 B에게 비밀정보를 전달해야한다면, A는 B의 자물쇠 b1을 이용해 정보를 암호한 후 B에게 보내게 됩니다. 비밀정보는 B의 자물쇠 b1에 의해 보호되며 이는 오로지 B가 가진 열쇠 b2로만 열 수 있습니다. 마찬가지로 B가 비밀답장을 작성하여 다시 A에게 전달하고자 한다면, A의 자물쇠 a1으로 비밀정보를 보호하여 정보를 송부합니다. a1은 A가 가진 키 a2로만 열 수 있기 때문에 답장 역시 보호됩니다.
여기서 자물쇠 a1, b1은 “공개키”, 키 a2, b2는 “비공개키(개인키)”입니다. 공개키는 비공개키를 통해 만들 수 있으며 누구에게나 공개되고, 데이터를 암호화하는 기능이 있습니다. 비공개키는 아무에게도 공개되서는 안되는 키로 공개키를 통해 암호화된 정보를 복호화할 수 있습니다.
비공개키 암호화 방식을 이용하면 키가 노출될 위험을 없애면서 안전하게 정보를 전달할 수 있습니다.
< 비대칭키 암호화 방식, 비공개키는 전송되지 않으므로 보안성이 뛰어남 >
블록체인 에서의 암호학
암호화 기술 블록체인의 기반을 유지시켜주는 필수적인 존재입니다.
블록체인은 암호화를 통해 트랜잭션을 안전하게 수행합니다. 또한 사용자의 신원을 보호하며 “거래의 기밀성을 유지”할 수 있습니다. 또한 블록생성을 증명하는 다양한 알고리즘이 블록체인에 대한 악의적인 공격을 방어하며 “기록 훼손을 방지”합니다.
블록체인의 검증 보상인 암호화폐 역시 암호학이 작용합니다.
1. 암호화폐에서 키(Key)의 활용
투자자가 암호화폐를 거래하기 위해선 어떤 형태로든 암호화폐 지갑을 통해야합니다. 이는 암호화폐 거래를 위해 가장 먼저 접하게 되는 암호화폐 거래소조차 암호화폐 별로 거래소 지갑을 생성해 화폐의 소유권을 보관하기 때문입니다. 암호화폐 지갑은 비대칭키 암호화 방식을 통해 공개키와 비공개키를 생성하며, 이를 통해 트랜잭션의 무결성을 보장합니다.
2. 디지털 서명
“디지털 서명”이란 검증 알고리즘의 하나로, 전자문서나 데이터를 보호하기 위해 사용되는 암호화 기술입니다. 디지털 서명은 일반적으로 비대칭키 암호화 기술을 기반으로 작동하며 디지털 서명을 통해 문서나 데이터의 무결성을 입증하고 인증할 수 있습니다. 블록체인에서 디지털 서명은 암호화폐 거래시 서명 및 승인의 용도로 이용됩니다.
디지털 서명의 절차는 다음과 같습니다. 먼저 송신자가 디지털 서명을 적용하려는 문서를 선택 후 해시(Hash) 함수를 적용하여 해시 값을 생성합니다. 그 후 이 값을 송신자의 비공개키로 서명 후 수신자에게 문서 원본과 공개키, 그리고 디지털 서명 세가지 데이터를 보냅니다.
수신자는 송신자로부터 받은 세가지 데이터 중 먼저 문서 원본의 해시값을 생성합니다.
그 후 송신자가 보낸 공개키를 이용해 디지털 서명을 복호화하여 해시값으로 복원한 후, 원본의 해시값과 비교하여 값이 일치할 경우 이 문서가 무결하다는 것을 확인할 수 있습니다.
결론
암호학은 기원전 고대부터 현재에 이르기까지 인류 역사와 함께 끊임없이 발전해온 학문입니다. 또한 현대에 발명된 비대칭키 암호화 방식은 블록체인 보안, 디지털 서명 등 다양한 분야에서 필수적으로 쓰이고 있으며, 앞으로도 더 뛰어난 방식이 개발되어 악의적인 정보 탈취 시도로부터 사용자의 정보를 보호할 것입니다.