영어를 잘하는 편은 아니라서 오역이 있을 수 있다. 꼴리는 대로 해석했으니 알아서 찰떡같이 알아들을 것을 권한다.
PC 기준으로 작성해서 모바일로는 가독성이 떨어질지도 모르겠다.
이 글은 다음과 같은 3가지에 포커스를 맞출 것이다.
1. 충분히 많은 양자컴퓨터를 가지고 있을 때, 몇 개의 비트코인을 탈취할 수 있을까?
2. 우리 같은 사람들이 양자 해킹에 대비해서 할 수 있는 일은 어떤 것이 있을까?
3. 비트코인 네트워크는 양자 해킹으로부터 안전할 것인가?
[양자 컴퓨터와 암호학]
양자 컴퓨터가 현대에 사용되고 있는 비대칭 암호화에 어떤 위협을 가할 수 있는지에 대해 많은 아티클이 만들어졌다. 그래서 우리는 이에 대해 자세히 다루지는 않을 거다. 하지만 기사의 취지와 관련 있는 부분만 쏙쏙 빼먹을거다.
비대칭 암호화에서, 프라이빗-퍼블릭 키 페어는 서로가 수학적인 관계를 가지는 방식으로 생성된다. 이름에서 알 수 있듯이, 프라이빗 키(Private Key)는 너만 가지고 있게 하고, 퍼블릭 키(Public Key)는 아무나 접근 가능하게 하는 키다. 이것은 개개인이 디지털 서명(프라이빗 키로 만듬, 퍼블릭 키로 검증 가능)을 만들 수 있게 해준다. 이러한 체계는 금융 분야에서 매우 일반적이며, 거래의 진위성과 무결성을 증명하는 데 쓰인다.
비대칭 암호화의 보안은 "단방향 함수"라는 수학적인 원리를 기반으로 한다. 이 수학적 원리는 프라이빗 키로부터 퍼블릭 키를 쉽게 생산할 수 있도록 하지만, 반대로는 어렵게 한다. 퍼블릭 키로부터 프라이빗 키를 만드는 알려진 모든 "클래식"한 알고리즘들은 죄다 천문학적인 시간을 필요로 하며, 그래서 쓸모없다.
하지만! 1994년에 Peter Shor라는 수학자가 대부분의 비대칭 암호화 알고리즘들을 박살내는 "양자 알고리즘"을 발표하였다. 이것은 충분한 수의 양자 컴퓨터를 동원하여 이 알고리즘을 사용한다면, 퍼블릭 키로부터 프라이빗 키를 얻어낼 수 있음을 의미하고, 그러면 디지털 서명을 위변조할 수 있는 것이다.
[비트코인 101]
비트코인에 대한 양자 컴퓨터의 영향을 이해하기 위해서는, 먼저 비트코인의 트랜잭션이 어떤 방식으로 동작하는 지를 알아야 한다. 비트코인은 가치를 교환하기 위한 탈중앙화된 시스템이다. 은행이 직접 고객에게 계좌를 발급하는 기존의 은행 시스템과는 달리, 비트코인에서는 개개인이 알아서 계좌를 스스로 만들 수 있다. 간단한 절차를 통해 사용자의 컴퓨터는 비트코인 거래에 필요한 비트코인 주소(퍼블릭 키와 관련이 있음)와 프라이빗 키를 만들어낸다.
(비트코인에서) 트랜잭션이란, 비트코인을 한 주소에서 다른 주소로 옮기는 것이다. 이것은 은행 계좌에서 송금을 하는 것과 비슷하다. 비트코인에서는, 돈을 보내는 사람이 그의 트랜잭션을 디지털 서명을 활용하여 자기가 이만큼 돈을 가지고 있다는 것을 증명해야 한다.
여기서 다시 한번 기억하자: 양자 컴퓨터를 가지고 있는 사람이 당신의 퍼블릭 키를 가지고 있다면 거기서 프라이빗 키를 뽑아먹을 수 있다! (역자: 원래 문장은 좀 다른데 일단 여기서는 넘어가자.)
비트코인 네트워크에서, 어떤 트랜잭션이 인정받을 지에 대해서는 전적으로 채....굴자에게 달려있다. 채....굴자들은 블럭(트랜잭션들의 모임)을 채....굴하기 위해 일련의 경주(역자: 수학적 퍼즐을 푸는 것을 한다.)를 펼치며, 그 경주에서 이긴 사람이 바로 다음 블럭을 채....굴할 수 있게 되고, 보....상으로 새로운 코인을 받는다. 비트코인 블럭들은 일렬로 연결되어 있다. 이걸 블럭체인이라고 한다.
경주에서 이긴 채....굴자는 그가 원하는 거래를 블럭 안에 자유롭게 포함시킬 수 있다. 다른 채....굴자들은 자신이 동의하는 블럭 위에서 채....굴을 함으로써 동의를 표한다. 동의하지 않을 경우, 그들은 가장 최근에 인정받은 블럭 위에서 채....굴을 진행할 것이다. 다른 말로 표현하면, 어떤 채....굴자가 이상한 블럭을 만들려고 하면, 정직한 다른 채....굴자들은 해당 블럭을 무시하고 가장 최근에 인정받은 블럭 위에서 채....굴을 진행할 것이다.
[비트코인 주소의 종류]
비트코인 거래는 에스크로, 공유 소유권 같은 여러 커스텀 로직을 구현할 수 있게 한다. 그러나 이 기사에서는 오직 1:1 거래에 대해서만 다루도록 하겠다. 이 1:1 거래는 2가지 형태로 나뉘어질 수 있는데, 각각 양자 컴퓨터에 의해 다른 영향을 받게 된다.
첫번째 트랜잭션 타입은 퍼블릭 키와 비트코인 주소가 1:1로 매칭이 되는 구조다. 이런 주소로 보내는 트랜잭션을 p2pk(pay to public key)라고 부른다. 2009년, p2pk는 가장 많이 쓰이는 주소 타입이었다. 사토시 나카모토가 직접 채....굴한 많은 비트코인들도 이러한 주소에 저장되어 있다.
이러한 주소에서 발생할 수 있는 이슈 중 하나는 주소에 오타가 있는지 검증하는 방법이 없는 것(예를 들어 신용카드 번호에는 checksum digit이라는 게 쓰인다) 이 있다. 또 다른 문제로는 이 주소가 굉장히 길다는 것이며, 이 문제로 인해 트랜잭션 파일의 크기가 커지고 트랜잭션을 처리하는 데 더 많은 시간이 소모된다. (역자: 솔직히 주소가 긴 게 문제가 되는지는 나는 잘 모르겠다)
양자 컴퓨터의 위협과 관련하여, p2pk 형태의 주소에서는 해당 주소의 퍼블릭 키를 다이렉트로 얻을 수 있다. 그리고 비트코인의 모든 트랜잭션은 공개되므로, 누구나 임의의 p2pk 주소로부터 퍼블릭 키를 얻을 수가 있다. 따라서, Shor의 양자 알고리즘을 실행하는 양자 컴퓨터를 통해 해당 주소들의 프라이빗 키를 얻어낼 수 있다. 이건 양자컴퓨터를 가진 사람이 해당 p2pk 주소를 사용하는 사람들의 비트코인을 마음대로 갖다 쓸 수 있다는 것을 의미한다.
두번째 트랜잭션 타입은 비트코인을 받는 주소가 퍼블릭 키의 해쉬가 합성된 형태이다. 해쉬는 단방향 암호화 함수이므로, 퍼블릭 키를 주소로부터 얻어낼 수가 없다. 이것의 최초, 그리고 가장 유명한 구현은 p2pkh (pay to public key hash) 라고 불리는데, 위에 언급된 2가지 이슈를 해결할 뿐만 아니라 퍼블릭 키를 주소로부터 얻어낼 수 없도록 만들었다.
p2pkh 주소의 퍼블릭 키가 노출되는 때는 오직 해당 주소로부터 트랜잭션이 시작될 때(비트코인을 보낼 때 등) 밖에 없다. 이것은 해당 주소에서 비트코인을 다른 곳으로 보내지 않는 한, 해당 주소의 퍼블릭 키를 알 방법이 없고 따라서 양자 컴퓨터가 프라이빗 키를 뽑아낼 수 없게 된다.
하지만!!! (역자: 다시 강조하는 듯) 해당 p2pkh 주소로부터 단 1사토시라도 다른 주소로 비트코인을 보내게 되면 퍼블릭 키는 노출되게 된다. 그 순간부터, 해당 주소는 "사용된 주소"로 마킹되며 따라서 해당 주소를 새로운 코인을 받을 입금주소로 재사용하지 않는 것이 바람직하다.
사실, 많은 지갑 프로그램들(Electrum 등)은 똑같은 주소를 다시 사용하지 않도록 되어 있다. 비트코인 유저들은 같은 주소를 여러 번 사용하지 않는 것이 바람직하지만, 당신은 얼마나 많은 사람들이 이 조언을 따르지 않는 지에 대해 놀랄 것이다. 다음 문단에서 더 자세히 설명하겠다.
[양자 컴퓨터가 충분히 많이 있다면, 얼마나 많은 양의 비트코인들이 탈취당할 수 있을까?]
누군가가 양자 컴퓨터를 만들어내서 프라이빗 키를 퍼블릭 키로부터 탈취할 수 있게 되었다고 상상해보자. 얼마나 많은 비트코인이 위험에 처하게 될까?
이 질문에 대답하기 위해서 우리는 비트코인 블럭체인 전체를 분석했다. 전 문단에서 설명했듯이, p2pk 주소와 재사용된 p2pkh 주소에 있는 모든 비트코인은 양자 해킹에 취약하다. 그 결과는 다음 그림과 같다.
(대충 2009~2010년 쯤에는 대부분이 취약했지만 2010년대 후반에 들어서면서 그 비중이 현저하게 줄어들었다는 그래....프)
이 그래....프는 다양한 주소 타입의 주소가 시간에 걸쳐 얼만큼 쓰였는지를 나타내준다. 그래....프에서 볼 수 있듯이, p2pk 주소는 비트코인의 첫 해를 지배했었다. 흥미롭게도, p2pk 주소의 수는 그 후로 거의 변하지 않았다(약 200만개 비트코인). 여기에 대한 나름 근거있는 추측은 해당 코인들이 채....굴을 통해서 만들어졌고 다른 주소로 한번도 옮겨진 적이 없다는 것이다.
p2pkh는 2010년에 처음 만들어졌는데, 해당 주소는 아주 빠르게 메이져한 주소가 되었다. 이후 만들어진 대부분의 코인은 p2pkh 형태의 주소에 저장되었다. 그래....프에서 볼 수 있듯이 2010~2014년에는 재사용된 p2pkh 주소가 증가했으나 그 이후로는 서서히 감소해서 현재는 250만개의 비트코인을 가지게 되었다.
이 그래....프가 시사하는 바는 사람들이 p2pk 주소 및 재사용된 p2pkh 주소를 사용하지 않는다는 것이다. 그럼에도 불구하고 여전히 400만개의 비트코인이 양자 해킹의 위협에 놓여 있으며, 이것은 시세로 환산했을 때 약 400억 달러에 해당한다!! (역자: 현재 시세랑은 좀 차이가 많이 나니 주의)
[우리 같은 사람들이 양자 컴퓨터의 위협에 대비하여 할 수 있는 일이 뭐가 있을까?]
이전 문단에서 우리는 p2pk와 p2pkh 주소가 양자 해킹에 취약하다는 것을 설명했다. 하지만, 다른 주소로 비트코인을 송금하지 않은 p2pkh 주소는 퍼블릭 키가 아직 공개되지 않았으므로 안전하다. 이것은 당신이 당신의 비트코인을 새로운 p2pkh 주소로 송금했을 때, 그 주소들은 양자 해킹에 취약하지 않아야 함을 의미한다.
문제는, 많은 취약한 비트코인들의 주인이 그들의 프라이빗 키를 잃어버렸다는 것이다. 그런 코인들은 다른 주소로 이동할 수 없고 양자 컴퓨터를 처음으로 제대로 활용하는 사람이 가져가는 것을 기다리고 있다. 이 문제를 해결하기 위해서는 위험에 노출된 수많은 코인들을 안전한 주소로 이동시킬 수 있게끔 하는 비트코인 커뮤니티의 합의가 필요하다. 특정 기간 이후에는, 취약한 주소에 있는 비트코인들을 사용할 수 없게끔 만드는 것이다(기술적으로, 채....굴자들이 해당 주소로부터의 트랜잭션을 거부하는 것을 의미한다). 그러나 이러한 절차는 아주 신중하게 구현/고려되어야 한다.
[비트코인 블럭체인은 양자 공격으로부터 안전할 것인가?]
일단 모든 취약한 비트코인들이 안전한 주소로 옮겨졌다고 가정해보자. 그러면 비트코인 블럭체인은 더 이상 양자 해킹으로부터 취약하지 않은 것일까? 이 질문에 대한 대답은 그리 간단하지 않다. "양자해킹으로부터 안전"의 전제조건은 바로 퍼블릭 키가 공개되지 않는 것이다.
하지만 우리가 전에서 설명했듯이, 당신이 비트코인을 어떤 주소로 송금하는 바로 그 순간, 당신은 퍼블릭 키를 공개하게 된다. 그리고 바로 그 순간부터 당신의 트랜잭션이 "마이닝" (역자: 올바른 블럭에 포함됨) 되기 전까지, 양자 컴퓨터를 이용한 공격자가 당신의 코인을 가로챌 기회를 얻는다. 그런 공격에서, 공격자는 일단 당신의 프라이빗 키를 퍼블릭 키로부터 얻어내려고 할 것이며 그리고 더 높은 수수료를 지불하여 자신의 지갑으로 비트코인을 보내려고 할 것이다.
비트코인 블럭체인은 현재 1블럭당 10분 정도가 소모되도록 되어 있다. (과거처럼 네트워크가 혼란스럽지만 않다면) 양자 컴퓨터가 퍼블릭 키로부터 프라이빗 키를 뽑아내는 데 드는 시간이 늘어날수록 비트코인 블럭체인은 양자 해킹으로부터 더욱 안전해질 것이다. 현재 과학적 추측으로는 양자 컴퓨터가 RSA 키를 박살내는데 8시간, 그리고 비트코인 서명을 해킹하는 데 30분 정도가 소모되리라 추측하고 있다. 이것은 비트코인이 양자 해킹으로부터 안전하다는 것을 의미한다(당신이 주소를 재사용하지만 않으면).
하지만 양자 컴퓨팅 영역은 아직 미지의 세계이고, 실제로 미래에 양자 컴퓨터가 얼마나 빨라질 지는 아무도 모른다. 만약 양자 컴퓨터가 퍼블릭 키로부터 프라이빗 키를 뽑아내는 데 걸리는 시간이 10분에 가까워진다면, 비트코인 블럭체인은 망가질 것이다.
[에필로그]
해설 생략
[요약]
- p2pk 주소를 쓰지 말고 p2pkh 주소를 써라. 그리고 p2pkh 주소를 쓸 때도 주소를 재사용하지 마라.
댓글 1