All of lore.kernel.org
 help / color / mirror / Atom feed
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 --]

             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.