비트코인의 기술 겉핥기

  • 프로젝트를 진행함에 있어서 필요한 얕지만, 꼭 알아야 할 내용들만 정리한다.

해시함수

  • 비트코인은 곳곳에 해시함수를 발라놨기 때문에 해시함수에 대한 얕은 이해가 필요하다.
  • 해시함수는 임의의 길이를 가진 데이터를 일정한 길이의 데이터로 바꿔주는 함수를 총칭한다.
  • 중요한건 아주아주 사소한 변화로도 엄청난 다른 값이 나오기 때문에 데이터 변조의 유무를 검증하기에 유용한 함수다.

암호화와 해시함수의 차이

  • 일전에 AES 128 혹은 SEED 128을 사용하여 암호화, 복호화하는 포스팅을 올린적이 있다.
  • 결론을 말하자면 암호화는 복호화를 전제로한 양방향 통신을 위한 것이며, 해시는 단방향이기 때문에 복호화가 불가능하다.
  • 그래서 후에 설명할 비트코인이 왜 안전한지에 대한 내용이 이 해시함수와 이어지게 된다.

블럭체인

  • 거래내역, 데이터 등이 담긴 공간을 블록이라 한다.
  • 이런 블록들이 체인처럼 서로 연결되어 블럭체인이 완성된다.

지갑

  • 지갑은 실생활의 지갑처럼 비트코인을 저장하고 사용하는 용도로 사용된다.

개인키

  • 지갑에는 개인키(private key)가 존재하는데 이 개인키는 지갑의 권한을 얻을 수 있는 유일한 열쇠이기 때문에 절대 타인에게 노출되어서는 안된다.
  • 이 개인키를 종이에 적어 물리적으로 보관할 수 도 있고(이 경우 종이를 잃어버리면 영원히 찾을 수 없다.), 서버에 저장해 복구가 가능하도록 하는 등 다양한 저장 방법이 있다.
  • 서버에 저장해두거나 혹은 모바일 디바이스에 개인키가 저장되는 경우 개인키를 복구할 수 있도록 Seed라고 불리는 단어 조각들이 존재하고, 이를 난수화 하거나 여러 알고리즘을 통해 개인키를 새로 만들거나 복구할 수 있다.

공개키

  • 공개키는 개인키로부터 파생되며, 비트코인 거래시 쓰이는 전자서명이 바로 이 공개키로 이루어진다.

주소

  • 주소는 공개키로부터 파생되며 일종의 계좌번호로 비트코인을 받을 수 있는 주소로 사용된다.

한눈에 보기

  • 이처럼 해시함수로 인해 주소로부터 공개키를, 공개키로부터 개인키를 얻어내는 것이 불가능하다.
  • 타원곡선 암호의 경우 이론적으로 유한한 시간내에 계산이 가능하긴 하나, 그 시간이 너무너무 오래 걸린다. (적어도 내 수명보다 훨씬 긴 시간…)
  • 그러므로 안심(?)하고 주소를 공개해도 된다.