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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.