블록체인은 네트워크 시스템이므로 P2P네트워크가 중요하지만 그만큼 중요한 것이 암호학입니다. 모두가 참여 가능한 네트워크에서 본인을 증명하기 위해서, 전자서명, 정보 보안등 꼭 알아둬야 할 정도로 중요한 암호학입니다. 어떠한 방식으로 암호화를 하고 있고 전자 서명은 어떻게 진행되는지, 대표적인 암호화 방식 비교까지 다루도록 하겠습니다.
암호학의 목표
- 기밀성 : 정보를 주고받고 저장을 하는데 부적절한 노출을 방지하여 허가받은 사용자가 아니면 내용에 접근하지 못하도록 막아야 합니다.
- 무결성 : 정보는 일반적으로 수정될 수 있습니다. 이러한 변경은 오직 권한이 있는 사용자에게만 허가가 되어야 합니다. 허가받지 않은 사용자가 변경하지 못하도록 부적절한 변경을 방지하여야 합니다.
- 가용성 : 정보를 생성하고 저장한 다음 저장한 정보를 활용할 수 있어야 합니다.
- 부인봉쇄 : 메시지를 전달받고 받지 못하였다고 하면 안 되기 때문에 메시지를 전달하거나 전달받은 사람이 메시지를 전달하거나 전달받았다는 사실을 부인할 수 없어야 합니다.
대칭키와 비대칭키
대칭키
대칭키의 특징은 암호화와 복호화에 쓰이는 키가 동일한 것이 특징입니다. 장점의 경우 한쪽이 키를 잃어버리더라도 상대방이 키를 소유하고 있다면 키를 다시 전달받으면 다시 사용할 수 있습니다. 또 암호화 알고리즘이 비대칭 키에 비해 상대적으로 간단합니다. 대칭키 암호화의 단점은 시스템에 가입한 사용자들이 각자의 암호화 키를 가지고 있어야 하며 서로 통신을 하는 사람의 암호화 키도 모두 가지고 있어야 하므로 키를 관리하기가 어렵습니다. 만약 악의적으로 전달받은 키를 이용하여 위조를 할 수도 있습니다.
비대칭키
비대칭키는 대칭키의 키 관리의 어려움을 보완하기 위해 나타난 암호 시스템입니다. 암호화하는 키를 개인 키, 복호화하는 키를 공유 키라고 하며 개인 키는 개인이 보관하고 공유키는 정보를 전달받을 사람에게 건네줍니다. 이렇게 하게 되면 암호화는 개인키를 가진 사람만 가능하고 공개 키의 경우 받은 암호를 복호화할 수 있습니다. 공개 키만 가지고 있으면 위조를 할 수 없습니다. 이를 통하여 블록체인 프로토콜을 구성하는 주소(address)와 디지털 서명(digital signature)을 비대칭 키를 통하여 작업이 됩니다.
비대칭키의 대표적인 방식
- RSA
- ECC
전자 서명 방식
다이제스트 서명
전자 서명은 위변조를 막으며 본인임을 증명해야 합니다. 따라서 위조하기 어려운 비대칭키를 이용하여 전자 서명을 진행합니다. 송신자는 본인의 서명을 해시함수를 이용하여 해시값을 얻어냅니다. 이때 생긴 해시 값을 다이제스트라고 부릅니다. 다이제스는 문서 하나당 하나의 값을 가지며 같은 문서의 경우 같은 값을 가져야 합니다. 암호화해서 보내는 주체는 문서가 아닌 이 해시값을 암호화합니다. 다이제스트를 송신자의 비밀키를 통하여 암호화하여 수신자에게 원본 서명과 다이제스트를 암호화한 값과 공개키를 전달합니다. 수신자는 문서를 해시함수를 통하여 다이제스트를 구하고 받은 암호문을 공개키로 복호화하여 두 값을 비교합니다. 만약 두 값이 동일하다면 서명이 위조되지 않았음을 증명합니다.
암호화 및 복호화 계층 추가
다이제스트 서명방식의 경우 중간에 송신자의 공유키를 가지고 있는 사람은 누구나 열람이 가능합니다. 따라서 정보에 대한 기밀성이 부족합니다. 원하는 송신자와 수신자끼리 주고받기 위해서 암호화와 복호화 단계를 추가하게 됩니다. 비대칭키의 경우 공개키로 암호화한 경우 개인키로 복호화가 가능하다는 점을 이용하여 다이제스트를 송신자의 개인키로 암호화 한 암호문은 수신자의 공유키로 한 번 더 암호화하게 되면 서명을 확인하기 위해서는 송신자의 개인 키가 필요로 하므로 정해진 송신자 이외의 사람은 확인할 수 없습니다.