Operacija#
V tem poglavju so opisana operativna opravila za uporabnike z vlogo Administrator in Operator. Za več informacij o vlogi glejte poglavje Vloge.
Pomembno
Pred začetkom dela preberite informacije na začetku tega dokumenta.
Upravljanje ključev#
Ustvarjanje ključa#
NetHSM lahko ustvari pare ključev. Priporočljivo je, da določite možnost ID ključa in mu tako dodelite izrazito ime.
Podprte vrste ključev in ustrezni mehanizmi so naslednji.
Vrsta ključa |
Mehanizmi |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ključi so dodeljeni v `Namespace <administration.html#namespaces>`__ uporabnika, ki ustvarja ključ.
Ključ lahko ustvarite na naslednji način.
Potrebna vloga
Ta operacija zahteva preverjanje pristnosti z vlogo Administrator.
Potrebne možnosti
Možnost |
Opis |
---|---|
|
Vrsta ustvarjenega ključa. Možne vrednosti za argument |
|
Mehanizmi za ustvarjeni ključ. Možne vrednosti za argument |
|
Dolžina generiranega ključa |
Volitivne možnosti
Možnost |
Opis |
---|---|
|
ID generiranega ključa |
Primer
$ nitropy nethsm --host $NETHSM_HOST generate-key --type RSA --mechanism RSA_Signature_PSS_SHA256 --mechanism RSA_Decryption_PKCS1 --length 2048 --key-id myFirstKey
Key myFirstKey generated on NetHSM localhost:8443
Informacije o končni točki /keys/generate so na voljo v dokumentaciji API.
Ključ za uvoz#
NetHSM lahko uvozi obstoječe zasebne ključe v hrambo ključev.
Podprte vrste ključev in ustrezni mehanizmi so naslednji.
Vrsta ključa |
Mehanizmi |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ključi so dodeljeni *Namespace* uporabnika, ki uvozi ključ.
Uvoz lahko začnete na naslednji način.
Potrebna vloga
Ta operacija zahteva preverjanje pristnosti z vlogo Administrator.
Potrebne možnosti
Možnost |
Opis |
---|---|
|
Vrsta ustvarjenega ključa. Možne vrednosti za argument |
|
Mehanizmi za ustvarjeni ključ. Možne vrednosti za argument |
|
Osnovno število p za ključe RSA, kodirano v base64 |
|
Osnovno število q za ključe RSA, kodirano v base64 |
|
Javni eksponent za ključe RSA, kodiran v base64 |
|
Podatki o ključu za ključe ED25519 ali ECDSA_*, kodirani v base64 |
Volitivne možnosti
Možnost |
Opis |
---|---|
|
ID novega ključa |
|
Oznaka za nov ključ |
Primer
$ nitropy nethsm --host $NETHSM_HOST add-key \
--type RSA \
--mechanism RSA_Signature_PSS_SHA256 \
--mechanism RSA_Decryption_PKCS1 \
--key-id myFirstKey \
--public-exponent AQAB \
--prime-p "AOnWFZ+JrI/xOXJU04uYCZOiPVUWd6CSbVseEYrYQYxc7dVroePshz29tc+VEOUP5T0O8lXMEkjFAwjW6C9QTAsPyl6jwyOQluMRIkdN4/7BAg3HAMuGd7VmkGyYrnZWW54sLWp1JD6XJG33kF+9OSar9ETPoVyBgK5punfiUFEL" \
--prime-q "ANT1kWDdP9hZoFKT49dwdM/S+3ZDnxQa7kZk9p+JKU5RaU9e8pS2GOJljHwkES1FH6CUGeIaUi81tRKe2XZhe/163sEyMcxkaaRbBbTc1v6ZDKILFKKt4eX7LAQfhL/iFlgi6pcyUM8QDrm1QeFgGz11ChM0JuQw1WwkX06lg8iv"
Key myFirstKey added to NetHSM localhost:8443
Informacije o končni točki /keys so na voljo v dokumentaciji API.
Tipka za brisanje#
NetHSM lahko izbriše ključe iz shrambe ključev ** . Uporabniki lahko brišejo samo ključe v svojem *Namespace*.
Potrebna vloga
Ta operacija zahteva preverjanje pristnosti z vlogo Administrator.
Argumenti
Argument |
Opis |
---|---|
|
ID ključa, ki ga želite izbrisati |
Primer
$ nitropy nethsm --host $NETHSM_HOST delete-key myFirstKey
Key myFirstKey deleted on NetHSM localhost:8443
Informacije o končni točki /keys/{KeyID} so na voljo v dokumentaciji API.
Seznam ključev#
NetHSM lahko izpiše vse ključe v Shrambi ključev, ki so v *Namespace* trenutnega uporabnika.
Seznam lahko pridobite na naslednji način.
Potrebna vloga
Ta operacija zahteva avtentikacijo z vlogo Administrator ali Operator.
Volitivne možnosti
Možnost |
Opis |
---|---|
|
Oznaka za iskanje |
Primer
$ nitropy nethsm --host $NETHSM_HOST list-keys
Keys on NetHSM localhost:8443:
Key ID Type Mechanisms Operations Tags
----------- ---- ---------------------------------------------- ---------- ----
myFirstKey RSA RSA_Decryption_PKCS1, RSA_Signature_PSS_SHA256 0
Informacije o končni točki /keys so na voljo v dokumentaciji API.
Prikaži podrobnosti o ključu#
NetHSM lahko izpiše podrobnejše informacije o shranjenem ključu. Uporabniki lahko dostopajo le do ključev v svojem *Namespace*.
Podrobne informacije lahko pridobite na naslednji način.
Potrebna vloga
Ta operacija zahteva avtentikacijo z vlogo Administrator ali Operator.
Primer
$ nitropy nethsm --host $NETHSM_HOST get-key myFirstKey
Key myFirstKey on NetHSM localhost:8443:
Type: RSA
Mechanisms: RSA_Decryption_RAW
Operations: 0
Modulus: r62XHPWMDdEf2I1WEpSxGowY/fQF8lMPtv3EUQJE/PLWBvehF8G0QY3AVVZ3etlQWiKreOuGDx4Nr2PFNYAu5f+JP2Jc1lsFNOYF8D82RF41MBySbQR+k+44N/04B0ahTBCxX+ovFH7Sd6SzvxMPa7EKvhaOsLbgyrPlFZxQnhIEqJRCSo5DRRD+CRCPpGXsVXgFbJrNilh21i8OZCct4nC2OS191MeDKmCH4tjrfLMwOKJE8zKlwhdtA1uMY49+JuaC48GUFsLYwbLp1723Uv1PjZjC5jbUhScD0u9I+iNrqznAeka4dWsJ9jgA+h6hblSgCs0I3MWOsMXx/Y5PGQ==
Public exponent: AQAB
Informacije o končni točki /keys/{KeyID} so na voljo v dokumentaciji API.
Javni ključ ključa lahko pridobite na naslednji način. Je v obliki PKCS#8.
Potrebna vloga
Ta operacija zahteva avtentikacijo z vlogo Administrator ali Operator.
Primer
$ nitropy nethsm --host $NETHSM_HOST get-key myFirstKey --public-key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr62XHPWMDdEf2I1WEpSx
GowY/fQF8lMPtv3EUQJE/PLWBvehF8G0QY3AVVZ3etlQWiKreOuGDx4Nr2PFNYAu
5f+JP2Jc1lsFNOYF8D82RF41MBySbQR+k+44N/04B0ahTBCxX+ovFH7Sd6SzvxMP
a7EKvhaOsLbgyrPlFZxQnhIEqJRCSo5DRRD+CRCPpGXsVXgFbJrNilh21i8OZCct
4nC2OS191MeDKmCH4tjrfLMwOKJE8zKlwhdtA1uMY49+JuaC48GUFsLYwbLp1723
Uv1PjZjC5jbUhScD0u9I+iNrqznAeka4dWsJ9jgA+h6hblSgCs0I3MWOsMXx/Y5P
GQIDAQAB
-----END PUBLIC KEY-----
Informacije o končni točki /keys/{KeyID}/public.pem so na voljo v dokumentaciji API.
Javni ključ lahko na primer preverite s programom OpenSSL na naslednji način.
Potrebna vloga
Ta operacija zahteva avtentikacijo z vlogo Administrator ali Operator.
Primer
nitropy nethsm --host= $NETHSM_HOST get-key myFirstKey --public-key | openssl rsa -pubin -text
Public-Key: (2048 bit)
Modulus:
00:af:ad:97:1c:f5:8c:0d:d1:1f:d8:8d:56:12:94:
b1:1a:8c:18:fd:f4:05:f2:53:0f:b6:fd:c4:51:02:
44:fc:f2:d6:06:f7:a1:17:c1:b4:41:8d:c0:55:56:
77:7a:d9:50:5a:22:ab:78:eb:86:0f:1e:0d:af:63:
c5:35:80:2e:e5:ff:89:3f:62:5c:d6:5b:05:34:e6:
05:f0:3f:36:44:5e:35:30:1c:92:6d:04:7e:93:ee:
38:37:fd:38:07:46:a1:4c:10:b1:5f:ea:2f:14:7e:
d2:77:a4:b3:bf:13:0f:6b:b1:0a:be:16:8e:b0:b6:
e0:ca:b3:e5:15:9c:50:9e:12:04:a8:94:42:4a:8e:
43:45:10:fe:09:10:8f:a4:65:ec:55:78:05:6c:9a:
cd:8a:58:76:d6:2f:0e:64:27:2d:e2:70:b6:39:2d:
7d:d4:c7:83:2a:60:87:e2:d8:eb:7c:b3:30:38:a2:
44:f3:32:a5:c2:17:6d:03:5b:8c:63:8f:7e:26:e6:
82:e3:c1:94:16:c2:d8:c1:b2:e9:d7:bd:b7:52:fd:
4f:8d:98:c2:e6:36:d4:85:27:03:d2:ef:48:fa:23:
6b:ab:39:c0:7a:46:b8:75:6b:09:f6:38:00:fa:1e:
a1:6e:54:a0:0a:cd:08:dc:c5:8e:b0:c5:f1:fd:8e:
4f:19
Exponent: 65537 (0x10001)
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr62XHPWMDdEf2I1WEpSx
GowY/fQF8lMPtv3EUQJE/PLWBvehF8G0QY3AVVZ3etlQWiKreOuGDx4Nr2PFNYAu
5f+JP2Jc1lsFNOYF8D82RF41MBySbQR+k+44N/04B0ahTBCxX+ovFH7Sd6SzvxMP
a7EKvhaOsLbgyrPlFZxQnhIEqJRCSo5DRRD+CRCPpGXsVXgFbJrNilh21i8OZCct
4nC2OS191MeDKmCH4tjrfLMwOKJE8zKlwhdtA1uMY49+JuaC48GUFsLYwbLp1723
Uv1PjZjC5jbUhScD0u9I+iNrqznAeka4dWsJ9jgA+h6hblSgCs0I3MWOsMXx/Y5P
GQIDAQAB
-----END PUBLIC KEY-----
Informacije o končni točki /keys/{KeyID}/public.pem so na voljo v dokumentaciji API.
Ključna potrdila#
Za ključe, shranjene v napravi NetHSM, je mogoče nastaviti in poizvedovati po potrdilih.
Podprte vrste MIME so naslednje.
application/x-pem-file
application/x-x509-ca-cert
application/pgp-keys
Certifikat lahko nastavite na naslednji način.
Potrebna vloga
Ta operacija zahteva preverjanje pristnosti z vlogo Administrator.
Potrebne možnosti
Možnost |
Opis |
---|---|
|
ID ključa, za katerega želite nastaviti potrdilo. |
Volitivne možnosti
Možnost |
Opis |
---|---|
|
Vrsta MIME potrdila. Razpoložljive vrste MIME so navedene zgoraj. |
Argumenti
Argument |
Opis |
---|---|
|
Datoteka s potrdilom |
Primer
$ nitropy nethsm --host $NETHSM_HOST set-certificate --key-id myFirstKey --mime-type application/x-pem-file /tmp/cert.pem
Updated the certificate for key myFirstKey on NetHSM localhost:8443
Informacije o končni točki /keys/{KeyID}/cert so na voljo v dokumentaciji API.
Potrdilo lahko pridobite na naslednji način.
Potrebna vloga
Ta operacija zahteva avtentikacijo z vlogo Administrator ali Operator.
Potrebne možnosti
Možnost |
Opis |
---|---|
|
ID ključa, za katerega želite pridobiti potrdilo |
Primer
$ nitropy nethsm --host $NETHSM_HOST get-certificate --key-id myFirstKey
-----BEGIN CERTIFICATE-----
MIICeTCCAWECFCbuzdkAvc3Zx3W53IoSnmhUen42MA0GCSqGSIb3DQEBCwUAMHsx
CzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcMBkJlcmxpbjER
MA8GA1UECgwITml0cm9rZXkxFTATBgNVBAMMDG5pdHJva2V5LmNvbTEgMB4GCSqG
SIb3DQEJARYRaW5mb0BuaXRyb2tleS5jb20wHhcNMjIwODMwMjAxMzA2WhcNMjMw
ODMwMjAxMzA2WjBxMW8wCQYDVQQGEwJERTANBgNVBAcMBkJlcmxpbjANBgNVBAgM
BkJlcmxpbjAPBgNVBAoMCE5pdHJva2V5MBMGA1UEAwwMbml0cm9rZXkuY29tMB4G
CSqGSIb3DQEJARYRaW5mb0BuaXRyb2tleS5jb20wKjAFBgMrZXADIQDc58LGDY9B
wbJFdXTiDalNXrDC60Sxu3eHcpnh1MSoCjANBgkqhkiG9w0BAQsFAAOCAQEAGip8
aU5nJnzm3eic3t1ihUA3VJ0mAPyfrb1Rn8tEKOZo3vg0jpRd9CSESlBsKqhvxsdQ
A3eomM+W7R37TL5+ISm5QrbijLHz3OHoPM68c1Krz3bXTkJetf4YAxpLOPYfXXHv
weRzwVJb4y3E0lJGhZxI3sUE8Yn/T1UvTbu/o/O5P/XTA8vfFrSNQkQxWBgYh4gC
KjFFALqUPFrctSFIi34aqpdihNJWnjSS2Y7INm3oxwkR3NMKP8x4wBGfZK22nHnu
PPzXuMGJTmQM8GHTzltNvLx5Iv2sXoSHClXSpdIT5IBIcR1GmZ78fmcr75OAU0+z
3XbJq/1ij3tKsjV6WA==
-----END CERTIFICATE-----
Informacije o končni točki /keys/{KeyID}/cert so na voljo v dokumentaciji API.
Zahteve za podpisovanje ključnih potrdil#
NetHSM podpira generiranje zahtevkov za podpisovanje potrdil (CSR) za shranjene ključe.
Potrebna vloga
Ta operacija zahteva avtentikacijo z vlogo Administrator ali Operator.
Potrebne možnosti
Možnost |
Opis |
---|---|
|
ID ključa, za katerega se ustvari CSR. |
|
Ime države |
|
Ime države ali pokrajine |
|
Ime kraja |
|
Ime organizacije |
|
Ime organizacijske enote |
|
Splošno ime |
|
E-poštni naslov |
Primer
$ nitropy nethsm --host $NETHSM_HOST csr --key-id myFirstKey --country="DE" --state-or-province="Berlin" --locality="Berlin" --organization="Nitrokey" --organizational-unit="" --common-name=nitrokey.com --email-address="info@nitrokey.com"
-----BEGIN CERTIFICATE REQUEST-----
MIHxMIGkAgEAMHExbzAJBgNVBAYTAkRFMA0GA1UEBwwGQmVybGluMA0GA1UECAwG
QmVybGluMA8GA1UECgwITml0cm9rZXkwEwYDVQQDDAxuaXRyb2tleS5jb20wHgYJ
KoZIhvcNAQkBFhFpbmZvQG5pdHJva2V5LmNvbTAqMAUGAytlcAMhADJMNAifke6s
u7CYqHGDy3xGtXVOUNbTJG6Gn4oki+j3oAAwBQYDK2VwA0EAQilRK2Mf6kfJ4ByI
WCn9A+8IHsnE7iFcuFZpmaKfcJwZiaQppHvPg/Z0zqldzviPQ1cjKR7hSZG+8GHH
gWjEDg==
-----END CERTIFICATE REQUEST-----
Informacije o končni točki /keys/{KeyID}/csr.pem so na voljo v dokumentaciji API.
Ključne operacije#
Vse operacije, opisane v tem poglavju, je mogoče izvesti samo za ključe, ki so v *Namespace* trenutnega uporabnika.
Šifriranje#
NetHSM lahko šifrira podatke za simetrične ključe, ki so shranjeni v shrambi ključev ** . Nasprotno pa šifriranja podatkov z asimetričnimi ključi v sistemu NetHSM ni mogoče izvesti zaradi koncepta kriptografije z javnim ključem, da je javni ključ na voljo vsem. Za asimetrične ključe NetHSM zagotavlja javni ključ, ki ga je mogoče uporabiti za šifriranje z zunanjim orodjem.* Več o tem, kako pridobiti javni ključ ključa v shrambi ključev *, si preberite v Prikaži podrobnosti o ključu .
Podatke je mogoče šifrirati s simetričnim ključem na naslednji način.
Potrebna vloga
Ta operacija zahteva preverjanje pristnosti z vlogo Operator.
Potrebne možnosti
Možnost |
Opis |
---|---|
|
ID ključa za šifriranje podatkov |
|
Podatki v kodiranju Base64 |
|
Način šifriranja |
|
Inicializacijski vektor v kodiranju Base64 |
Primer
$ nitropy nethsm --host $NETHSM_HOST encrypt -k myFirstKey -d "TmV0SFNNIHJ1bGV6enp6enp6enp6enp6enp6enp6IQo=" -m AES_CBC -iv "aYlwUI4A9zL9tts4dMAq+A=="
Encrypted: Uk+9pgucdxTnbyIb/6+BDJef+HfRWhw+Eg3RcCvyHaU=
Initialization vector: aYlwUI4A9zL9tts4dMAq+A==
Informacije o končni točki /keys/{KeyID}/encrypt so na voljo v dokumentaciji API.
To izpiše šifrirano in base64 kodirano sporočilo NetHSM rulezzzzzzzzzzzzzzzzzzz!
ter inicializacijski vektor.
Podatke za asimetrične ključe lahko šifrirate z OpenSSL na naslednji način.
$ echo 'NetHSM rulez!' | openssl pkeyutl -encrypt -pubin -inkey public.pem | base64 > data.crypt
To zapiše šifrirano in v base64 kodirano sporočilo NetHSM rulez!
v datoteko data.crypt
z uporabo javnega ključa iz public.pem
.
Dešifriranje#
NetHSM lahko dešifrira podatke za zasebni ključ, ki je shranjen v shrambi Key Store v NetHSM. Ta primer uporablja šifrirano sporočilo iz prejšnjega poglavja Šifriraj.
Podprti načini dešifriranja so naslednji.
TAG
PKCS1
FILENAME
--network
OAEP_SHA224
OAEP_SHA224
OAEP_SHA224
OAEP_SHA224
USER_ID
Podatke je mogoče dešifrirati na naslednji način.
Potrebna vloga
Ta operacija zahteva preverjanje pristnosti z vlogo Operator.
Potrebne možnosti
Možnost |
Opis |
---|---|
|
ID ključa za dešifriranje širine podatkov |
|
Šifrirani podatki v kodiranju Base64 |
|
Način dešifriranja. Razpoložljivi načini so navedeni zgoraj. |
Primer
$ nitropy nethsm -h $NETHSM_HOST decrypt -k myFirstKey -d "$(cat data.crypt)" -m PKCS1 | base64 -d
NetHSM rulez!
Informacije o končni točki /keys/{KeyID}/decrypt so na voljo v dokumentaciji API.
Znak#
NetHSM lahko podpiše podatke za zasebni ključ, ki je shranjen v shrambi Key Store v NetHSM. Za podpisovanje s ključem RSA in ECDSA je treba najprej izračunati prebavo.
Za izračun digesta so najprej potrebni podatki. Sporočilo se ustvari na naslednji način.
$ echo 'NetHSM rulez!' > data
Digest se izračuna s programom OpenSSL na naslednji način.
$ openssl dgst -sha256 -binary data | base64 > data.digest
Podprti načini podpisovanja so naslednji.
PKCS1
USER_ID
FILENAME
Curve25519
Curve25519
Curve25519
Curve25519
PKCS1
PKCS1
Na podlagi digesta je mogoče ustvariti podpis na naslednji način.
Potrebna vloga
Ta operacija zahteva preverjanje pristnosti z vlogo Operator.
Potrebne možnosti
Možnost |
Opis |
---|---|
|
ID ključa za podpisovanje širine podatkov |
|
Podatki za podpis, kodirani z uporabo kode Base64 |
|
Način znaka |
Primer
$ nitropy nethsm -h $NETHSM_HOST sign -k myFirstKey -m PKCS1 -d "$(cat data.digest)" | base64 -d > data.sig
Informacije o končni točki /keys/{KeyID}/sign so na voljo v dokumentaciji API.
Ustvarjeni podpis lahko preverite s programom OpenSSL na naslednji način.
$ openssl dgst -sha256 -verify public.pem -signature data.sig -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 data
Verified OK
Naključno#
NetHSM lahko zagotovi naključne bajte kot niz Base64.
Potrebna vloga
Ta operacija zahteva preverjanje pristnosti z vlogo Operator.
Argumenti
Argument |
Opis |
---|---|
|
Bajti za pridobitev |
Primer
nitropy nethsm --host $NETHSM_HOST random 4
94A2rg==
Informacije o končni točki /random so na voljo v dokumentaciji API.