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

NAME

6       tpm2_createak(1)  - Generate attestation key with given algorithm under
7       the endorsement hierarchy.
8

SYNOPSIS

10       tpm2_createak [OPTIONS]
11

DESCRIPTION

13       tpm2_createak(1) - Generate an attestation key (AK) with the given  al‐
14       gorithm  under  the endorsement hierarchy.  The context of the attesta‐
15       tion key is specified via -c.
16
17       The tool outputs to stdout a YAML representation of  the  loaded  key’s
18       name, for example:
19
20              loaded-key:
21                name: 000bac149518baa05540a0678bd9b624f8a98d042e46c60f4d098ba394d36fc49268
22

OPTIONS

24-P, --eh-auth=AUTH:
25
26         The authorization value for the endorsement hierarchy.
27
28-p, --ak-auth=AUTH
29
30         The authorization value for the attestation key object created.
31
32-C, --ek-context=OBJECT:
33
34         The endorsement key object.
35
36-c, --ak-context=FILE:
37
38         The file path to save the object context of the attestation key.
39
40-G, --key-algorithm=ALGORITHM:
41         Specifies the attestation key algorithm.  Supports:
42
43         • ecc - An P256 key.
44
45         • rsa - An RSA2048 key.
46
47         • keyedhash - hmac key.
48
49-g, --hash-algorithm=ALGORITHM:
50
51         Specifies the digest algorithm used for signing.
52
53-s, --signing-algorithm=ALGORITHM:
54
55         The signing algorithm.
56
57-u, --public=FILE:
58
59         The file to save the public portion of the attestation key.
60
61-n, --ak-name=FILE:
62
63         The file to save the attestation key name, optional.
64
65-r, --private=FILE:
66
67         The  output  file which contains the sensitive portion of the object,
68         optional.  # Protection Details
69
70       Objects that can move outside of TPM need to  be  protected  (confiden‐
71       tiality  and  integrity).  For instance, transient objects require that
72       TPM protected data (key or seal material) be stored outside of the TPM.
73       This  is seen in tools like tpm2_create(1), where the -r option outputs
74       this protected data.  This blob contains the sensitive portions of  the
75       object.  The sensitive portions of the object are protected by the par‐
76       ent object, using the parent’s symmetric encryption details to  encrypt
77       the sensitive data and HMAC it.
78
79       In-depth details can be found in sections 23 of:
80
81https://trustedcomputinggroup.org/wp-content/up
82         loads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf
83
84       Notably Figure 20, is relevant, even though it’s specifically referring
85       to duplication blobs, the process is identical.
86
87       If  the  output  is from tpm2_duplicate(1), the output will be slightly
88       different, as described fully in section 23.
89
90-f, --format:
91
92         Format selection for the public key output file.  `tss' (the default)
93         will  output  a  binary  blob according to the TPM 2.0 Specification.
94         `pem' will output an  OpenSSL  compatible  PEM  encoded  public  key.
95         `der'  will  output  an  OpenSSL  compatible  DER encoded public key.
96         `tpmt' will output a binary blob of the TPMT_PUBLIC struct referenced
97         by TPM 2.0 specs.
98
99         Format selection for the signature output file.
100
101-q, --ak-qualified-name=FILE:
102
103         The qualified name of the attestation key object.  The qualified name
104         is the qualified name of the parent object (the EK in this  instance)
105         and  the  name  of the object itself.  Thus, the qualified name of an
106         object serves to bind it to its parents.
107
108   References

Context Object Format

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

Authorization Formatting

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

Algorithm Specifiers

225       Options that take algorithms support “nice-names”.
226
227       There are two major algorithm specification string classes, simple  and
228       complex.  Only certain algorithms will be accepted by the TPM, based on
229       usage and conditions.
230
231   Simple specifiers
232       These are strings with no additional specification data.  When creating
233       objects,  non-specified  portions of an object are assumed to defaults.
234       You can find the list of known “Simple Specifiers Below”.
235
236   Asymmetric
237       • rsa
238
239       • ecc
240
241   Symmetric
242       • aes
243
244       • camellia
245
246   Hashing Algorithms
247       • sha1
248
249       • sha256
250
251       • sha384
252
253       • sha512
254
255       • sm3_256
256
257       • sha3_256
258
259       • sha3_384
260
261       • sha3_512
262
263   Keyed Hash
264       • hmac
265
266       • xor
267
268   Signing Schemes
269       • rsassa
270
271       • rsapss
272
273       • ecdsa
274
275       • ecdaa
276
277       • ecschnorr
278
279   Asymmetric Encryption Schemes
280       • oaep
281
282       • rsaes
283
284       • ecdh
285
286   Modes
287       • ctr
288
289       • ofb
290
291       • cbc
292
293       • cfb
294
295       • ecb
296
297   Misc
298       • null
299
300   Complex Specifiers
301       Objects, when specified for creation by the TPM,  have  numerous  algo‐
302       rithms  to  populate  in the public data.  Things like type, scheme and
303       asymmetric details, key size, etc.  Below is  the  general  format  for
304       specifying this data: <type>:<scheme>:<symmetric-details>
305
306   Type Specifiers
307       This  portion  of the complex algorithm specifier is required.  The re‐
308       maining scheme and symmetric details will default  based  on  the  type
309       specified and the type of the object being created.
310
311       • aes - Default AES: aes128
312
313       • aes128<mode>  - 128 bit AES with optional mode (ctr|ofb|cbc|cfb|ecb).
314         If mode is not specified, defaults to null.
315
316       • aes192<mode> - Same as aes128<mode>, except for a 192 bit key size.
317
318       • aes256<mode> - Same as aes128<mode>, except for a 256 bit key size.
319
320       • ecc - Elliptical Curve, defaults to ecc256.
321
322       • ecc192 - 192 bit ECC
323
324       • ecc224 - 224 bit ECC
325
326       • ecc256 - 256 bit ECC
327
328       • ecc384 - 384 bit ECC
329
330       • ecc521 - 521 bit ECC
331
332       • rsa - Default RSA: rsa2048
333
334       • rsa1024 - RSA with 1024 bit keysize.
335
336       • rsa2048 - RSA with 2048 bit keysize.
337
338       • rsa4096 - RSA with 4096 bit keysize.
339
340   Scheme Specifiers
341       Next, is an optional field, it can be skipped.
342
343       Schemes are usually Signing Schemes or Asymmetric  Encryption  Schemes.
344       Most signing schemes take a hash algorithm directly following the sign‐
345       ing scheme.  If the hash algorithm is missing, it defaults  to  sha256.
346       Some take no arguments, and some take multiple arguments.
347
348   Hash Optional Scheme Specifiers
349       These  scheme  specifiers are followed by a dash and a valid hash algo‐
350       rithm, For example: oaep-sha256.
351
352       • oaep
353
354       • ecdh
355
356       • rsassa
357
358       • rsapss
359
360       • ecdsa
361
362       • ecschnorr
363
364   Multiple Option Scheme Specifiers
365       This scheme specifier is followed by a count  (max  size  UINT16)  then
366       followed by a dash(-) and a valid hash algorithm.  * ecdaa For example,
367       ecdaa4-sha256.  If no count is specified, it defaults to 4.
368
369   No Option Scheme Specifiers
370       This scheme specifier takes NO arguments.  * rsaes
371
372   Symmetric Details Specifiers
373       This field is optional, and defaults based on the type of object  being
374       created  and it’s attributes.  Generally, any valid Symmetric specifier
375       from the Type Specifiers list should work.  If not specified, an  asym‐
376       metric objects symmetric details defaults to aes128cfb.
377
378   Examples
379   Create an rsa2048 key with an rsaes asymmetric encryption scheme
380       tpm2_create -C parent.ctx -G rsa2048:rsaes -u key.pub -r key.priv
381
382   Create  an  ecc256  key  with an ecdaa signing scheme with a count of 4 and
383       sha384 hash
384       /tpm2_create  -C  parent.ctx  -G  ecc256:ecdaa4-sha384  -u  key.pub  -r
385       key.priv cryptographic algorithms ALGORITHM.
386

Signature Format Specifiers

388       Format selection for the signature output file.  tss (the default) will
389       output a binary blob according to the TPM 2.0 specification and any po‐
390       tential  compiler padding.  The option plain will output the plain sig‐
391       nature data as defined by the used cryptographic algorithm.   signature
392       FORMAT.
393

COMMON OPTIONS

395       This  collection of options are common to many programs and provide in‐
396       formation that many users may expect.
397
398-h, --help=[man|no-man]: Display the tools manpage.  By  default,  it
399         attempts  to  invoke  the  manpager for the tool, however, on failure
400         will output a short tool summary.  This is the same behavior  if  the
401         “man”  option argument is specified, however if explicit “man” is re‐
402         quested, the tool will provide errors from man  on  stderr.   If  the
403         “no-man”  option  if  specified, or the manpager fails, the short op‐
404         tions will be output to stdout.
405
406         To successfully use the manpages feature requires the manpages to  be
407         installed or on MANPATH, See man(1) for more details.
408
409-v,  --version:  Display version information for this tool, supported
410         tctis and exit.
411
412-V, --verbose: Increase the information that the tool prints  to  the
413         console  during  its  execution.  When using this option the file and
414         line number are printed.
415
416-Q, --quiet: Silence normal tool output to stdout.
417
418-Z, --enable-errata: Enable the application of errata fixups.  Useful
419         if  an  errata fixup needs to be applied to commands sent to the TPM.
420         Defining the environment TPM2TOOLS_ENABLE_ERRATA is equivalent.   in‐
421         formation many users may expect.
422

TCTI Configuration

424       The  TCTI  or  “Transmission  Interface” is the communication mechanism
425       with the TPM.  TCTIs can be changed for communication with TPMs  across
426       different mediums.
427
428       To control the TCTI, the tools respect:
429
430       1. The command line option -T or --tcti
431
432       2. The environment variable: TPM2TOOLS_TCTI.
433
434       Note:  The  command  line option always overrides the environment vari‐
435       able.
436
437       The current known TCTIs are:
438
439       • tabrmd     -     The     resource     manager,     called      tabrmd
440         (https://github.com/tpm2-software/tpm2-abrmd).   Note that tabrmd and
441         abrmd as a tcti name are synonymous.
442
443       • mssim - Typically used for communicating to the TPM software  simula‐
444         tor.
445
446       • device - Used when talking directly to a TPM device file.
447
448       • none  - Do not initalize a connection with the TPM.  Some tools allow
449         for off-tpm options and thus support not using a TCTI.  Tools that do
450         not  support  it  will error when attempted to be used without a TCTI
451         connection.  Does not support ANY options and MUST  BE  presented  as
452         the exact text of “none”.
453
454       The  arguments  to  either  the  command line option or the environment
455       variable are in the form:
456
457       <tcti-name>:<tcti-option-config>
458
459       Specifying an empty string for  either  the  <tcti-name>  or  <tcti-op‐
460       tion-config> results in the default being used for that portion respec‐
461       tively.
462
463   TCTI Defaults
464       When a TCTI is not specified, the default TCTI is  searched  for  using
465       dlopen(3)  semantics.   The  tools  will  search for tabrmd, device and
466       mssim TCTIs IN THAT ORDER and USE THE FIRST ONE FOUND.  You  can  query
467       what TCTI will be chosen as the default by using the -v option to print
468       the version information.  The “default-tcti” key-value pair will  indi‐
469       cate which of the aforementioned TCTIs is the default.
470
471   Custom TCTIs
472       Any TCTI that implements the dynamic TCTI interface can be loaded.  The
473       tools internally use dlopen(3), and the raw tcti-name value is used for
474       the lookup.  Thus, this could be a path to the shared library, or a li‐
475       brary name as understood by dlopen(3) semantics.
476

TCTI OPTIONS

478       This collection of options are used to configure the various known TCTI
479       modules available:
480
481device: For the device TCTI, the TPM character device file for use by
482         the device TCTI can be specified.  The default is /dev/tpm0.
483
484         Example:   -T   device:/dev/tpm0   or   export    TPM2TOOLS_TCTI=“de‐
485         vice:/dev/tpm0”
486
487mssim:  For  the  mssim  TCTI, the domain name or IP address and port
488         number used by the simulator  can  be  specified.   The  default  are
489         127.0.0.1 and 2321.
490
491         Example:  -T  mssim:host=localhost,port=2321  or export TPM2TOOLS_TC‐
492         TI=“mssim:host=localhost,port=2321”
493
494abrmd: For the abrmd TCTI, the configuration string format is  a  se‐
495         ries  of  simple  key value pairs separated by a `,' character.  Each
496         key and value string are separated by a `=' character.
497
498         • TCTI abrmd supports two keys:
499
500           1. `bus_name' : The name of  the  tabrmd  service  on  the  bus  (a
501              string).
502
503           2. `bus_type' : The type of the dbus instance (a string) limited to
504              `session' and `system'.
505
506         Specify the tabrmd tcti name and a config string of  bus_name=com.ex‐
507         ample.FooBar:
508
509                \--tcti=tabrmd:bus_name=com.example.FooBar
510
511         Specify the default (abrmd) tcti and a config string of bus_type=ses‐
512         sion:
513
514                \--tcti:bus_type=session
515
516         NOTE: abrmd and tabrmd are synonymous.  the various known  TCTI  mod‐
517         ules.
518

EXAMPLES

520   Create an Attestation Key and make it persistent
521              tpm2_createek -c ek.handle -G rsa -u ek.pub
522              tpm2_createak -C ek.handle -c ak.ctx -u ak.pub -n ak.name
523              tpm2_evictcontrol -C o -c ak.ctx 0x81010002
524

Returns

526       Tools can return any of the following codes:
527
528       • 0 - Success.
529
530       • 1 - General non-specific error.
531
532       • 2 - Options handling error.
533
534       • 3 - Authentication error.
535
536       • 4 - TCTI related error.
537
538       • 5 - Non supported scheme.  Applicable to tpm2_testparams.
539

BUGS

541       Github Issues (https://github.com/tpm2-software/tpm2-tools/issues)
542

HELP

544       See the Mailing List (https://lists.01.org/mailman/listinfo/tpm2)
545
546
547
548tpm2-tools                                                    tpm2_createak(1)
Impressum