Category Archives: Cryptography

Cryptography

공인인증서와 암호화폐

이름만들어도 싫어하는 분이 많은 공인인증서, 신기술로 각광받는 암호화폐 둘 사이에 공통점이 있으니 보안을 위해서 개인키-공개키 방식을 사용한다는 것입니다. 공인인증서는 자신이 행위를 했다는 행위를 증명하기 위해서 사용하고 암호화폐는 지갑으로 돈을 전송하기 위해서 상대방의 공개키 만으로 전송이 가능하도록 한 것이죠. 그러므로 암호화폐 지갑들도 대부분 개인키 사인 기능을 제공하는데 본인 증명을 위해서 사용합니다.

상대방에서 특정한 단어를 주고 사인을 해달라고 해서 그 사람의 공개키(즉 지갑주소)와 사인된 값을 잘 버무리면(?) 해당 단어가 사인되어 있는지 알수 있습니다. 제대로 사인이 되었으면 해당 지갑 주소의 소유자인지 알 수 있는 거죠. 보통은 작은량의 금액을 송금요청해서 확인 하는데 사인을 이용하면 돈 안들이고 본인 확인이 가능합니다.

같은 지갑주소가 우연히 생길 수 있을까?

암호화폐 지갑의 주소 정확히는 프라이빗키를 생성하는 과정을 보면 인터넷 접속없이 그냥 만들어진다. 그렇다는 이야기는 중앙통제 기관이 없이 혼자서 통장번호를 만든다는 이야기다. 그런데 이렇게 만들다 보면 다른 사람 통장번호와 충돌하지 않을까? 그럴수 있다. 그런데 현실적으로 일어나기는 아주 아주 아주 힘들다.

비트코인의 예를 들면 같은 키가 생성될 확율은 1 / 2160인데, 이것이 얼마나 어려운지를 알아보면 되겠다. 같은 키가 생성된다는 것은 다른사람의 프라이비트 키를 생성해 낸다는 뜻이다.

어느 돈많은 지갑 주소를 목표로 프라이비트키를 생성해보자.

최악으로 재수가 없으면 2160을 다 생성해봐야 하는데 이경우 부터 해보자. 좋은 컴퓨터가 있어서 1초에 10억번(230) 정도 생성한다고 하면 총 걸리는 시간은 2130초이다. 이건 너무 오래 걸리는 것 같으니 이런 기계를 다시 10억개 투입하자. 그러면 2100초가 걸린다. 이것도 아무래도 너무 많다. 10억명의 다른 사람들에게 부탁해서 각자 10억개의 컴퓨터를 투입해 달라고 하자. 그러면 이제 270초 정도로 많이 짧아 졌다. 일년은 225초이다. 그렇다면 245년이 걸린다는 뜻이다. 지구의 역사가 대략 234년이다.

재수가 좋아서 절반만 하고 찾을수도 있겠다. 그러면 233년이면 된다.