본문으로 건너뛰기
buybitcoinsmart

용어집 / 채굴과 합의

SHA-256

별칭은 SHA256입니다.

SHA-256이란 무엇입니까?
SHA-256은 길이에 관계없는 입력을 받아 32바이트의 지문을 반환하며, 이 지문은 매번 동일하고, 미리 예측할 수 없으며, 거꾸로 되돌리는 것이 불가능합니다.

비트코인은 블록 해시, 트랜잭션 ID, 머클 트리, 주소 체크섬, 그리고 시드 문구의 체크섬까지 거의 모든 곳에서 이 하나의 함수에 의존합니다. 출력은 256비트이며 64개의 16진수 문자로 표시되고, 약 1.2 곱하기 10의 77제곱에 해당하는 공간에서 나옵니다. 바로 이 산술 덕분에 코인이 어디로 가기 전에 잘못 입력한 주소를 잡아낼 수 있습니다.

작동 방식

SHA-256은 입력을 512비트 덩어리로 나누고, 각 덩어리를 64회의 시프트, 회전, 덧셈 과정을 거쳐 섞습니다.

섞이는 상태는 32비트 워드 8개로 이루어지며, 처음 8개의 소수의 제곱근의 소수 부분에서 가져온 상수로 초기화됩니다. 반면 64개의 라운드 상수는 처음 64개의 소수의 세제곱근에서 나옵니다. 그 기원이 핵심입니다. 이 숫자들은 누구도 숨은 이유로 고를 수 없었던 숫자이며, 설계는 이 점으로 백도어가 없음을 주장합니다. 이 알고리즘은 United States National Security Agency가 만들고 NIST가 2001년에 공개했으며, 현재 규격은 FIPS 180-4입니다.

비트코인이 실제로 얻는 것은 세 가지 속성입니다. 이 함수는 결정적이어서, 어느 곳의 어떤 기계든 같은 바이트에서 같은 다이제스트를 도출합니다. 눈사태 효과가 있어 입력의 1비트를 뒤집으면 출력 비트의 약 절반이 바뀌며, 둘을 연결하는 패턴은 없습니다. 또한 역방향 실행에 저항합니다. 다이제스트에서 입력을 복원하거나, 하나의 다이제스트를 공유하는 두 입력을 만들어 내는 방법을 무차별 대입보다 빠르게 찾아낸 사람은 없습니다. SHA-1은 2017년 2월에 실용적인 충돌로 무너졌는데, 이는 연구진에게 막대한 연산량을 요구했고 SHA-2에는 전혀 적용되지 않았습니다.

비트코인은 이 함수를 한 번만 호출하는 경우가 드뭅니다. 블록 헤더, 트랜잭션 ID, 머클 노드, 그리고 피어 간 메시지의 체크섬은 모두 두 번의 패스를 사용해 다이제스트를 한 번 더 해시합니다. 주소 해시는 다른 경로를 택합니다. SHA-256 다이제스트에 RIPEMD-160을 적용하며, 레거시 주소의 20바이트 페이로드가 여기서 나옵니다. Taproot는 이 패턴을 다시 깨뜨렸습니다. BIP340은 도메인 구분 접두사와 함께 SHA-256을 한 번만 호출하는 태그 해시를 정의하여, 한 용도의 서명을 다른 용도로 재사용할 수 없게 합니다.

확인할 수 있는 곳

블록 탐색기에 나오는 64자리 16진수 문자열은 모두 SHA-256의 출력입니다. 지원 요청에 붙여 넣는 트랜잭션 ID와, 영이 길게 이어지며 시작하는 블록 해시도 여기에 포함되며, 후자는 목표값을 넘긴 헤더의 모습입니다.

코인을 보유할 때 직접적으로 중요한 곳은 두 군데입니다. 시드 문구에는 이 함수로 만든 체크섬이 들어 있습니다. 12개의 단어가 128비트의 무작위성에, 그 무작위성의 SHA-256 다이제스트에서 가져온 4비트의 체크섬을 더한 값을 부호화하므로, 한 단어가 틀린 문구는 빈 지갑을 조용히 열어 주는 대신 16번 중 약 15번 거부됩니다. 레거시 주소에도 비슷한 보호 장치가 있어, 두 번의 SHA-256 패스에서 얻은 4바이트 체크섬이 있으며, 이 덕분에 무작위 오타가 유효한 주소를 만들어 낼 확률은 43억 중 약 1입니다.

채굴 하드웨어는 오직 이 목적만을 위해 존재합니다. ASIC은 이 하나의 함수만 계산하고 다른 것은 계산하지 않는 칩이며, 그래서 비트코인 채굴기를 다른 알고리즘으로 만든 체인에 전용할 수 없고, SHA-256 코인이라는 표현이 포크의 한 계열 전체를 가리킵니다. 다만 이 모든 것의 한계를 유념해야 합니다. 체크섬은 잘못 입력한 주소를 잡아낼 뿐, 악성코드가 완벽하게 유효하지만 본인 것이 아닌 주소로 바꿔치기한 주소는 결코 잡아내지 못합니다.

혼동하기 쉬운 용어

자주 묻는 질문

양자 컴퓨터가 SHA-256을 깨뜨릴 수 있습니까?

일반적으로 사람들이 의미하는 방식으로는 아닙니다. 알려진 양자 알고리즘은 해시 탐색을 약화시키는 정도가 공개 키 암호를 약화시키는 정도보다 훨씬 작습니다. 따라서 노출된 부분으로 여겨지는 것은 비트코인의 해시 함수가 아니라 서명 방식입니다.

비트코인은 왜 데이터를 두 번 해시합니까?

이중 해시는 길이 확장 공격에 대한 Satoshi Nakamoto의 예방 조치였습니다. 길이 확장은 다이제스트만 아는 사람이 단일 패스를 이어서 계산할 수 있는 약점입니다. 비용은 거의 들지 않으면서 그 부류의 공격을 완전히 제거합니다.

다음에 읽을 글

관련 용어

채굴과 합의 분야의 다른 용어

이 페이지를 영어로 읽기