이 문서는 OneKey Pro 하드웨어 지갑에 설치된 펌웨어가 OneKey 공식 GitHub 저장소에 공개된 오픈 소스 펌웨어와 일치하는지 확인하는 과정을 안내합니다. SHA-256 체크섬을 비교하여 펌웨어가 신뢰할 수 있는 출처에서 온 것인지 확인하고 장치의 보안을 보장할 수 있습니다.
체크섬이란?
체크섬은 데이터 무결성을 검증하는 방법입니다. 파일에서 고정 길이의 영숫자 시퀀스를 계산하여 파일이 변경되었는지 확인하는 데 사용합니다.
⚠️ 중요 참고사항
모든 OneKey 하드웨어 지갑의 보안 요소 칩에는 출고 시점에 공식 멀티서명 검증이 미리 로드되어 있습니다.
장치가 비공식 펌웨어로 플래시된 경우, 부팅 시 장치에 "비공식 펌웨어"가 표시됩니다.
이 문서에서는 현재 펌웨어가 GitHub에 공개된 버전과 정확히 일치하는지 확인하기 위한 추가 절차를 제공합니다.
검증 절차
1단계: 최신 공식 펌웨어 다운로드 및 설치
OneKey 공식 펌웨어 업데이트 사이트를 방문하십시오.
USB 케이블을 사용해 OneKey 하드웨어 지갑을 컴퓨터에 연결하십시오.
웹사이트가 자동으로 장치 정보를 감지합니다. 그런 다음 최신 펌웨어를 선택하여 설치할 수 있습니다.
화면의 지시에 따라 진행하고 하드웨어 지갑에서 설치를 확인하십시오.
2단계: 장치 펌웨어 체크섬 확인
하드웨어 지갑에서 시스템 설정 → 장치 정보로 이동하십시오.
펌웨어 정보 섹션에서 펌웨어 버전과 체크섬을 확인할 수 있습니다.
예시:
4.9.0[fccbac8-5ff2c88]
fccbac8
→ 펌웨어 버전 ID5ff2c88
→ 펌웨어 체크섬의 처음 7자
3단계: GitHub에서 펌웨어 체크섬 계산하기
OneKey Pro GitHub 펌웨어 릴리스 페이지로 이동하십시오.
장치와 일치하는 펌웨어 버전을 찾아 Assets 아래의
.bin
파일을 다운로드하십시오.
⚠️ 참고: .bin
파일은 여러 부분으로 구성되어 있습니다:
MCU(메인 컨트롤러 펌웨어)
하나 이상의 보안 요소(SE) 펌웨어
서명 정보
검증을 위해서는 MCU 펌웨어만 추출해야 합니다.
펌웨어 추출하기
다음 스크립트를 split_firmware.sh
로 저장하십시오(macOS/Linux용):
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Usage: $0 <binary_file>"
exit 1
fi
INPUT_FILE="$1"
TOTAL_FILE_SIZE=$(stat -f %z "$INPUT_FILE")
MAGIC=$(dd if="$INPUT_FILE" bs=1 count=4 2>/dev/null)
calculate_total_size() {
local offset=$1
local size_bytes=$(dd if="$INPUT_FILE" bs=1 skip="$offset" count=4 2>/dev/null | od -An -tu4)
echo $((size_bytes + 1024))
}
if [[ "$MAGIC" == "TRZF" ]]; then
TOTAL_SIZE=$(calculate_total_size 12)
elif [[ "$MAGIC" == "OKTV" ]]; then
HEAD1_SIZE=$(dd if="$INPUT_FILE" bs=1 skip=4 count=4 2>/dev/null | od -An -tu4)
HEAD1_SIZE=$(echo $HEAD1_SIZE)
FILE_SIZE_BYTES=$(dd if="$INPUT_FILE" bs=1 skip=$((HEAD1_SIZE + 12)) count=4 2>/dev/null | od -An -tu4)
TOTAL_SIZE=$((HEAD1_SIZE + 1024 + FILE_SIZE_BYTES))
else
echo "Unknown file format"
exit 1
fi
dd if="$INPUT_FILE" bs=1 count="$TOTAL_SIZE" of=firmware.bin 2>/dev/null
REMAINING_SIZE=$((TOTAL_FILE_SIZE - TOTAL_SIZE))
if [ $REMAINING_SIZE -gt 0 ]; then
SECOND_HEADER=$(dd if="$INPUT_FILE" bs=1 skip="$TOTAL_SIZE" count=4 2>/dev/null)
if [[ "$SECOND_HEADER" == "TF89" ]]; then
dd if="$INPUT_FILE" bs=1 skip="$TOTAL_SIZE" of=se.bin 2>/dev/null
echo "Split successfully: firmware.bin and se.bin extracted."
else
echo "Extra data exists but second file header is not 'TF89'. Only firmware.bin is extracted."
fi
else
echo "No extra data, only firmware.bin extracted."
fi
스크립트 실행:
chmod +x split_firmware.sh ./split_firmware.sh onekey-firmware.bin
실행 후 firmware.bin
(MCU 펌웨어 본문)을 얻을 수 있습니다.
체크섬 계산하기
터미널에서 다음 명령을 실행하십시오:
tail -c +2561 firmware.bin | shasum -a 256 -b
이 명령은 긴 SHA-256 해시를 출력합니다. 예:
abcdef1234567890... -
출력값의 처음 7자를 취하십시오. 예: abcdef1
.
4단계: 결과 비교
계산된 체크섬의 처음 7자를 장치에 표시된 체크섬과 비교하십시오.
일치하면, 펌웨어가 GitHub에 공개된 오픈 소스 코드와 동일함을 의미합니다.
✅ 이 검증이 중요한 이유
장치가 OneKey 공식 오픈 소스 저장소에서 직접 빌드된 펌웨어를 실행하고 있음을 확신할 수 있습니다.
보안 요소의 내장 멀티서명 검증과 함께, 이는 하드웨어 지갑 펌웨어의 무결성과 보안을 보장합니다.