FreeBSDパッケージリポジトリ-手動署名検証を行う方法?


11

FreeBSDパッケージWebサイトでパッケージの署名を確認しようとしています

wget http://pkg.freebsd.org/FreeBSD:11:amd64/latest/digests.txz
tar xf digests.txz

これは、3つのファイルを提供します:digestsdigests.pub digests.sig
私はそれを取るdigests.sigファイルの署名であるdigestsdigests.pub公開鍵として。しかし、私はそれを確認しようとしました:

openssl dgst -verify digests.pub -signature digests.sig digests

そしてメッセージを得た

Verification Failure

私は何かが間違っていると思います-私が欠けているものを誰かに教えてもらえますか?

編集:ソースコードの調査に基づいて、opensslライブラリから呼び出す重要な関数がここにあると思います。しかし、何が入力されているのか、またはコマンドラインツールを使用してその関数を呼び出すことができるかどうかはわかりません。rsa_verify_cert_cbRSA_verifyopenssl


これは、lists.freebsd.org / pipermail / freebsd-ports / 2014-February /…に関連openssl rsautl -pubin -inkey digests.pub -verify -in digests.sig -asn1parse しているように見えますが、ここで言及されているものに類似したコマンドも 一致していないようです。
SauceCode、2016年

...つまり、一致しないようですsha256sum digests
SauceCode

回答:


1

FreeBSDパッケージを手動で検証するための「ハウツー」はインターネット上にないので、ここに私が見つけたものがあります。

トリックは、openssl rsautl出力のオクテット文字列が実際にはファイルのSHA256ハッシュである文字列のハッシュであることです。

たとえば、currentをダウンロードしてhttp://pkg.freebsd.org/FreeBSD:12:amd64/latest/digests.txz抽出し、次のようにします。

方法1(を使用したワンライナーopenssl dgst

ここではtr -d '\n'、標準入力から新しい行を削除することが重要であるため、の文字列入力には含まれていませんopenssl dgst

sha256 -q digests | tr -d '\n' | openssl dgst -verify digests.pub -signature digests.sig

このコマンドは出力する必要がありますVerified OK

方法2(.sigファイルのオクテット文字列と手動で生成されたハッシュの視覚的比較)

  1. OpenSSLユーティリティを使用して、digests.sigからコンテンツをダンプします。

    openssl rsautl -pubin -inkey digests.pub -verify -in digests.sig -asn1parse
    0:d=0  hl=2 l=  49 cons: SEQUENCE          
    2:d=1  hl=2 l=  13 cons:  SEQUENCE          
    4:d=2  hl=2 l=   9 prim:   OBJECT            :sha256
    15:d=2  hl=2 l=   0 prim:   NULL              
    17:d=1  hl=2 l=  32 prim:  OCTET STRING      
      0000 - ac c6 ac be cd 5e 61 63-62 82 62 4b ba 77 37 6e   .....^acb.bK.w7n
      0010 - 0b fa ea ef 6e 10 21 01-62 64 06 2f d0 f1 60 22   ....n.!.bd./..`"
    

    ここでは、埋め込みオブジェクトがSHA256ハッシュであり、その値がであることがわかりますacc6acbecd5e61636282624bba77376e0bfaeaef6e1021016264062fd0f16022

  2. 次に、ファイルのSHA256を計算しますdigests

    sha256 -q digests
    8db18c93bea414fd8a281f5f3795b2ca4be51479c18b225ff87b8aa957ec2c5d
    
  3. 最後に、echoコマンドを使用してこの文字列のSHA256を計算し、によって返された値と比較しますopenssl rsautl
    echo -n 8db18c93bea414fd8a281f5f3795b2ca4be51479c18b225ff87b8aa957ec2c5d | sha256
    acc6acbecd5e61636282624bba77376e0bfaeaef6e1021016264062fd0f16022
    

ステップ3の値がステップ1の値とどのように一致するか、ファイルdigestsが有効であることに注意してください。


0

そのメッセージは、公開鍵がダウンロードしたファイルと一致しないことを示しています。dgst -verify filenameの マンページによると、「filename」の公開鍵を使用して署名を確認します。出力は「検証OK」または「検証失敗」いずれかです。最も可能性の高い原因は、ダウンロード中にファイルが破損したことです。私はもう一度ダウンロードしようとしますが、引き続きチェックに失敗する場合は、ダウンロードリンクが侵害されていることを示しています(ただし、これはfreebsd Webサイトからのものであるため、単にダウンロードエラーであると考えています。それでも、新しい安全のためにダウンロードしてください)。低速または信頼性の低いインターネット接続を使用している場合は、正しくダウンロードするために数回の試行が必要な場合があります。コマンドに関する情報を確認する必要がある場合


これは少し前のことですが、何度か試してみたので、ダウンロードエラー(またはダウンロードの侵害)ではなかったと確信しています。
SauceCode 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.