重要
このドライバはまだ初期の概念実証の実装であり、例えばHTTPSサーバのようなTLSサーバを操作するために必要な機能のみを実装しています。
PKCS#11ドライバーを使用したNetHSMへのアクセス#
NetHSM用の`PKCS#11 ドライバ <https://github.com/Nitrokey/nethsm-pkcs11>`_ をダウンロードします。
設定ファイル p11nethsm.conf を設定に合わせて変更し (例: アドレス、オペレータ名)、 $HOME/.nitrokey, /etc/nitrokey/ あるいはアプリケーションが実行されるフォルダーに保存してください。
暗号化・復号化#
それに応じた仕組みで鍵(ここではID42)を作成すると、暗号化・復号化に利用できるようになりますが、まずは鍵を作成します。
$ KEYID=42
$ HEXID=$(echo ${KEYID}'\c' | xxd -ps)
$ curl -s -X GET https://nethsmdemo.nitrokey.com/api/v1/keys/$KEYID/public.pem -o public.pem
これで暗号化できる。
$ echo 'NetHSM rulez!' | openssl pkeyutl -encrypt -pubin -inkey public.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha512 -pkeyopt rsa_mgf1_md:sha512 -out encrypted.data
...そして復号化する。
$ pkcs11-tool --module p11nethsm.so -v --decrypt --mechanism RSA-PKCS-OAEP --input-file encrypted.data --id $HEXID --hash-algorithm SHA512
サイン#
まずキーを再度作成します。
$ KEYID=23
$ HEXID=$(echo ${KEYID}'\c' | xxd -ps)
$ curl -s -X GET https://nethsmdemo.nitrokey.com/api/v1/keys/$KEYID/public.pem -o public.pem
このような仕組みで鍵(ここではID23)を作成した後、署名に使用することができます。
$ echo 'NetHSM rulez!' | pkcs11-tool --module p11nethsm.so -v --sign --mechanism SHA512-RSA-PKCS-PSS --output-file sig.data --id $HEXID
$ echo 'NetHSM rulez!' | openssl dgst -keyform PEM -verify public.pem -sha512 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -signature sig.data