Androidキーミント(キーマスター)一RKP

RKPとは何ですか

RKP はリモート キー プロビジョニングです。

なぜRKPなのか

従来、携帯電話やタブレットのプロジェクトを制作する際には、Googleから認証キー(googleキー)を申請し、生産ラインにあるツールを使って携帯電話やタブレット端末に書き込んでいました。
この書き方にはセキュリティ上のリスクがあります。Google
から適用される証明書と鍵には秘密鍵漏洩のリスクがあるため、Google は Android S から RKP アプローチを提案しました。簡単に言えば:

  1. デバイスからキーを生成します。
  2. 生成された公開キーをエクスポートします。
  3. CSR の形式で Google サーバーにアップロードします。

RKPのやり方

Google のガイダンス文書を参照すると、リファレンス ツールの実装は AOSP ソース コードで提供されています。リファレンス実装は
system/security/provisioner の下に提供されます。
チップ メーカーがデフォルトの製品ツールを提供していない場合、OEM はこのリファレンスを使用できます。実装して、独自の生産ラインツールに適したものに変換します。

コードの説明

rkp_factory_extraction_tool.cpp (最新の AOSP コード、Android14 である必要があります)

//定义导出的CSR格式
DEFINE_string(output_format, "build+csr", "How to format the output. Defaults to 'build+csr'.");
//定义这个程序是测试使用,还是导出文件使用,默认是导出功能。
DEFINE_bool(self_test, false,
            "If true, the tool does not output CSR data, but instead performs a self-test, "
            "validating a test payload for correctness. This may be used to verify a device on the "
            "factory line before attempting to upload the output to the device info service.");

主要な関数を見てください。
実装するために getCsr が rkp_factory_extraction_lib.cpp に呼び出されます。

// 获取keymint aidl service硬件信息,这个地方是TEE 厂商实现
irpc->getHardwareInfo(&hwInfo)// 生成一个attest key,会调用到TEE中实现;
getProdEekChain(hwInfo.supportedEekCurve)// 调用keymint aidl 的api,然后会调用到TEE中生产CSR;
irpc->generateCertificateRequest

TEE での実装手順

つづく…

おすすめ

転載: blog.csdn.net/weixin_47139576/article/details/128916812