Replies: 4 comments 1 reply
-
@JonathonHall-Purism said under #1515 (comment):
|
Beta Was this translation helpful? Give feedback.
-
Thanks for copying my thoughts here @tlaurion ! I think this is a great feature, but I think the name "GPG authentication" is vague. For example, /boot is authenticated with GPG, but that is not part of the "GPG authentication" feature. "GPG" is also (IMO) how the feature is accomplished, not the goal itself, and we could change it in the future if something solves this problem better than GPG (hypothetically). Since the goal is to prevent tampering by authenticating the user in some circumstances, what about "Tamper Prevention" or "User Authentication"? Those are both distinct from Heads' normal mode of operating (which detects but does not prevent tampering, and which authenticates the computer to the user, not the user to the computer). With that said perhaps "Restricted Boot" should be revisited too to distinguish it from this feature. It does restrict what the computer will boot, but the goal of that feature is to ensure that booting anything unsigned creates evidence of tampering, not to prevent it outright (RB can always be disabled, which itself creates evidence of tampering). |
Beta Was this translation helpful? Give feedback.
-
Just a little comment, first, i want to thank everybody who is involved for the hard work, your doing great stuff! And second, i like the new feature with a master signing key as encrypted Backup, because now i can use the good, old RSA keys on nitrokey 3, the device can store up to 4096bit key length only generation on the device is currently limited. I don't like the NIST ECC algorythms very much, or am i ignoring an important feature oft them? Edit: |
Beta Was this translation helpful? Give feedback.
-
Hi, following up on that point! As of today, I'm a little lost into the relationship between RB and gpg_auth. Overall, I'd like to be able to use gpg_auth to ensure that noone else can boot the computer or flash the firmware with having to open the machine. RBRB prevents the following without TOTP being wiped:
RB allows booting from signed ISOS (arch...) and modify configuration options (except flashing firmware). Additionally, RB can be disabled, even though you'll know it later on. GPG AUTHGpg_auth ensures prevents unauthenticated user to:
But anyone can flash/update, use unsafe boot and change config options. IdeasWhat about requiring GPG_AUTH to :
This will make GPG_AUTH at least as secure as RB (regarding the flash procedure) and seems easy to do? QuestionsI'm not sure about the use of gpg_auth for the following regarding the objective set to to ensure that noone else can boot the computer or flash the firmware with having to open the machine.
However, we could simply enforce gpg_auth for nearly everything except default boot: this may simplify thinking and be worth it? In other words, what are the benefits of looking at every case if we can stick to something simple and secure? The question becomes: what actions need to be left unauthenticated? CommentsSorry if I'm a bit confused, this is a lot to think! But thank you very much for the hard work!!! |
Beta Was this translation helpful? Give feedback.
-
The future of GPG authentication, and Restricted Boot (RB) integration discussion started under #1515 (comment)
We have discussions since osresearch/heads moved to linuxboot/heads yesterday, so I suggest we use it!
So as of #1515 current state, generating keys in memory and creating an encrypted USB Thumb drive of GPG key material (master key, signing, encryption and authentication subkey, revocation key) copied to encrypted drive, while public key is copied to public partition is enough to enable GPG authentication, which is enabled right away.
This is currently fully optional, since the prompts to generate keys in memory and create an encrypted backup defaults to N in the OEM Factory Reset/Re-Ownership Questionnaire as shown at #1515 (comment)
I would really love to have input from the community for the path forward.
If enabled today as per commit 1ce158b in that PR, GPG Authentication (gpg_auth function) is called from:
The intent of the discussion is more tailored at use case then implementation details, but I'm ready for both!
Beta Was this translation helpful? Give feedback.
All reactions