해시 함수
입력 값을 고정 크기의 데이터로 매핑해 주는 함수
해시 함수 원리
- 6바이트를 포함하는 파일을 해시한다고 가정
- 1바이트 숫자인 해시 값으로 변환
해시 함수 특성1 - 무결성
- 같은 입력 값은 항상 동일한 해시 값을 출력한다.
- 글자가 하나만 달라져도 다른 해시 값을 출력한다.
- 단, 대소문자는 구분 안 한다.
해시 함수 특성2 - 단방향성
- 해시 값으로부터 입력 값을 찾는 것은 어렵다.
해시 함수 특성 3 - 충돌회피성
- 다른 입력 값에서 동일한 해시 값을 출력할 가능성이 존재
- 이 때문에 충돌 회피성은 해시 알고리즘의 보안 강도를 의미
- SHA-256의 충돌 확률 = 1/2^256
블록체인에서의 해시 이용
비트코인 채굴에서의 목푯 값
채굴
- 목표 값보다 낮은 해시 값을 찾아야 함
목푯 값
- 지수 - Bits 첫 1바이트
- 계수 - Bits 이후 3바이트
채굴 성공
- 목푯 값(Bits) 보다 작은 해시 값을 구할 때
- 채굴을 위해 찾아야 하는 값 : Nonce
비트코인 채굴
- 해시 값은 목표 값보다 작아야 채굴에 성공
- 채굴에 성공하기 위해 넌스 값을 반복적으로 바꿔서 대입
- 랜덤 한 해시 값이 목푯 값보다 같거나 작은지 비교하며 채굴을 진행
- 이 작업 증명 방식을 PoW라고 함
블록체인 데이터 위변조 방지
- 채굴 시 블록 헤더들을 해시 값으로 생성하면 이 블록 해시 값이 체인 역할을 수행한다.
- 따라서 블록의 해시 값이 변경되면 연결이 끊어진다.
- 만약 연결된 블록 중 트랜잭션 한 개를 변조한다면 다시 Nonce 값을 구해야 한다.
- 하지만, 채굴자가 끊임없이 새로운 블록을 생성하기 때문에 변조가 불가능하다.
공개 키 암호
- 비밀 키와 공캐 키 쌍으로 관리
- 공개 키는 공개되고, 개인 키는 자신만이 간직
- 공개 키를 이용해 암호화된 문서는 비밀 키로 복호화
타원 곡선 암호
- 유한체 상의 타원곡선을 이용한 암호
- RSA/DSA 공개 키 암호보다 짧은 키 길이와 빠른 연산속도를 가지면서, 동일한 수준의 보안 강도를 제공한다.
전자 서명
디지털 데이터에 서명하는 방법이다.
전송받은 데이터의 송신자를 검증하거나, 전송 과정에서의 변조 여부를 확인
필요성
- 전자 서명을 생성한 사람을 검증 가능
- 전송된 데이터가 변조되지 않은 원본임을 식별
- 서명한 사람의 개인 키가 없으며 서명을 위조하는 것은 불가능
타원곡선 디지털 서명 알고리즘
- 타원곡선 암호를 디지털 서명 용도로 구현
- 공개 키는 개인 키를 ECDSA의 타원곡선 함수에 대입하여 생성
블록체인 지갑
지갑
기본적으로 암호화폐를 저장하는 소프트웨어 프로그램
지갑 구성
- 지갑은 개인 키, 공개 키, 지갑 주소로 구성되어 있다.
- 개인 키는 거래 생성 시 본인 증명을 위한 전자 서명 생성에 사용
- 공개 키는 거래 생성한 사람의 전자서명을 확인할 때 사용
- 지갑 주소는 암호화폐 송금과 입금에 사용
'CS > 블록체인' 카테고리의 다른 글
[블록체인/Regtest] Bitcoin Core 설치 및 실행 (Mac OS) (1) | 2023.12.03 |
---|---|
[블록체인] 블록체인 구조와 네트워크 (0) | 2023.10.05 |
[블록체인] 블록체인 소개 (0) | 2023.09.11 |