Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
perpustakaan CorePKCS11
catatan
Konten di halaman ini mungkin tidak mutakhir. Silakan merujuk ke halaman FreeRTOS.org perpustakaan
Ikhtisar
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 (API) PKCS #11 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 kriptoprosesor aman, seperti Trusted Platform Module (TPM), Hardware Security Module (HSM), Secure Element, atau jenis enklave perangkat keras aman lainnya, mendistribusikan implementasi PKCS #11 dengan perangkat keras. Oleh karena itu, tujuan dari pustaka tiruan perangkat lunak CorePKCS11 adalah untuk menyediakan implementasi PKCS #11 khusus non perangkat keras yang memungkinkan pembuatan prototipe dan pengembangan yang cepat sebelum beralih ke implementasi PKCS #11 khusus kriptoprosesor di perangkat produksi.
Hanya sebagian dari standar PKCS #11 yang diimplementasikan, dengan fokus pada operasi yang melibatkan kunci asimetris, pembuatan angka acak, dan hashing. Kasus penggunaan yang ditargetkan termasuk sertifikat dan manajemen kunci untuk otentikasi TLS, dan verifikasi 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 tersebut, penyediaan dan otentikasi klien TLS, hanya memerlukan implementasi sebagian kecil dari standar antarmuka PKCS #11.
Fitur
Subset PKCS #11 berikut 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.
Penyiapan umum dan merobohkan API
-
C_Initialize -
C_Finalize -
C_GetFunctionList -
C_GetSlotList -
C_GetTokenInfo -
C_OpenSession -
C_CloseSession -
C_Login
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 kriptosistem 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 P-256 klien.
Pastikan Anda menggunakan versi OpenSSL dan OpenSSL berikut (atau yang AWS CLI 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 sebuah AWS IoT hal berdasarkan sertifikat P-256 klien
-
Buat AWS IoT sesuatu.
aws iot create-thing --thing-namething-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 -outthing-name.key -
Buat permintaan pendaftaran sertifikat yang ditandatangani oleh kunci yang dibuat pada langkah 2.
openssl req -new -nodes -days 365 -keything-name.key -outthing-name.req -
Kirim 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 dengan perintah sebelumnya) ke benda itu.
aws iot attach-thing-principal --thing-namething-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.jsonBerikut ini adalah daftar file policy.json yang ditentukan dalam perintah.
create-policyAnda dapat menghilangkangreengrass:*tindakan jika Anda tidak ingin menjalankan demo FreeRTOS untuk konektivitas dan penemuan Greengrass. -
Lampirkan kepala sekolah (sertifikat) dan kebijakan pada benda 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 IoT Memulai 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. Production-level aplikasi harus menyimpan file-file ini di lokasi yang aman.
Porting
Untuk informasi tentang porting pustaka CorePKCS11 ke platform Anda, lihat Mem-porting Perpustakaan CorePKCS11 di Panduan Porting FreeRTOS.
Penggunaan memori
| Ukuran Kode CorePKCS11 (contoh 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 |