
SeedSignerのソフトウェアを検証する
最近、Dark Skippyと呼ばれる攻撃手法が公開され話題になりました。不正なファームウェアをハードウェアウォレットに忍ばせてシードを抜き取る手法です。もちろんSeedSignerも攻撃の対象になりえます。
「公式のGithubからファームウェアをダウンロードすれば心配する必要は無いのでは?」とつい考えがちですが(自分も以前はそう思ってました)、やはりVerifyは必要なんだなと思うに至り、公式による解説テキストを参考に自分でソフトウェアファイルの検証してみることにしました。
(自分はMacを使用しているので、Macを前提に記事を書いていきます)
ソフトウェアと検証用ファイルをダウンロードする
まずは公式のGithubからSeedSignerのソフトウェアのイメージファイル、署名ファイル、ハッシュリストのファイルをダウンロードします。
- seedsigner_os.0.8.5.pi0.img(イメージファイル)
- seedsigner.0.8.5.sha256.txt.sig(署名ファイル)
- seedsigner.0.8.5.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」を起動してキーのリストを見てみます。同じくキーがインポートされたことが確認できます。
複数のソースでフィンガープリントを確認する
次に、公式ウェブサイト、GitHubリポジトリ、その他の信頼できるチャネルで公開されているフィンガープリントと照合することで、鍵の真正性をより確実に確認しす。
まず、SeedSignerのXのプロフィール欄にgpgのキーが公開されているので見比べてみましょう(ピンクのアンダーライン)。
Keybase.io/seedsignerのページからも確認できます(下16桁)。
キーが一致しているのが確認できたらOKです。
署名ファイルが本物であることを確認する
ダウンロードしたイメージファイル『seedsigner_os.0.8.5.pi0.img』の正当性を検証するため、「正解のハッシュ値」を提供するハッシュリストのファイル『seedsigner.0.8.5.sha256.txt 』と比べて 検証をしますが、その前にまずこのハッシュリスト自体が開発者によって署名された「真正なもの」であることを、署名ファイル『seedsigner.0.8.5.sha256.txt.sig 』で確認します。
まず、ターミナルで以下のコマンドを入力して検証ファイルが格納されているフォルダに移動します(今回は『ダウンロード』のフォルダ)。
cd downloads
次に、署名ファイルを確認します。以下のコマンドを入力します。
gpg --verify seedsigner.0.8.5.sha256.txt.sig
コマンドが正常に完了すると、次のような出力が表示されます。
結果に「正しい署名(英語表記の場合はGood signature)」と表示されていればOK。
「*警告*: この鍵は信用できる署名で証明されていません!」と表示されますが、今回は自分で Fingerprint を直接確認しているため問題ありません。
下段の「主鍵フィンガープリント(英語表記の場合はPrimary key fingerprint)」に続く英数字が先ほどのSeedSignerプロジェクトの公開鍵と同じであるかを自分で確認しておきます。
正確に一致していればOK。これで署名が本物であることが確認できました。
イメージファイルが正規のものであることを検証する
shasumコマンドを実行して、『seedsigner_os.0.8.5.pi0.img』のハッシュ値とハッシュリスト『seedsigner.0.8.5.sha256.txt 』の中に書かれたハッシュ値を比べることによって、ソフトウェアのコードが公開された後やダウンロード途中に改竄されていないことを検証して確認します。
ターミナルに以下のコマンドを入力。
shasum -a 256 --ignore-missing --check seedsigner.0.8.5.sha256.txt
このコマンドでハッシュリストの『seedsigner.0.8.5.sha256.txt 』の中に書かれたファイル名『seedsigner_os.0.8.5.pi0.img』を元に、同じフォルダ内にある実ファイルを探してそれぞれのハッシュが同じであるかを比較します。
検証が完了すると次のように表示されます。
「OK」メッセージが表示されていたら、検証は完全に完了です。ダウンロードしたファイルはすべて本物であり、改竄されていないことが確認されました。