14.4.1. 概念: 信頼、鍵、ファイル形式¶
コマンドに入る前に、このセクションの他のすべてのページに当てはまる3つの背景知識を説明します。
14.4.1.1. 信頼モデル¶
TLS接続は、保証のレベルを段階的に高める3つのレベルを提供できます:
暗号化のみ -- トラフィックは暗号化されますが、どちらの側も自分が誰であるかを証明しません。設定は簡単ですが(証明書の検証なし)、中間者攻撃に対して脆弱です。ローカルでのテストにのみ使用してください。
サーバー認証 -- クライアントがサーバーの証明書を信頼された証明書と照合して検証します(おなじみのHTTPSモデル)。OpenMV Camは、クライアント(リモートサーバーを検証する側)としても、サーバー(自身の証明書を提示する側)としても動作できます。
相互認証(mTLS) -- 両端が証明書を提示して検証します。サーバーがクライアントの身元についても確証を得る必要がある場合に使用されます。
14.4.1.2. 鍵の種類の選択¶
カメラのmbedTLSビルドは、NIST/SECの素数体曲線上のECDSAとRSAをサポートしています。鍵を作成する実用的な方法は3つあり、ECDSA P-256(prime256v1)が推奨されます:
ECDSA P-256(prime256v1) -- 256ビットの鍵で約128ビットのセキュリティ。鍵と署名が非常に小さく、Cortex-M上ではサポートされている選択肢の中で群を抜いて高速なハンドシェイクを実現します(楕円曲線演算はRSAの秘密鍵演算よりはるかに低コストです)。TLSのピアによって普遍的にサポートされています。これは組み込みデバイスにおけるセキュリティ、速度、RAM/フラッシュ使用量、互換性の最良のバランスであり、ここでのデフォルトの選択肢になっています。
ECDSA P-384(secp384r1) -- 約192ビットのセキュリティ。これも楕円曲線方式なので相応に効率的ですが、典型的なIoT展開では必要としないセキュリティマージンと引き換えに、P-256より大きく遅くなります。長期間有効な証明書やコンプライアンス要件で必要とされる場合にのみ使用してください。
RSA-2048 -- 約112ビットのセキュリティ。非常に古いピアを含め普遍的に互換性がありますが、RSAの鍵と証明書ははるかに大きく、RSAの秘密鍵演算(証明書を提示する側が行う)はマイクロコントローラー上で最も遅く、最もメモリを消費する選択肢です。ピアがECDSAに対応できない場合にのみ使用してください。
注釈
Ed25519 / Curve25519の鍵はサポートされていません。 OpenMV CamのmbedTLSビルドはEdDSAやCurve25519を有効にしていないため、Ed25519の証明書や鍵は読み込みまたはハンドシェイクに失敗します。上記の3つの選択肢のいずれかを使用してください。
14.4.1.3. ファイル形式: DERを使用する¶
OpenMV Camが使用するmbedTLSビルドにはPEMの解析機能が含まれていないため、カメラは証明書と鍵を DER 形式(バイナリエンコーディング)でのみ読み取ります。ほとんどのツールはデフォルトで PEM 形式(base64テキスト)を出力するため、カメラに向かうすべてのファイルはまずDERに変換されます。このセクションの各レシピは、その変換手順で締めくくられています。必要なものは次のとおりです:
秘密鍵 -- 秘密に保たれ、証明書を提示する側で使用されます。
証明書 -- 公開部分で、ハンドシェイク中に相手側に提示されます。
CA / 信頼証明書 -- 検証する 側が、ピアが信頼できるかどうかを判断するために読み込む証明書です。自己署名のセットアップでは、これは単純にピア自身の証明書になります。