[Blockchain] 공개 키 (=비대칭 키) / 암호화 & 디지털 서명
디지털 서명 / 대칭키 / 공개키 / 비밀키 / 암호화 & 복호화 / 해싱
디지털 서명(Digital Signature) ✍
-
디지털 서명은 메시지나 디지털 문서의 ‘진위성 & 무결성을 검증’하는 데 사용하는 수학적 메커니즘, 메시지나 문서에 첨부된 코드이다
-
손으로 쓴 서명 & 도장의 디지털 버전, 복잡하며 보안이 우수하다
-
디지털 서명은 디지털 통신에서 변조 및 사칭 문제를 해결하기 위한 것으로,
전자 문서 / 거래 / 메시지의 출처 / 신원 / 상태에 대한 보증을 제공한다
대칭 키 암호 방식 🔐
-
대칭 암호화 방식은 여러 사용자 사이에 공유된 단일 키를 기반으로 한다
-
하나의 키로 원본 데이터를 암호화하며, 동일한 키를 사용해 복호화한다
장점
비대칭 키 암호 방식에 비해 ‘비교적 간결’하기 때문에 네트워크나 CPU의 오버헤드가 적고 빠르게 작동한다
키의 길이가 길어질수록 👉 무차별 대입 공격을 통한 복호화 ‘난이도가 증가’ 하기 때문에, 키의 길이를 늘림으로써 보안을 높일 수 있다
단점
데이터 암호화 & 복호화에 사용하는 키를 관리하는 것이 어렵다
여러 사용자가 데이터를 공유하기 위해서는 이 키가 필수적으로 공유되어야 한다
👉 그러나 해당 키가 안전하지 않은 공간에서 공유되는 경우,
👉 악의적인 제 3자를 통해 도난당할 위험이 있다
공개 키(=비대칭 키) 암호화 방식 🔐
-
공개 키 암호화 방식(PKC, Public Key Cryptography)은 단일키가 아닌 공개 키와 / 비밀 키로 구성된 한 쌍의 키를 사용한 암호화 방식이다
-
두 키는 타원곡선 알고리즘(ECDSA, Elliptic Curve Algorithm)를 사용하여 생성된다
-
공개 키로 암호화된 데이터는 / 해당 개인 키로 복호화 할 수 있다
-
공개 키는 외부에 공개하고 / 비밀 키는 기밀로 유지해야 한다
-
공개 키로 암호화된 데이터는 암호화를 한 사용자(개인 키 소유자)만이 복호화 할 수 있다
-
암호화된 데이터를 다른 사람에게 보내는 경우,
👉 해당 사용자의 공개 키로 데이터를 암호화하고,
👉 수신자는 송신자의 비밀키로 복호화를 해야한다 -
이 방식을 사용하면 중요한 데이터를 암호화하여 승인된 사용자에게만 전달할 수 있다
장점
- 대칭 키 암호 방식이 가졌던 키 노출 문제를 해결하여 컴퓨터 보안을 강화한다
- 데이터의 무결성을 확인하는 데 사용할 수 있다
단점
- 암호화 및 복호화의 수학적 계산이 매우 복잡하다
- 대량의 데이터를 처리할 경우 오버헤드가 발생하여 속도가 느려질 수 있다
디지털 서명의 동작 방식
해싱
원본데이터를 해싱하는건 필수적이진 않다
해싱을 함으로써 고정된 길이의 값을 비교하는 것이 무결성을 검증하는데 훨씬 간편하기 때문에 일반적으로 데이터를 해싱하는것이다서명
송신자의 개인 키로 해시값을 암호화한다 👉 암호화된 결과값이 바로 디지털 서명이다
서명이 완료되면 송신자는 원본 데이터와 / 디지털 서명 / 송신자의 공개 키를 / 함께 전송한다검증
수신자는 송신자의 공개 키를 가지고 디지털 서명을 복호화 한다
원본 데이터를 해싱하여 데이터의 해시값을 구하고 👉 두 해시값을 비교하여 만약 해시값이 맞다면, 데이터가 정상적으로 송신자에 의해 서명된 것임을 확인한다
블록체인에서 디지털 서명은,
송금을 위해 트랜잭션을 생성하여 서명 & 승인에는
‘공개 키 (=비대칭 키) 암호 방식’이 사용된다
특히 월렛 방식을 사용하는 비트코인에서는,
개인 키를 소유한 사람만이 코인을 사용할 수 있기 때문에
👉 개인 키를 안전하게 보호하는 것이 중요하다
- 새로운 암호 화폐 지갑이 설정될 때, 비밀 키가 먼저 생성된다
- 비밀 키를 기반으로 공개 키가 생성된다
- 사용자의 지갑은 이 공개 키를 해싱한 값으로 생성된다
- 이 지갑은 일종의 ‘계좌번호의 역할’을 하여 다른 사람들과 공유할 수 있다
더 공부할 내용 📃
-
HMAC 암호화
-
PKI 암호화