1tpm2_startauthsession(1)    General Commands Manual   tpm2_startauthsession(1)
2
3
4

NAME

6       tpm2_startauthsession(1) - Start a session with the TPM.
7

SYNOPSIS

9       tpm2_startauthsession [OPTIONS]
10

DESCRIPTION

12       tpm2_startauthsession(1)  - Starts a session with the TPM.  The default
13       is to start a trial session unless the -a option is  specified.   Saves
14       the  policy session data to a file.  This file can then be used in sub‐
15       sequent tools that can use a policy file for  authorization  or  policy
16       events.
17
18       This  will  not work with resource managers (RMs) outside of tpm2-abrmd
19       (https://github.com/tpm2-software/tpm2-abrmd), as most RMs  will  flush
20       session handles when a client disconnects from the IPC channel.  Howev‐
21       er, when using a RM without the session gapping feature,  one  can  use
22       the command TCTI to keep the connection open.
23
24       The first step is to create a socket listener that uses tpm2_send:
25
26              mknod "$HOME/backpipe" p
27              while [ 1 ]; do tpm2_send 0<"$HOME/backpipe" | nc -lU "$HOME/sock" 1>"$HOME/backpipe"; done;
28
29       The  next  step is to use the command TCTI and netcat (nc) to send data
30       to the socket.
31
32              tpm2_startauthsession --tcti="cmd:nc -q 0 -U $HOME/sock" <options>
33
34       When finishing ensure to kill the listener.  For commands executed with
35       the  command  tcti  against the listener, one will need to manage tran‐
36       sient handles.  The simplest way is to add a flush after each  command:
37       tpm2_flushcontext --tcti="cmd:nc -q 0 -U $HOME/sock" -t
38
39       Note:  This  example  uses UNIX sockets, since the socket is controlled
40       with Linux access controls.  Using a port is not  recommended  as  it’s
41       either open to any user on the system (localhost) or bound to a network
42       card and exposed to the network.
43
44       This will work with direct TPM access, but note  that  internally  this
45       calls  a  ContextSave and a ContextLoad on the session handle, thus the
46       session cannot be saved/loaded again.
47

OPTIONS

49--policy-session:
50
51         Start a policy session of type TPM_SE_POLICY.  Default  without  this
52         option is TPM_SE_TRIAL.
53
54         NOTE:  A  trial  session  is used when building a policy and a policy
55         session is used when authenticating with a policy.
56
57--audit-session:
58
59         Start an HMAC session to be used as an audit session.  Default  with‐
60         out this option is TPM2_SE_TRIAL.
61
62--hmac-session:
63
64         Start  an HMAC session of type TPM_SE_HMAC.  Default without this op‐
65         tion is TPM2_SE_TRIAL.
66
67-g, --hash-algorithm=ALGORITHM:
68
69         The hash algorithm used in computation of the policy digest.
70
71-G, --key-algorithm=ALGORITHM:
72
73         The symmetric algorithm used in parameter encryption/decryption.
74
75-c, --key-context=OBJECT:
76
77         Set the tpmkey and bind objects to be the  same.   Session  parameter
78         encryption  is turned on.  Session parameter decryption is turned on.
79         Parameter encryption/decryption symmetric-key set to AES-CFB.
80
81-S, --session=FILE:
82
83         The name of the policy session file, required.
84
85--bind-context=FILE:
86
87         Set the bind object.   Session  parameter  encryption  is  off.   Use
88         tpm2_sessionconfig  to turn on.  Session parameter decryption is off.
89         Use tpm2_sessionconfig to turn on.   Parameter  encryption/decryption
90         symmetric-key set to AES-CFB.
91
92--bind-auth=AUTH:
93
94         Set the authorization value for the bind object.
95
96--tpmkey-context=FILE:
97
98         Set  the  tpmkey  object.   Session parameter encryption is off.  Use
99         tpm2_sessionconfig to turn on.  Session parameter decryption is  off.
100         Use  tpm2_sessionconfig  to turn on.  Parameter encryption/decryption
101         symmetric-key set to AES-CFB.
102
103-n, --name=FILE
104
105         A name file as output from a tool like tpm2_readpublic(1) -n  option.
106         The name file can be used to verify a persistent handle input for the
107         --tpmkey-context, -c, and --key-context options.   Verification  that
108         the  object  referenced by a peristent handle, e.g 0x81000000, is the
109         key expected prevents attackers from performing  a  man-in-the-middle
110         attack on session traffic.
111
112   References

Context Object Format

114       The  type  of a context object, whether it is a handle or file name, is
115       determined according to the following logic in-order:
116
117       • If the argument is a file path, then the file is loaded as a restored
118         TPM transient object.
119
120       • If the argument is a prefix match on one of:
121
122         • owner: the owner hierarchy
123
124         • platform: the platform hierarchy
125
126         • endorsement: the endorsement hierarchy
127
128         • lockout: the lockout control persistent object
129
130       • If  the  argument argument can be loaded as a number it will be treat
131         as a handle, e.g. 0x81010013 and used directly._OBJECT_.
132

Authorization Formatting

134       Authorization for use of an object in TPM2.0 can come  in  3  different
135       forms: 1.  Password 2.  HMAC 3.  Sessions
136
137       NOTE:  “Authorizations  default  to  the EMPTY PASSWORD when not speci‐
138       fied”.
139
140   Passwords
141       Passwords are interpreted in the following  forms  below  using  prefix
142       identifiers.
143
144       Note:  By  default  passwords are assumed to be in the string form when
145       they do not have a prefix.
146
147   String
148       A string password, specified by prefix  “str:”  or  it’s  absence  (raw
149       string without prefix) is not interpreted, and is directly used for au‐
150       thorization.
151
152   Examples
153              foobar
154              str:foobar
155
156   Hex-string
157       A hex-string password, specified by prefix “hex:” is converted  from  a
158       hexidecimal  form  into a byte array form, thus allowing passwords with
159       non-printable and/or terminal un-friendly characters.
160
161   Example
162              hex:1122334455667788
163
164   File
165       A file based password, specified be prefix “file:” should be  the  path
166       of  a  file  containing the password to be read by the tool or a “-” to
167       use stdin.  Storing passwords in files  prevents  information  leakage,
168       passwords passed as options can be read from the process list or common
169       shell history features.
170
171   Examples
172              # to use stdin and be prompted
173              file:-
174
175              # to use a file from a path
176              file:path/to/password/file
177
178              # to echo a password via stdin:
179              echo foobar | tpm2_tool -p file:-
180
181              # to use a bash here-string via stdin:
182
183              tpm2_tool -p file:- <<< foobar
184
185   Sessions
186       When using a policy session to authorize the use of an  object,  prefix
187       the  option argument with the session keyword.  Then indicate a path to
188       a session file that was created with tpm2_startauthsession(1).  Option‐
189       ally, if the session requires an auth value to be sent with the session
190       handle (eg policy password), then append a + and a string as  described
191       in the Passwords section.
192
193   Examples
194       To use a session context file called session.ctx.
195
196              session:session.ctx
197
198       To use a session context file called session.ctx AND send the authvalue
199       mypassword.
200
201              session:session.ctx+mypassword
202
203       To use a session context file called session.ctx AND send the HEX auth‐
204       value 0x11223344.
205
206              session:session.ctx+hex:11223344
207
208   PCR Authorizations
209       You  can satisfy a PCR policy using the “pcr:” prefix and the PCR mini‐
210       language.      The     PCR     minilanguage     is     as      follows:
211       <pcr-spec>=<raw-pcr-file>
212
213       The PCR spec is documented in in the section “PCR bank specifiers”.
214
215       The  raw-pcr-file  is  an optional argument that contains the output of
216       the raw PCR contents as returned by tpm2_pcrread(1).
217
218       PCR bank specifiers (pcr.md)
219
220   Examples
221       To satisfy a PCR policy of sha256 on banks 0, 1, 2 and 3 use a specifi‐
222       er of:
223
224              pcr:sha256:0,1,2,3
225
226       specifying AUTH.
227

COMMON OPTIONS

229       This  collection of options are common to many programs and provide in‐
230       formation that many users may expect.
231
232-h, --help=[man|no-man]: Display the tools manpage.  By  default,  it
233         attempts  to  invoke  the  manpager for the tool, however, on failure
234         will output a short tool summary.  This is the same behavior  if  the
235         “man”  option argument is specified, however if explicit “man” is re‐
236         quested, the tool will provide errors from man  on  stderr.   If  the
237         “no-man”  option  if  specified, or the manpager fails, the short op‐
238         tions will be output to stdout.
239
240         To successfully use the manpages feature requires the manpages to  be
241         installed or on MANPATH, See man(1) for more details.
242
243-v,  --version:  Display version information for this tool, supported
244         tctis and exit.
245
246-V, --verbose: Increase the information that the tool prints  to  the
247         console  during  its  execution.  When using this option the file and
248         line number are printed.
249
250-Q, --quiet: Silence normal tool output to stdout.
251
252-Z, --enable-errata: Enable the application of errata fixups.  Useful
253         if  an  errata fixup needs to be applied to commands sent to the TPM.
254         Defining the environment TPM2TOOLS_ENABLE_ERRATA is equivalent.   in‐
255         formation many users may expect.
256

TCTI Configuration

258       The  TCTI  or  “Transmission  Interface” is the communication mechanism
259       with the TPM.  TCTIs can be changed for communication with TPMs  across
260       different mediums.
261
262       To control the TCTI, the tools respect:
263
264       1. The command line option -T or --tcti
265
266       2. The environment variable: TPM2TOOLS_TCTI.
267
268       Note:  The  command  line option always overrides the environment vari‐
269       able.
270
271       The current known TCTIs are:
272
273       • tabrmd     -     The     resource     manager,     called      tabrmd
274         (https://github.com/tpm2-software/tpm2-abrmd).   Note that tabrmd and
275         abrmd as a tcti name are synonymous.
276
277       • mssim - Typically used for communicating to the TPM software  simula‐
278         tor.
279
280       • device - Used when talking directly to a TPM device file.
281
282       • none  - Do not initalize a connection with the TPM.  Some tools allow
283         for off-tpm options and thus support not using a TCTI.  Tools that do
284         not  support  it  will error when attempted to be used without a TCTI
285         connection.  Does not support ANY options and MUST  BE  presented  as
286         the exact text of “none”.
287
288       The  arguments  to  either  the  command line option or the environment
289       variable are in the form:
290
291       <tcti-name>:<tcti-option-config>
292
293       Specifying an empty string for  either  the  <tcti-name>  or  <tcti-op‐
294       tion-config> results in the default being used for that portion respec‐
295       tively.
296
297   TCTI Defaults
298       When a TCTI is not specified, the default TCTI is  searched  for  using
299       dlopen(3)  semantics.   The  tools  will  search for tabrmd, device and
300       mssim TCTIs IN THAT ORDER and USE THE FIRST ONE FOUND.  You  can  query
301       what TCTI will be chosen as the default by using the -v option to print
302       the version information.  The “default-tcti” key-value pair will  indi‐
303       cate which of the aforementioned TCTIs is the default.
304
305   Custom TCTIs
306       Any TCTI that implements the dynamic TCTI interface can be loaded.  The
307       tools internally use dlopen(3), and the raw tcti-name value is used for
308       the lookup.  Thus, this could be a path to the shared library, or a li‐
309       brary name as understood by dlopen(3) semantics.
310

TCTI OPTIONS

312       This collection of options are used to configure the various known TCTI
313       modules available:
314
315device: For the device TCTI, the TPM character device file for use by
316         the device TCTI can be specified.  The default is /dev/tpm0.
317
318         Example:   -T   device:/dev/tpm0   or   export    TPM2TOOLS_TCTI=“de‐
319         vice:/dev/tpm0”
320
321mssim:  For  the  mssim  TCTI, the domain name or IP address and port
322         number used by the simulator  can  be  specified.   The  default  are
323         127.0.0.1 and 2321.
324
325         Example:  -T  mssim:host=localhost,port=2321  or export TPM2TOOLS_TC‐
326         TI=“mssim:host=localhost,port=2321”
327
328abrmd: For the abrmd TCTI, the configuration string format is  a  se‐
329         ries  of  simple  key value pairs separated by a `,' character.  Each
330         key and value string are separated by a `=' character.
331
332         • TCTI abrmd supports two keys:
333
334           1. `bus_name' : The name of  the  tabrmd  service  on  the  bus  (a
335              string).
336
337           2. `bus_type' : The type of the dbus instance (a string) limited to
338              `session' and `system'.
339
340         Specify the tabrmd tcti name and a config string of  bus_name=com.ex‐
341         ample.FooBar:
342
343                \--tcti=tabrmd:bus_name=com.example.FooBar
344
345         Specify the default (abrmd) tcti and a config string of bus_type=ses‐
346         sion:
347
348                \--tcti:bus_type=session
349
350         NOTE: abrmd and tabrmd are synonymous.  the various known  TCTI  mod‐
351         ules.  # EXAMPLES
352
353   Start a trial session and save the session data to a file
354              tpm2_startauthsession -S mysession.ctx
355
356   Start a policy session and save the session data to a file
357              tpm2_startauthsession --policy-session -S mysession.ctx
358
359   Start  an encrypted and bound policy session and save the session data to a
360       file
361              tpm2_createprimary -c primary.ctx
362              tpm2_startauthsession --policy-session -c primary.ctx -S mysession.ctx
363

Returns

365       Tools can return any of the following codes:
366
367       • 0 - Success.
368
369       • 1 - General non-specific error.
370
371       • 2 - Options handling error.
372
373       • 3 - Authentication error.
374
375       • 4 - TCTI related error.
376
377       • 5 - Non supported scheme.  Applicable to tpm2_testparams.
378

BUGS

380       Github Issues (https://github.com/tpm2-software/tpm2-tools/issues)
381

HELP

383       See the Mailing List (https://lists.linuxfoundation.org/mailman/listin
384       fo/tpm2)
385
386
387
388tpm2-tools                                            tpm2_startauthsession(1)
Impressum