[tpm2] Virtualbox ubuntu 22.04 guest with tpm_server

dawn.howe at alten.com Mon, 23 May 2022 15:44:15 +0000
Newsgroups dev.linux.lists.tpm2
Message-ID <[email protected]>
I am developing a c++ application for a dell server running ubuntu 22.04. The application needs to store private keys and use them to decrypt files.

Before working on target hardware, I'm trying to get a virtualbox environment set up to use a simulated TPM2.  Before writing the C++ application I'd like to get some command line tools working. I have struggled for a week following instructions I've found (for example: https://tpm2-tools.readthedocs.io/en/latest/INSTALL/, https://francislampayan.medium.com/how-to-setup-tpm-simulator-in-ubuntu-20-04-25ec673b88dc, etc). I am trying to use IBM's SWTPM2, but have not had any luck.

Virtualbox 6.1.30
Windows 10 host
Ubuntu 22.04 server guest

TPM SERVER SIMULATOR
First, I'm installing tpm_server. Since ubuntu 22.04 uses openssl3.0, I cannot use v1661, but instead am getting the latest version from the "next" branch:
$ git clone https://git.code.sf.net/p/ibmswtpm2/tpm2 ibmswtpm2-tpm2
$ cd ibmswtpm2-tpm/src
$ make

TPM2 - ABRMD
$ git clone https://github.com/tpm2-software/tpm2-abrmd.git
$ cd tpm2-abrmd
$ ./bootstrap
$ ./configure \
--with-dbuspolicydir=/etc/dbus-1/system.d \
--with-systemdsystemunitdir=/usr/lib/systemd/system \
--libdir=/usr/lib64 --prefix=/usr 
$ make -j5
$ sudo make install

TPM2 - tss
$ git clone https://github.com/tpm2-software/tpm2-tss.git
$ cd tpm2-tss
$ ./bootstrap
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

TPM2 - tools
$ git clone https://github.com/tpm2-software/tpm2-tools.git
$ cd tpm2-tools
$ ./bootstrap
$ ./configure --prefix=/usr
$ make -j5
$ sudo make install

I'm just starting things on the command line, before makin them services. In one window I start the TPM simulator:
$ tpm2_server

In another window I start the ABRMD:
sudo -u tss tpm2-abrmd --tcti="libtss2-tcti-mssim.so.0:host=127.0.0.1,port=2321"

I see this in the window that started the TPM server:
LIBRARY_COMPATIBILITY_CHECK is ON
Starting ACT thread...
TPM command server listening on port 2321
Platform server listening on port 2322
Command IPv4 client accepted
Platform IPv4 client accepted

Then I try to run a command line tool:
tpm2_pcrread
ERROR:tcti:src/tss2-tcti/tcti-device.c:452:Tss2_Tcti_Device_Init() Failed to open specified TCTI device file /dev/tpmrm0: No such file or directory
ERROR:tcti:src/tss2-tcti/tctildr-dl.c:170:tcti_from_file() Could not initialize TCTI file: libtss2-tcti-device.so.0
ERROR:tcti:src/tss2-tcti/tcti-device.c:452:Tss2_Tcti_Device_Init() Failed to open specified TCTI device file /dev/tpm0: No such file or directory
ERROR:tcti:src/tss2-tcti/tctildr-dl.c:170:tcti_from_file() Could not initialize TCTI file: libtss2-tcti-device.so.0

And I get no output.  I feel like I'm not configuring the TSS correctly. Can anyone give me insight on how to run this?  Should I be using a different simulator? I haven't found any good instructions for how to run https://github.com/stefanberger/swtpm in a virtualbox guest.