전자 서명과 ECDSA

YU YU·2021년 12월 21일
0

코어 이더리움

목록 보기
6/9
post-thumbnail

이더리움과 비트코인 같은 암호화폐의 트랜잭션 처리 과정에서 안전은 가장 중요한 요소이다. 가령 중간에 해킹을 당해 암호화폐가 도난된다면 큰 사회문제를 야기하게 된다. 따라서 안전하지 않은 암호화폐는 무의미하다. 이러한 트랜잭션 처리의 안정성을 담보하기 위해 이더리움은 전자 서명 암호화를 사용한다.

암호 시스템에서는 암호화된 키를 어떻게 보관하고 권한 관리를 어떻게 할 것인가가 매우 중요하다. 일반적으로 암호화에 사용하는 키는 비밀키(Secret Key)공개키(Public Key)로 구분이 된다.

1. 암호화

1-1. 비밀키 암호화

비밀키 암호화는 암호화와 복호화 시에 하나의 공통 비밀 키만 사용한다. 가령, 일련의 문서를 비밀 키로 암호화하면 해당 암호화된 문서는 해당비밀키로만 복호화를 할 수 있다. 이 방식의 문제점은 암호화를 한 주체와 복호화를 해야하는 주체가 다르기 때문에 하나의 비밀키를 안전한 방법으로 공유하기 어렵다는 데에 있다. 두 사람이 비밀 키를 공유하기 위해 메일을 주고받거나 하는 과정에서 해당 비밀키가 유출되기 쉽다. 이를 해결할 수 있는 방법이 암호 키를 두 개 사용하는 공개키 암호화이다.

1-2. 공개 키 암호화

암호화와 복호하 시에 서로 다른 2개의 키를 사용하낟. 일반적으로 개인 키와 공개 키 2개를 사용하며, 이 둘은 하나의 쌍을 이룬다. 개인 키는 다른 사람은 모르고 해당 키의 주인만이 알고 있는 키이다. 공개키는 모든 사람에게 공개하는 키를 말한다. 2개의 키를 사용하여 암/복호화를 한다는 의미에서 공개 키 암호화를 비대칭 키 암호화(Asymmetric Key Encryption)라고도 한다.

공개키 암호화의 경우 특정 메세지의 암호화 시에 공개 키 또는 개인 키를 사용할 수 있다. 암호화를 할 때 공개키를 사용하는 경우를 공개키 암호화 방식이라고 하고, 개인 키로 암호화를 사용하는 경우를 전자서명이라고 한다.

공개키 암호화는 암호화를 할 때 공개 키를 이용하므로 해당 공개키의 쌍을 이루는 개인 키를 가지고 있는 사람만이 복호화를 할 수 있다. 가령, A의 공개키로 메세지를 암호화를 해서 보내기 때문에 궁극적으로 A만 본인이 보유하고 있는 개인 키를 이용하여 해당 암호화된 메세지의 복호화를 할 수 있다.

1-3. 전자서명 암호화

공개키 암호화와 달리 개인 키로 메세지를 암호화한다. 따라서 해당 개이니에 매칭되는 공개 키를 가지고 있는 사람은 모두 해당 암호화된 메세지를 복호화할 수 있다. 이 방법을 사용하면 메세지를 암호화한 사람이 누구인지 확인할 수 있다. 가령, A의 개인 키로 암호화한 메세지를 B에게 전송할 경우, 만약 B가 A의 공개키를 가지고 있다면 A의 공개 키로 해당 메세지를 복화화를 한다. 만약 무사히 복호화가 되었다면 해당 메세지는 A가 보낸 것임을 확신할 수 있게 된다. 대표적인 전자 서염ㅇ 방법이 공인인증서이다. 개인 키인 공인인증서로 암호화를 해서 보내면 은행 같은 수신처에서 공개 키로 이를 복호화하여 사용자를 인증한다.

1-3-1. ECDSA

이더리움에서는 안전한 트랜잭션 처리를 위해 전자 서명 암호화 방식을 사용하며, 비대칭 키 생성 및 암호화 알고리즘으로 256비트 ECDSA를 사용한다. 가령, 사용자 A가 트랜잭션을 발생시킬 때 본인의 개인 키로 암호화를 한다. 이 암호화된 트랜잭션은 이더리움 네트워크를 통해 전파되고, 이를 전달받은 마이너는 A의 공개 키로 이를 복호화하여 해당 트랜잭션이 사용자 A가 생성한 것임을 검증한다. ECDSA에 대한 자세한 알고리즘을 이해하지 못해도 이더리움을 개발하는데는 문제가 없다.

profile
코딩 재밌어요!

0개의 댓글