디지탈 서명
디지탈 서명(Digital Signature)이란 개인키(private key)를 가진 사용자가 문서(메시지)에 개인키를 적용하여 서명(signature)을 만들어 내는 것으로, 그 문서를 (다른 사람이 아닌) 개인키를 가진 사용자가 만들었음을 증명하는 것이다. 디지탈 서명은 금융 결제, 문서 서명, 웹 보안, 블록체인, 암호화폐 등 여러 분야에서 활용되고 있다. 예를 들어, 웹 브라우져의 TLS 1.0과 TLS 1.1은 RSA 서명과 DSA 알고리즘을 사용하고 있으며, TLS 1.2는 RSA, DSA, ECDSA 서명 알고리즘을 지원하고 있다. 비트코인 등의 여러 암호화폐에서는 ECDSA 서명 알고리즘을 사용하고 있다.
디지탈 서명 알고리즘으로 잘 알려진 것들로는 RSA 서명, DSA, ECDSA, EdDSA, ElGamel 서명, Schnorr 서명 등이 있다.
아래는 디지탈 서명의 한 예로서, DSA 서명 방식을 그림으로 표현한 것이다.
블럭체인에서의 디지탈 서명
블럭체인에서 사용하는 트랜잭션들은 디지탈 서명으로 암호화되어 사용되는데, 디지탈 서명은 사실상 블럭체인의 표준 요소라 할 수 있다. 블럭체인에서 에셋(예: 코인이나 토큰 등)를 이전하기 위해서, 그 사용자가 에섯을 소유자임을 증명해야 하고, 다른 노드들은 이를 검증할 수 있어야 하는데, 이를 위해 디지탈 서명이 사용된다.
비트코인을 비롯한 많은 암호화폐들은 디지탈 서명을 위해 ECDSA (Elliptic Curve Digital Signature Algorithm)를 사용하고 있다. ECDSA는 RSA에 비해 키가 작고, CPU 성능이 낮은 기기에서 사용될 수 있다는 장점을 가지고 있다. 비트코인의 경우, ECDSA에서 secp256k1 타원곡선 파라미터를 사용하고 있다.
이더리움은 현재 Ethereum 1.0에서 비트코인과 마찬가지로 ECDSA를 사용하고 있지만, Ethereum 2.0에서는 BLS (Boneh-Lynn-Shacham) 서명을 사용할 계획이다.