-
20221103 TIL 비트코인과 암호화TIL 2022. 11. 3. 12:57
이번 주는 인증, 인가, 암호화 등에 대해 배우고 있다.
조금은 암호화 지식을 습득했고, 비트코인이 암호화와 관련이 있다고 했기 때문에
궁금했지만 이때까지는 알아보지 못했던 비트코인의 동작 원리를 알아보았다.
비트코인은 공개키와 해시 개념을 사용하고 있다.
공개키는 공통키와 비교되는 개념인데, 둘은 한 글자 차이지만 큰 차이가 있어 반드시 구분을 해야한다.
공통키를 먼저 알아보면, 암호화와 복호화에 공통으로 사용되는 키를 사용한다는 뜻이다.
즉, 비밀 메시지를 주고 받는 두 명이 동일한 키를 사용해서 암호화, 복호화한다.
공개키는 공개된 키가 있는 방식이다.
공통키 방식에서는 키만 들키면 비밀 메시지가 해석되므로 키를 매우 소중히 관리해야 한다.
하지만 공개키 방식은 누구든 알 수 있는 공개키가 있다.
그리고 공개키로 암호화한 메시지는 그 공개키와 짝꿍인 개인키로만 복호화를 할 수 있다.
따라서 어떤 사람에게 비밀 메시지를 보내고 싶으면 그 사람의 공개키로 암호화를 해서 보내면 그 사람만 볼 수 있는 비밀 메시지가 만들어진다.
따라서 공개키 방식은 암호화할 때와 복호화할 때 키가 다른, 비대칭키 방식이라고도 한다.
해시함수는 어떤 입력값이든 일정한 길이의 해시값으로 바꿔주는 함수이다.
해시 함수는 데이터로 해시값을 구할 수 있지만, 데이터가 살짝만 바뀌어도 반환값이 매우 달라져서
해시 값은 복호화는 할 수 없고, 따라서 해시값으로 원래 데이터를 알아낼 수 없다.
이 두 개념을 획득했다면 이제 비트코인에 대해 조금 더 알아볼 수 있다.
비트코인을 채굴한다는 것은 무슨 뜻일까?
비트코인의 화폐는 약 10분에 한 번씩 생산이 되고, 채굴을 한 사용자 중 한 명에게 지급되는데,
가장 먼저 조건에 맞는 해시값을 찾은 사용자에게 지급된다.
성능이 좋은 컴퓨터로 숫자를 하나하나 해시함수에 대입해서 누구보다 빨리 조건에 맞는 값을 찾아야
비트코인을 채굴할 수 있게 되는 것이다.
비트코인은 어떻게 은행 없이도 거래를 할 수 있을까?
비트코인은 분산시스템이다.
비트코인은 거래가 이뤄지면 거래내역이 모든 사람에게 공개된다.
git처럼, 내 컴퓨터에서 뭔가 조작을 해도 다른 컴퓨터들에 기록이 남아았기 때문에
다른 컴퓨터들도 조작하지 않는 이상 기록을 조작을 할 수 없다.
비트코인은 채굴 내역이나 거래내역을 비트코인 블록 정보와 거래내역을 모아두는 노드라는 곳에 분산 저장을 해서,
거래 내역을 조작해서 내 비트코인 개수를 바꾼다거나 하는 일을 과반수의 노드를 조작하지 않는 이상 할 수 없게 된다.
그러면 누가 거래기록들을 다 가지고 있을까?
거래내역을 기록하는 과정은 채굴과 관련되어 있다.
비트코인을 채굴하는 행위 자체가 거래 내역들을 기록하는 행위이고,
따라서 승인의 보상으로 비트코인이 주어지는 것이기 때문에
채굴하고자하는 그 많은 사람들이 모두 다 자발적으로 거래기록들을 가지고 있게 된다.
블록체인은 뭘까?
블록은 거래 내역 등의 정보가 저장되는 단위인데,
블록이 연결된 것을 블록체인이라고 한다.
즉 블록체인은 모든 거래 내역을 담고 있는 저장소라고 할 수 있다.
채굴을 통해 블록을 생성하게 되는데, 해시값을 가장 먼저 찾아내면 블록을 생성하게 되고, 비트코인을 보상으로 받게 된다.
블록체인은 각 블록에서 앞 블록의 해시값을 다음 블록에 포함해서 거래 내역 조작을 어렵게 할 수 있다.
각 블록은 앞 블록의 내용이 연결되어 있기 때문에, 만약 거래 내역을 조작하려고 한다면
그 거래내역이 포함된 블록 이후의 블록을 모두 다 다시 생성해야 한다.
따라서 블록체인이라는 기술을 이용하면 내용 조작을 거의 불가능하게 만들 수 있다.
비트코인을 어떻게 거래할 수 있을까?비트코인 거래에는 공개키 암호화방식이 사용된다.먼저, 비트코인은 암호화되어있고, 암호화된 정보를 갖고 있다고 해서 그 비트코인이 내 것인 게 아니고,그 암호를 복호화할 수 있는 키를 가지고 있는 사람이 그 비트코인의 주인이라는 점을 인지해야 한다.그리고 그 키는 그 사람만이 가지고 있는 비밀키에 해당한다.비트코인의 주인이 다른 사람에게 비트코인을 줄 때 거래 내역을 블록체인에 기록해야 그 거래가 완료됐다고 볼 수 있는데,
거래 내역을 블록체인에 기록하기 위해서는 서명을 해야하는데, 이 때 서명은 그 사람의 비밀 키로 한다.
이 거래 내역을 검증하려면 공개되어 있는 그 사람의 공개키를 이용해서 해당 거래 내역을 검증할 수 있게 된다.
이때까지 너무 많은 개념이 녹아있어 이해하기 힘들었던 내용들도 개념들이 쌓이다보니 이해할 수 있게 되었다.
어떤 개념을 이해하지 못 할 때는 그 개념을 이해하기 위한 다른 개념들이 부족한 경우가 많은 것 같다.
만약 이해가 되지 않는다면 관련 개념들을 먼저 이해를 해서 차근차근 이해를 해보자!
'TIL' 카테고리의 다른 글
20221105 TIL 모르는 기술을 어떻게 쓸 것인가 (0) 2022.11.05 20221104 TIL 메서드 시그니처를 고려하자! (0) 2022.11.04 20221102 TIL 해시 충돌을 어떻게 해결할 것인가 (1) 2022.11.02 20221101 TIL 코테에 대비하자 2 (0) 2022.11.01 20221031 TIL 코테에 대비하자 (0) 2022.10.31