공개 키, 개인 키가 뭘까?
암호화는 정보의 범위를 제한하는 것을 뜻합니다. 특정 사람만이 정보에 접근, 열람하도록 만들어진 보안 기술이죠. 마치 집 현관문을 주인만 열 수 있는 것과 같습니다. 왜냐고요? 문을 열 수 있는 열쇠 키는 집주인 본인만 들고 있기 때문이죠. 여기서 문고리(암호문)와 열쇠 키(개인 키)는 단 하나의 대칭 키 형태로 존재합니다. 이런 구조를 암호학에서는 대칭 키 구조라고 부릅니다. 여기서 문고리는 공개 키, 집 열쇠는 개인 키로 생각하면 됩니다.
암호화 기술은 주로 전쟁에서 쓰였습니다. 군사 전략을 암호화하고 전달하는 역할을 했죠. 윗 단락에 대칭키 특징 중 하나는 “암호문과 매칭 되는 개인 키는 하나”라고 말씀드렸습니다. 즉, 아무리 암호화를 잘하더라도 개인 키가 탈취당하면 끝인 거죠. 가끔 영화에서 모스 신호를 확인하고 해독하는 장면을 보신 적이 있으실 텐데요. 여기서 초기 암호화 구조인 대칭 키 보안 취약점이 발견되었고 이 구조는 한 단계 더 발전하게 됩니다.
과거 암호화 방식은 개인 키를 상대방에게 전달해야 하는 것이 문제였습니다. 반대로 개인 키를 전달할 필요가 없다면? 이를 해결하기 위해 개인 키를 전달하지 않고도 암호문을 해독할 수 있는 비대칭 키 방식이 고안되게 됩니다.
“오늘 기분이 ‘뭐’ 하니까 ‘거시기' 합시다.”
어떤 뜻일까요? 읽을 수 있는 문장임에도 불구하고 우리는 그 뜻을 알기가 쉽지 않습니다. 그렇다면 저 뜻은 누가 알 수 있을까요? 아마 작성자인 저만 알 것 같습니다. 하나 더 예로 들어보겠습니다.
“우리 희야 보고 싶다.”
무슨 뜻일까요? ‘희야'는 대구 사투리로 ‘우리 형’을 뜻합니다. 아마 대구 분들은 ‘우리 형’이라는 것을 바로 아셨을 겁니다. 반대로 사투리를 모르시는 분들은 알기 어려웠겠죠. 사실 이 과정은 암호 해독 방식과 유사합니다. 사투리를 듣고 그 뜻을 해석하는 것처럼 공개된 암호문을 확인하고 암호 키를 적용하여 해독하는 과정이 있습니다.
1. 암호문 — “우리 희야 보고 싶다.”
여기서 ‘희야’라는 단어는 암호화되어 있습니다. 암호화된 단어 '희야'를 해독할 수 있는 대구 사투리(개인 키)가 없다면 본 문장을 이해할 수 없습니다.
2. 해독 ㅡ "희야"라는 암호문의 참 값은 "형"임.
희야에 대한 대구 사투리(개인 키)를 알고 있는 사람에 한하여 본 문장을 해독(이해)할 수 있습니다. “희야"라는 암호문에 맞는 개인 키는 대구 사투리이고 이를 통해 나오는 값은 “우리 형"인 것이죠. 광주 사투리 또는 제주 사투리로 해석을 했다면 전혀 다른 뜻이 나오겠죠. 즉, 암호문에 다른 개인 키를 적용했을 때는 공개 키에 암호화된 메세지를 열람할 수 없는 것이죠.
이와 같은 방식을 RSA 암호화 방식이라고 말합니다. 왼쪽부터 Rivest, Shamir, Adleman 이며, 이들 이름의 앞글자를 따와서 RSA라고 부르고 있습니다.
어려운 블록체인도 위와 같은 원리로 구성되어 있습니다. 나만의 블록체인 주소(공개 키)가 존재하고 그에 맞는 개인 키가 존재합니다. 사람들은 개인의 주소 값을 활용하여 정보를 암호화하기 때문에 실제 전달하려는 메시지는 주소 소유주인 본인만 열람할 수 있습니다.
이는 투명한 거래 기록 방식으로 발전되고 있습니다. 실시간으로 블록체인 네트워크에서 발생하는 거래 내역들을 추적할 수 있죠. 공개 키로 노출되는 거래 내역에 대해 '누구'인지는 알 수 없지만, 적어도 특정 거래가 발생하고 있다는 것은 파악할 수 있습니다. 이는 여러 유통 시스템과 금융 시스템을 변화시킬 수 있죠. 본 구조를 통해 블록체인은 누구나 열람할 수 있는 ‘투명성’을 갖추면서 암호화된 키를 통해 ‘보안성’을 동시에 제공하고 있습니다.
물론! 가장 중요한 건, 개인 키를 안전하게 보관하는 것입니다.