Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pustaka CorePKCS11
catatan
Konten pada halaman ini mungkin tidakup-to-date. Silakan lihat halaman perpustakaan FreeRtos.org untuk pembaruan
Gambaran Umum
Standar Kriptografi Kunci Publik #11 mendefinisikan API independen platform untuk mengelola dan menggunakan token kriptografi. PKCS #11
Pustaka CorePKCS11 berisi implementasi tiruan berbasis perangkat lunak dari antarmuka PKCS #11 (API) yang menggunakan fungsionalitas kriptografi yang disediakan oleh Mbed TLS. Menggunakan tiruan perangkat lunak memungkinkan pengembangan dan fleksibilitas yang cepat, tetapi diharapkan Anda akan mengganti tiruan dengan implementasi khusus untuk penyimpanan kunci aman yang digunakan dalam perangkat produksi Anda. Umumnya, vendor untuk cryptoprocessors aman, seperti Trusted Platform Module (TPM), Hardware Security Module (HSM), Secure Element, atau jenis kantong perangkat keras aman lainnya, mendistribusikan implementasi PKCS #11 dengan perangkat keras. Tujuan dari perangkat lunak CorePKCS11 hanya perpustakaan tiruan karena itu untuk menyediakan implementasi PKCS #11 khusus perangkat keras non yang memungkinkan untuk prototyping cepat dan pengembangan sebelum beralih ke cryptoprocessor tertentu PKCS #11 implementasi dalam perangkat produksi.
Hanya subset dari standar PKCS #11 yang diimplementasikan, dengan fokus pada operasi yang melibatkan kunci asimetris, pembuatan angka acak, dan hashing. Kasus penggunaan yang ditargetkan mencakup manajemen sertifikat dan kunci untuk otentikasi TLS, dan verifikasi tanda tangan tanda tangan kode, pada perangkat kecil yang disematkan. Lihat file pkcs11.h
(diperoleh dari OASIS, badan standar) di repositori kode sumber FreeRTOS. Dalam implementasi referensi FreeRTOS, panggilan API PKCS #11 dilakukan oleh antarmuka pembantu TLS untuk melakukan otentikasi klien TLS selama. SOCKETS_Connect
Panggilan API PKCS #11 juga dilakukan oleh alur kerja penyediaan pengembang satu kali kami untuk mengimpor sertifikat klien TLS dan kunci pribadi untuk otentikasi ke broker MQTT. AWS IoT Kedua kasus penggunaan, penyediaan dan otentikasi klien TLS, memerlukan implementasi hanya sebagian kecil dari standar antarmuka PKCS #11.
Fitur
Subset berikut dari PKCS #11 digunakan. Daftar ini kira-kira dalam urutan di mana rutinitas dipanggil untuk mendukung penyediaan, otentikasi klien TLS, dan pembersihan. Untuk penjelasan rinci tentang fungsi, lihat dokumentasi PKCS #11 yang disediakan oleh panitia standar.
Pengaturan umum dan meruntuhkan API
-
C_Initialize
-
C_Finalize
-
C_GetFunctionList
-
C_GetSlotList
-
C_GetTokenInfo
-
C_OpenSession
-
C_CloseSession
-
C_Login
API Penyediaan API Penyediaan API
-
C_CreateObject CKO_PRIVATE_KEY
(untuk kunci pribadi perangkat) -
C_CreateObject CKO_CERTIFICATE
(untuk sertifikat perangkat dan sertifikat verifikasi kode) -
C_GenerateKeyPair
-
C_DestroyObject
Autentikasi Klien
-
C_GetAttributeValue
-
C_FindObjectsInit
-
C_FindObjects
-
C_FindObjectsFinal
-
C_GenerateRandom
-
C_SignInit
-
C_Sign
-
C_VerifyInit
-
C_Verify
-
C_DigestInit
-
C_DigestUpdate
-
C_DigestFinal
Dukungan kriptografi asimetris
Implementasi referensi FreeRTOS menggunakan PKCS #11 2048-bit RSA (hanya penandatanganan) dan ECDSA dengan kurva NIST P-256. Petunjuk berikut menjelaskan cara membuat AWS IoT sesuatu berdasarkan sertifikat klien P-256.
Pastikan Anda menggunakan versi OpenSSL AWS CLI dan OpenSSL berikut (atau yang lebih baru):
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
Prosedur berikut mengasumsikan bahwa Anda menggunakan aws configure
perintah untuk mengkonfigurasi. AWS CLI Untuk informasi selengkapnya, lihat Konfigurasi cepat dengan aws configure
di Panduan AWS Command Line Interface Pengguna.
Untuk membuat AWS IoT sesuatu berdasarkan sertifikat klien P-256
-
Buat AWS IoT sesuatu.
aws iot create-thing --thing-name
thing-name
-
Gunakan OpenSSL untuk membuat kunci P-256.
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -pkeyopt ec_param_enc:named_curve -outform PEM -out
thing-name
.key -
Buat permintaan pendaftaran sertifikat yang ditandatangani oleh kunci yang dibuat pada langkah 2.
openssl req -new -nodes -days 365 -key
thing-name
.key -outthing-name
.req -
Kirimkan permintaan pendaftaran sertifikat ke. AWS IoT
aws iot create-certificate-from-csr \ --certificate-signing-request file://
thing-name
.req --set-as-active \ --certificate-pem-outfilething-name
.crt -
Lampirkan sertifikat (direferensikan oleh output ARN oleh perintah sebelumnya) ke benda itu.
aws iot attach-thing-principal --thing-name
thing-name
\ --principal "arn:aws:iot:us-east-1
:123456789012
:cert/86e41339a6d1bbc67abf31faf455092cdebf8f21ffbc67c4d238d1326c7de729
" -
Buat kebijakan. (Kebijakan ini terlalu permisif. Ini harus digunakan untuk tujuan pengembangan saja.)
aws iot create-policy --policy-name FullControl --policy-document file://policy.json
Berikut ini adalah daftar file policy.json ditentukan dalam perintah.
create-policy
Anda dapat menghilangkangreengrass:*
tindakan jika Anda tidak ingin menjalankan demo FreeRTOS untuk konektivitas dan penemuan Greengrass.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:*", "Resource": "*" }, { "Effect": "Allow", "Action": "greengrass:*", "Resource": "*" } ] }
-
Lampirkan kepala sekolah (sertifikat) dan kebijakan untuk hal itu.
aws iot attach-principal-policy --policy-name FullControl \ --principal "arn:aws:iot:us-east-1:
123456789012
:cert/86e41339a6d1bbc67abf31faf455092cdebf8f21ffbc67c4d238d1326c7de729
"
Sekarang, ikuti langkah-langkah di bagian AWS IoTMemulai panduan ini. Jangan lupa untuk menyalin sertifikat dan kunci pribadi yang Anda buat ke aws_clientcredential_keys.h
file Anda. Salin nama benda Anda ke dalamaws_clientcredential.h
.
catatan
Sertifikat dan kunci pribadi dikodekan keras untuk tujuan demonstrasi saja. Aplikasi tingkat produksi harus menyimpan file-file ini di lokasi yang aman.
Porting
Untuk informasi tentang porting pustaka CorePkCS11 ke platform Anda, lihat Memindahkan Pustaka CorePkCS11 di Panduan Porting FreeRTOS.
Penggunaan memori
Ukuran Kode CorePKCS11 (contoh yang dihasilkan dengan GCC untuk ARM Cortex-M) | ||
---|---|---|
File | Dengan Optimasi -O1 | Dengan Optimasi -Os |
core_pkcs11.c | 0.8K | 0.8K |
core_pki_utils.c | 0.5K | 0,3K |
core_pkcs11_mbedtls.c | 8.9K | 7.5K |
Total perkiraan | 10.2K | 8.6K |