重要

このドライバはまだ初期の概念実証の実装であり、例えばHTTPSサーバのようなTLSサーバを操作するために必要な機能のみを実装しています。

PKCS#11ドライバーを使用したNetHSMへのアクセス#

  1. NetHSM用の`PKCS#11 ドライバ <https://github.com/Nitrokey/nethsm-pkcs11>`_ をダウンロードします。

  2. 設定ファイル 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