4.1.4.1. EdgeLock SE050 の保存された鍵を利用する
plug-and-trust パッケージには OpenSSL engine のライブラリが含まれており、
OpenSSL を利用して間接的に EdgeLock SE050 を操作することができます。
ここでは例として、EdgeLock SE050 のチップ製造時に書き込まれた鍵を使って
OpenSSL で署名と署名の検証を行います。
まず、次のコマンドでリファレンスキーを取得します。
-
keyid = 0xF0000100
-
Cloud connection key 0 (prime256v1)
[container ~]# se05x_getkey 0xF0000100 refkey.pem /dev/i2c-2:0x48
次のコマンドで署名します。message.txt は任意のファイルを用意してください。
取得したリファレンスキーを利用します。
[container ~]# openssl dgst -sha256 -sign refkey.pem -out sig.bin message.txt
ssse-flw: EmbSe_Init(): Entry
App :INFO :Using PortName='/dev/i2c-2:0x48' (ENV: EX_SSS_BOOT_SSS_PORT=/dev/i2c-2:0x48)
sss :INFO :atr (Len=35)
00 A0 00 00 03 96 04 03 E8 00 FE 02 0B 03 E8 08
01 00 00 00 00 64 00 00 0A 4A 43 4F 50 34 20 41
54 50 4F
sss :WARN :Communication channel is Plain.
sss :WARN :!!!Not recommended for production use.!!!
ssse-flw: Version: 1.0.5
ssse-flw: EmbSe_Init(): Exit
ssse-flw: Control Command EMBSE_LOG_LEVEL; requested log level = 4
署名が正しいかどうかを確認するために署名を検証します。
[container ~]# openssl dgst -sha256 -prverify refkey.pem -signature sig.bin message.txt
ssse-flw: EmbSe_Init(): Entry
App :INFO :Using PortName='/dev/i2c-2:0x48' (ENV: EX_SSS_BOOT_SSS_PORT=/dev/i2c-2:0x48)
sss :INFO :atr (Len=35)
00 A0 00 00 03 96 04 03 E8 00 FE 02 0B 03 E8 08
01 00 00 00 00 64 00 00 0A 4A 43 4F 50 34 20 41
54 50 4F
sss :WARN :Communication channel is Plain.
sss :WARN :!!!Not recommended for production use.!!!
ssse-flw: Version: 1.0.5
ssse-flw: EmbSe_Init(): Exit
ssse-flw: Control Command EMBSE_LOG_LEVEL; requested log level = 4
Verified OK
4.1.4.2. ユーザーが生成した鍵を保存して利用する
EdgeLock SE050 ではユーザーが生成した鍵を保存することもできます。
一度保存された鍵は、そのまま暗号処理に利用することができるようになります。
ここでは例として、ユーザー鍵を保存して openssl cms で暗号化と復号を実行してみます。
まず、ECC の曲線 prime256v1 の鍵を生成します。証明書の情報はお任せします。
[container ~]# openssl req -x509 -nodes -days 3650 -newkey ec \
-pkeyopt ec_paramgen_curve:prime256v1 -keyout key.pem -out cert.pem
生成した鍵と自己証明書を EdgeLock SE050 に保存します。
keyid は 1 から 0x7BFFFFFF の範囲が利用者に開放されています。
[container ~]# se05x_setkey -f 0x10 key.pem /dev/i2c-2:0x48
[container ~]# se05x_setkey -f 0x11 cert.pem /dev/i2c-2:0x48
| |
---|
Secure Object についての詳しい情報は以下を参照してください。 |
| |
---|
秘密鍵を EdgeLock SE050 に保存に成功したあとは、利用する際に EdgeLock SE050
にアクセスすることになります。そのため、ファイルシステム上の key.pem は
基本的に必要ありません。セキュリティ上、削除することをお勧めします。 |
リファレンスキーを取得します。
[container ~]# se05x_getkey 0x10 refkey.pem /dev/i2c-2:0x48
自己証明書に含まれる公開鍵を使って暗号化します。
message.txt は任意のファイルを用意してください。
[container ~]# openssl cms -encrypt -binary -aes256 -in message.txt \
-out message.enc cert.pem
以下はあくまで例ですが、暗号化されたファイルは以下のような内容になります。
[container ~]# cat message.enc
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
Content-Transfer-Encoding: base64
MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQIxggERoYIBDQIBA6BRoU8wCQYHKoZI
zj0CAQNCAARdx2h5MMEe0e7MgYHg179QPxxJvuLTOPONM9NF10V7/3AjgxE1D2XS
Fjgt/btA17HU9l13f6NVRFbZzNVHtxX2MBgGCSuBBRCGSD8AAjALBglghkgBZQME
AS0wgZowgZcwazBTMQswCQYDVQQGEwJKUDEMMAoGA1UECAwDTi9BMQwwCgYDVQQH
DANOL0ExDDAKBgNVBAoMA04vQTEaMBgGA1UEAwwRYXRtYXJrIHRlY2hubyxpbmMC
FA2ES6jQVjVE5fv9KjfD4QqM5hrLBChc/Z1uATls1oxl6aPyYcqf1tns3pR41gko
sturG2/iRRjjQNbwaa2gMGwGCSqGSIb3DQEHATAdBglghkgBZQMEASoEEMl596FU
hh1Rs4sHBcqwmTyAQPyYZLqHHSr1np9CnCxtzcRztheo0gtkC+8elS97GPzKcbpU
gWoOECwNNwyOpTRGxEJ9Mx+C4yW7J7Jiz/XvgDs=
EdgeLock SE050 のキーストレージにある秘密鍵を使って復号します。
[container ~]# openssl cms -decrypt -in message.enc -out message.dec \
-inkey refkey.pem