翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
コアPKCS11ライブラリ
注記
このページのコンテンツは ではない場合があります up-to-date。最新の更新については、Free RTOS.org ライブラリページ
概要
パブリックキー暗号化スタンダード #11 は、暗号化トークンAPIを管理および使用するプラットフォームに依存しない を定義します。PKCS #11
コアPKCS11ライブラリには、Mbed が提供する暗号化機能を使用する PKCS #11 インターフェイス (API) のソフトウェアベースのモック実装が含まれていますTLS。ソフトウェアモックを使用すると、迅速な開発と柔軟性が実現できますが、このモックを実稼働用デバイスで使用されるセキュアキーストレージ固有の実装に置き換える必要があります。一般に、トラステッドプラットフォームモジュール (TPM)、ハードウェアセキュリティモジュール (HSM)、セキュアエレメント、またはその他のタイプの安全なハードウェアエンクレーブなどの安全な暗号化プロセッサのベンダーは、ハードウェアで PKCS #11 実装を分散します。したがって、コアPKCS11ソフトウェアのみのモックライブラリの目的は、ハードウェア固有の PKCS #11 実装を提供することです。これにより、本番環境のデバイスにおける暗号化プロセッサ固有の PKCS #11 実装に切り替える前に、迅速なプロトタイプ作成と開発が可能になります。
非対称キー、乱数生成、ハッシュを含むオペレーションに焦点を当て、PKCS#11 標準の一部のみが実装されます。対象となるユースケースには、小さな組み込みデバイス上でのTLS認証用の証明書とキーの管理、およびコード署名署名の検証が含まれます。無料RTOSソースコードリポジトリの ファイル pkcs11.h
(標準本文OASISである から取得) を参照してください。 無料RTOSリファレンス実装 では、PKCS#11 API呼び出しは、 中にTLSクライアント認証を実行するためにTLSヘルパーインターフェイスによって行われますSOCKETS_Connect
。PKCS #11 APIコールは、1 回限りのデベロッパープロビジョニングワークフローによっても行われ、TLSクライアント証明書とMQTTブローカーへの認証用のプライベートキーをインポートします AWS IoT 。プロビジョニングとTLSクライアント認証の 2 つのユースケースでは、PKCS#11 インターフェイス標準の小さなサブセットのみを実装する必要があります。
機能
次の PKCS #11 のサブセットが使用されます。このリストは、プロビジョニング、TLSクライアント認証、クリーンアップをサポートするためにルーチンが呼び出される順序にほぼ一致します。関数の詳細については、標準委員会が提供する PKCS #11 ドキュメントを参照してください。
一般的なセットアップと削除 API
-
C_Initialize
-
C_Finalize
-
C_GetFunctionList
-
C_GetSlotList
-
C_GetTokenInfo
-
C_OpenSession
-
C_CloseSession
-
C_Login
プロビジョニング API
-
C_CreateObject CKO_PRIVATE_KEY
(デバイスプライベートキー用) -
C_CreateObject CKO_CERTIFICATE
(デバイス証明書とコード検証証明書用) -
C_GenerateKeyPair
-
C_DestroyObject
クライアント承認
-
C_GetAttributeValue
-
C_FindObjectsInit
-
C_FindObjects
-
C_FindObjectsFinal
-
C_GenerateRandom
-
C_SignInit
-
C_Sign
-
C_VerifyInit
-
C_Verify
-
C_DigestInit
-
C_DigestUpdate
-
C_DigestFinal
非対称暗号化方式のサポート
無料RTOSリファレンス実装では、PKCS#11 2048 ビット RSA (署名のみ) と ECDSA NIST P-256 曲線を使用します。次の手順では、P-256 クライアント証明書に基づいて AWS IoT モノを作成する方法について説明します。
AWS CLI および Open の以下の (またはより新しい) バージョンを使用していることを確認してくださいSSL。
aws --version aws-cli/1.11.176 Python/2.7.9 Windows/8 botocore/1.7.34 openssl version OpenSSL 1.0.2g 1 Mar 2016
次の手順では、aws configure
コマンドを使用して AWS CLIを設定済みとします。詳細については、AWS Command Line Interface ユーザーガイドの aws configure
を使用したクイック設定を参照してください。
P-256 クライアント証明書に基づいて AWS IoT モノを作成するには
-
AWS IoT モノを作成します。
aws iot create-thing --thing-name
thing-name
-
OpenSSL を使用して P-256 キーを作成します。
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -pkeyopt ec_param_enc:named_curve -outform PEM -out
thing-name
.key -
ステップ 2 で作成したキーで署名された証明書の登録リクエストを作成します。
openssl req -new -nodes -days 365 -key
thing-name
.key -outthing-name
.req -
証明書登録リクエストを に送信します AWS IoT。
aws iot create-certificate-from-csr \ --certificate-signing-request file://
thing-name
.req --set-as-active \ --certificate-pem-outfilething-name
.crt -
モノに証明書 (前のコマンドのARN出力で参照) をアタッチします。
aws iot attach-thing-principal --thing-name
thing-name
\ --principal "arn:aws:iot:us-east-1
:123456789012
:cert/86e41339a6d1bbc67abf31faf455092cdebf8f21ffbc67c4d238d1326c7de729
" -
ポリシーを作成します。(このポリシーは許容範囲が非常に広いので、 開発目的でのみ使用してください。)
aws iot create-policy --policy-name FullControl --policy-document file://policy.json
create-policy
コマンドで指定された policy.json ファイルのリストを次に示します。Greengrass 接続と検出の無料RTOSデモを実行しない場合は、greengrass:*
アクションを省略できます。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:*", "Resource": "*" }, { "Effect": "Allow", "Action": "greengrass:*", "Resource": "*" } ] }
-
プリンシパル (証明書) とポリシーをモノにアタッチします。
aws iot attach-principal-policy --policy-name FullControl \ --principal "arn:aws:iot:us-east-1:
123456789012
:cert/86e41339a6d1bbc67abf31faf455092cdebf8f21ffbc67c4d238d1326c7de729
"
次に、このガイドの「AWS IoT の使用開始」セクションの手順に従います。作成した証明書とプライベートキーを aws_clientcredential_keys.h
ファイルにコピーすることを忘れないでください。モノの名前は aws_clientcredential.h
にコピーします。
注記
証明書とプライベートキーは、デモ専用にハードコードされています。本番稼動レベルのアプリケーションでは、これらのファイルを安全な場所に保存する必要があります。
移植
コアPKCS11ライブラリをプラットフォームに移植する方法については、「無料RTOS移植ガイド」の「コアPKCS11ライブラリの移植」を参照してください。
メモリ使用量
コアPKCS11のコードサイズ (GCC例: ARM for Cortex-M で生成) | ||
---|---|---|
File | -O1 最適化を使用 | -Os 最適化を使用 |
core_pkcs11.c | 0.8 K | 0.8 K |
core_pki_utils.c | 0.5 K | 0.3 K |
core_pkcs11_mbedtls.c | 8.9 K | 7.5 K |
合計 (概算) | 10.2K | 8.6K |