금융기관의 인터넷뱅킹 사이트를 위장해 PC 이용자의 금융정보를 빼내는 피싱(phishing: 금융기관 등으로부터 개인정보를 불법적으로 알아내 이를 이용하는 사기수법) 범죄가 심심치않게 신문지면을 장식하고 있다. 피싱기법을 이용하는 해커는 이용자의 PC를 해킹해 이용자가 해당 은행의 사이트주소를 직접 입력하더라도 공격자가 만든 피싱사이트로 접속되도록 하는 최첨단 기법으로 이용자의 귀중한 금융정보를 훔쳐간다. 이번 논제는 암호이론을 활용해 해커의 노림수를 무력화시키는 보안기법이다.
[문제]
전자금융거래를 이용하여 은행거래를 하고자 하는 당신은, 당신의 주민번호를 은행에 안전하게 전달하고자 한다. [제시문2]에서 제시한 사실과 [제시문1]에서 제시한 금고전달 방법을 이용하여 중간에 경유하는 컴퓨터가 해킹당할지라도 당신의 주민번호를 안전하게 전달할 수 있는 가장 단순한 체계도를 제시하고, 그 방법이 타당함을 서술하여라.
[제시문1]
A가 B에게 중요한 문서가 들어있는 금고를 전달하려고 한다. 금고는 자물쇠로 잠겨있는데 만일 하나의 자물쇠로 잠겨져있는 금고라면 그 자물쇠의 열쇠를 B에게 전달해야만 한다. 그런데 만일 금고가 두 개의 자물쇠로 잠겨있다면 그럴 필요가 없다. A, B 두 사람이 서로 다른 자물쇠의 열쇠를 가지고 있는 경우, A가 B에게 금고를 안전하게 보내는 방법은 다음과 같다. A가 자신의 열쇠로 a 자물쇠를 잠근 후 B에게 보낸다. B는 자신이 가진 열쇠로 b 자물쇠를 잠그고 a, b 두 개의 자물쇠가 모두 잠긴 금고를 A에게 다시 전달한다. A는 자신의 열쇠로 잠겨 있는 a 자물쇠를 연다. 그러면 금고는 B가 잠근 b 자물쇠로 잠겨있는 상태가 된다. 이 상태의 금고를 B에게 보내면 B가 다시 자신의 열쇠로 b 자물쇠를 연다. 이때 금고가 전달되는 과정에서는 항상 잠겨진 상태에 있으므로 A, B이외의 타인은 금고를 열 수 없다.
[제시문2]
두 소수 p=887과 q=997의 곱이 884339임을 계산하기는 쉽지만, 거꾸로 884339를 소인수분해하여 두 소인수 887과 997을 찾는 것은 간단하지 않다. p 와 q 가 130자리이면 현재의 계산 방법과 컴퓨터로 이를 소인수분해하는 데 1개월 정도 걸리고, 400자리이면 1010 년이 걸린다. 이 사실을 이용하면 전자 상거래나 은행의 전자 금융 거래에서 쓰일 수 있는 암호 체계를 만들 수 있다. 예를 들어 당신의 주민번호에 400 자리의 두 소수의 곱을 곱해서 정보를 전달하면 이 정보가 비록 도중에 해킹당해서 타인에게 노출될 지라도 해킹한 사람이 당신의 주민번호를 알아내기 위해서는 1010년 이상의 시간이 걸리게 될 것이다.
[문제해설]
나와 은행이 각자 커다란 소수를 하나씩 가지고 있다고 생각해보자.
내가 가지고 있는 소수를 소수(1)이라 하고 은행이 가지고 있는 소수를 소수(2)라 둔다. 이 때, 나의 소수는 은행이 알지 못하며, 은행이 가지고 있는 소수 또한 내가 알지 못하는 상태이다.
① ‘나’는 나의 주민번호에 소수(1)을 곱하여 은행으로 보낸다.
② ‘은행’은 받은 숫자에 소수(2)를 곱하여 ‘나’에게 다시 보낸다.
③ ‘나’는 은행에서 받은 숫자를 내가 가지고 있는 소수(1)로 나눈 후 은행으로 결과값을 보낸다.
④ ‘은행’은 ‘나’로부터 받은 숫자를 소수(2)로 나누어 주민번호를 알아낸다.
위와 같은 체계에 의해 주민번호를 전달할 때, 만약 ‘나’와 ‘은행’의 중간에 해킹하는 사람 ‘해커’가 있다면 ‘해커’는 각 전달과정에서 소수(1)과 소수(2)를 알아내야 한다. 소수(1)과 소수(2)를 충분히 자릿수가 큰 수로 정한다면 ‘해커’가 이 수를 알아내는 데 걸리는 시간은 ‘나’와 ‘은행’이 서로 정보를 전달하는 시간보다 훨씬 많은 시간이 필요하게 될 것이므로 안전한 전달체계라 할 수 있다.