Project

General

Profile

Trusted Platform Module 2.0 » History » Version 30

Andreas Steffen, 19.02.2017 10:33

1 17 Andreas Steffen
h1. Trusted Platform Module 2.0
2 1 Andreas Steffen
3 6 Andreas Steffen
{{>toc}}
4 6 Andreas Steffen
5 2 Andreas Steffen
h2. Connect to a TPM 2.0 device
6 2 Andreas Steffen
7 5 Andreas Steffen
In order to connect to a TPM 2.0 hardware or firmware device, the TSS2 software stack developed by Intel is needed. Because the official Ubuntu *tpm2-tss* package is rather outdated (e.g. since version 0.98 the TCTI interface to the TPM 2.0 resource manager has changed several times), strongSwan is currently based on a recent version directly drawn from the TPM2-TSS git repository https://github.com/01org/TPM2.0-TSS. Avoid any TCTI interface incompatibilities by fetching the latest *tpm2-tools* version from https://github.com/01org/tpm2.0-tools as well.
8 1 Andreas Steffen
9 11 Andreas Steffen
Build and install both the *tpm2-tss* stack and the *tpm2.0-tools*, start the *tpm2-resourcemgr* as a service in the background and try to connect to the TPM 2.0 by listing e.g. the contents of the SHA-1 bank of PCR registers
10 1 Andreas Steffen
11 7 Andreas Steffen
   
12 7 Andreas Steffen
 tpm2_listpcrs -g 0x0004
13 3 Andreas Steffen
14 18 Andreas Steffen
<pre>
15 18 Andreas Steffen
Bank/Algorithm: TPM_ALG_SHA1(0x0004)
16 3 Andreas Steffen
PCR_00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
17 3 Andreas Steffen
PCR_01: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
18 3 Andreas Steffen
PCR_02: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
19 3 Andreas Steffen
PCR_03: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20 3 Andreas Steffen
PCR_04: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
21 3 Andreas Steffen
PCR_05: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
22 3 Andreas Steffen
PCR_06: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
23 3 Andreas Steffen
PCR_07: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
24 3 Andreas Steffen
PCR_08: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
25 3 Andreas Steffen
PCR_09: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
26 3 Andreas Steffen
PCR_10: a9 45 e7 0f 42 a2 79 f0 78 ca d4 64 60 39 39 da 9d 6a d1 a5
27 3 Andreas Steffen
PCR_11: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
28 3 Andreas Steffen
PCR_12: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
29 3 Andreas Steffen
PCR_13: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30 3 Andreas Steffen
PCR_14: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
31 3 Andreas Steffen
PCR_15: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
32 3 Andreas Steffen
PCR_16: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
33 3 Andreas Steffen
PCR_17: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
34 3 Andreas Steffen
PCR_18: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
35 3 Andreas Steffen
PCR_19: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
36 3 Andreas Steffen
PCR_20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
37 1 Andreas Steffen
PCR_21: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
38 1 Andreas Steffen
PCR_22: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
39 1 Andreas Steffen
PCR_23: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40 18 Andreas Steffen
</pre>
41 1 Andreas Steffen
42 7 Andreas Steffen
A manual showing all *tpm2-tools* functions with their arguments can be found "here":https://github.com/01org/tpm2.0-tools/blob/master/manual.
43 7 Andreas Steffen
44 7 Andreas Steffen
h2. TPM 2.0 Algorithm IDs
45 7 Andreas Steffen
46 8 Andreas Steffen
h3. Hash Algorithms
47 8 Andreas Steffen
48 7 Andreas Steffen
|0x0004 |SHA-1     |
49 7 Andreas Steffen
|0x000B |SHA-2_256 |
50 7 Andreas Steffen
|0x000C |SHA-2_384 |
51 1 Andreas Steffen
|0x000D |SHA-2_512 |
52 7 Andreas Steffen
53 28 Andreas Steffen
Currently available TPM 2.0 devices like the Infineon *Optiga SLB 9670 VQ2.0* hardware TPM or Intel's *PTT* firmware TPM integrated into the Management Engine starting with the 4th generation (Haswell) of the *Core* processor family, support the *SHA-1* and *SHA-2_256* algorithms.
54 1 Andreas Steffen
55 8 Andreas Steffen
h3. Public Key Types
56 8 Andreas Steffen
57 8 Andreas Steffen
|0x0001 |RSA |
58 8 Andreas Steffen
|0x0023 |ECC |
59 1 Andreas Steffen
60 22 Andreas Steffen
Currently RSA keys have a modulus size of 2048 bits and ECC keys are based on the 256 bit NIST curve.
61 22 Andreas Steffen
62 11 Andreas Steffen
h3. Signature Schemes
63 11 Andreas Steffen
64 11 Andreas Steffen
|0x0014 |RSASSA |
65 11 Andreas Steffen
|0x0016 |RSAPSS |
66 9 Andreas Steffen
|0x0018 |ECDSA  |
67 9 Andreas Steffen
                    
68 20 Andreas Steffen
h2. Derive a Persistent RSA Endorsement Key
69 1 Andreas Steffen
70 25 Andreas Steffen
The following tpm2-tools command derives a 2048 bit RSA Endorsement Key (EK) in a deterministic way from the secret _Endorsement Primary Seed_ *unique* to each TPM device and makes the key persistent in the non-volatile memory of the TPM under the object handle 0x81010001
71 11 Andreas Steffen
72 24 Andreas Steffen
 tpm2_getpubek -H 0x81010001 -g 0x0001 -f ek_rsa.pub
73 9 Andreas Steffen
74 27 Andreas Steffen
The EK public key stored in the ek_rsa.pub file is encoded in a TPM 2.0 proprietary format but the key can be exported from the TPM in the regular PKCS#1 format using the *pki* tool
75 9 Andreas Steffen
76 12 Andreas Steffen
 pki --pub --keyid 81010001 --outform pem > ek_rsa_pub.pem
77 9 Andreas Steffen
78 9 Andreas Steffen
The fingerprint of the RSA EK public key can be displayed with the command
79 9 Andreas Steffen
80 9 Andreas Steffen
 pki --print --type pub --in ek_rsa_pub.pem
81 9 Andreas Steffen
  pubkey:    RSA 2048 bits
82 9 Andreas Steffen
  keyid:     d1:f1:49:84:36:44:e6:8c:d2:a6:69:ee:fd:b5:7d:56:2f:39:ff:58
83 1 Andreas Steffen
  subjkey:   c1:1b:8e:f1:c7:f8:8a:1e:9a:dd:7e:82:2f:7a:a3:f5:c0:e2:4d:7d
84 1 Andreas Steffen
85 20 Andreas Steffen
h2. Generate a Persistent RSA Attestation Key
86 11 Andreas Steffen
87 12 Andreas Steffen
A 2048 bit RSA Attestation Key (AK) bound to the EK with handle 0x81010001 can be created and made persistent under the handle 0x81010002 with the following tpm2-tools command
88 1 Andreas Steffen
89 15 Andreas Steffen
 tpm2_getpubak -E 0x81010001 -g 0x0001 -D 0x000B -s 0x0014 -k 0x81010002 -f ak_rsa2.pub -n ak_rsa2.name
90 12 Andreas Steffen
91 12 Andreas Steffen
The AK public key can be exported in PKCS#1 format from the TPM using the *pki* tool
92 12 Andreas Steffen
93 12 Andreas Steffen
 pki --pub --keyid 81010002 --outform pem > ak_rsa_pub.pem
94 12 Andreas Steffen
95 12 Andreas Steffen
The fingerprint of the RSA AK public key can be displayed with the command
96 12 Andreas Steffen
97 12 Andreas Steffen
 pki --print --type pub --in ak_rsa_pub.pem
98 12 Andreas Steffen
  pubkey:    RSA 2048 bits
99 12 Andreas Steffen
  keyid:     71:21:f5:d4:7e:59:4a:88:16:ca:57:85:98:3d:36:a7:b1:d5:75:fa
100 12 Andreas Steffen
  subjkey:   f4:9e:85:7d:de:4e:67:f5:fb:87:03:98:67:3f:20:7c:f3:3f:2b:66
101 11 Andreas Steffen
102 20 Andreas Steffen
h2. Derive a Persistent ECC Endorsement Key
103 1 Andreas Steffen
104 25 Andreas Steffen
The following tpm2-tools command derives a 256 bit ECC Endorsement Key (EK) in a deterministic way from the secret _Endorsement Primary Seed_ *unique* to each TPM device and makes the key persistent in the non-volatile memory of the TPM under the object handle 0x81010003:
105 1 Andreas Steffen
106 24 Andreas Steffen
 tpm2_getpubek -H 0x81010003 -g 0x0023 -f ek_ecc.pub
107 9 Andreas Steffen
108 11 Andreas Steffen
The EK public key can be exported in PKCS#1 format from the TPM using the *pki* tool:
109 11 Andreas Steffen
110 11 Andreas Steffen
  pki --pub --keyid 81010003 > ek_ecc_pub.der
111 9 Andreas Steffen
112 9 Andreas Steffen
The fingerprint of the ECC EK public key can be displayed with the command
113 9 Andreas Steffen
114 10 Andreas Steffen
 pki --print --type pub --in ek_ecc_pub.der
115 9 Andreas Steffen
  pubkey:    ECDSA 256 bits
116 9 Andreas Steffen
  keyid:     7f:39:ca:e6:83:9b:a9:06:97:40:27:6a:e1:bf:8f:f5:9f:d3:a5:31
117 9 Andreas Steffen
  subjkey:   8b:43:4d:5e:5e:7b:ff:c2:54:4d:ef:88:cb:0c:7c:47:75:28:4d:09
118 9 Andreas Steffen
119 20 Andreas Steffen
h2. Generate a Persistent ECC Attestation Key
120 13 Andreas Steffen
121 13 Andreas Steffen
A 256 bit ECC Attestation Key (AK) bound to the EK with handle 0x81010003 can be created and made persistent under the handle 0x81010004 with the following tpm2-tools command
122 13 Andreas Steffen
123 15 Andreas Steffen
 tpm2_getpubak -E 0x81010003 -g 0x0023 -D 0x000B -s 0x0018 -k 0x81010004 -f ak_ecc4.pub -n ak_ecc4.name
124 13 Andreas Steffen
125 13 Andreas Steffen
The AK public key can be exported in PKCS#1 format from the TPM using the *pki* tool
126 13 Andreas Steffen
127 14 Andreas Steffen
 pki --pub --keyid 81010004 > ak_ecc_pub.der
128 13 Andreas Steffen
129 13 Andreas Steffen
The fingerprint of the RSA AK public key can be displayed with the command
130 13 Andreas Steffen
131 14 Andreas Steffen
 pki --print --type pub --in ak_ecc_pub.der
132 1 Andreas Steffen
  pubkey:    ECDSA 256 bits
133 1 Andreas Steffen
  keyid:     71:49:7c:42:41:e7:c6:81:bc:31:73:f0:0f:7e:4a:e1:2d:53:00:38
134 1 Andreas Steffen
  subjkey:   c7:0e:63:f8:7f:6f:f6:55:00:e5:05:7f:5a:3e:6b:6c:e7:d2:d5:13
135 15 Andreas Steffen
136 20 Andreas Steffen
h2. Generate Another ECC Attestation Key
137 15 Andreas Steffen
138 15 Andreas Steffen
Multiple AK keys bound to a common EK key can be generated
139 15 Andreas Steffen
140 15 Andreas Steffen
 tpm2_getpubak -E 0x81010003 -g 0x0023 -D 0x000B -s 0x0018 -k 0x81010005 -f ak_ecc5.pub -n ak_ecc5.name
141 15 Andreas Steffen
142 15 Andreas Steffen
The AK public key can be exported in PKCS#1 format from the TPM using the *pki* tool
143 15 Andreas Steffen
144 15 Andreas Steffen
 pki --pub --keyid 81010005 > ak_ecc5_pub.der
145 15 Andreas Steffen
146 15 Andreas Steffen
The fingerprint of the second ECC AK public key can be displayed with the command
147 15 Andreas Steffen
148 15 Andreas Steffen
 pki --print --type pub --in ak_ecc5_pub.der
149 15 Andreas Steffen
  pubkey:    ECDSA 256 bits
150 15 Andreas Steffen
  keyid:     c4:b4:9c:95:27:9e:ce:81:2f:98:42:c8:1b:f0:54:ff:d4:d1:24:34
151 15 Andreas Steffen
  subjkey:   cf:44:f4:f7:9d:97:09:ad:b1:09:3a:8e:6f:23:eb:9f:2c:35:94:c9
152 15 Andreas Steffen
153 19 Andreas Steffen
h2. Remove a Persistent Key Object
154 15 Andreas Steffen
155 15 Andreas Steffen
Since the non-volatile memory of the TPM is limited any persistent key object can be removed to free storage space.
156 15 Andreas Steffen
The following tpm2-tools command removes the ECC AK key with persistent handle 0x81010005
157 15 Andreas Steffen
158 1 Andreas Steffen
 tpm2_evictcontrol -A o -H 0x81010005 -S 0x81010005
159 18 Andreas Steffen
160 18 Andreas Steffen
h2. List Persistent Objects
161 18 Andreas Steffen
162 18 Andreas Steffen
The following tpm2-tools command lists all persistent objects stored by the TPM in non-volatile memory
163 18 Andreas Steffen
164 18 Andreas Steffen
 tpm2_listpersistent
165 18 Andreas Steffen
166 18 Andreas Steffen
<pre>
167 18 Andreas Steffen
6 persistent objects defined.
168 18 Andreas Steffen
169 18 Andreas Steffen
0. Persistent handle: 0x81000001
170 18 Andreas Steffen
{
171 18 Andreas Steffen
        Type: 0x23
172 18 Andreas Steffen
        Hash algorithm(nameAlg): 0xb
173 18 Andreas Steffen
        Attributes: 0x30072
174 18 Andreas Steffen
}
175 18 Andreas Steffen
1. Persistent handle: 0x81000002
176 18 Andreas Steffen
{
177 18 Andreas Steffen
        Type: 0x23
178 18 Andreas Steffen
        Hash algorithm(nameAlg): 0xb
179 18 Andreas Steffen
        Attributes: 0x60072
180 18 Andreas Steffen
}
181 18 Andreas Steffen
2. Persistent handle: 0x81010001
182 18 Andreas Steffen
{
183 18 Andreas Steffen
        Type: 0x1
184 18 Andreas Steffen
        Hash algorithm(nameAlg): 0xb
185 18 Andreas Steffen
        Attributes: 0x300b2
186 18 Andreas Steffen
}
187 18 Andreas Steffen
3. Persistent handle: 0x81010002
188 18 Andreas Steffen
{
189 18 Andreas Steffen
        Type: 0x1
190 18 Andreas Steffen
        Hash algorithm(nameAlg): 0xb
191 18 Andreas Steffen
        Attributes: 0x50072
192 18 Andreas Steffen
}
193 18 Andreas Steffen
4. Persistent handle: 0x81010003
194 18 Andreas Steffen
{
195 18 Andreas Steffen
        Type: 0x23
196 18 Andreas Steffen
        Hash algorithm(nameAlg): 0xb
197 18 Andreas Steffen
        Attributes: 0x300b2
198 18 Andreas Steffen
}
199 18 Andreas Steffen
5. Persistent handle: 0x81010004
200 18 Andreas Steffen
{
201 18 Andreas Steffen
        Type: 0x23
202 18 Andreas Steffen
        Hash algorithm(nameAlg): 0xb
203 18 Andreas Steffen
        Attributes: 0x50072
204 18 Andreas Steffen
}
205 18 Andreas Steffen
</pre>
206 13 Andreas Steffen
207 30 Andreas Steffen
h2. Configure TPM Private Key Access via VICI Interface
208 1 Andreas Steffen
209 23 Andreas Steffen
Configuration of TPM private key access as tokens in the secrets section of *swanctl.conf*
210 1 Andreas Steffen
211 7 Andreas Steffen
 secrets {
212 1 Andreas Steffen
    token_ak_rsa {
213 7 Andreas Steffen
       handle = 81010002
214 1 Andreas Steffen
    }
215 1 Andreas Steffen
    token_ak_ecc {
216 7 Andreas Steffen
       handle = 81010004
217 1 Andreas Steffen
    }
218 1 Andreas Steffen
}
219 30 Andreas Steffen
220 30 Andreas Steffen
h2. Define IPsec Connection with RSA AK Client Key
221 30 Andreas Steffen
222 30 Andreas Steffen
This connection configuration in *swanctl.conf* uses the RSA AK certificate for client authentication
223 30 Andreas Steffen
<pre>
224 30 Andreas Steffen
connections {
225 30 Andreas Steffen
   rsa {
226 30 Andreas Steffen
      local_addrs  = 10.10.0.105
227 30 Andreas Steffen
      remote_addrs = 10.10.0.104
228 30 Andreas Steffen
229 30 Andreas Steffen
      local {
230 30 Andreas Steffen
         auth = pubkey 
231 30 Andreas Steffen
         certs = raspi5_ak_rsa_Cert.der
232 30 Andreas Steffen
      }
233 30 Andreas Steffen
      remote {
234 30 Andreas Steffen
         auth = pubkey 
235 30 Andreas Steffen
         id = raspi4.example.com
236 30 Andreas Steffen
      }
237 30 Andreas Steffen
      children {
238 30 Andreas Steffen
         rsa {
239 30 Andreas Steffen
            mode = transport
240 30 Andreas Steffen
            esp_proposals = aes128-sha256-curve25519
241 30 Andreas Steffen
         }
242 30 Andreas Steffen
      }
243 30 Andreas Steffen
      version = 2
244 30 Andreas Steffen
      proposals = aes128-sha256-curve25519
245 30 Andreas Steffen
   }
246 30 Andreas Steffen
}
247 30 Andreas Steffen
</pre>
248 30 Andreas Steffen
249 30 Andreas Steffen
h2. Define IPsec Connection with ECC AK Client Key
250 30 Andreas Steffen
251 30 Andreas Steffen
This connection configuration in *swanctl.conf* uses the ECC AK certificate for client authentication
252 30 Andreas Steffen
<pre>
253 30 Andreas Steffen
connections {
254 30 Andreas Steffen
   ecc {
255 30 Andreas Steffen
      local_addrs  = 10.10.0.105
256 30 Andreas Steffen
      remote_addrs = 10.10.0.104
257 30 Andreas Steffen
258 30 Andreas Steffen
      local {
259 30 Andreas Steffen
         auth = pubkey
260 30 Andreas Steffen
         certs = raspi5_ak_ecc_Cert.der
261 30 Andreas Steffen
      }
262 30 Andreas Steffen
      remote {
263 30 Andreas Steffen
         auth = pubkey
264 30 Andreas Steffen
         id = raspi4.example.com
265 30 Andreas Steffen
      }
266 30 Andreas Steffen
      children {
267 30 Andreas Steffen
         ecc {
268 30 Andreas Steffen
            mode = transport
269 30 Andreas Steffen
            esp_proposals = aes128-sha256-curve25519
270 30 Andreas Steffen
         }
271 30 Andreas Steffen
      }
272 30 Andreas Steffen
      version = 2
273 30 Andreas Steffen
      proposals = aes128-sha256-curve25519
274 30 Andreas Steffen
   }
275 30 Andreas Steffen
}
276 30 Andreas Steffen
</pre>
277 29 Andreas Steffen
278 29 Andreas Steffen
h2. Starting the strongSwan Daemon
279 29 Andreas Steffen
280 29 Andreas Steffen
<pre>
281 29 Andreas Steffen
systemctl start strongswan-swanctl
282 29 Andreas Steffen
</pre>
283 29 Andreas Steffen
284 29 Andreas Steffen
<pre>
285 29 Andreas Steffen
Feb 19 09:35:14 raspi5 systemd[1]: Starting strongSwan IPsec IKEv1/IKEv2 daemon using swanctl...
286 29 Andreas Steffen
</pre>
287 29 Andreas Steffen
288 29 Andreas Steffen
The RSA AK private key is attached via the TPM 2.0 resource manager
289 29 Andreas Steffen
<pre>
290 29 Andreas Steffen
Feb 19 09:35:14 raspi5 resourcemgr[531]: Accept socket:  0xa
291 29 Andreas Steffen
Feb 19 09:35:14 raspi5 resourcemgr[531]: Resource Manager Other CMD Server accepted client
292 29 Andreas Steffen
Feb 19 09:35:14 raspi5 resourcemgr[531]: Accept socket:  0xb
293 29 Andreas Steffen
Feb 19 09:35:14 raspi5 resourcemgr[531]: Resource Manager TPM CMD Server accepted client
294 29 Andreas Steffen
Feb 19 09:35:14 raspi5 charon-systemd[20831]: TPM 2.0 - algorithms: RSA SHA1 HMAC AES KEYEDHASH XOR SHA256 RSASSA RSAES RSAPSS OAEP ECDSA ECDH SM2 KDF1_SP800_56A KDF1_SP800_108 ECC SYMCIPHER CFB
295 29 Andreas Steffen
Feb 19 09:35:15 raspi5 charon-systemd[20831]: TPM 2.0 - ECC curves: NIST_P256 BN_P256
296 29 Andreas Steffen
Feb 19 09:35:15 raspi5 charon-systemd[20831]: TPM 2.0 via TSS2 available
297 29 Andreas Steffen
Feb 19 09:35:15 raspi5 charon-systemd[20831]: AIK signature algorithm is RSASSA with SHA256 hash
298 29 Andreas Steffen
</pre>
299 29 Andreas Steffen
300 29 Andreas Steffen
The ECC AK private key is attached via the TPM 2.0 resource manager
301 29 Andreas Steffen
<pre>
302 29 Andreas Steffen
Feb 19 09:35:15 raspi5 resourcemgr[531]: Accept socket:  0x6
303 29 Andreas Steffen
Feb 19 09:35:15 raspi5 resourcemgr[531]: Resource Manager Other CMD Server accepted client
304 29 Andreas Steffen
Feb 19 09:35:15 raspi5 resourcemgr[531]: Accept socket:  0x7
305 29 Andreas Steffen
Feb 19 09:35:15 raspi5 resourcemgr[531]: Resource Manager TPM CMD Server accepted client
306 29 Andreas Steffen
Feb 19 09:35:15 raspi5 charon-systemd[20831]: TPM 2.0 - algorithms: RSA SHA1 HMAC AES KEYEDHASH XOR SHA256 RSASSA RSAES RSAPSS OAEP ECDSA ECDH SM2 KDF1_SP800_56A KDF1_SP800_108 ECC SYMCIPHER CFB
307 29 Andreas Steffen
Feb 19 09:35:15 raspi5 charon-systemd[20831]: TPM 2.0 - ECC curves: NIST_P256 BN_P256
308 29 Andreas Steffen
Feb 19 09:35:15 raspi5 charon-systemd[20831]: TPM 2.0 via TSS2 available
309 29 Andreas Steffen
Feb 19 09:35:15 raspi5 charon-systemd[20831]: AIK signature algorithm is ECDSA with SHA256 hash
310 29 Andreas Steffen
</pre>
311 29 Andreas Steffen
312 29 Andreas Steffen
The *swanctl* command line tool loads the RSA and ECC AK certificates as well as the demoCA root certificate and connects to the RSA and ECC private keys residing in the TPM
313 29 Andreas Steffen
<pre>
314 29 Andreas Steffen
Feb 19 09:35:15 raspi5 swanctl[20849]: loaded certificate from '/etc/swanctl/x509/raspi5_ak_rsa_Cert.der'
315 29 Andreas Steffen
Feb 19 09:35:15 raspi5 swanctl[20849]: loaded certificate from '/etc/swanctl/x509/raspi5_ak_ecc_Cert.der'
316 29 Andreas Steffen
Feb 19 09:35:15 raspi5 swanctl[20849]: loaded certificate from '/etc/swanctl/x509ca/demoCaCert.pem'
317 29 Andreas Steffen
Feb 19 09:35:15 raspi5 swanctl[20849]: loaded key token_ak_rsa from token [keyid: f49e857dde4e67f5fb870398673f207cf33f2b66]
318 29 Andreas Steffen
Feb 19 09:35:15 raspi5 swanctl[20849]: loaded key token_ak_ecc from token [keyid: c70e63f87f6ff65500e5057f5a3e6b6ce7d2d513]
319 29 Andreas Steffen
Feb 19 09:35:15 raspi5 swanctl[20849]: loaded connection 'rsa'
320 29 Andreas Steffen
Feb 19 09:35:15 raspi5 swanctl[20849]: loaded connection 'ecc'
321 29 Andreas Steffen
Feb 19 09:35:15 raspi5 swanctl[20849]: successfully loaded 2 connections, 0 unloaded
322 29 Andreas Steffen
</pre>
323 29 Andreas Steffen
324 29 Andreas Steffen
<pre>
325 29 Andreas Steffen
Feb 19 09:35:15 raspi5 systemd[1]: Started strongSwan IPsec IKEv1/IKEv2 daemon using swanctl.
326 29 Andreas Steffen
</pre>
327 29 Andreas Steffen
</pre>