Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adding basic draft for SE05 specific documentation #358

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions source/components/nitrokeys/nitrokey3/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ and the product guides:
Set Pins <set-pins>
nitropy <nitropy>
Reset <reset>
Secure Element <secure-element>
Troubleshooting <troubleshooting>

or check out the features:
Expand Down
70 changes: 70 additions & 0 deletions source/components/nitrokeys/nitrokey3/secure-element.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
SE05x Secure Element
====================

.. contents:: :local:

The Secure Element is a tamper-resistant secure element designed by NXP Semiconductors that provides advanced security features.
It offers hardware-based security functions including cryptographic operations, secure key storage, and protection against physical and logical attacks.
The SE05X Secure Element is certified to Common Criteria EAL 6+ security level and includes features like RSA, ECC, AES, and SHA algorithms, making it ideal for the Nitrokey 3.
It usage is optional and provides faster performance and some additional features.

Currently only OpenPGP Card and PIV are using the Secure Element. PIV depends on the Secure Element and does not run without it being enabled and OpenPGP Card can be configured to use the Secure Element or not. Passwords and FIDO2 are not making use of it.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is a bit weird to say "PIV depends on the Secure Element and does not run without it being enabled", since the secure element is always "enabled", it's just not always in use for applications (and it's used for seeding the randomness).


You can read more information about the Secure Element itself here `SE050 <https://www.nxp.com/products/SE050>`__.

Activation and Deactivation
---------------------------
The Secure Element is enabled by default if no key in OpenPGP Card and PIV is already saved on the device.
This is automatically the case after reset of the OpenPGP Card or the whole device. Manually activating the Secure Element for the OpenPGP Card will delete all current keys.

To check whether the Secure Element is activated run:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
To check whether the Secure Element is activated run:
To check whether the Secure Element for the OpenPGP Card is activated run:


* nitropy nk3 get-config opcard.use_se050_backend

To enable the Secure Element:

* nitropy nk3 set-config opcard.use_se050_backend true

To disable the Secure Element:

* nitropy nk3 set-config opcard.use_se050_backend false

Additional Features
jans23 marked this conversation as resolved.
Show resolved Hide resolved
-------------------

+-----------------------------------------+---------------------+------------------------+
| Algorithm | With Secure Element | Without Secure Element |
+=========================================+=====================+========================+
| RSA 2048 bit | ✓ | ✓ |
+-----------------------------------------+---------------------+------------------------+
| RSA 3072 bit | ✓ | ⨯ |
+-----------------------------------------+---------------------+------------------------+
| RSA 4096 bit | ✓ | ⨯ |
+-----------------------------------------+---------------------+------------------------+
| ECC 256-521 bit | ✓ | ✓ |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is ECC exactly? I assume this is covered by the ciphers below already.

+-----------------------------------------+---------------------+------------------------+
| AES 128/256 bit | ✓ | ✓ |
+-----------------------------------------+---------------------+------------------------+
| SHA 256/384/512 bit | ✓ | ✓ |
+-----------------------------------------+---------------------+------------------------+
| NIST P-256 (secp256r1/prime256v1) | ✓ | ✓ |
+-----------------------------------------+---------------------+------------------------+
| NIST P-384 (secp384r1/prime384v1) | ✓ | ⨯ |
+-----------------------------------------+---------------------+------------------------+
| NIST P-521 (secp521r1/prime521v1) | ✓ | ⨯ |
+-----------------------------------------+---------------------+------------------------+
| Ed25519/Curve25519 | ✓ | ✓ |
+-----------------------------------------+---------------------+------------------------+
| brainpoolP256r1 | ✓ | ⨯ |
+-----------------------------------------+---------------------+------------------------+
| brainpoolP384r1 | ✓ | ⨯ |
+-----------------------------------------+---------------------+------------------------+
| brainpoolP512r1 | ✓ | ⨯ |
+-----------------------------------------+---------------------+------------------------+
| HOTP (RFC 4226) | ✓ | ✓ |
+-----------------------------------------+---------------------+------------------------+
| TOTP (RFC 6238) | ✓ | ✓ |
+-----------------------------------------+---------------------+------------------------+
| Physical random number generator (TRNG) | ✓ | ✓ |
+-----------------------------------------+---------------------+------------------------+