セキュアブートは正常に動作しており、esbc_validateを使用してU-Bootが何をしているのかおおよそ理解しています。しかし、私は、cst 2.x で生成された特定のヘッダーファイルが、特定のフィット (カーネル、dtbs、ルートファイルシステム) イメージに関連付けられていることを検証するアップグレードユーティリティを作成しようとしています。
CSFセキュリティヘッダーを正しいオフセットに配置し、フィットイメージをオフセットに配置すれば、起動時には問題なく動作します。しかし、それらをそれぞれの場所に配置する前に、確認しておきたいのです。
公開鍵はCSFに埋め込まれているので、それを抽出しなければならないと理解しています。その後、少し混乱しています。RSA署名を抽出して、抽出した公開鍵を使ってハッシュを取得する必要があると思うのですが、そのハッシュは何らかの形でフィットイメージに関連付けられているものの、単にフィットイメージのハッシュではないのでしょうか?
すでにSRKHを切れたヒューズから引き抜くことができたので比較できます。
今のところ、Google/Geminiはあまり役に立っていません。
ヒントをいただけますか?
署名は単にFITのハッシュではありません。このセキュアブートフローでは、CSFヘッダーのSHA-256ダイジェスト、そのヘッダーで指定されたイメージバイト、公開鍵マテリアル、および使用されている場合はSGテーブルを認証します。検証では、鍵と融合されたSRKHとの照合も行われます。
SO、どちらのファイルをインストールする前に、ユーティリティは候補ヘッダーを解析し、そのサイズとオフセットフィールドを使って候補FITから正しいバイトを選択し、署名済みデータのダイジェストを計算し、抽出したRSA署名を検証済み公開鍵で検証しなければなりません。検証が成功すると、そのヘッダーは認証済みのFITバイトに関連付けられます。FITのみのSHA-256比較では機能しません。