암호화폐 지갑은 실제로 암호화폐를 저장하지 않는다.
대신, 블록체인과 상호작용 할 수 있는 수단을 제공한다. 블록체인 트랜잭션을 통해 암호화폐를 주고받을 때 필요한 정보를 생성 할 수 있다. 이 정보는 하나 또는 그 이상의 공개키와 개인키 쌍으로 구성된다.
지갑에는 (공개키와 개인키를 기반으로 생성되는) 영숫자 식별자인 [공개주소] 가 포함되어 있다.
이 주소는 기본적으로 코인이 전송될 수 있는 블록체인상 특정한 위치다. 자금을 전달받기 위해 공개주소를 공유 할 수 있지만, 개인키는 누구에게도 공개해서는 안된다.
코인들이 블록체인을 빠져나가는것이 아니고, 한 주소에서 다른 주소로 전송된다.
🤝 디지털 서명(Digital Signiture)
메세지나 디지털 문서의 진위성과 무결성을 검증하는데 사용하는 수학적 메커니즘
디지털 서명은 메세지나 문서에 첨부된 코드이다. 나만 알고있는 개인키를 사용해서 나 임을 인증하고, 거래내역이 맞다는 것을 서명한다.
◼ 공개키 암호화 방식 (Public Key Cryptography)
비대칭키 암호화의 종류. 공개키와 개인키로 구성된 한 쌍의 키를 사용한 암호화 방식
두 키는 타원곡선 알고리즘을 사용하여 생성
공개키로 암호화된 데이터는 해당 개인키로 복호화 할 수 있다.
◼ 개인키 암호화 방식 (Private Key Cryptography)
개인키(=비밀키)로 암호화한 데이터를 공개키로 해독하는 방식도 있다.
이러한 방법은 중요한 데이터를 암호화하는 데에는 적합하지 않다. 공개키는 누구에게나 공개되어 있기 때문에 누구나 쉽게 복호화를 할 수 있기 때문!
그러나 데이터의 내용을 숨기는 것이 아니라, 디지털 서명을 하여 데이터의 무결성과 진위성을 검증해야 할 때는 이와 같이 개인키로 암호화하는 방식을 사용한다!!
◼ 디지털 서명의 동작 방식
크게 해싱, 서명, 검증 세 단계로 나뉜다.
1. 해싱
원본 데이터를 해싱한다. 원본 데이터의 크기는 제각각 다르지만, 해싱 되었을때 동일한 길이의 해시값을 갖는다. 해싱함으로써 고정된 길이의 값을 비교하는 것이 무결성을 검증하는데 훨씬 간편해서 일반적으로 데이터를 해싱한다.
2. 서명
공개키 암호화 방식을 사용해 해싱된 데이터에 서명을 한다. 일반적으로 송신자의 개인키로 해시값을 암호화 한다. 암호화된 결과값이 바로 디지털 서명이다. 디지털 서명은 개인키로 암호화 되었기 때문에 공개키로 복호화할 수 있으며, 정상적으로 복호화 될 경우 원본데이터의 해시값이 나오게 된다. 서명이 완료되면 송신자는 원본데이터, 디지털 서명, 송신자의 공개키를 함께 전송한다.
3. 검증
수신자는 송신자의 공개키를 가지고 디지털 서명을 복호화 한다.
원본데이터의 해싱값 = 디지털 서명의 공개키로의 복호값 >> 검증 완료!
◼ 디지털 서명의 특징
- 데이터 무결성 : 메세지가 전송되는 동안 위변조가 일어나지 않았음을 검증 가능.
- 진위성 : 송신자의 개인키가 안전하게 보관되었다는 전제 하에, 수신자는 서명이 송신자에 의해 생성되었음을 확인할 수 있다.
- 부인 방지 : 서명이 생성되고 나면, 서명이 송신자에 의해 서명되었다는 사실을 부정할 수 없다.
◼ 디지털 서명시스템의 필요조건
- 알고리즘 : 신뢰할 수 있고, 널리 사용되어 안전성이 입증된 해시함수와, 암호화 알고리즘을 사용해야 한다.
- 구현 : 결점 없는 시스템 구현
- 개인키
'블록체인' 카테고리의 다른 글
[Polygon Hackathon] Backend Dashboard (5.30 ~ 6.4) (0) | 2023.05.30 |
---|---|
Tnxs 정보를 가공해서 "분기별 트렌드 리포트"를 제공해보자📒 (feat. dApp killing feature) (0) | 2023.05.27 |
[Hackathon] NICO dApp Project (feat. Block Explorer, SBT, Community) (0) | 2023.05.22 |
[Hackathon] Backend DashBoard is underway👾 (2) | 2023.05.14 |
[Hackathon] 삽질 일대기😰 (0) | 2023.05.11 |