[신뢰의 혁명, 블록체인의 철학 005] '블록체인 기술 개관' 번역 연재 05회. "3 블록체인의 구성요소 중 '3.1 암호 해시 함수'와 '3.1.1 암호 난스'"

in kr-coin •  15 days ago

오랫만에 번역을 재개합니다. 방학이니까요!

번역 연재 소개의 말

미국 국립표준기술원(National Institute of Standards and Technology, NIST)에서 2018년 10월 3일에 발간한 "블록체인 기술 개관"(Blockchain Technology Overview) 이라는 66쪽 짜리 보고서 최종본(National Institute of Standards and Technology Internal Report (NISTIR) 8202)을 번역합니다. 이 보고서의 초고는 2018년 1월 24일에 공개되었고, 많은 공개 논평(public comment)를 받아 새롭게 작성되었습니다.


문서와 관련된 자세한 내용은 다음 포스팅을 참고하세요.

[신뢰의 혁명, 블록체인의 철학 001] '블록체인 기술 개관' 번역 연재 01회. "목차"


많은 호응과 후원 부탁드립니다. 그리고 오류가 있으면 거침없이 지적해주세요. 번역물의 저작권은 저에게 있고, 출처와 함께 링크로 퍼가시기 바랍니다. 보팅과 리스팀은 고래도 춤추게 합니다. 맨 아래 dclick 광고 링크도 한 번 눌러주고 가시면 제게 도움이 됩니다.

이번 회는 "3 블록체인의 구성요소 중 '3.1 암호 해시 함수'와 '3.1.1 암호 난스'"입니다.


3 블록체인의 구성요소

블록체인 기술은 복잡해 보일 수 있다. 하지만 각 구성요소를 개별적으로 조사하면 단순화할 수 있다. 상급 수준에서는, 블록체인 기술은 잘 알려진 컴퓨터 과학 메커니즘들과 암호 프리미티브들(암호 해시 함수, 디지털 서명, 비대칭키 암호학)을 (추가만 가능한 원장 같은) 기록 유지 개념들과 섞어 사용한다. 이번 절은 각각의 개별적인 주요 구성요소를 논한다 : 암호 해시 함수, 거래, 비대칭키 암호학, 주소, 원장, 블록, 블록이 서로 연결되는 방식.

3.1 암호 해시 함수

블록체인 기술의 중요한 구성요소는 많은 작동을 위한 암호 해시 함수의 사용이다. 해싱은 암호 해시 함수를 데이터에 적용하는 방법으로, 거의 아무 크기의 입력(가령 파일, 텍스트, 이미지)에 대해 상대적으로 유일무이한 출력(메시지 다이제스트 또는 그냥 다이제스트라고 부름)을 계산해 낸다. 해싱을 통해 개인들은 서로 독립적으로 입력 데이터를 골라, 그 데이터를 해시해서, 같은 결과를 도출해 낼 수 있는데, 이를 통해 그 데이터에 아무 변화가 없음을 증명할 수 있다. 입력에 아주 작은 변화만 있더라도(가령 1비트의 변화), 출력 다이제스트는 완전히 다른 결과를 낸다. 표1은 이 점의 단순한 사례들을 보여준다.

표1.png
<표1 : 입력 텍스트와 그에 해당하는 SHA-256 다이제스트 값의 사례>

암호 해시 함수는 다음과 같은 중요한 보안 성질들을 갖고 있다.

  1. 이 함수는 역상 저항성preimage resistant을 갖는다. 즉, 이 함수는 일방향성one-way만 있다는 말이다. 그러니까 어떤 출력값이 주어질 때 [그에 상응하는] 옳은 입력값을 계산하는 건(가령 어떤 다이제스트가 주어지면 x의 해시가 그 다이제스티인 x를 찾는 것이), 계산적으로 있을 법하지 않다.

  2. 이 함수는 제2역상 저항성second preimage resistant을 갖는다. 즉, 특정한 출력을 해시값으로 낳는 입력을 찾아낼 수 없다는 말이다. 더 전문적으로 말하자면, 암호 해시 함수는 어떤 특수한 입력이 있을 때 똑같은 출력을 낳을 수 있는 제2의 입력을 찾는 게(가령 x가 주어지면, hash(x) = hash(y)인 y를 찾아라) 계산적으로 있을 법하지 않다. 접근 가능한 유일한 길은 입력 공간input space을 샅샅이 조사하는 것이지만, 이 일은 계산적으로 성공 가망이 별로 없다.

  3. 이 함수는 충돌 저항성collision resistant을 갖는다. 즉, 해싱을 통해 같은 출력을 낳는 두 개의 입력을 찾을 수 없다. 더 전문적으로 말해, 간은 다이제스트를 산출하는(가령 hash(x) = hash(y)인 x와 y를 찾아라) 두 개의 입력을 찾는 건 계산적으로 있을 법하지 않다.

    많은 블록체인 시행에서 사용되는 특수한 암호 해시 함수는 256비트 크기의 출력을 갖고 있는 '보안 해시 알고리즘(Seciure Hash Algorithm, SHA)'이다(SHA-256). SHA-256은 32비트의 출력을 갖고 있는데(1바이트=8비트, 32바이트=256비트), 일반적으로 64개의 16진수 열에 의해 표시된다(표1을 참조할 것).

즉 [SHA-256 암호 해시 함수의 출력은] 2^256 ≈ 10^77 또는 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936의 다이제스트 값이 있을 수 있다는 말이다. SHA-256 알고리즘과 다른 알고리즘들은 연방정보처리표준Federal Information Processing Standard (FIPS) 180-4에 명시되어 있다.(주석5) NIST 보안 해싱 홈페이지(주석6)는 모든 NIST 승인 해시 알고리즘의 FIP 세부사항들을 수록하고 있다.

가능한 입력 값의 수는 무한하고 가능한 출력 다이제스트 값의 수는 유한하기 때문에, hash(x)=hash(y)가 충돌(가령 서로 다른 두 개의 입력의 해시가 똑같은 다이제스트를 산출)할 수 있는 가능성은 존재하긴 하지만 극도로 있을 법하지 않다. SHA-256은 충돌 저항성이 있다고 이야기되는데, 왜냐하면 SHA-256에서 충돌을 발견하려면 평균 약 2^128(340언디실리온, 또는 더 정확히는 340,282,366,920,938,463,463,374,607,431,768,211,456, 대충 3.402 x 10^38) 번 알고리즘을 시행해야만 하기 때문이다.

이를 전체적으로 조망해 보면, 2015년 전체 비트코인 네트워크의 해시율(초당 해시)은 초당 30경(300,000,000,000,000,000/s)이었다.(주석7) 이 비율이라면, 전체 비트코인 네트워크가 충돌을 만들어내기 위해서는 대충 35,942,991,748,521 (대충 3.6 x 10^13) 년(각주2) 이 걸릴 것이다(우주의 나이가 1.37 x 10^10으로 추산된다는 점을 주목하라).(각주3) 설사 똑같은 다이제스트를 산출하는 입력 x와 y가 있다손 쳐도, 그 두 입력이 블록체인 네트워크의 맥락에서 유효하기(가령 x와 y 둘 다가 유효한 거래임)란 아주 있을 법하지 않다.

블록체인 네트워크에서, 암호 해시 함수는 많은 과업에 사용된다. 가령 다음과 같은 것들이 있다.

  • 주소 도출 - 3.4절에서 논의됨.
  • 유일무이한 식별자들을 만들어내기.
  • 블록 데이터를 지켜내기 - 공표 노드는 블록 데이터를 해시할 것이고, 블록 헤더에 저장될 다이제스트를 만들어낸다.
  • 블록 헤더를 지켜내기 - 공표 노드는 블록 헤더를 해시할 것이다. 만일 블록체인 네트워크가 작업증명 합의 모델(4.2절 참조)을 사용한다면, 공표 노드는 퍼즐 요구사항이 충족될 때까지 다른 난스 값들(3.1.1 참조)을 가진 블록 헤더를 해시할 필요가 있을 것이다. 현재 블록 헤더의 해시 다이제스트는 다음 블록의 헤더에 포함될 텐데, 거기에서 그것은 현재 블록 헤더 데이터를 지켜낼 것이다.

블록 헤더는 블록 데이터의 해시 표상을 포함하기 때문에, 블록 헤더 다이제스트가 다음 블록에 저장되면 블록 데이터 그 자체도 지켜진다.

블록체인 기술에 사용되는 암호 해시 함수는 식구들이 많은데(SHA-256이 유일한 함수는 아님), Keccak(SHA-3 해실 표준을 만들어내는 경쟁에서 NIST에 의해 1등으로 뽑혔다)나 RIPEMD-160 같은 것들도 있다.(주석8)

3.1.1 암호 난스

암호 난스는 딱 한 번만 사용되는 임의의 수이다. 암호 난스는 난스마다 다른 해시 다이제스트를 산출하기 위해 데이터와 결합될 수 있다 :

​ hash (데이터 + 난스) = 다이제스트

난스 값을 바꾸기만 해도 같은 데이터를 보존하면서 다른 다이제스트 값을 얻기 위한 메커니즘이 얻어진다. 이 기술은 작업증명 합의 모델(4.1절 참조)에서 사용된다.

출처: BLOCKCHAIN TECHNOLOGY OVERVIEW, pp. 7 ~ 9.


  • 문서에서 지금까지 등장한 주요 번역어들 (ABC 순)

add 추가

administration 행정

append 첨가

attest 확증

audit 회계 감사

authority 권위

authorization 승인

blockchain implementation 블록체인 시행

collision resistant 충돌 저항성

consensus 합의

cryptocurrency 암호화폐

deploy 배치

design issue 설계 이슈

digest 다이제스트

ecash 이캐시

electronic cash 전자화폐

establish 설립

full node 풀노드

governance 거버넌스

hash 해시

header 헤더

high level 상급

identity 신원

identifier 식별자

implement 시행

input 입력

Know-Your_Customer (KYC) 고객-알기

ledger 원장

lightweight node 라이트노드

message digest 메시지 다이제스트

mining 채굴

native cryptocurrency 자체 암호화폐

NetCash 넷캐시

operational issue 작동 이슈

output 출력

override 번복

permissioned 허가형

permissionless 비허가형

preimage registant 역상 저항성

primitive 프리미티브 ()

private key 개인키

public key 공개키

publish 공표

publishing node 공표 노드

record 기록

record keeping 기록 유지

redundant 풍부한

represent 표상/대표/대신/재현

resilient 빠르게 회복할 수 있는

result 결과

secure 보안 / 지켜내다

self-policing 자율 치안

share 공유

subvert 전복

tamper evident 손을 대면 흔적이 분명하게 남는

tamper resistant 손 타기 어렵게 되어 있는

tight 엄정

traceability 추적 가능성

transaction 거래

transfer 양도

trust 신뢰

unique 유일무이

user 이용자

valid 유효

validation 인가

verify 검증


Sponsored ( Powered by dclick )
매직다이스하러 가자!

스팀 블록체인 기반 주사위 게임

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

번역 감사합니다. 그리고, 방학 축하!! 드립니다. ^^

캬~! 방학이구낭~!

디클릭 ♥ 사랑 함께 응원합니당~!
행복한 월욜 ♥ 보내셔용~^^

Posted using Partiko Android

번역 정말 어려운 것 같아요. 표기법부터.

block은 블이 아닌 블인데 nonce 는 스가 아닌 스인가요?ㅠㅠ

·

저도 어렵습니다 ㅠㅠ

·
·

곰돌이가 @armdown님의 소중한 댓글에 $0.018을 보팅해서 $0.005을 살려드리고 가요. 곰돌이가 지금까지 총 2471번 $30.767을 보팅해서 $30.749을 구했습니다. @gomdory 곰도뤼~

짱짱맨 호출에 응답하여 보팅하였습니다.

Hi @armdown!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 4.319 which ranks you at #2478 across all Steem accounts.
Your rank has dropped 65 places in the last three days (old rank 2413).

In our last Algorithmic Curation Round, consisting of 240 contributions, your post is ranked at #82.

Evaluation of your UA score:
  • Some people are already following you, keep going!
  • The readers like your work!
  • Good user engagement!

Feel free to join our @steem-ua Discord server