전자서명 |
전자서명은 서명자가 전자문서에 서명했다는 사실을 확인할 수 있는 정보이다.
키 생성 알고리즘, 서명 알고리즘, 검증 알고리즘으로 구성된다.
키 생성 알고리즘
전자서명을 생성하는 서명키와 서명을 확인하는 검증키를 생성한다. 서명키와 검증키는 개인 별로 다르게 만들어진다.
서명키는 서명하는 본인만 아는 비밀정보이다. 검증키는 모든 이가 아는 공개된 정보이다.
서명키로부터 검증키를 도출할 수는 있지만, 검증키로부터 서명키를 계산할 수는 없다.
서명 알고리즘
문서를 받아 서명키를 사용해 서명값을 계산한다. 문서의 크기가 크다면 알고리즘 내부에서 해시 함수를 사용해 크기를 줄인다.
서명자만이 알고 있는 서명키를 사용해 전자서명을 만든다.
검증 알고리즘
문서와 서명값을 입력으로 받고, 검증키를 사용해 서명값이 옳은 서명인지 확인한다.
전자서명의 성질
- 위조 불가 - 서명자만이 전자서명을 생성할 수 있다.
- 서명자 인증- 전자서명의 서명자를 누구든지 검증할 수 있다.
- 부인방지 - 서명 행위 이후 서명한 사실을 부인할 수 없다.
- 변경 불가 - 문서의 내용이 바뀌면 서명이 검증되지 않는다.
- 재사용 불가 - 한 전자문서의 서명을 다른 전자문서의 서명으로 사용할 수 없다.
비트코인 트랜잭션 |
블록체인에서는 트랜잭션을 모아 한 블록을 만들고, 이 블록을 체인에 넣는다.
트랜잭션에는 비트코인의 입력값, 출력값, 수수료 같은 정보가 있다.
비트코인에서는 입력 비트코인이 출력 비트코인 + 수수료와 같다.
주소값은 검증키에 해당하는 공개값이다. 각 개인은 다른 검증키를 가지고, 이 값은 공개되어 있다.
입력 주소값은 비트 코인을 보내는 사람의 검증키, 출력 주소값은 비트 코인을 받을 사람의 검증키이다. 여러 사람에게 비트코인을 보낼 수 있으니 출력 주소값은 여러 개가 존재하고, 각 출력마다 비트코인을 얼마나 보냈는지 기록되어 있다.
입력 주소값에 해당하는 서명키를 소유한 사람만이 트랜잭션을 발생시켜 돈을 전달하기 때문에, 자신만이 아는 서명키를 사용해 전자서명 값을 만든다.
비트코인 트랜잭션에는 송신자, 수신자의 검증키, 보내는 비트코인의 양, 기타 정보, 송신자의 수신키로 만든 전자서명값이 기록된다.
송신자는 수신자의 검증키를 포함하는 트랜잭션을 만들고, 송신자의 서명키로 전자서명을 만든다.
각 노드(채굴자)는 송신자의 검증키로 검증하여 블록에 트랜잭션을 기록한다. 블록을 모두 만들면 합의 알고리즘을 수행하여 블록을 블록체인에 넣는다.
전자서명은 블록체인에서 트랜잭션을 발생시킨 사람을 인증하고, 발생자의 부인 방지 용도로 사용한다.
서명키를 분실하면 비트코인을 전달할 수 없고, 분실하면 복구할 수 없다. 그래서 서명키를 타인에게 위임해서 저장하거나, 특정 디지털 장치에 저장하는 전자지갑이 존재한다.
전자서명 기법 |
RSA
소인수 분해의 난해함에 기반하여, 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인되어 있는 암호 알고리즘이다.
엘가말(ElGamal)
이산대수 문제의 어려움에 기반한 암호 알고리즘이다. RSA보다 속도는 느리지만 안전하다.
RSA와 엘가말은 암호기법을 그대로 전자서명에 적용한 방법이다. 입력 메시지를 암호화하여 전송한 후 복호화하여 입력과 같은지 검증한다.
DSS(Digital Signature Standards)
전자 서명 전용이다.
DSS는 전자 서명 기능만을 제공하고, 암호화나 키 교환 방식은 사용하지 않는다. 슈노르 전자서명과 유사하다.
전자 서명이 계속 만들어지면 이 서명으로부터 서명키의 일부 정보가 유출되는 것으로 알려져 있다.
슈노르 서명(Schnorr Signature)
한 사람이 여러 주소에 들어있는 비트코인을 모아서 보낼 때, 한번의 전자서명으로 보낼 수 있도록 하는 방법이다.
ECDSA(Elliptic Curve Digital Signature Algorithm)
타원곡선 기반의 DSA이다. 처음 전자서명 표준이 만들어질 때 DSA 기반으로 만들어져서 ECDSA를 표준으로 많이 사용한다. 비트코인도 이 방식을 사용한다.
EdDSA(Edwards-curve Digital Signature Algorithm)
슈노르 기법을 에드워드 곡선이라는 특정 곡선에 적용한 기법이다.
키가 짧고 속도도 빨라 많은 블록체인에서 전자서명 기법으로 활용한다.
참고자료
매치업 - 블록체인을 위한 암호학과 보안성
www.geeksforgeeks.org/digital-signature-standard-dss/
wiki.hash.kr/index.php/%EC%97%98%EA%B0%80%EB%A7%90
www.blockchain.com/btc/tx/8088eeadbb0c6cbc6cc87ffacc05045f50195bd3837ec392a894465693578b57
'보안 > 블록체인' 카테고리의 다른 글
블록체인 암호학 - 고전 암호, 현대 암호 시스템 (0) | 2020.11.03 |
---|---|
블록체인 암호학 - 전자 서명 2 (0) | 2020.10.06 |
블록체인 암호학 - 작업 증명(PoW), 양자 안정성, 머클 해시 트리 (0) | 2020.09.15 |
블록체인 암호학 - 암호학적 해시 함수 (0) | 2020.09.06 |
블록체인 암호학 - 암호학 기본 내용, 블록체인 암호 기술 (0) | 2020.09.01 |