Support non-TPM backed keys in ChromeOS |
|||||||||||||||||
Issue descriptionThis is a feature request to support 'software-backed' keys throughout ChromeOS, as an option that users or administrators can explicitly request. I'll use this as an umbrella bug to file additional requests. See also internal bug 109944165 ⛆ |
|
|
,
Jun 22 2018
,
Jun 22 2018
,
Jun 22 2018
,
Jun 22 2018
,
Jun 22 2018
,
Jun 22 2018
I'd add that even for supported algorithms, chaps only will create a tpm-backed key if (a) a special attribute (kKeyBlobAttribute = CKA_VENDOR_DEFINED + 1) is set for an imported key [see SessionImpl::CreateObjectInternal in platform2/chaps/session_impl.cc]. Note how we pass this attribute it for the keys registered by cryptohomed/atetstationd as a part of attestation workflows - e.g. Pkcs11KeyStore::Register in platform2/attestation/server/pkcs11_key_store.cc (b) this key was generated by chaps itself [then this attribute will be auto-set by chaps - see SessionImpl::GenerateKeyPair in platform2/chaps/session_impl.cc]. If those keys are generated externally and then imported, it seems we just need to avoid passing this special attribute. So, this feature request may be not for chaps, but for other layers and workflows that use it.
,
Jun 22 2018
* oops, a better code reference for #7: (a) a special attribute (kKeyBlobAttribute = CKA_VENDOR_DEFINED + 1) is set for an imported key [see SessionImpl::WrapPrivateKey in platform2/chaps/session_impl.cc].
,
Jun 22 2018
,
Jul 17
Assigning to atwilson@ for CrOS triage.
,
Aug 3
This bug has an owner, thus, it's been triaged. Changing status to "assigned".
,
Aug 7
,
Sep 4
Assigning to Pavol since he expressed an interest - let's discuss next-steps when he's back in the office.
,
Oct 12
,
Nov 2
,
Dec 12
Menghuan is this related to / could be incorporated into the work you're doing in chaps?
,
Dec 12
Issue 855675 has been merged into this issue.
,
Dec 12
Note comment #7: we may not need any changes in chaps.
,
Dec 13
I spend sometimes for tracing the code. Correct me if I am wrong. As my understanding, the work depends on the use case. The current status is that for the importing the a private key through C_CreateObject, it will be wrapped by TPM at SessionImpl::WrapPrivateKey if it is a permanent object (a.k.a token object in PKCS#11). The object type can be decided by caller via setting CKA_TOKEN attribute to true/false. So if caller want to use software-backed key, they can only import the RSA key as temporarily object (a.k.a session object) for now. I am not sure whether it is enough for your use case. If not, then addition work is need. a) if caller want to use software-backed key for permanent object. We can add a customized attribute to tell chaps that we don't want to wrapped it by TPM to bypass the WrapPrivateKey. b) if caller want to create a software-backed key by chaps itself (call GenerateKeyPair), then we need to add the other customized attribute to focus it software-backed gen.
,
Dec 28
Any information about what's our requirement/use case here?
,
Dec 28
Note this was filed as an umbrella bug; see the related bugs. I'd missed that one had been (incorrectly) duped into this. It sounds like Comment #19 is discussing the use case from Issue 855675 - is that correct? Perhaps we should pop over there? The desire is for a permanent object, software-backed, without the additional TPM invocation overhead. This can be approximated by using the Cryptohome-protected NSS softoken database (as mentioned in Comment #1), but that has some of the limitations that it would not be available for those other services. This would not guarantee full TPM security, but would substantially improve performance over, say, Issue 851113, for organizations that are willing to make that trade-off. |
||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||
Comment 1 by rsleevi@chromium.org
, Jun 22 2018