 |
|
| |
swtpm - TPM Emulator for TPM 1.2 and 2.0
swtpm socket [OPTIONS]
swtpm chardev [OPTIONS]
swtpm cuse [OPTIONS]
swtpm implements a TPM software emulator built on libtpms.
It provides access to TPM functionality over a TCP/IP socket interface or it
can listen for commands on a character device, or create a CUSE (character
device in userspace) interface for receiving of TPM commands.
Unless corresponding command line parameters are used, the
swtpm socket version requires that the environment variable
TPM_PORT be set to the TCP/IP port the process is supposed to listen
on for TPM request messages.
Similarly, the environment variable TPM_PATH can be set and
contain the name of a directory where the TPM can store its persistent state
into.
The swtpm process can be gracefully terminated by sending a
SIGTERM signal to it.
The swtpm cuse version requires root rights to start the
TPM.
The following options are supported if the socket interface
is chosen:
- -p|--port
<port>
- Use the given port rather than using the environment variable
TPM_PORT.
- -t|--terminate
- Terminate the TPM after the client has closed the data channel connection
(TCP only).
- --server
[type=tcp][,port=<port>[,bindaddr=<address>
[,ifname=<ifname>]]][,fd=<fd>][,disconnect]
- Expect TCP connections on the given port; if a port is not provided a file
descriptor must be passed with the fd parameter and the commands are read
from this file descriptor then. If a port is provided the bind
address on which to listen for TCP connections can be provided as
well; the default bind address is 127.0.0.1. If a link local IPv6 address
is provided, the name of the interface to bind to must be provided with
ifname.
This parameter enables a persistent connection by default
unless the disconnect option is given. This parameter should be used
rather than the -p and --fd options.
- --server
type=unixio[,path=<path>][,fd=<fd>]
[,mode=<0...>][,uid=<uid>][,gid=<gid>]
- Expect UnixIO connections on the given path. If no path is provided, a
file descriptor must be passed instead. The mode parameter allows a user
to set the file mode bits of the UnixIO path. The mode bits value must be
given as an octal number starting with a '0'. The default value is 0770.
uid and gid set the ownership of the UnixIO socket's path. This operation
requires root privileges.
The following options are supported if the chardev
interface is chosen:
- -c|--chardev <device
path>
- Use the given device to listen for TPM commands and send response on.
- --vtpm-proxy
- Create a Linux vTPM proxy device instance and read TPM commands from its
backend device.
The following options are supported if the cuse interface
is chosen:
- -n|--name
<NAME>
- The TPM will use a device with the given name. A device with the given
name will be created in /dev. This is a mandatory option.
- -M|--maj
<MAJOR>
- Create the device with the given major number.
- -m|--min
<MINOR>
- Create the device with the given minor number.
The following options are supported by the socket and character
device interfaces:
- -f|--fd <fd>
- Use the given socket file descriptor or character device file descriptor
for receiving TPM commands and sending responses. For the socket
interface, this option automatically assumes -t.
- -d|--daemon
- Daemonize the process.
- --ctrl
type=[unixio|tcp][,path=<path>]
[,port=<port>[,bindaddr=<address>[,ifname=<ifname>]]]
[,fd=<filedescriptor>|clientfd=<filedescriptor>]
[,mode=<0...>][,uid=<uid>][,gid=<gid>][,terminate]
- This option adds a control channel to the TPM. The control channel can
either use a UnixIO socket with a given path or
filedescriptor or it can use a TCP socket on the given port
or filedescriptor. If a port is provided the bind address on
which to listen for TCP connections can be provided as well; the default
bind address is 127.0.0.1. If a link local IPv6 address is provided, the
name of the interface to bind to must be provided with ifname.
The mode parameter allows a user to set the file mode
bits of the UnixIO path. The mode bits value must be given as an octal
number starting with a '0'. The default value is 0770. uid and
gid set the ownership of the UnixIO socket's path. This operation
requires root privileges.
The terminate parameter enables the automatic
termination of swtpm when the control channel connection has been lost.
This is useful in scenarios where the control channel connection is held
permanently, such as by QEMU, and swtpm should terminate upon abnormal
termination of the client that could not send a CMD_SHUTDOWN via the
control channel anymore.
The control channel enables out-of-band control of the TPM,
such as resetting the TPM.
The following options are support by all interfaces:
- --tpmstate
dir=<dir>|backend-uri=<uri>[,mode=<0...>][,lock]
- Use the given path rather than using the environment variable TPM_PATH.
If dir is specified, the TPM state files will be
written to the dir with the given file mode bits. This
value must be given as an octal number starting with a '0'. The default
value is 0640.
If backend-uri is specified, the TPM state data will be
stored to the URI. Currently
backend-uri=dir://<path_to_dir> and
backend-uri=file://<path_to_dir> are available. For
'dir://', the URI should specify the path to the directory where files
are stored. If path_to_dir starts with a '/' then the path is
interpreted as an absolute path, otherwise it is a path relative to the
current directory. For 'file://', the URI should specify a single file
or block device where TPM state will be stored. A blockdevice must exist
already and be big enough to store all state. (since v0.7)
If lock is specified then the TPM storage backend will
lock the TPM state file to avoid concurrent access to it by another
swtpm instance. The default value, if this option parameter is missing,
depends on the storage backend. For the directory-backend the default is
that locking is always enabled, and therefore this option parameter does
not need to be given. For the file backend it is required since the
default is that locking is not automatically enabled. To avoid locking,
lock=false can be used.
- --tpm2
- Choose TPM 2 functionality; by default a TPM 1.2 is chosen.
- --log
[fd=<fd>|file=<path>][,level=<n>]
[,prefix=<prefix>][,truncate]
- Enable logging to a file given its file descriptor or its path. Use '-'
for path to suppress the logging.
The level parameter allows a user to choose the level of
logging. Starting at log level 5, libtpms debug logging is
activated.
All logged lines will be prefixed with prefix. By default no
prefix is prepended.
If truncate is passed, the log file will be
truncated.
- --locality
reject-locality-4[,allow-set-locality]
- The reject-locality-4 parameter will cause TPM error messages to be
returned for requests to set the TPM into locality 4.
The allow-set-locality parameter allows the swtpm to
receive TPM/TPM2_SetLocality commands. This is parameter is useful if
the Linux VTPM proxy driver access is enabled by file descriptor
passing. This option is implied by the --vtpm-proxy option and
therefore need not be explicitly set if this option is passed. In all
other cases care should be taken as to who can send the
TPM/TPM2_SetLocality command.
- --key
file=<keyfile>|fd=<fd>
[,format=<hex|binary>][,mode=aes-cbc|aes-256-cbc],
[remove[=true|false]]
- Enable encryption of the state files of the TPM. The keyfile must contain
an AES key of supported size; 128 bit (16 bytes) and 256 bit (32 bytes)
keys are supported.
The key may be in binary format, in which case the file size
must be 16 or 32 bytes. If the key is in hex format (default), the key
may consist of 32 or 64 hex digits starting with an optional '0x'.
The mode parameter indicates which block chaining mode
is to be used. Currently aes-cbc (aes-128-cbc) and aes-256-cbc are
supported. The encrypted data is integrity protected using
encrypt-then-mac.
The remove parameter will attempt to remove the given
keyfile once the key has been read.
- --key
pwdfile=<passphrase file>|pwdfd=<fd>
[,mode=aes-cbc|aes-256-cbc][remove[=true|false]][,kdf=sha512|pbkdf2]
- This variant of the key parameter allows a user to provide a passphrase in
a file. The file is read and a key is derived from it using either a
SHA512 hash or PBKDF2. By default PBKDF2 is used.
- --migration-key
file=<keyfile>|fd=<fd>
[,format=<hex|binary>][,mode=aes-cbc|aes-256-cbc]
[,remove[=true|false]]
- The availability of a migration key ensures that the state of the TPM will
not be revealed in unencrypted form when the TPM state blobs are retrieved
through the ioctl interface. The migration key is not used for encrypting
TPM state written to files, this is what the --key parameter is
used for.
The migration key and the key used for encrypting the TPM
state files may be the same.
While the key for the TPM state files needs to stay with those
files it encrypts, the migration key needs to stay with the TPM state
blobs. If for example the state of the TPM is migrated between hosts in
a data center, then the TPM migration key must be available at all the
destinations, so in effect it may have to be a key shared across all
machines in the datacenter. In contrast to that, the key used for
encrypting the TPM state files can be different for each TPM and
need only be available on the host where the TPM state resides.
The migration key enables the encryption of the TPM state
blobs. The keyfile must contain an AES key of supported size; 128 bit
(16 bytes) and 256 bit (32 bytes) keys are supported.
The key may be in binary format, in which case the file size
must be 16 or 32 bytes. If the key is in hex format (default), the key
may consist of 32 or 64 hex digits starting with an optional '0x'.
The mode parameter indicates which block chaining mode
is to be used. Currently aes-cbc (aes-128-cbc) and aes-256-cbc are
supported. The encrypted data is integrity protected using
encrypt-then-mac.
The remove parameter will attempt to remove the given
keyfile once the key has been read.
- --migration-key
pwdfile=<passphrase file>|pwdfd=<fd>
[,mode=aes-cbc|aes-256-cbc][,remove[=true|false]][,pdf=sha512|pbkdf2]
- This variant of the key parameter allows a user to provide a passphrase in
a file. The file is read and a key is derived from it using either a
SHA512 hash or PBKDF2. By default PBKDF2 is used.
- --pid
file=<pidfile>|fd=<filedescriptor>
- This options allows a user to set the name of file where the process ID
(pid) of the TPM will be written into. It is also possible to pass a file
descriptor to a file that has been opened for writing.
- -r|--runas
<owner>
- Switch to the given user. This option can only be used when swtpm is
started as root.
- -R|--chroot
<path<gt>
- Chroot to the given directory at startup. This option can only be used
when swtpm is started as root.
- --seccomp
action=none|log|kill (since v0.2)
- This option allows a user to select the action to take by the seccomp
profile when a syscall is executed that is not allowed. The default is
kill. To disable the seccomp profile, choose none. The
log action logs offending syscalls. The log action is only
available if libseccomp supports logging.
This option is only available on Linux and only if swtpm was
compiled with libseccomp support.
- --flags
[not-need-init][,startup-clear|startup-state|startup-deactivated|startup-none][,disable-auto-shutdown]
- The not-need-init flag enables the TPM to accept TPM commands right
after start without requiring an INIT to be sent to it through the command
channel (see the '-i' option of swtpm_ioctl).
The startup options cause a TPM_Startup or TPM2_Startup
command to automatically be sent. The startup-deactivated option
is only valid for a TPM 1.2. These options imply not-need-init,
except for the startup-none option, which results in no command
being sent.
If --vtpm-proxy is used, startup-clear is
automatically chosen but this can be changed with this option.
The disable-auto-shutdown flag prevents swtpm from
automatically sending a TPM2_Shutdown() before the reset of a TPM
2 or before the swtpm process is terminated. When this flag is not
provide swtpm will send this command to avoid increasing the dictionary
attack (DA) lockout counter and ultimately a DA lockout by the TPM 2 due
to omission of sending a required TPM2_Shutdown() before TPM 2
reset or swtpm process termination.
- --print-capabilities
(since v0.2)
- Print capabilities that were added to swtpm after version 0.1. The output
may contain the following:
{
"type": "swtpm",
"features": [
"tpm-1.2",
"tpm-2.0",
"tpm-send-command-header",
"flags-opt-startup",
"flags-opt-disable-auto-shutdown",
"cmdarg-seccomp",
"cmdarg-key-fd",
"cmdarg-pwd-fd",
"cmdarg-print-states",
"cmdarg-chroot",
"cmdarg-migration",
"nvram-backend-dir",
"nvram-backend-file",
"rsa-keysize-1024",
"rsa-keysize-2048",
"rsa-keysize-3072",
"cmdarg-profile",
"cmdarg-print-profiles",
"profile-opt-remove-disabled",
"cmdarg-print-info",
"tpmstate-opt-lock"
],
"version": "0.7.0"
}
The version field is available since v0.7.
The meaning of the feature verbs is as follows:
- --print-states
(since v0.7)
- This option allows to print out the TPM 1.2 or TPM 2 state blobs that are
currently stored in a storage backend. This option requires that the
storage backend be specified using the --tpmstate option and if TPM
2 state blobs are supposed to be shown, the --tpm2 option must be
passed.
The following shows the JSON output of this option. It
indicates that the 'permall' and 'volatile' states are available.
{
"type": "swtpm",
"states": [
{
"name": "permall",
"size": 6013
}, {
"name": "volatile",
"size": 1087
}
]
}
- --migration
[incoming][,release-lock-outgoing]
- This option allows to control the locking of the NVRAM storage for the
purpose of supporting migration between hosts that have shared storage
setup for the swtpm's state directory and if locking is supported by the
storage backend. The directory storage backend for example supports
locking and therefore requires usage of this option in case of shared
storage. When providing the incoming option parameter swtpm defers
the locking of the NVRAM until the state blobs are received or until the
first TPM command is processed if no state blobs were received. The
release-lock-outgoing option parameter causes swtpm to release any
NVRAM lock once the TPM's 'savestate' blob is received from swtpm. To
avoid releasing the lock too early the 'permanent' and 'volatile' state
blobs must be received before the 'savestate' blob.
- --profile
name=<profile-name>|profile=<json-profile>|file=<filename>|fd=<fd>[,remove-disabled=check|fips-host]
(since v0.10)
- This option allows to set a profile for a TPM 2. A built-in profile can be
selected by its name using the option parameter name=. With the
profile= option parameter a JSON-formatted profile can be passed
directly. With the file= option parameter a JSON-formatted profile
will be read from a file. The fd= option parameter allows to read
it from a file descriptor.
Profiles must reference the name of a built-in profile. Note
that only the 'custom' profile, or profiles whose name starts with
'custom:', may be modified and provide a list of algorithms, commands,
or attributes that control which crypto algorithms a TPM 2 enables. If
either one of these lists is not given then the corresponding list from
the built-in 'custom' profile is used.
The following command line option selects the 'custom' profile
under the new name 'custom:test' with the 'fips-host' attribute set:
[...] --profile '{"Name":"custom:test", "Attributes":"fips-host"}'
The profile can only be set the very first time that a TPM 2
instance is started and for as long as no state file exists. The profile
cannot be changed anymore afterwards and, if passed again using this option,
an error will occur.
The remove-disabled option parameter tells swtpm to remove
those algorithms from the profile that are disabled when FIPS is enabled on
a host (fips-host parameter; reference is RHEL 9.4+ FIPS mode) and
OpenSSL's access to crypto algorithms is restricted. The check
parameter can be used to check that an algorithm is in fact disabled before
removing it. This option is only supported if the custom profile is
chosen. In this case it will (currently) do the following:
- remove camellia, tdes, and rsaes (RSA encryption with PKCS#1 v1.5
padding)
- disable signature support (RSA and EC) over SHA1
- disable unpadded RSA encryption
- set the minimum size for RSA keys to 2048 bits
- set the minimum size for EC keys to 224 bits
All other algorithms remain enabled, including those that FIPS may
normally not allow, such as ecdaa and ecschnorr and others. The list of
disabled algorithms will be extended in the future when FIPS mode on the
host disables more algorithms. Since in this case swtpm may add Attributes
to the profile that require a certain StateFormatLevel, it is recommended to
omit the StateFormatLevel field from the profile.
To see the list of algorithms that are supported and can be
disabled, one may use swtpm as follows.
$ swtpm socket --tpmstate dir=./ --tpm2 --print-info 0x08 | jq
{
"RuntimeAlgorithms": {
"Implemented": "rsa,rsa-min-size=1024,tdes,tdes-min-size=128,sha1,\
hmac,aes,aes-min-size=128,mgf1,keyedhash,xor,sha256,\
sha384,sha512,null,rsassa,rsaes,rsapss,oaep,ecdsa,\
ecdh,ecdaa,sm2,ecschnorr,ecmqv,kdf1-sp800-56a,kdf2,\
kdf1-sp800-108,ecc,ecc-min-size=192,ecc-nist,ecc-bn,\
ecc-nist-p192,ecc-nist-p224,ecc-nist-p256,\
ecc-nist-p384,ecc-nist-p521,ecc-bn-p256,ecc-bn-p638,\
ecc-sm2-p256,symcipher,camellia,camellia-min-size=128,\
cmac,ctr,ofb,cbc,cfb,ecb",
"CanBeDisabled": "tdes,sha1,sha512,rsassa,rsaes,rsapss,ecmqv,\
ecc-nist-p192,ecc-nist-p224,ecc-nist-p521,\
ecc-bn-p256,ecc-bn-p638,ecc-sm2-p256,camellia,cmac,\
ctr,ofb,cbc,ecb",
"Enabled": "rsa,rsa-min-size=1024,tdes,tdes-min-size=128,sha1,hmac,\
aes,aes-min-size=128,mgf1,keyedhash,xor,sha256,sha384,\
sha512,null,rsassa,rsaes,rsapss,oaep,ecdsa,ecdh,ecdaa,sm2,\
ecschnorr,ecmqv,kdf1-sp800-56a,kdf2,kdf1-sp800-108,ecc,\
ecc-min-size=192,ecc-nist,ecc-bn,symcipher,camellia,\
camellia-min-size=128,cmac,ctr,ofb,cbc,cfb,ecb",
"Disabled": ""
}
}
To see the list of supported commands:
$ swtpm socket --tpmstate dir=./ --tpm2 --print-info 0x10 | jq
{
"RuntimeCommands": {
"Implemented": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159,\
0x15b-0x15e,0x160-0x165,0x167-0x174,0x176-0x178,\
0x17a-0x193,0x197,0x199-0x19c",
"CanBeDisabled": "0x11f,0x121-0x122,0x124-0x128,0x12a,0x12c-0x12e,\
0x130,0x132-0x13b,0x13d-0x140,0x142,0x146-0x147,\
0x149-0x14d,0x14f-0x152,0x154-0x155,0x159,0x15b,\
0x15d-0x15e,0x160-0x164,0x167-0x168,0x16a-0x172,\
0x174,0x177-0x178,0x17b,0x17f-0x181,0x183-0x184,\
0x187-0x193,0x197,0x199-0x19c",
"Enabled": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159,\
0x15b-0x15e,0x160-0x165,0x167-0x174,0x176-0x178,\
0x17a-0x193,0x197,0x199-0x19c",
"Disabled": ""
}
}
To see the list of supported attributes:
$ swtpm socket --tpmstate dir=./ --tpm2 --print-info 0x80 | jq
{
"RuntimeAttributes": {
"Implemented": "no-unpadded-encryption,no-sha1-signing,\
no-sha1-verification,no-sha1-hmac-creation,\
no-sha1-hmac-verification,no-sha1-hmac,fips-host",
"CanBeDisabled": "no-unpadded-encryption,no-sha1-signing,\
no-sha1-verification,no-sha1-hmac-creation,\
no-sha1-hmac-verification,no-sha1-hmac,fips-host",
"Enabled": "no-unpadded-encryption,no-sha1-signing,\
no-sha1-verification,no-sha1-hmac",
"Disabled": "no-sha1-hmac-creation,no-sha1-hmac-verification,fips-host"
}
}
The above attributes may be added to a profile under an
"Attributes" map entry, which is similar to the
"Algorithms" and "Commands" entries.
To see the list of available profiles:
$ swtpm socket --tpm2 --print-info 0x40 | jq
{
"AvailableProfiles": [
{
"Name": "default-v1",
"StateFormatLevel": 4,
"Commands": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159,\
0x15b-0x15e,0x160-0x165,0x167-0x174,0x176-0x178,\
0x17a-0x193,0x197,0x199-0x19a",
"Algorithms": "rsa,rsa-min-size=1024,tdes,tdes-min-size=128,sha1,\
hmac,aes,aes-min-size=128,mgf1,keyedhash,xor,sha256,\
sha384,sha512,null,rsassa,rsaes,rsapss,oaep,ecdsa,\
ecdh,ecdaa,sm2,ecschnorr,ecmqv,kdf1-sp800-56a,kdf2,\
kdf1-sp800-108,ecc,ecc-min-size=192,ecc-nist,ecc-bn,\
symcipher,camellia,camellia-min-size=128,cmac,ctr,\
ofb,cbc,cfb,ecb",
"Description": "This profile enables all currently supported \
commands and algorithms. It is applied when the \
user chooses no profile."
},
{
"Name": "null",
"StateFormatLevel": 1,
"Commands": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159,\
0x15b-0x15e,0x160-0x165,0x167-0x174,0x176-0x178,\
0x17a-0x193,0x197",
"Algorithms": "rsa,rsa-min-size=1024,tdes,tdes-min-size=128,sha1,\
hmac,aes,aes-min-size=128,mgf1,keyedhash,xor,sha256,\
sha384,sha512,null,rsassa,rsaes,rsapss,oaep,ecdsa,\
ecdh,ecdaa,sm2,ecschnorr,ecmqv,kdf1-sp800-56a,kdf2,\
kdf1-sp800-108,ecc,ecc-min-size=192,ecc-nist,ecc-bn,\
symcipher,camellia,camellia-min-size=128,cmac,ctr,\
ofb,cbc,cfb,ecb",
"Description": "The profile enables the commands and algorithms \
that were enabled in libtpms v0.9. This profile is \
automatically used when the state does not have a \
profile, for example when it was created by \
libtpms v0.9 or before."
},
{
"Name": "custom",
"StateFormatLevel": 2,
"Commands": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159,\
0x15b-0x15e,0x160-0x165,0x167-0x174,0x176-0x178,\
0x17a-0x193,0x197",
"Algorithms": "rsa,rsa-min-size=1024,tdes,tdes-min-size=128,sha1,\
hmac,aes,aes-min-size=128,mgf1,keyedhash,xor,sha256,\
sha384,sha512,null,rsassa,rsaes,rsapss,oaep,ecdsa,\
ecdh,ecdaa,sm2,ecschnorr,ecmqv,kdf1-sp800-56a,kdf2,\
kdf1-sp800-108,ecc,ecc-min-size=192,ecc-nist,ecc-bn,\
ecc-sm2-p256,symcipher,camellia,\
camellia-min-size=128,cmac,ctr,ofb,cbc,cfb,ecb",
"Description": "This profile allows customization of enabled \
algorithms and commands. This profile requires at \
least libtpms v0.10."
}
]
}
To see the current active profile querying swtpm listening for
control message on port 2322:
$ swtpm_ioctl --tcp :2322 --info 0x20 | jq
{
"ActiveProfile": {
"Name": "default-v1",
"StateFormatLevel": 4,
"Commands": "0x11f-0x122,0x124-0x12e,0x130-0x140,0x142-0x159,\
0x15b-0x15e,0x160-0x165,0x167-0x174,0x176-0x178,\
0x17a-0x193,0x197,0x199-0x19a",
"Algorithms": "rsa,rsa-min-size=1024,tdes,tdes-min-size=128,sha1,\
hmac,aes,aes-min-size=128,mgf1,keyedhash,xor,sha256,\
sha384,sha512,null,rsassa,rsaes,rsapss,oaep,ecdsa,\
ecdh,ecdaa,sm2,ecschnorr,ecmqv,kdf1-sp800-56a,kdf2,\
kdf1-sp800-108,ecc,ecc-min-size=192,ecc-nist,ecc-bn,\
symcipher,camellia,camellia-min-size=128,cmac,ctr,\
ofb,cbc,cfb,ecb",
"Description": "This profile enables all currently supported \
commands and algorithms. It is applied when the \
user chooses no profile."
}
}
The only profile that a user may modify is the 'custom' profile.
Here a user may choose to disable algorithms, commands, and attributes that
are allowed to be disabled. To avoid failing TPM 2 applications, care must
be taken that none of them relies on disabled commands or algorithms.
- --print-profiles
(since v0.10)
- Display the profiles supported by libtpms. Use with --tpm2
option.
- --print-info
(since v0.10)
- Display information about the TPM from libtpms TPMLIB_GetInfo call and
exit. Use the --tpm2 option for information about TPM 2. If the
--tpmstate option is also provided then the output will show
information about the profile as well. Note that with this option a TPM
state may be created if none existed before.
The following values can be provided. All of the values can be
or'ed (or added) together to get information about all of them in one
query.
- 0x1: information about the specification the TPM implementation
followed
- 0x2: information about the manufacturer, model and version of the TPM
- 0x4: lists supported RSA and Camellia key sizes
- 0x8: describes supported and enabled algorithms
- 0x10: describes supported and enabled commands
- 0x20: describes the active profile
- 0x40: lists all built-in profiles
- 0x80: describes supported attributes
- -h|--help
- Display usage info.
If a TPM 2 is used, the user is typically required to send a
TPM2_Shutdown() command to a TPM 2 to avoid possibly increasing the
TPM_PT_LOCKOUT_COUNTER that may lead to a dictionary attack (DA) lockout
upon next startup (TPM2_Startup()) of the TPM 2. Whether the
TPM_PT_LOCKOUT_COUNTER is increased depends on previous commands sent to the
TPM 2 as well as internal state of the TPM 2. One example that will trigger
the counter to increase is the omission of a password when trying to access
a password-protected object or NVRAM location that has the DA attribute set,
followed by termination of swtpm without sending TPM2_Shutdown(). To
avoid a DA lockout swtpm will make a best-effort and send a
TPM2_Shutdown(SU_STATE) or TPM2_Shutdown(SU_CLEAR) if found necessary.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc.
|