From: Petr Gotthard <petr.gotthard at centrum.cz>
To: tpm2@lists.01.org
Subject: [tpm2] Re: Ecrypting and decrypting a file using a TPM2
Date: Wed, 15 Jun 2022 15:21:21 +0200 [thread overview]
Message-ID: <20220615152121.213AA4F3@centrum.cz> (raw)
In-Reply-To: CAOCvsS=d4=+oVOcbD0yv4CYBVA3QGJgUtJfOKBOayejyApv18Q@mail.gmail.com
[-- Attachment #1: Type: text/plain, Size: 3031 bytes --]
I believe it may be easier to use openssl and its tpm2-openssl provider. OpenSSL can encrypt/decrypt files and the tpm2-openssl provider enables the use of TPM-based keys.
Petr
______________________________________________________________
> Od: "Steven Clark" <davolfman(a)gmail.com>
> Komu: dawn.howe(a)alten.com
> Datum: 15.06.2022 02:27
> Předmět: [tpm2] Re: Ecrypting and decrypting a file using a TPM2
>
> CC: <tpm2(a)lists.01.org>
Generally bulk symmetric encryption is a feature real TPMs don't implement. What you do is generate a random transmission key for AES encryption with something like OpenSSLs libcrypto and encrypt that ephemeral key with the TPM.
On Tue, Jun 14, 2022, 5:06 PM <dawn.howe(a)alten.com <dawn.howe(a)alten.com>> wrote:I am writing a c++ application on ubuntu 22.04 server that needs to encrypt and decrypt files and am using the FAPI api. The files need to be secured until the application uses them at a later time, so I am receiving plain files and encrypting them using Fapi_Encrypt().
I tried following the pattern in the integration tests found in the tpm2-tools. (tpm2-tools/test/integration/fapi/fapi-encrypt-decrypt.sh)
It basically does the following:
Fapi_Initialize(&global_fapi_context, NULL);
Fapi_Provision (global_fapi_context, NULL, NULL, NULL);
const char * key_type = "noDa, decrypt, system";
char * auth_value = NULL; // no password
char * policy_path = NULL;
Fapi_CreateKey (global_fapi_context, key_path, key_type, policy_path, auth_value);
Fapi_Encrypt (global_fapi_context, key_path, (const uint8_t*)data, size, &cipherText, &cipherTextSize);
The files (data buffer) I need to encrypt are about 3k bytes big.
The encryption fails because the file is too big. The error comes from
.../tpm2-tss/src/tss2-fapi/api/Fapi_Encrypt.c line 309:
if (encKeyObject->misc.key.public.publicArea.type == TPM2_ALG_RSA) {
TPM2B_DATA null_data = { .size = 0, .buffer = {} };
TPM2B_PUBLIC_KEY_RSA *rsa_message = (TPM2B_PUBLIC_KEY_RSA *)&context->aux_data;
size_t key_size =
encKeyObject->misc.key.public.publicArea.parameters.rsaDetail.keyBits / 8;
if (context->cmd.Data_EncryptDecrypt.in_dataSize > key_size) {
goto_error_reset_state(r, TSS2_FAPI_RC_BAD_VALUE,
"Size to big for RSA encryption.", error_cleanup);
Is my strategy completely wrong? What's the proper way to do this? Is my strategy ok, but need to generate a different type of key?
I'm new to this technology and am curious how it ought to be done.
_______________________________________________
tpm2 mailing list -- tpm2(a)lists.01.org <tpm2(a)lists.01.org>
To unsubscribe send an email to tpm2-leave(a)lists.01.org <tpm2-leave(a)lists.01.org>
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
[-- Attachment #2: attachment.htm --]
[-- Type: text/html, Size: 4137 bytes --]
next reply other threads:[~2022-06-15 13:21 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-15 13:21 Petr Gotthard [this message]
-- strict thread matches above, loose matches on Subject: below --
2022-06-16 15:42 [tpm2] Re: Ecrypting and decrypting a file using a TPM2 Petr Gotthard
2022-06-15 19:29 dawn.howe
2022-06-15 0:27 Steven Clark
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220615152121.213AA4F3@centrum.cz \
--to=tpm2@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox