본문으로 건너뛰기

체크섬

비트코인 주소는 숫자와 알파벳이 섞인 긴 문자열입니다. 한 글자만 잘못 입력해도 큰 문제가 생길 수 있습니다. 비트코인 전송은 전체장부에 기록된 뒤 되돌릴 취소 버튼이나 관리자에게 의지하기 어렵습니다. 잘못된 주소로 보낸 비트코인을 영영 찾지 못할 수도 있습니다.

이때 주소에 포함된 체크섬이 입력 오류를 찾아내는 안전핀 역할을 합니다.

체크섬이란

체크섬은 데이터 끝에 붙여 두는 짧은 검증용 꼬리표입니다. 본체 데이터를 정해진 규칙으로 계산한 결과를 끝에 덧붙여 둡니다. 나중에 같은 계산을 다시 해 본 뒤 두 값이 맞는지 비교하면, 데이터가 온전한지 확인할 수 있습니다.

가상의 검증 번호를 예로 들어 보겠습니다. 가상의 본체 숫자에 정해진 규칙을 적용해 마지막 검증 숫자를 만들고, 나중에 같은 계산을 다시 해 값이 맞는지 확인하는 방식입니다. 아무 숫자나 붙여 만든 번호는 계산이 맞지 않아 걸러질 수 있습니다.

해시를 이용해 주소를 검사하는 방식

체크섬의 바탕에는 해시나 별도의 체크섬 알고리즘이 사용될 수 있습니다. 해시는 어떤 데이터를 넣든 고정 길이의 지문을 만들어 내며, 입력이 한 글자만 달라져도 지문 전체가 크게 달라집니다. 이 성질을 이용하면 주소가 입력 과정에서 바뀌었는지 확인할 수 있습니다. 해시에 대한 자세한 내용은 해시SHA-256에서 볼 수 있습니다.

비트코인의 모든 주소가 같은 체크섬 방식을 사용하는 것은 아닙니다. 레거시 주소처럼 Base58Check로 인코딩하는 경우에는 버전과 데이터를 결합한 값에 SHA-256을 두 번 적용하고, 그 결과의 앞 4바이트를 체크섬으로 붙인 뒤 Base58로 인코딩합니다. 반면 Bech32와 Bech32m 주소는 별도의 체크섬 규격을 사용합니다(BIP 173, BIP 350).

Base58Check 주소를 입력받을 때는 다음과 같이 검사합니다.

  1. 주소를 디코딩해 버전·데이터와 체크섬을 분리합니다.
  2. 버전·데이터에 같은 방식의 이중 SHA-256을 적용합니다.
  3. 계산 결과의 앞 4바이트와 주소에 포함된 체크섬을 대조합니다.

입력한 주소에 오타나 누락이 있으면 데이터가 달라져 체크섬 대조가 어긋날 수 있습니다. 개인키로 거래에 서명하는 도구인 서명 장치나 연결된 앱은 주소 형식이 유효하지 않다고 판단해 전송 전에 막을 수 있습니다. 다만 사용하는 주소 형식에 따라 검사 절차는 달라집니다.

체크섬이 막아 주지 못하는 것

체크섬 검사를 통과했다고 해서 주소가 모든 면에서 안전하다는 뜻은 아닙니다. 체크섬이 찾아내는 것은 오타나 누락처럼 주소 형식이 깨진 경우입니다.

악성 프로그램이 복사한 주소를 정상적으로 존재하는 다른 사람의 주소로 바꿔치기했다고 가정해 보겠습니다. 바뀐 주소도 형식이 완벽하고 체크섬까지 올바르다면 검사를 통과할 수 있습니다. 체크섬은 입력 실수를 막아 주지만, 형식이 멀쩡한 남의 주소로 바뀌는 일까지 막아 주지는 못합니다.

따라서 체크섬이 막아 주는 범위와 사용자가 직접 확인해야 하는 범위를 구분해야 합니다.

비트코인을 보낼 때 확인할 점

주소를 손으로 타이핑하거나 옮겨 적는 일은 피하는 편이 좋습니다. 신뢰할 수 있는 경로로 받은 전체 주소를 복사해 붙여 넣거나 QR 코드를 사용하면 불필요한 입력 실수를 줄일 수 있습니다.

붙여 넣은 뒤에는 원본 주소와 화면에 표시된 전체 주소가 일치하는지 확인합니다. 앞뒤 몇 글자를 대조하는 것은 보조 확인일 뿐이며, 같은 접두부를 쓰는 주소가 많거나 공격자가 일부 글자를 비슷하게 만들 가능성을 배제하지 못합니다. 하드웨어 서명 장치를 사용한다면 장치 화면에 표시된 수신 주소도 확인해야 합니다.

큰 금액을 보낼 때 소액을 먼저 시험 전송하는 방법은 추가 확인 기회를 만들 수 있지만, 시험 전송 뒤 본 전송의 수신 주소가 자동으로 보장되는 것은 아닙니다. 본 전송을 하기 전에도 신뢰할 수 있는 경로의 전체 주소와 서명 장치 화면을 다시 확인해야 합니다.

체크섬은 데이터 끝에 붙은 짧은 검증 꼬리표로서 오타나 누락을 찾아냅니다. 하지만 형식이 완벽한 다른 주소까지 구별해 주지는 않으므로, 전체 주소를 신뢰할 수 있는 경로와 대조하는 확인은 여전히 필요합니다.

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유