컴퓨터로 만드는 난수는 씨앗에 좌우된다. 게다가 컴퓨터로 난수를 만드는 알고리즘의 종류는 두 세 개로 한정돼 있다.
난수를 만드는 방법이 같으니 만약 같은 씨앗을 넣는다면 같은 난수가 만들어져 버린다. 난수라고 할 수가 없어진다.
음악 플레이어의 랜덤 재생 기능을 이용할 때 같은 순서로 곡이 나오는 경우도 씨앗이 같기 때문이다. 그래서 최근에는
최대한 시드값이 중복되지 않도록 현재 시각을 초 단위까지 나타낸 수를 씨앗으로 이용한다. 그럼에도 완전한 무작위 수는 만들어낼 수 없다. 또
다른 문제는 시행횟수가 너무 적다는 점이다.
컴퓨터로 알고리즘을 만들 때 사용하는 함수는 확률 알고리즘을 이용하기 때문에 작은 표본을 사용할수록 분포가 고르지
않다. 즉, 0~9까지 숫자를 무작위로 1억 번쯤 돌리면 모든 수가 나올 확률이 비슷해지지만, 10번 정도만 돌리면 숫자 1만 나올 수도
있다.
확률이 기댓값과 일치하려면 무한히 시행한다는 가정이 필요하다. 그러나 보통 사람이 게임을 한다고 하면 시행횟수는
기껏해야 수십 번에서 수백 번이다. 실제 시행횟수가 확률 분포를 따르기에는 너무 적기 때문에 좋지 않은 아이템만 계속 나오는 것처럼 느껴지게
된다.
난수로 만드는 궁극의 암호
현재 가장 널리 쓰이는 RSA암호를 만든 론 리베스트, 아디 셰미르, 그리고 레오나르드 아델만. <출처:
서던캘리포니아대학교>
완벽한 난수를 찾는 이유는 갈수록 중요해지는 보안 때문이다. 게임 아이템이 무작위로 나오게 하는 데는 가짜 난수도
충분하지만, 정보 보호는 다르다. 대부분 보안 시스템은 컴퓨터 알고리즘으로 만든 가짜 난수나 큰 소수의 곱을 이용한다. 지금으로서는 가장 안전한
방식이라 여겨지기 때문이다.
현재 가장 많이 사용하는 암호 방식은 RSA라는 공개키
암호다. 암호를 교환할 때 큰 소수 두 개를 곱해 만든 수를 공개하는 데 해킹이 거의 불가능하다. 규칙을 알기 힘든 큰 수가 어떤 수로
소인수분해되는지 알기가 어렵기 때문이다.
소인수분해는 어떤 수를 소수의 곱으로 나타내는 것을 말한다. 21처럼 작은 수는 3과 7로 소인수분해된다는 사실을
쉽게 알 수 있지만, 10자리가 넘어가는 수는 어떤 수로 나눠지는지 계산하는 데 어마어마한 시간이 걸린다. 반면에 차세대 컴퓨터로 개발 중인
양자컴퓨터는 이론상 한 번에 2의 거듭제곱만큼의 일을 처리할 수 있다. 즉 계산량도 많아지고 계산 속도도 기하급수적으로 빨라진다. 디지털
컴퓨터로는 어려웠던 문제도 양자컴퓨터는 간단하게 해결해버린다.
예를 들어 비트1)가 열 개가 있으면 1024(=210)가지 연산을 한꺼번에
처리한다. 열 개의 비트로 나타낼 수 있는 수가 1024가지이기 때문이다. 디지털 컴퓨터라면 이것을 하나씩 처리해야 하지만, 양자 컴퓨터는
1024개의 연산을 동시에 할 수 있다. 아주 복잡한 계산도 짧은 시간에 할 수가 있다.
이게 가능해지면 기존의 RSA암호와 같은 소인수분해 암호는
금방 풀려버리게 된다. 양자컴퓨터에게 큰 수의 소인수분해는 금방 해결해 낼 수 있는 문제이기 때문이다.
진짜 난수, 양자난수?
진짜 난수를 찾기 위해 과학자들은 다시 자연으로 돌아갔다. 자연에서 발생하는 불규칙성을 이용해 난수를 생성하는 방법을
이용하는 것이다. 자연 현상을 이용하면 난수의 조건을 모두 만족시킬 수 있다. 무작위적이고 어느 쪽으로도 편향되지 않으며 예측불가능한 수의
나열을 만들어 낼 수 있다. 바로 양자난수다.
방사성동위원소2)를 이용하면 양자난수를 만들 수 있다. 방사성동위원소는 자연에서 저절로
붕괴되며 입자를 방출한다. 이 입자는 무작위로 나오기 때문에 이를 이용해서 난수를 만들 수 있다. 이 방법으로 최근에는 초소형 난수발생기를
만들기도 한다.
빛을 이용해서도 만들 수 있다. 먼저 사방으로 진동하는 빛을 일정한 방향으로만 진동하는 판에 쪼인다. 이때 빛 입자
한 개를 ‘광자’라고 하고, 특정한 진동 방향만 투과시키는 판을 ‘편광판’이라고 한다. 같은 방향으로 진동하는 빛 입자는 판을 통과하고 다른
입자는 반사돼 튕겨 나간다. 한 파장에서 광자 100만 개가 나오는 빛을 편광판에 쏘고, 빛이 통과하는 곳과 반사되는 곳에 각각 탐지기를 둔다면
빛이 통과하는 곳에 있는 탐지기에서는 과연 광자를 몇 개나 감지할 수 있을까? 정확하게 몇개가 통과할지는 알 수 없지만, 일부는 편광판을
통과하고 일부는 반사될 것이다.
만약 광자를 단 한 개만 편광판에 보내면 통과하는 쪽에 있는 탐지기는 어떻게 반응할까? 광자는쪼개지지 않고 편광판을
통과하거나 반사된다. 각 탐지기는 반응하거나 그렇지 않거나 둘 중 하나의 결과를 나타낸다. 이러한 특성을 이용해 이진법의 난수를 만들 수
있다.
불확실해서 안심이 된다
광자가 통과하는 곳에 있는 탐지기는 광자를 보면 ‘1’을 나타내고, 반사되는 곳에 있는 탐지기는 광자를 보면 ‘0’을
나타내게 한다. 그리고 광자를 하나씩 차례대로 보낸다. 광자를 계속 보내면 1과 0으로 이뤄진 이진법의 수열이 나온다.
광자가 통과할지 반사될지는 알 수 없기 때문에 1과 0의 배열은 알 수 없다. 즉 진짜 난수가 만들어진다. 이진법의
수열은 묶는 방법에 따라 다른 진법으로 표기할 수 있으므로 매우 다양한 난수로 이뤄진 수열이 생긴다.
이같은 양자난수 기술은 정말 예측이 불가능한 난수를 제공해 줄 것이다. 그러면 정보시대에 꼭 필요한 ‘완벽한 보안’을
만들 수 있다. 우리가 안심할 수 있도록 귀중한 데이터와 개인 정보를 지켜주는 것은 바로 뭐가 나올지 불확실한 난수다.
동아사이언스
댓글 없음:
댓글 쓰기