실시간 뉴스



[KISTI의 과학향기]비트코인의 암호화 원리


비트코인은 2009년에 '나가모토 사토시'라는 익명의 프로그래머에 의하여 개발된 가상의 화폐이자 이 화폐가 작동하는 방식이다. 쉽게 말해 '싸이월드 도토리', '네이버 캐시', '카카오톡 초코'와 같이 실제 돈은 아니지만 물건을 사거나 서비스 이용료를 결제할 수 있는 돈이다. 그런데 이런 돈과 비트코인의 가장 큰 차이점은 발행처다. 현실세계에서 사용하는 실물화폐는 화폐의 거래를 담당하고 통화량을 조절하는 은행이 있다. 이를테면 우리나라의 경우 한국은행이 그런 은행이다. 또 '싸이월드 도토리', '네이버 캐시', '카카오톡 초코' 등도 발행하는 곳과 사용하는 곳이 분명하다. 그러나 비트코인은 사용처는 있으나 발행처나 통화량을 조절하는 관리기관이 없다. 즉, 비트코인은 누구나 발행할 수 있고 누구나 사용할 수 있는 신개념의 화폐다.

우리는 은행을 통해 돈을 이체하거나 우리나라 돈을 다른 나라 돈으로 바꾸려면 수수료를 내야 한다. 심지어 거래하고 있는 은행의 내 돈을 다른 은행이 운영하는 ATM기기를 이용하여 찾을 때도 비싼 수수료를 낸다. 반면 비트코인은 은행이나 환전소를 거치지 않고 당사자들끼리 직거래를 하기 때문에 수수료가 낮거나 없다는 장점이 있다. 하지만 사이버공간에서 직거래는 돈은 지불했는데 물건을 보내주지 않는 것과 같은 사고와 사기의 위험이 따른다. 따라서 가상의 화폐인 비트코인으로 거래를 할 때는 반드시 거래에 대한 신뢰가 필요하다. 그렇다면 비트코인을 암호화하는 방법에는 어떤 것이 있는지 알아보자.

컴퓨터와 같은 전자기기를 이용한 통신 환경은 허락받지 않은 공격자가 통신 중인 정보를 도청하여 변조하거나 다른 내용을 삽입 또는 삭제할 수 있다. 이런 문제점을 해결하는 가장 안전한 방법은 정보를 암호화하는 것이다. 암호화된 정보를 원래대로 되돌리는 것을 복호라고 한다. 정보를 암호화하는 방법은 크게 비밀열쇠방식과 공개열쇠방식이 있다.

비밀열쇠방식은 보내고자하는 정보를 암호화할 때, 암호화하는 열쇠와 복호하는 열쇠가 서로 대칭이다. 즉, 정보를 보내는 쪽이나 받는 쪽 중에서 하나의 열쇠만 알면 다른 쪽의 열쇠를 알 수 있다. 예를 들어 a라는 정보를 보내는 경우를 생각해 보자. 정보를 보내는 송신자는 a를 암호화하기 위해 a에 2를 곱해서 2a를 만들었다면 송신자의 암호화열쇠는 2다. 또 a라는 정보를 받아야할 수신자는 2a라는 정보를 받았으므로 이것을 복호하려면 여기에 2분의 1을 곱해야 한다. 그래서 a라는 정보를 받는다. 즉, 수신자의 복호열쇠는 송신자의 암호화열쇠 2의 역수인 2분의 1이다. 여기서 송신자의 암호화열쇠가 공개되면 수신자의 복호열쇠도 바로 알 수 있기 때문에 정보는 안전하게 보호되지 못한다.

공개열쇠방식은 보내고자하는 정보를 암호화할 때, 암호화하는 열쇠와 복호하는 열쇠가 서로 대칭이 아니다. 즉, 정보를 보내는 쪽의 암호화열쇠와 받는 쪽의 복호열쇠가 다르기 때문에 암호화열쇠를 공개하여도 암호화된 정보가 무엇인지 알기는 매우 어렵다. 송신자가 정보 a를 공개열쇠방식으로 수신자에게 보낼 경우를 대강의 예로 들어보자.

먼저 정보를 받을 수신자는 어떤 두 소수(1과 자기 자신만으로 나누어 떨어지는 1보다 큰 양의 정수)의 곱 4067351을 이용해 송신자에게 정보를 암호화해서 보내달라고 요청한다. 그러면 송신자는 공개된 암호화열쇠 4067351을 이용해 정보 a를 b로 암호화해 수신자에게 보낸다. 이때 송신자는 공개된 수 4067351만을 이용해 a를 b로 암호화한다. 수신자는 4067351의 두 소인수(어떤 정수를 소수만의 곱으로 나타낼 때의 각 인수)를 이용해 받은 암호문 b를 a로 복호한다. 암호화된 정보가 송신자로부터 수신자로 전달되는 사이에 공격자가 암호 b를 탈취하더라도 4067351이 어떤 두 소수의 곱으로 이루어져 있는지 알 수 없기 때문에 b를 a로 바꿀 수 없다.

공개열쇠방식은 두 소수(1과 그 수 자신 이외의 자연수로는 똑 떨어지게 나눌 수 없는 자연수) p, q가 주어졌을 때, 그 두 소수의 곱 m(=pq)은 쉽게 구할 수 있지만 어떤 두 소수의 곱 m이 주어졌을 때 m이 어떤 두 소수의 곱인지 알기 어렵다는 것에서 착안한 방법이다. 즉, 공개열쇠방식은 누구나 한쪽 방향으로는 쉽게 들어갈 수 있어도 특정한 사용자 이외에는 되돌아올 수 없는 이른바 덫문(trapdoor)과 같은 장치가 마련되어 있다.

이와 같은 원리를 기초로 정보를 암호화해 보호하는 방식이 비트코인을 주고받을 때 사용되는 공개열쇠암호방식이다. 실제로 두 소수의 곱 m을 공개할 때는 두 소수 p, q가 각각 100자리 이상인 소수를 사용한다. 실제로 공개열쇠암호방식이 처음 발표되었던 1977년에 사용한 m은 다음과 같다.

m=114381625757888867669235779976146612010218296721242362562561842935706935245733897830597123563958705058989075147599290026879543541

그 당시 알려진 인수분해 알고리즘을 이용해 m을 인수분해 하는데 4천조년이 걸릴 것으로 예상했으나 1994년에 개량된 인수분해 알고리즘이 발표돼 다음과 같은 m의 두 소인수 p, q를 구했다.

따라서 비트코인에서 사용하는 공개열쇠암호방식에는 보다 더 큰 소수들이 필요하게 됐고, 오늘날에는 앞의 보다 훨씬 큰 소수를 이용하고 있기 때문에 사이버공간에서 비트코인으로 거래를 할 수 있는 것이다.

그런데 앞에서 주어진 수 4067351의 두 소인수는 무엇일까?

답: p=1733, q=2347

글 이광연 한서대 수학과 교수

*본 콘텐츠의 저작권은 한국과학기술정보연구원(KISTI)에 있습니다.





주요뉴스



alert

댓글 쓰기 제목 [KISTI의 과학향기]비트코인의 암호화 원리

댓글-

첫 번째 댓글을 작성해 보세요.

로딩중

뉴스톡톡 인기 댓글을 확인해보세요.



포토뉴스