← トップ

PSA APIs

関数から理解する PSA

Arm の PSA Certified APIs(Crypto・Secure Storage・Attestation)は、鍵を預けて「番号」で使うという設計思想の上に、どのチップでも同じ呼び方で暗号を扱える関数群を定義しています。公式仕様書は関数の辞書であり、辞書を引けるようになるまでの読み物がこのシリーズです。戻り値とバッファの作法から始めて、鍵の属性、ハッシュ・MAC・AEAD・署名・鍵導出・鍵合意の関数を「一発関数」と「分割関数」の両面で説明し、永続鍵とストレージ、アテステーション、Mbed TLS と TF-M での実装、要件から呼び出し列への翻訳まで一本でつなぎます。全 18 章に触って動かせるデモ(LIVE・計 18 点。SHA-256 と HMAC と HKDF は本物の計算)と SVG 図版 68 点。よく使う 30 関数を丁寧に、重箱の隅は「名前と参照先」だけ。

第 I 部 — 作法

どの関数にも共通する決まりごと。ここを押さえれば初めて見る関数の引数が読めます。

CH 01PSA とは何か認証制度・API 仕様・参照実装。同じコードが動く 2 つの場所。▶ LIVE CH 02API の共通作法psa_status_t、初期化、定数の作り方、出力の 3 つ組、操作オブジェクト。▶ LIVE CH 03鍵と属性type・bits・usage・algorithm・lifetime・id。鍵は値+方針。▶ LIVE CH 04鍵の作成と破棄import・generate・export_public_key・destroy。バイト列の形式。▶ LIVE

第 II 部 — 操作

一発関数を先に、分割関数を状態遷移として。落とし穴は踏む順に。

CH 05乱数とハッシュ鍵を使わない 2 つの操作。分割処理と psa_hash_clone。▶ LIVE CH 06MACHMAC / CMAC。用途は SIGN / VERIFY。タグの切り詰めは 4 バイト以上。▶ LIVE CH 07対称暗号出力は IV ∥ 暗号文。復号は失敗しない——だから単独で使わない。▶ LIVE CH 08AEAD鍵・ノンス・追加データ・平文。ノンス管理が唯一難しいところ。▶ LIVE CH 09署名と検証hash 版と message 版。ECDSA の署名は r ∥ s の 64 バイト。▶ LIVE CH 10鍵導出HKDF: SALT → SECRET → INFO。info に用途を書く。PBKDF2。▶ LIVE CH 11鍵合意ECDH を KDF に直接注入。一時鍵と署名で前方秘匿性と認証。▶ LIVE

第 III 部 — 保存と証明

電源を切っても残る鍵、小さな秘密の置き場所、装置の健全性の申告。

CH 12永続鍵とライフタイム場所 + 持続性。鍵 ID の台帳。永続鍵の安全性は ITS の場所で決まる。▶ LIVE CH 13セキュアストレージITS は場所で守り、PS は暗号で守る。set / get / get_info / remove。▶ LIVE CH 14アテステーション1 関数でトークン。中身は CBOR の主張と IAK の署名。価値は検証側に。▶ LIVE

第 IV 部 — 実装

Mbed TLS の設定と乱数源、TF-M の壁越し呼び出し、要件の翻訳、出荷前の確認。

CH 15Mbed TLS での実装PSA_WANT_*、エントロピー源、pk_setup_opaque、透過 / 不透明ドライバ。▶ LIVE CH 16TF-M での実装SPE / NSPE、ベニア、SPM、ビルドオプション、PROGRAMMER_ERROR。▶ LIVE CH 17実践パターン装置認証・設定の暗号化・OTA 検証・装置間通信・製造時注入を呼び出し列に。▶ LIVE CH 18落とし穴とチェックリストエラー逆引き。動くが安全でない失敗。扱わなかった API の名前と参照先。▶ LIVE

目的別の近道

API を今すぐ使う02 → 03 → 04 → 05 → 08 → 09 → 17
設計を任された03 → 09 → 10 → 11 → 12 → 13 → 17 → 18
TF-M に載せる01 → 12 → 13 → 14 → 16
旧 mbedtls_* API から移行する02 → 03 → 15 → 18
NOT_PERMITTED / INVALID_ARGUMENT で困っている02 → 03 → 04 → 18
データを暗号化して保存したい08 → 12 → 13 → 17
装置を認証したい04 → 09 → 14 → 17
ぜんぶ01 → 18(推奨)