SeedSignerのソフトウェアを検証する
最近、Dark Skippyと呼ばれる攻撃手法が公開され話題になりました。不正なファームウェアをハードウェアウォレットに忍ばせてシードを抜き取る手法です。もちろんSeedSignerも攻撃の対象になりえます。
「公式のGithubからファームウェアをダウンロードすれば心配する必要は無いのでは?」とつい考えがちですが(自分も以前はそう思ってました)、やはりVerifyは必要なんだなと思うに至り、公式による解説テキストを参考に自分でソフトウェアファイルの検証してみることにしました。
(自分はMacを使用しているので、Macを前提に記事を書いていきます)
ソフトウェアと検証用ファイルをダウンロードする
まずは公式のGithubからSeedSignerのソフトウェアと2つの署名検証用のファイルをダウンロードします。
- seedsigner_os.0.7.0.pi0.img
- seedsigner.0.7.0.sha256.txt.sig
- seedsigner.0.7.0.sha256.txt
全て同じフォルダに格納しておきます(ここでは『ダウンロード』のフォルダ)。
GPGTools をインストールする
GPGToolsのHPからインストーラーをダウンロードして、インストーラーを起動して、指示に従いGPGToolsインストールしておきます。
アプリケーションフォルダに「GPG Keychain」というアプリがインストールされます。
SeedSignerプロジェクトの公開鍵をインポートする
SeedSignerプロジェクトの公開鍵をKeybase.ioと呼ばれるキーサーバーからGPG Keychainにインポートします。ターミナルを起動して、以下のコマンドを入力。
gpg --fetch-keys https://keybase.io/seedsigner/pgp_keys.asc
下の画面のように1 つのキーがインポートされたことが確認できます。
先程インストールした「GPG Keychain」を起動してキーのリストを見てみます。同じくキーがインポートされたことが確認できます。
次に、SeedSignerのXのプロフィール欄にgpgのキーが公開されているので見比べてみましょう(ピンクのアンダーライン)。
Keybase.io/seedsignerのページからも確認できます(下16桁)。
キーが一致しているのが確認できたらOKです。
署名ファイルが本物であることを確認する
ターミナルで以下のコマンドを入力して検証ファイルが格納されているフォルダに移動します(今回は『ダウンロード』のフォルダ)。
cd downloads
次に、署名ファイルを検証します。現在のフォルダーのバージョンを自動入力するため、以下のコマンドをそのままコピぺします。
gpg --verify seedsigner.0.7.*.sha256.txt.sig
コマンドが正常に完了すると、次のような出力が表示されます。
結果に「正しい署名(英語表記の場合はGood signature)」と表示されていればOK。
下段の「主鍵フィンガープリント(英語表記の場合はPrimary key fingerprint)」に続く英数字が先ほどのSeedSignerプロジェクトの公開鍵と同じであるかを確認します。
正確に一致していればOK。無事に署名が本物であることが確認できました。
*警告*とメッセージが現れていますが、無視しても問題ありません。
ソフトウェアイメージが正規のものであることを確認する
shasumコマンドを実行して、ソフトウェアのコードが公開された後、またはダウンロード途中に改竄されていないことをファイルのハッシュ値によって確認します。
ターミナルに以下のコマンドを入力。
shasum -a 256 --ignore-missing --check seedsigner.0.7.*.sha256.txt
確認が完了すると次のように表示されます。
「OK」メッセージが表示されていたら、検証は完全に完了です。ダウンロードしたファイルはすべて本物であり、改竄されていないことが確認されました。
これでMicroSDカードにソフトウェアを書き込みむことができます。
※この記事を書いた直後にSeedSigner v0.8.0がリリースされました。新しいバージョンで検証する場合は、記事中の0.7.0の部分は置き換えてください。