From 0ac29cb0e2df94d433e0e323d192df60f4c2639b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1=20autouploader?= Date: Sun, 28 Nov 2021 00:41:42 +0000 Subject: [PATCH] Manpage update by job 637278 --- tzpfms.pdf | Bin 64735 -> 70200 bytes tzpfms.ps | 624 ++++++++++++++++++++---------------- zfs-tpm-list.8 | 4 +- zfs-tpm-list.8.html | 4 +- zfs-tpm1x-change-key.8 | 28 +- zfs-tpm1x-change-key.8.html | 30 +- zfs-tpm1x-clear-key.8 | 4 +- zfs-tpm1x-clear-key.8.html | 4 +- zfs-tpm1x-load-key.8 | 4 +- zfs-tpm1x-load-key.8.html | 4 +- zfs-tpm2-change-key.8 | 79 ++++- zfs-tpm2-change-key.8.html | 74 ++++- zfs-tpm2-clear-key.8 | 7 +- zfs-tpm2-clear-key.8.html | 7 +- zfs-tpm2-load-key.8 | 4 +- zfs-tpm2-load-key.8.html | 4 +- 16 files changed, 552 insertions(+), 329 deletions(-) diff --git a/tzpfms.pdf b/tzpfms.pdf index 30ede75261ba89dbb492effa4fdf3f15a1a5d8da..7c7f941de182900c261a55e6af3c8163e83d3bac 100644 GIT binary patch delta 55855 zcmZU)<5%Dh)URDlwrx$eZQHhO*EicW*-bVk+qUhR>?S|Id!6T;H}|{!2kf=>{#^Uo zyRSdmeuLL@!GMaVaKjK{`^94$qfZUP$oAo@ubjlJ@9wYW*RuG~H#x#c{b0SeT63~P z(>W)m2Hn(vL2VWIW1#(o$4(ftOfo}49BBl4+BSsY^jqv9<6fK(0HI*nXihnYHwIER zIZ(T2>x5oWr_&;lK?GB#jqMURcd7+fibWd_@wrfsjOmhKrL_qSUs{fPlfT>QK*4@< z;qvP0D*T#6UAA)T4fyQH+|?d~fcvZX{o>+_+30E6n-B9qeetd1uzona-s-6GX4D|i zganr+lXenq$*pTQ8=PoKV-hpCehC=P)&>t>U>%(9jVE9+etY12xV^&p@=osL}uFdIQ76(P;4(;K~++{@%I zL2}Q(=Qv~rE@s6PrA8sChrTj*Jh#r8f7o=6G3U96I~Sev5R%Hj9+UpOKY# zoy+jfe>9&PlC38eb0An)Mu6G?@7MFE<%cS1Bej3a8L=USZ7P+XH$EmbCz(_CU%^d+ z4sUh8-Wz0R^EE)*9ZCw0xq)Z

#uHBo&7B^qPwi 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

|#4xrALeupd^2ryzP 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 A+yDRo delta 50419 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.666 474 Q F0 (tarta-zoot/home TPM2)102 654 R 6(unavailable yes)36 F($)102 678 Q F2 1.666(zfs-tpm-list \255ra)6 F F3(tarta-zoot)6 E F4 72(NAME BACK-END)102 690 R 18(KEYSTATUS COHERENT)12 F 36(tarta-zoot TPM1.X)102 702 R 18 -(available yes)24 F F0(tzpfms 0.1-23)72 750 Q(No)138.745 E -.15(ve)-.15 -G(mber 25, 2021).15 E(1)189.295 E 0 Cg EP +(available yes)24 F F0(tzpfms 0.1-27)72 750 Q(No)138.745 E -.15(ve)-.15 +G(mber 28, 2021).15 E(1)189.295 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -329,8 +329,8 @@ E(ers)-.1 E F3(REPOR)72 300 Q 1.666(TING B)-.4 F(UGS)-.1 E (https://todo.sr)102 312 Q(.ht/~nabijaczleweli/tzpfms)-1 E F1 (~nabijaczleweli/tzpfms@lists.sr.ht)102 330 Q F0 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F3(https://lists.sr)2.5 E -(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-23)72 750 Q(No) -138.745 E -.15(ve)-.15 G(mber 25, 2021).15 E(2)189.295 E 0 Cg EP +(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-27)72 750 Q(No) +138.745 E -.15(ve)-.15 G(mber 28, 2021).15 E(2)189.295 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -342,10 +342,11 @@ BP 108 Q F0 2.5<8a63>2.5 G(hange ZFS dataset k)-2.5 E .3 -.15(ey t)-.1 H 2.5(oo).15 G(ne stored on the TPM)-2.5 E F1(SYNOPSIS)72 132 Q F2 (zfs-tpm1x-change-key)102 144 Q F0([)3.333 E F22.499 E/F3 10 -/Courier-Oblique@0 SF(backup-file)6 E F0(]).833 E F3(dataset)2.5 E F1 -(DESCRIPTION)72 168 Q F0 4.76 -.8(To n)102 180 T 3.16(ormalise the).8 F -F3(dataset)5.66 E F0(,)A F2(zfs-tpm1x-change-key)5.66 E F0 3.16 -(will open its encryption root in its stead.)5.66 F F2 +/Courier-Oblique@0 SF(backup-file)6 E F0 3.333(][).833 G F2-.834 E +F3(PCR)6 E F0([)A F2(,)A F3(PCR)A F0 1.666(]...)C(])-.833 E F3(dataset) +2.5 E F1(DESCRIPTION)72 168 Q F0 4.76 -.8(To n)102 180 T 3.16 +(ormalise the).8 F F3(dataset)5.66 E F0(,)A F2(zfs-tpm1x-change-key)5.66 +E F0 3.16(will open its encryption root in its stead.)5.66 F F2 (zfs-tpm1x-change-key)102 192 Q F0(will)3.264 E/F4 10/Times-Italic@0 SF (ne)3.264 E(ver)-.15 E F0 .764(create or destro)3.264 F 3.264(ye)-.1 G .764(ncryption roots; use)-3.264 F/F5 10/Courier@0 SF(zfs-change-key) @@ -377,11 +378,11 @@ F F1(TPM1.X)4.731 E F0(-back-ended)A F2(tzpfms)4.731 E F0 3.897 (zfs-tpm1x-clear-key)2.5 E F0 -.834(\(8\) \) .)B F5(tzpfms.key)102 396 Q F0 .334(is a colon-separated pair of he)2.834 F .333 (xadecimal-string \(i.e. "4F7730" for "Ow0"\) blobs; the \214rst one) --.15 F .676(represents the RSA k)102 408 R .976 -.15(ey p)-.1 H .676 -(rotecting the blob, and it is protected with either the passw).15 F -.676(ord, if pro)-.1 F .677(vided, or the)-.15 F .236(SHA1 constant)102 -420 R F5(CE4CF677875B5EB8993591D5A9AF1ED24A3A8736)2.736 E F0 2.736(;t)C -.236(he second represents the sealed)-2.736 F 11.923 +-.15 F .362(represents the RSA k)102 408 R .662 -.15(ey p)-.1 H .362(ro\ +tecting the blob, and it is protected with either the passphrase, if pr\ +o).15 F .363(vided, or the)-.15 F .236(SHA1 constant)102 420 R F5 +(CE4CF677875B5EB8993591D5A9AF1ED24A3A8736)2.736 E F0 2.736(;t)C .236 +(he second represents the sealed)-2.736 F 11.923 (object containing the wrapping k)102 432 R -.15(ey)-.1 G 14.424(,a)-.5 G 11.924(nd is protected with the SHA1 constant)-14.424 F F5 (B9EE715DBE4B243FAA81EA04306E063710383E35)102 444 Q F0 7.438(.T)C 2.438 @@ -398,86 +399,102 @@ G .117(rror occurred, best ef)-2.617 F .117 (ention into the standard error stream.)-.15 E 3.911<418c>102 516 S 1.411(nal v)-3.911 F 1.411(eri\214cation should be made by running)-.15 F F2 3.077(zfs-tpm1x-load-key \255n)3.911 F F3(dataset)7.411 E F0 6.411 -(.I)C 3.911(ft)-6.411 G 1.412(hat com-)-3.911 F 2.176 -(mand succeeds, all is well, b)102 528 R 2.175 -(ut otherwise the dataset can be manually rolled back to a passw)-.2 F -2.175(ord with)-.1 F F2(zfs-tpm1x-clear-key)102 540 Q F3(dataset)12.878 -E F0 1.666(\(o)11.044 G 7.678 -.4(r, i)-1.666 H 9.378(ft).4 G 6.878 -(hat f)-9.378 F 6.878(ails to w)-.1 F(ork,)-.1 E F2 6.879 -(zfs change-key)9.378 F14.545 E F5(keyformat=passphrase)102 552 Q -F3(dataset)6 E F0 -3.332 1.666(\), a)1.666 H(nd you are hereby ask) --1.666 E(ed to report a b)-.1 E(ug, please.)-.2 E F2 -(zfs-tpm1x-clear-key)102 570 Q F3(dataset)6 E F0 -(can be used to clear the properties and go back to using a passw)2.5 E -(ord.)-.1 E F1(OPTIONS)72 594 Q F2103.666 606 Q F3(backup-file)6 E -F0(Sa)191 618 Q .806 -.15(ve a b)-.2 H .506(ack-up of the k).15 F .805 --.15(ey t)-.1 H(o).15 E F3(backup-file)3.005 E F0 3.005(,w)C .505 -(hich must not e)-3.005 F .505(xist beforehand.)-.15 F(This)5.505 E -(back-up)191 630 Q F4(must)3.181 E F0 .681(be stored securely)3.181 F -3.181(,o)-.65 G -.25(ff)-3.181 G 3.181(-site. In).25 F .682 -(case of a catastrophic e)3.181 F -.15(ve)-.25 G .682(nt, the k).15 F -.982 -.15(ey c)-.1 H(an).15 E(be loaded by running)191 642 Q F2 -(zfs load-key)221 654 Q F3(dataset)6 E F5(<)6 E F3(backup-file)6 E F1 -(ENVIR)72 678 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F0(tzpfms 0.1-23) -72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 25, 2021).15 E(3)189.295 E 0 -Cg EP +(.I)C 3.911(ft)-6.411 G 1.412(hat com-)-3.911 F 1.843 +(mand succeeds, all is well, b)102 528 R 1.843(ut otherwise the dataset\ + can be manually rolled back to a passphrase with)-.2 F F2 +(zfs-tpm1x-clear-key)102 540 Q F3(dataset)12.878 E F0 1.666(\(o)11.044 G +7.678 -.4(r, i)-1.666 H 9.378(ft).4 G 6.878(hat f)-9.378 F 6.878 +(ails to w)-.1 F(ork,)-.1 E F2 6.879(zfs change-key)9.378 F14.545 +E F5(keyformat=passphrase)102 552 Q F3(dataset)6 E F0 -3.332 1.666 +(\), a)1.666 H(nd you are hereby ask)-1.666 E(ed to report a b)-.1 E +(ug, please.)-.2 E F2(zfs-tpm1x-clear-key)102 570 Q F3(dataset)9.23 E F0 +3.23(can be used to clear the properties and go back to using a)5.73 F +(passphrase.)102 582 Q F1(OPTIONS)72 606 Q F2103.666 618 Q F3 +(backup-file)6 E F0(Sa)191 630 Q .805 -.15(ve a b)-.2 H .505 +(ack-up of the k).15 F .805 -.15(ey t)-.1 H(o).15 E F3(backup-file)3.005 +E F0 3.005(,w)C .506(hich must not e)-3.005 F .506(xist beforehand.)-.15 +F(This)5.506 E(back-up)191 642 Q F4(must)3.182 E F0 .682 +(be stored securely)3.182 F 3.182(,o)-.65 G -.25(ff)-3.182 G 3.182 +(-site. In).25 F .681(case of a catastrophic e)3.181 F -.15(ve)-.25 G +.681(nt, the k).15 F .981 -.15(ey c)-.1 H(an).15 E(be loaded by running) +191 654 Q F2(zfs load-key)221 666 Q F3(dataset)6 E F5(<)6 E F3 +(backup-file)6 E F0(tzpfms 0.1-27)72 750 Q(No)138.745 E -.15(ve)-.15 G +(mber 28, 2021).15 E(3)189.295 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.834(ZFS-TPM1X-CHANGE-KEY \(8\))72 48 R (System Manager')46.109 E 2.5(sM)-.55 G 41.109 -(anual ZFS-TPM1X-CHANGE-KEY)-2.5 F(\(8\))1.666 E/F1 10/Courier@0 SF -(TZPFMS_PASSPHRASE_HELPER)102 96 Q F0 .466(By def)143 108 R .466(ault, \ -passphrases are prompted for and read in on the standard output and inp\ -ut streams.)-.1 F(If)5.465 E F1(TZPFMS_PASSPHRASE_HELPER)143 120 Q F0 -.516(is set and nonempty)3.016 F 3.016(,i)-.65 G 3.016(tw)-3.016 G .517 -(ill be run via)-3.016 F F1(/bin/)3.017 E/F2 10/Courier-Bold@0 SF 2.183 -(sh \255c)B F0 .517(to pro-)3.017 F(vide each passphrase, instead.)143 -132 Q .189(The standard output stream of the helper is tied to an anon) -143 150 R .188(ymous \214le and used in its entirety as the)-.15 F -(passphrase, e)143 162 Q(xcept for a trailing ne)-.15 E(w-line, if an) --.25 E 3.8 -.65(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F1($1)155 -174 Q F0(Pre-formatted noun phrase with all the information belo)172 174 -Q 1.3 -.65(w, f)-.25 H(or use as a prompt).65 E F1($2)155 186 Q F0 -(Either the dataset name or the element of the TPM hierarch)172 186 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F1($3)155 198 Q F0("ne)172 198 Q +(anual ZFS-TPM1X-CHANGE-KEY)-2.5 F(\(8\))1.666 E/F1 10/Courier-Bold@0 SF +103.666 96 Q/F2 10/Courier-Oblique@0 SF(PCR)6 E F0([)A F1(,)A F2 +(PCR)A F0 1.666(]...)C .42(Bind the k)191 96 R .72 -.15(ey t)-.1 H 2.92 +(os).15 G .421(pace- or comma-separated)-2.92 F F2(PCR)2.921 E F0 2.921 +(s\212i)C 2.921(ft)-2.921 G(he)-2.921 E 2.921(yc)-.15 G .421 +(hange, the wrapping k)-2.921 F -.15(ey)-.1 G .807 +(will not be able to be unsealed.)191 108 R .807 +(The minimum amount of PCRs for a PC TPM is)5.807 F/F3 10/Times-Bold@0 +SF(24)3.307 E F0 1.666(\(n)192.666 120 S(umbered)-1.666 E F3(0)2.5 E F0 +(..)A F3(23)A F0 -.832 1.666(\). F)1.666 H +(or most, this is also the maximum.)-1.816 E F3(ENVIR)72 144 Q 1.666 +(ONMENT V)-.3 F(ARIABLES)-1.35 E/F4 10/Courier@0 SF +(TZPFMS_PASSPHRASE_HELPER)102 156 Q F0 .465(By def)143 168 R .466(ault,\ + passphrases are prompted for and read in on the standard output and in\ +put streams.)-.1 F(If)5.466 E F4(TZPFMS_PASSPHRASE_HELPER)143 180 Q F0 +.517(is set and nonempty)3.017 F 3.017(,i)-.65 G 3.017(tw)-3.017 G .516 +(ill be run via)-3.017 F F4(/bin/)3.016 E F1 2.182(sh \255c)B F0 .516 +(to pro-)3.016 F(vide each passphrase, instead.)143 192 Q .188 +(The standard output stream of the helper is tied to an anon)143 210 R +.189(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) +143 222 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 +(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)155 234 Q F0 +(Pre-formatted noun phrase with all the information belo)172 234 Q 1.3 +-.65(w, f)-.25 H(or use as a prompt).65 E F4($2)155 246 Q F0 +(Either the dataset name or the element of the TPM hierarch)172 246 Q +2.5(yb)-.05 G(eing prompted for)-2.5 E F4($3)155 258 Q F0("ne)172 258 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) --2.5 E F1($4)155 210 Q F0("ag)172 210 Q(ain" if it')-.05 E 2.5(st)-.55 G +-2.5 E F4($4)155 270 Q F0("ag)172 270 Q(ain" if it')-.05 E 2.5(st)-.55 G (he second prompt for that passphrase, otherwise blank)-2.5 E .181 -(If the helper doesn')143 228 R 2.681(te)-.18 G 1.847(xist \()-2.831 F -.181(the shell e)1.666 F .181(xits with)-.15 F/F3 10/Times-Bold@0 SF -(127)2.681 E F0 -3.151 1.666(\), a d)1.666 H .181 -(iagnostic is issued and the normal prompt)-1.666 F(is used as f)143 240 -Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 G -(ther reason, the prompting is aborted.)-2.5 E F3 1.666 -(TPM1.X back-end con\214guration)72 264 R .625(TPM selection)84 276 R F0 -(The)102 288 Q F2(tzpfms)2.768 E F0 .267(suite connects to a local)2.767 -F F1(tcsd)2.767 E F0 .267(\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E -F1(localhost:30003)2.767 E F0 4.433(\)b)1.666 G 2.767(yd)-4.433 G(ef) --2.767 E 2.767(ault. Use)-.1 F .267(the en-)2.767 F(vironment v)102 300 -Q(ariable)-.25 E F1(TZPFMS_TPM1X)2.5 E F0 -(to specify a remote TCS hostname.)2.5 E .391(The T)102 318 R(rouSerS) --.35 E F1(tcsd)2.891 E F0 .391(\(8\) daemon will try)B F1(/dev/tpm0) -2.892 E F0 2.892(,t)C(hen)-2.892 E F1(/udev/tpm0)2.892 E F0 2.892(,t)C -(hen)-2.892 E F1(/dev/tpm)2.892 E F0 2.892(;b)C 2.892(yo)-2.892 G(ccup) --2.892 E(ying)-.1 E(one of the earlier ones with, for e)102 330 Q +(If the helper doesn')143 288 R 2.681(te)-.18 G 1.847(xist \()-2.831 F +.181(the shell e)1.666 F .181(xits with)-.15 F F3(127)2.681 E F0 -3.151 +1.666(\), a d)1.666 H .181(iagnostic is issued and the normal prompt) +-1.666 F(is used as f)143 300 Q 2.5(all-back. If)-.1 F(it f)2.5 E +(ails for an)-.1 E 2.5(yo)-.15 G(ther reason, the prompting is aborted.) +-2.5 E F3 1.666(TPM1.X back-end con\214guration)72 324 R .625 +(TPM selection)84 336 R F0(The)102 348 Q F1(tzpfms)2.767 E F0 .267 +(suite connects to a local)2.767 F F4(tcsd)2.767 E F0 .267 +(\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E F4(localhost:30003)2.767 E +F0 4.433(\)b)1.666 G 2.767(yd)-4.433 G(ef)-2.767 E 2.767(ault. Use)-.1 F +.268(the en-)2.767 F(vironment v)102 360 Q(ariable)-.25 E F4 +(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .392 +(The T)102 378 R(rouSerS)-.35 E F4(tcsd)2.892 E F0 .392 +(\(8\) daemon will try)B F4(/dev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E +F4(/udev/tpm0)2.892 E F0 2.891(,t)C(hen)-2.891 E F4(/dev/tpm)2.891 E F0 +2.891(;b)C 2.891(yo)-2.891 G(ccup)-2.891 E(ying)-.1 E +(one of the earlier ones with, for e)102 390 Q (xample, shell redirection, a later one can be selected.)-.15 E F3 .625 -(See also)84 354 R F0(The T)102 366 Q(rouSerS project page at)-.35 E F3 +(See also)84 414 R F0(The T)102 426 Q(rouSerS project page at)-.35 E F3 (https://sour)2.5 E(cef)-.18 E(or)-.25 E(ge.net/pr)-.1 E(ojects/tr)-.18 -E(ousers)-.18 E F0(.)A 5.109(The TPM 1.2 main speci\214cation inde)102 -384 R 7.608(xa)-.15 G(t)-7.608 E F3(https://trustedcomputinggr)7.608 E +E(ousers)-.18 E F0(.)A 5.108(The TPM 1.2 main speci\214cation inde)102 +444 R 7.609(xa)-.15 G(t)-7.609 E F3(https://trustedcomputinggr)7.609 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E -(speci\214cation)102 396 Q F0(.)A F3 1.666(SPECIAL THANKS)72 420 R F0 -1.6 -.8(To a)102 432 T(ll who support further de).8 E -.15(ve)-.25 G -(lopment, in particular:).15 E F3<83>122 444 Q F0(ThePhD)2.5 E F3<83>122 -456 Q F0(Embark Studios)2.5 E F3<83>122 468 Q F0(Jasper Bekk)2.5 E(ers) --.1 E F3(REPOR)72 492 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 -504 Q(.ht/~nabijaczleweli/tzpfms)-1 E F1 -(~nabijaczleweli/tzpfms@lists.sr.ht)102 522 Q F0 2.5(,a)C(rchi)-2.5 E +(speci\214cation)102 456 Q F0(.)A F3 1.666(SPECIAL THANKS)72 480 R F0 +1.6 -.8(To a)102 492 T(ll who support further de).8 E -.15(ve)-.25 G +(lopment, in particular:).15 E F3<83>122 504 Q F0(ThePhD)2.5 E F3<83>122 +516 Q F0(Embark Studios)2.5 E F3<83>122 528 Q F0(Jasper Bekk)2.5 E(ers) +-.1 E F3(REPOR)72 552 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 +564 Q(.ht/~nabijaczleweli/tzpfms)-1 E F4 +(~nabijaczleweli/tzpfms@lists.sr.ht)102 582 Q F0 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F3(https://lists.sr)2.5 E -(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-23)72 750 Q(No) -138.745 E -.15(ve)-.15 G(mber 25, 2021).15 E(4)189.295 E 0 Cg EP +(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A F3 1.666(SEE ALSO)72 606 R F0 +(PCR allocations:)102 618 Q F3(https://wiki.ar)2.5 E(chlinux.or)-.18 E +(g/title/T)-.1 E(rusted_Platf)-.74 E(orm_Module#Accessing_PCR_r)-.25 E +(egisters)-.18 E F0(and)102 630 Q F3(https://trustedcomputinggr)2.5 E +(oup.or)-.18 E(g/wp-content/uploads/PC-)-.1 E(ClientSpeci\214c_Platf)102 +642 Q(orm_Pr)-.25 E(o\214le_f)-.18 E(or_TPM_2p0_Systems_v51.pdf)-.25 E +F0 2.5(,S)C(ection 2.3.4 "PCR Usage", T)-2.5 E(able 1.)-.8 E +(tzpfms 0.1-27)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 28, 2021).15 E +(4)189.295 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP @@ -492,31 +509,31 @@ BP (zfs-tpm1x-clear-key)102 144 Q/F3 10/Courier-Oblique@0 SF(dataset)2.5 E F1(DESCRIPTION)72 168 Q F0(After v)102 180 Q(erifying)-.15 E F3(dataset) 2.5 E F0 -.1(wa)2.5 G 2.5(se).1 G(ncrypted with)-2.5 E F2(tzpfms)2.5 E -F0(back)2.5 E(end)-.1 E F1(TPM1.X)2.5 E F0(:)A 6.984 +F0(back)2.5 E(end)-.1 E F1(TPM1.X)2.5 E F0(:)A 6.985 (1. performs the equi)122 192 R -.25(va)-.25 G 6.984(lent of).25 F F2 6.984(zfs change-key)9.484 F14.65 E/F4 10/Courier@0 SF -(keylocation=prompt)12.985 E F214.651 E F4(keyformat=passphrase) -127 204 Q F3(dataset)6 E F0(,)A(2. remo)122 216 Q -.15(ve)-.15 G 2.5(st) -.15 G(he)-2.5 E F4(xyz.nabijaczleweli:tzpfms.)2.5 E F0({)A F4(backend)A -F0(,)A F4(key)6 E F0 2.5(}p)C(roperties from)-2.5 E F3(dataset)2.5 E F0 -(.)A(See)102 234 Q F4(zfs-tpm1x-change-key)2.5 E F0 +(keylocation=prompt)12.984 E F214.65 E F4(keyformat=passphrase)127 +204 Q F3(dataset)6 E F0(,)A(2. remo)122 216 Q -.15(ve)-.15 G 2.5(st).15 +G(he)-2.5 E F4(xyz.nabijaczleweli:tzpfms.)2.5 E F0({)A F4(backend)A F0 +(,)A F4(key)6 E F0 2.5(}p)C(roperties from)-2.5 E F3(dataset)2.5 E F0(.) +A(See)102 234 Q F4(zfs-tpm1x-change-key)2.5 E F0 (\(8\) for a detailed description.)A F1 1.666 (TPM1.X back-end con\214guration)72 258 R .625(TPM selection)84 270 R F0 -(The)102 282 Q F2(tzpfms)2.768 E F0 .267(suite connects to a local)2.767 +(The)102 282 Q F2(tzpfms)2.767 E F0 .267(suite connects to a local)2.767 F F4(tcsd)2.767 E F0 .267(\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E F4(localhost:30003)2.767 E F0 4.433(\)b)1.666 G 2.767(yd)-4.433 G(ef) --2.767 E 2.767(ault. Use)-.1 F .267(the en-)2.767 F(vironment v)102 294 +-2.767 E 2.767(ault. Use)-.1 F .268(the en-)2.767 F(vironment v)102 294 Q(ariable)-.25 E F4(TZPFMS_TPM1X)2.5 E F0 -(to specify a remote TCS hostname.)2.5 E .391(The T)102 312 R(rouSerS) --.35 E F4(tcsd)2.891 E F0 .391(\(8\) daemon will try)B F4(/dev/tpm0) -2.892 E F0 2.892(,t)C(hen)-2.892 E F4(/udev/tpm0)2.892 E F0 2.892(,t)C -(hen)-2.892 E F4(/dev/tpm)2.892 E F0 2.892(;b)C 2.892(yo)-2.892 G(ccup) --2.892 E(ying)-.1 E(one of the earlier ones with, for e)102 324 Q +(to specify a remote TCS hostname.)2.5 E .392(The T)102 312 R(rouSerS) +-.35 E F4(tcsd)2.892 E F0 .392(\(8\) daemon will try)B F4(/dev/tpm0) +2.892 E F0 2.892(,t)C(hen)-2.892 E F4(/udev/tpm0)2.892 E F0 2.891(,t)C +(hen)-2.891 E F4(/dev/tpm)2.891 E F0 2.891(;b)C 2.891(yo)-2.891 G(ccup) +-2.891 E(ying)-.1 E(one of the earlier ones with, for e)102 324 Q (xample, shell redirection, a later one can be selected.)-.15 E F1 .625 (See also)84 348 R F0(The T)102 360 Q(rouSerS project page at)-.35 E F1 (https://sour)2.5 E(cef)-.18 E(or)-.25 E(ge.net/pr)-.1 E(ojects/tr)-.18 -E(ousers)-.18 E F0(.)A 5.109(The TPM 1.2 main speci\214cation inde)102 -378 R 7.608(xa)-.15 G(t)-7.608 E F1(https://trustedcomputinggr)7.608 E +E(ousers)-.18 E F0(.)A 5.108(The TPM 1.2 main speci\214cation inde)102 +378 R 7.609(xa)-.15 G(t)-7.609 E F1(https://trustedcomputinggr)7.609 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E (speci\214cation)102 390 Q F0(.)A F1 1.666(SPECIAL THANKS)72 414 R F0 1.6 -.8(To a)102 426 T(ll who support further de).8 E -.15(ve)-.25 G @@ -526,8 +543,8 @@ E(ousers)-.18 E F0(.)A 5.109(The TPM 1.2 main speci\214cation inde)102 498 Q(.ht/~nabijaczleweli/tzpfms)-1 E F4 (~nabijaczleweli/tzpfms@lists.sr.ht)102 516 Q F0 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr)2.5 E -(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-23)72 750 Q(No) -138.745 E -.15(ve)-.15 G(mber 25, 2021).15 E(5)189.295 E 0 Cg EP +(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-27)72 750 Q(No) +138.745 E -.15(ve)-.15 G(mber 28, 2021).15 E(5)189.295 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP @@ -539,31 +556,31 @@ BP (oad TPM1.X-encrypted ZFS dataset k)-2.5 E -.15(ey)-.1 G F1(SYNOPSIS)72 132 Q F2(zfs-tpm1x-load-key)102 144 Q F0([)3.333 E F22.499 E F0(]) .833 E/F3 10/Courier-Oblique@0 SF(dataset)2.5 E F1(DESCRIPTION)72 168 Q -F0 1.155(After v)102 180 R(erifying)-.15 E F3(dataset)3.655 E F0 -.1(wa) -3.655 G 3.655(se).1 G 1.155(ncrypted with)-3.655 F F2(tzpfms)3.655 E F0 -(back)3.655 E(end)-.1 E F1(TPM1.X)3.655 E F0 1.156(will unseal the k) -3.655 F 1.456 -.15(ey a)-.1 H 1.156(nd load it).15 F(into)102 192 Q F3 -(dataset)2.5 E F0(.)A .694 +F0 1.156(After v)102 180 R(erifying)-.15 E F3(dataset)3.656 E F0 -.1(wa) +3.656 G 3.656(se).1 G 1.156(ncrypted with)-3.656 F F2(tzpfms)3.655 E F0 +(back)3.655 E(end)-.1 E F1(TPM1.X)3.655 E F0 1.155(will unseal the k) +3.655 F 1.455 -.15(ey a)-.1 H 1.155(nd load it).15 F(into)102 192 Q F3 +(dataset)2.5 E F0(.)A .693 (The user is \214rst prompted for the SRK passphrase, set when taking o) -102 210 R .693(wnership, if not "well-kno)-.25 F .693(wn" \(all ze-)-.25 +102 210 R .694(wnership, if not "well-kno)-.25 F .694(wn" \(all ze-)-.25 F(roes\); then for the additional passphrase, set when creating the k) 102 222 Q -.15(ey)-.1 G 2.5(,i)-.5 G 2.5(fo)-2.5 G(ne w)-2.5 E(as set.) -.1 E(See)102 240 Q/F4 10/Courier@0 SF(zfs-tpm1x-change-key)2.5 E F0 (\(8\) for a detailed description.)A F1(OPTIONS)72 264 Q F2103.666 -276 Q F0 .178(Do a no-op/dry run, can be used e)119 288 R -.15(ve)-.25 G -2.678(ni).15 G 2.679(ft)-2.678 G .179(he k)-2.679 F .479 -.15(ey i)-.1 H -2.679(sa).15 G .179(lready loaded.)-2.679 F(Equi)5.179 E -.25(va)-.25 G -.179(lent to).25 F F2 .179(zfs load-key)2.679 F F0 -.55('s)C F2 -4.895 E F0(option.)119 300 Q F1(ENVIR)72 324 Q 1.666(ONMENT V)-.3 F -(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)102 336 Q F0 .466(By def) +276 Q F0 .179(Do a no-op/dry run, can be used e)119 288 R -.15(ve)-.25 G +2.679(ni).15 G 2.679(ft)-2.679 G .179(he k)-2.679 F .478 -.15(ey i)-.1 H +2.678(sa).15 G .178(lready loaded.)-2.678 F(Equi)5.178 E -.25(va)-.25 G +.178(lent to).25 F F2 .178(zfs load-key)2.678 F F0 -.55('s)C F2 +4.894 E F0(option.)119 300 Q F1(ENVIR)72 324 Q 1.666(ONMENT V)-.3 F +(ARIABLES)-1.35 E F4(TZPFMS_PASSPHRASE_HELPER)102 336 Q F0 .465(By def) 143 348 R .466(ault, passphrases are prompted for and read in on the st\ -andard output and input streams.)-.1 F(If)5.465 E F4 -(TZPFMS_PASSPHRASE_HELPER)143 360 Q F0 .516(is set and nonempty)3.016 F -3.016(,i)-.65 G 3.016(tw)-3.016 G .517(ill be run via)-3.016 F F4(/bin/) -3.017 E F2 2.183(sh \255c)B F0 .517(to pro-)3.017 F -(vide each passphrase, instead.)143 372 Q .189 +andard output and input streams.)-.1 F(If)5.466 E F4 +(TZPFMS_PASSPHRASE_HELPER)143 360 Q F0 .517(is set and nonempty)3.017 F +3.017(,i)-.65 G 3.017(tw)-3.017 G .516(ill be run via)-3.017 F F4(/bin/) +3.016 E F2 2.182(sh \255c)B F0 .516(to pro-)3.016 F +(vide each passphrase, instead.)143 372 Q .188 (The standard output stream of the helper is tied to an anon)143 390 R -.188(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) +.189(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) 143 402 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 (y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)155 414 Q F0 (Pre-formatted noun phrase with all the information belo)172 414 Q 1.3 @@ -579,27 +596,27 @@ andard output and input streams.)-.1 F(If)5.465 E F4 -1.666 F(is used as f)143 480 Q 2.5(all-back. If)-.1 F(it f)2.5 E (ails for an)-.1 E 2.5(yo)-.15 G(ther reason, the prompting is aborted.) -2.5 E F1 1.666(TPM1.X back-end con\214guration)72 504 R .625 -(TPM selection)84 516 R F0(The)102 528 Q F2(tzpfms)2.768 E F0 .267 +(TPM selection)84 516 R F0(The)102 528 Q F2(tzpfms)2.767 E F0 .267 (suite connects to a local)2.767 F F4(tcsd)2.767 E F0 .267 (\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E F4(localhost:30003)2.767 E F0 4.433(\)b)1.666 G 2.767(yd)-4.433 G(ef)-2.767 E 2.767(ault. Use)-.1 F -.267(the en-)2.767 F(vironment v)102 540 Q(ariable)-.25 E F4 -(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .391 -(The T)102 558 R(rouSerS)-.35 E F4(tcsd)2.891 E F0 .391 +.268(the en-)2.767 F(vironment v)102 540 Q(ariable)-.25 E F4 +(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .392 +(The T)102 558 R(rouSerS)-.35 E F4(tcsd)2.892 E F0 .392 (\(8\) daemon will try)B F4(/dev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E -F4(/udev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E F4(/dev/tpm)2.892 E F0 -2.892(;b)C 2.892(yo)-2.892 G(ccup)-2.892 E(ying)-.1 E +F4(/udev/tpm0)2.892 E F0 2.891(,t)C(hen)-2.891 E F4(/dev/tpm)2.891 E F0 +2.891(;b)C 2.891(yo)-2.891 G(ccup)-2.891 E(ying)-.1 E (one of the earlier ones with, for e)102 570 Q (xample, shell redirection, a later one can be selected.)-.15 E F1 .625 (See also)84 594 R F0(The T)102 606 Q(rouSerS project page at)-.35 E F1 (https://sour)2.5 E(cef)-.18 E(or)-.25 E(ge.net/pr)-.1 E(ojects/tr)-.18 -E(ousers)-.18 E F0(.)A 5.109(The TPM 1.2 main speci\214cation inde)102 -624 R 7.608(xa)-.15 G(t)-7.608 E F1(https://trustedcomputinggr)7.608 E +E(ousers)-.18 E F0(.)A 5.108(The TPM 1.2 main speci\214cation inde)102 +624 R 7.609(xa)-.15 G(t)-7.609 E F1(https://trustedcomputinggr)7.609 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E (speci\214cation)102 636 Q F0(.)A F1 1.666(SPECIAL THANKS)72 660 R F0 1.6 -.8(To a)102 672 T(ll who support further de).8 E -.15(ve)-.25 G -(lopment, in particular:).15 E(tzpfms 0.1-23)72 750 Q(No)138.745 E -.15 -(ve)-.15 G(mber 25, 2021).15 E(6)189.295 E 0 Cg EP +(lopment, in particular:).15 E(tzpfms 0.1-27)72 750 Q(No)138.745 E -.15 +(ve)-.15 G(mber 28, 2021).15 E(6)189.295 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP @@ -612,8 +629,8 @@ BP -.1 E(https://todo.sr)102 156 Q(.ht/~nabijaczleweli/tzpfms)-1 E/F2 10 /Courier@0 SF(~nabijaczleweli/tzpfms@lists.sr.ht)102 174 Q F0 2.5(,a)C (rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr) -2.5 E(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-23)72 750 Q(No) -138.745 E -.15(ve)-.15 G(mber 25, 2021).15 E(7)189.295 E 0 Cg EP +2.5 E(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-27)72 750 Q(No) +138.745 E -.15(ve)-.15 G(mber 28, 2021).15 E(7)189.295 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP @@ -625,154 +642,207 @@ BP 108 Q F0 2.5<8a63>2.5 G(hange ZFS dataset k)-2.5 E .3 -.15(ey t)-.1 H 2.5(oo).15 G(ne stored on the TPM)-2.5 E F1(SYNOPSIS)72 132 Q F2 (zfs-tpm2-change-key)102 144 Q F0([)3.333 E F22.499 E/F3 10 -/Courier-Oblique@0 SF(backup-file)6 E F0(]).833 E F3(dataset)2.5 E F1 -(DESCRIPTION)72 168 Q F0 6.93 -.8(To n)102 180 T(ormalise).8 E F3 -(dataset)7.831 E F0(,)A F2(zfs-tpm2-change-key)7.831 E F0 5.331 +/Courier-Oblique@0 SF(backup-file)6 E F0 2.5(][).833 G F2-.834 E +F3(algorithm)222 156 Q F2(:)A F3(PCR)A F0([)A F2(,)A F3(PCR)A F0 1.666 +(]...)C([)-1.666 E F2(+)A F3(algorithm)A F2(:)A F3(PCR)A F0([)A F2(,)A +F3(PCR)A F0 1.666(]...)C -2.499 1.666(]... [)-1.666 H F2.833 E F0 +(]]).833 E F3(dataset)222 168 Q F1(DESCRIPTION)72 192 Q F0 6.931 -.8 +(To n)102 204 T(ormalise).8 E F3(dataset)7.831 E F0(,)A F2 +(zfs-tpm2-change-key)7.831 E F0 5.331 (will open its encryption root in its stead.)7.831 F F2 -(zfs-tpm2-change-key)102 192 Q F0(will)3.864 E/F4 10/Times-Italic@0 SF +(zfs-tpm2-change-key)102 216 Q F0(will)3.864 E/F4 10/Times-Italic@0 SF (ne)3.864 E(ver)-.15 E F0 1.364(create or destro)3.864 F 3.864(ye)-.1 G 1.364(ncryption roots; use)-3.864 F/F5 10/Courier@0 SF(zfs-change-key) -3.864 E F0 1.364(\(8\) for)B(that.)102 204 Q -(First, a connection is made to the TPM, which)102 222 Q F4(must)2.5 E -F0(be TPM-2.0-compatible.)2.5 E(If)102 240 Q F3(dataset)3.42 E F0 -.1 +3.864 E F0 1.364(\(8\) for)B(that.)102 228 Q +(First, a connection is made to the TPM, which)102 246 Q F4(must)2.5 E +F0(be TPM-2.0-compatible.)2.5 E(If)102 264 Q F3(dataset)3.42 E F0 -.1 (wa)3.42 G 3.42(sp).1 G(re)-3.42 E .92(viously encrypted with)-.25 F F2 (tzpfms)3.42 E F0 .92(and the)3.42 F F1(TPM2)3.42 E F0 .92(back-end w) 3.42 F .92(as used, the pre)-.1 F .92(vious k)-.25 F -.15(ey)-.1 G .382 -(will be freed from the TPM.)102 252 R .382 +(will be freed from the TPM.)102 276 R .382 (Otherwise, or in case of an error)5.382 F 2.882(,d)-.4 G .382 -(ata required for manual interv)-2.882 F .382(ention will be)-.15 F -(printed to the standard error stream.)102 264 Q(Ne)102 282 Q .197 +(ata required for manual interv)-2.882 F .383(ention will be)-.15 F +(printed to the standard error stream.)102 288 Q(Ne)102 306 Q .197 (xt, a ne)-.15 F 2.697(ww)-.25 G .197(rapping k)-2.697 F .497 -.15(ey i) -.1 H 2.697(sg).15 G .197(enerated on the TPM, optionally back)-2.697 F .197(ed up)-.1 F 1.666(\(s)4.363 G(ee)-1.666 E F1(OPTIONS)2.697 E F0 -3.135 1.666(\), a)1.666 H .197(nd sealed to a)-1.666 F .504 -(persistent object on the TPM under the o)102 294 R .504(wner hierarch) --.25 F .504(y; if there is a passphrase set on the o)-.05 F .503 -(wner hierarch)-.25 F -.65(y,)-.05 G .04 -(the user is prompted for it; the user is al)102 306 R -.1(wa)-.1 G .041 +(persistent object on the TPM under the o)102 318 R .504(wner hierarch) +-.25 F .504(y; if there is a passphrase set on the o)-.05 F .504 +(wner hierarch)-.25 F -.65(y,)-.05 G .041 +(the user is prompted for it; the user is al)102 330 R -.1(wa)-.1 G .04 (ys prompted for an optional passphrase to protect the sealed object).1 -F(with.)102 318 Q(The follo)102 336 Q(wing properties are set on)-.25 E -F3(dataset)2.5 E F0(:)A F1<83>122 348 Q F5 -(xyz.nabijaczleweli:tzpfms.backend)7.5 E F0(=)A F1(TPM2)A<83>122 360 Q -F5(xyz.nabijaczleweli:tzpfms.key)7.5 E F0(=)A F3 -(ID of persistent object)A F5(tzpfms.backend)102 378 Q F0 3.203 +F(with.)102 342 Q(The follo)102 360 Q(wing properties are set on)-.25 E +F3(dataset)2.5 E F0(:)A F1<83>122 372 Q F5 +(xyz.nabijaczleweli:tzpfms.backend)7.5 E F0(=)A F1(TPM2)A<83>122 384 Q +F5(xyz.nabijaczleweli:tzpfms.key)7.5 E F0(=)A F3(persistent-object-ID)A +F0([).833 E F2(;).833 E F3(algorithm)133 396 Q F2(:)A F3(PCR)A F0([)A F2 +(,)A F3(PCR)A F0 1.666(]...)C([)-1.666 E F2(+)A F3(algorithm)A F2(:)A F3 +(PCR)A F0([)A F2(,)A F3(PCR)A F0 1.666(]...)C 1.666(]...)-1.666 G(]) +-.833 E F5(tzpfms.backend)102 414 Q F0 3.203 (identi\214es this dataset for w)5.703 F 3.203(ork with)-.1 F F1(TPM2) 5.703 E F0(-back-ended)A F2(tzpfms)5.703 E F0 4.868(tools \()5.702 F -(namely)1.666 E F5(zfs-tpm2-change-key)102 390 Q F0(\(8\),)A F5 +(namely)1.666 E F5(zfs-tpm2-change-key)102 426 Q F0(\(8\),)A F5 (zfs-tpm2-load-key)2.5 E F0(\(8\), and)A F5(zfs-tpm2-clear-key)2.5 E F0 --.834(\(8\) \) .)B F5(tzpfms.key)102 408 Q F0 1.11(is an inte)3.61 F -1.111 -(ger representing the sealed object; if needed, it can be passed to)-.15 -F F2(tpm2_unseal)3.611 E103.666 420 Q F5(${tzpfms.key})6.032 E F0 -([)6.865 E F22.499 E F5(${password})6.032 E F0 2.532(]o).833 G -2.532(re)-2.532 G(qui)-2.532 E -.25(va)-.25 G .032(lent for back-up).25 -F 1.666(\(s)4.198 G(ee)-1.666 E F1(OPTIONS)2.532 E F0 -.8 1.666(\). I) -1.666 H 2.532(fy)-1.666 G .032(ou ha)-2.532 F .331 -.15(ve a)-.2 H .434 -(sealed k)102 432 R .734 -.15(ey y)-.1 H .434 -(ou can access with that or equi).15 F -.25(va)-.25 G .435 -(lent tool and set both of these properties, it will funxion seam-).25 F -(lessly)102 444 Q(.)-.65 E(Finally)102 462 Q 4.141(,t)-.65 G 1.641 +-.834(\(8\) \) .)B F5(tzpfms.key)102 444 Q F0 .414(is an inte)2.914 F +.414(ger representing the sealed object, optionally follo)-.15 F .414 +(wed by a semicolon and PCR list)-.25 F 1.298(as speci\214ed with)102 +456 R F25.464 E F0 3.798(,n)C 1.298(ormalised to be)-3.798 F F2 +(tpm-tools)3.797 E F0 1.297 +(-toolchain-compatible; if needed, it can be passed to)B F2 11.056 +(tpm2_unseal \255c)102 468 R F5(${tzpfms.key)15.39 E F2(%%)A F5(;)A/F6 +10/Symbol SF(*)A F5(})A F0(with)11.89 E F213.556 E F0(")15.39 E F5 +(str:${passphrase})A F0 11.891("o)C(r)-11.891 E F213.557 E F0(") +102 480 Q F5(pcr:${tzpfms.key)A F2(#)A F6(*)A F5(;})A F0 1.177 +(", as the case may be, or equi)B -.25(va)-.25 G 1.177 +(lent, for back-up).25 F 1.666(\(s)5.342 G(ee)-1.666 E F1(OPTIONS)3.676 +E F0 .344 1.666(\). I)1.666 H 3.676(fy)-1.666 G(ou)-3.676 E(ha)102 492 Q +.633 -.15(ve a s)-.2 H .333(ealed k).15 F .633 -.15(ey y)-.1 H .333 +(ou can access with that or equi).15 F -.25(va)-.25 G .334 +(lent tool and set both of these properties, it will funxion).25 F +(seamlessly)102 504 Q(.)-.65 E(Finally)102 522 Q 4.141(,t)-.65 G 1.641 (he equi)-4.141 F -.25(va)-.25 G 1.641(lent of).25 F F2 1.641 (zfs change-key)4.141 F9.307 E F5(keylocation=prompt)7.641 E F2 -9.307 E F5(keyformat=raw)7.64 E F3(dataset)102 474 Q F0 .336 +9.307 E F5(keyformat=raw)7.64 E F3(dataset)102 534 Q F0 .336 (is performed with the ne)2.836 F 2.836(wk)-.25 G -.15(ey)-2.936 G 5.336 (.I)-.5 G 2.836(fa)-5.336 G 2.836(ne)-2.836 G .336 (rror occurred, best ef)-2.836 F .337 (fort is made to clean up the persistent)-.25 F -(object and properties, or to issue a note for manual interv)102 486 Q -(ention into the standard error stream.)-.15 E 2.92<418c>102 504 S .42 +(object and properties, or to issue a note for manual interv)102 546 Q +(ention into the standard error stream.)-.15 E 2.92<418c>102 564 S .42 (nal v)-2.92 F .42(eri\214cation should be made by running)-.15 F F2 2.085(zfs-tpm2-load-key \255n)2.919 F F3(dataset)6.419 E F0 5.419(.I)C -2.919(ft)-5.419 G .419(hat command)-2.919 F 3.856 -(succeeds, all is well, b)102 516 R 3.856 -(ut otherwise the dataset can be manually rolled back to a passw)-.2 F -3.857(ord with)-.1 F F2(zfs-tpm2-clear-key)102 528 Q F3(dataset)13.479 E -F0 1.666(\(o)11.645 G 8.278 -.4(r, i)-1.666 H 9.978(ft).4 G 7.478(hat f) --9.978 F 7.478(ails to w)-.1 F(ork,)-.1 E F2 7.478(zfs change-key)9.978 -F15.144 E F5(keyformat=passphrase)102 540 Q F3(dataset)6 E F0 --3.332 1.666(\), a)1.666 H(nd you are hereby ask)-1.666 E -(ed to report a b)-.1 E(ug, please.)-.2 E F2(zfs-tpm2-clear-key)102 558 -Q F3(dataset)6.423 E F0 .423 +2.919(ft)-5.419 G .419(hat command)-2.919 F 3.503 +(succeeds, all is well, b)102 576 R 3.503(ut otherwise the dataset can \ +be manually rolled back to a passphrase with)-.2 F F2 +(zfs-tpm2-clear-key)102 588 Q F3(dataset)13.479 E F0 1.666(\(o)11.645 G +8.278 -.4(r, i)-1.666 H 9.978(ft).4 G 7.478(hat f)-9.978 F 7.478 +(ails to w)-.1 F(ork,)-.1 E F2 7.478(zfs change-key)9.978 F15.144 +E F5(keyformat=passphrase)102 600 Q F3(dataset)6 E F0 -3.332 1.666 +(\), a)1.666 H(nd you are hereby ask)-1.666 E(ed to report a b)-.1 E +(ug, please.)-.2 E F2(zfs-tpm2-clear-key)102 618 Q F3(dataset)6.423 E F0 +.423 (can be used to free the TPM persistent object and go back to using a) -2.923 F(passw)102 570 Q(ord.)-.1 E F1(OPTIONS)72 594 Q F2103.666 -606 Q F3(backup-file)6 E F0(Sa)191 618 Q .806 -.15(ve a b)-.2 H .506 +2.923 F(passphrase.)102 630 Q F1(OPTIONS)72 654 Q F2103.666 666 Q +F3(backup-file)6 E F0(Sa)191 678 Q .806 -.15(ve a b)-.2 H .506 (ack-up of the k).15 F .805 -.15(ey t)-.1 H(o).15 E F3(backup-file)3.005 E F0 3.005(,w)C .505(hich must not e)-3.005 F .505(xist beforehand.)-.15 -F(This)5.505 E(back-up)191 630 Q F4(must)3.181 E F0 .681 +F(This)5.505 E(back-up)191 690 Q F4(must)3.181 E F0 .681 (be stored securely)3.181 F 3.181(,o)-.65 G -.25(ff)-3.181 G 3.181 (-site. In).25 F .682(case of a catastrophic e)3.181 F -.15(ve)-.25 G .682(nt, the k).15 F .982 -.15(ey c)-.1 H(an).15 E(be loaded by running) -191 642 Q F2(zfs load-key)221 654 Q F3(dataset)6 E F5(<)6 E F3 -(backup-file)6 E F1(ENVIR)72 678 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E -F0(tzpfms 0.1-23)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 25, 2021).15 -E(8)189.295 E 0 Cg EP +191 702 Q(tzpfms 0.1-27)72 750 Q(No)138.745 E -.15(ve)-.15 G +(mber 28, 2021).15 E(8)189.295 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.834(ZFS-TPM2-CHANGE-KEY \(8\))72 48 R (System Manager')53.329 E 2.5(sM)-.55 G 48.329 -(anual ZFS-TPM2-CHANGE-KEY)-2.5 F(\(8\))1.666 E/F1 10/Courier@0 SF -(TZPFMS_PASSPHRASE_HELPER)102 96 Q F0 .466(By def)143 108 R .466(ault, \ -passphrases are prompted for and read in on the standard output and inp\ -ut streams.)-.1 F(If)5.465 E F1(TZPFMS_PASSPHRASE_HELPER)143 120 Q F0 -.516(is set and nonempty)3.016 F 3.016(,i)-.65 G 3.016(tw)-3.016 G .517 -(ill be run via)-3.016 F F1(/bin/)3.017 E/F2 10/Courier-Bold@0 SF 2.183 -(sh \255c)B F0 .517(to pro-)3.017 F(vide each passphrase, instead.)143 -132 Q .189(The standard output stream of the helper is tied to an anon) -143 150 R .188(ymous \214le and used in its entirety as the)-.15 F -(passphrase, e)143 162 Q(xcept for a trailing ne)-.15 E(w-line, if an) --.25 E 3.8 -.65(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F1($1)155 -174 Q F0(Pre-formatted noun phrase with all the information belo)172 174 -Q 1.3 -.65(w, f)-.25 H(or use as a prompt).65 E F1($2)155 186 Q F0 -(Either the dataset name or the element of the TPM hierarch)172 186 Q -2.5(yb)-.05 G(eing prompted for)-2.5 E F1($3)155 198 Q F0("ne)172 198 Q +(anual ZFS-TPM2-CHANGE-KEY)-2.5 F(\(8\))1.666 E/F1 10/Courier-Bold@0 SF +(zfs load-key)221 96 Q/F2 10/Courier-Oblique@0 SF(dataset)6 E/F3 10 +/Courier@0 SF(<)6 E F2(backup-file)6 E F1103.666 114 Q F2 +(algorithm)6 E F1(:)A F2(PCR)A F0([)A F1(,)A F2(PCR)A F0 1.666(]...)C([) +-1.666 E F1(+)A F2(algorithm)A F1(:)A F2(PCR)A F0([)A F1(,)A F2(PCR)A F0 +1.666(]...)C 1.666(]...)-1.666 G .851(Bind the k)191 126 R 1.151 -.15 +(ey t)-.1 H 3.351(os).15 G .851(pace- or comma-separated)-3.351 F F2 +(PCR)3.351 E F0 3.351(sw)C .851(ithin their corresponding hashing)-3.351 +F F2(algorithm)191 138 Q F0 4.119<8a69>4.119 G 4.119(ft)-4.119 G(he) +-4.119 E 4.119(yc)-.15 G 1.619(hange, the wrapping k)-4.119 F 1.919 -.15 +(ey w)-.1 H 1.62(ill not be able to be unsealed.).15 F(There are)191 150 +Q/F4 10/Times-Bold@0 SF(24)2.5 E F0(PCRs, numbered)2.5 E F4(0)2.5 E F0 +(..)A F4(23)A F0(.)A F2(algorithm)191 168 Q F0 1.096(may be an)3.596 F +3.596(yo)-.15 G 3.596(fc)-3.596 G(ase-insensiti)-3.596 E 1.395 -.15 +(ve ")-.25 H F4(sha1).15 E F0 1.095(", ")B F4(sha256)A F0 1.095(", ")B +F4(sha384)A F0 1.095(", ")B F4(sha512)A F0(",)A(")191 180 Q F4(sm3_256)A +F0 9.062(", ")B F4(sm3-256)A F0 9.062(", ")B F4(sha3_256)A F0 9.062 +(", ")B F4(sha3-256)A F0 9.062(", ")B F4(sha3_384)A F0 9.062(", ")B F4 +(sha3-384)A F0(",)A(")191 192 Q F4(sha3_512)A F0(", or ")A F4(sha3-512)A +F0(", and must be supported by the TPM.)A F1103.666 210 Q F0 -.4 +(Wi)191 210 S(th).4 E F16.798 E F0 5.132(,a)C 2.632 +(lso prompt for a passphrase.)-5.132 F 2.632(This is skipped by def) +7.632 F 2.631(ault because the)-.1 F .833(passphrase is)191 222 R/F5 10 +/Times-Italic@0 SF(OR)3.333 E F0 .833(ed with the PCR polic)B 3.334 +(y\212t)-.15 G .834(he wrapping k)-3.334 F 1.134 -.15(ey c)-.1 H .834 +(an be unsealed).15 F F5(either)3.334 E F0 .703 +(passphraseless with the right PCRs)191 234 R F5(or)3.203 E F0 .703 +(with the passphrase, and this is usually not the)3.203 F(intent.)191 +246 Q F4(ENVIR)72 270 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 E F3 +(TZPFMS_PASSPHRASE_HELPER)102 282 Q F0 .465(By def)143 294 R .466(ault,\ + passphrases are prompted for and read in on the standard output and in\ +put streams.)-.1 F(If)5.466 E F3(TZPFMS_PASSPHRASE_HELPER)143 306 Q F0 +.517(is set and nonempty)3.017 F 3.017(,i)-.65 G 3.017(tw)-3.017 G .516 +(ill be run via)-3.017 F F3(/bin/)3.016 E F1 2.182(sh \255c)B F0 .516 +(to pro-)3.016 F(vide each passphrase, instead.)143 318 Q .188 +(The standard output stream of the helper is tied to an anon)143 336 R +.189(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) +143 348 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 +(y. T)-.15 H(he ar).65 E(guments are:)-.18 E F3($1)155 360 Q F0 +(Pre-formatted noun phrase with all the information belo)172 360 Q 1.3 +-.65(w, f)-.25 H(or use as a prompt).65 E F3($2)155 372 Q F0 +(Either the dataset name or the element of the TPM hierarch)172 372 Q +2.5(yb)-.05 G(eing prompted for)-2.5 E F3($3)155 384 Q F0("ne)172 384 Q (w" if this is for a ne)-.25 E 2.5(wp)-.25 G(assphrase, otherwise blank) --2.5 E F1($4)155 210 Q F0("ag)172 210 Q(ain" if it')-.05 E 2.5(st)-.55 G +-2.5 E F3($4)155 396 Q F0("ag)172 396 Q(ain" if it')-.05 E 2.5(st)-.55 G (he second prompt for that passphrase, otherwise blank)-2.5 E .181 -(If the helper doesn')143 228 R 2.681(te)-.18 G 1.847(xist \()-2.831 F -.181(the shell e)1.666 F .181(xits with)-.15 F/F3 10/Times-Bold@0 SF -(127)2.681 E F0 -3.151 1.666(\), a d)1.666 H .181 -(iagnostic is issued and the normal prompt)-1.666 F(is used as f)143 240 -Q 2.5(all-back. If)-.1 F(it f)2.5 E(ails for an)-.1 E 2.5(yo)-.15 G -(ther reason, the prompting is aborted.)-2.5 E F3 1.666 -(TPM2 back-end con\214guration)72 264 R(En)84 276 Q(vir)-.4 E .625 -(onment v)-.18 F(ariables)-.1 E F1(TSS2_LOG)102 288 Q F0(An)155 288 Q -2.5(yo)-.15 G(f:)-2.5 E F3(NONE)2.5 E F0(,)A F3(ERR)2.5 E(OR)-.3 E F0(,) -A F3 -1.2(WA)2.5 G(RNING)1.2 E F0(,)A F3(INFO)2.5 E F0(,)A F3(DEB)2.5 E -(UG)-.1 E F0(,)A F3(TRA)2.5 E(CE)-.55 E F0 5(.D)C(ef)-5 E(ault:)-.1 E F3 --1.2(WA)2.5 G(RNING)1.2 E F0(.)A F3 .625(TPM selection)84 312 R F0 .517 -(The library)102 324 R F2(libtss2-tcti-default.so)3.017 E F0 .517 -(can be link)3.017 F .516(ed to an)-.1 F 3.016(yo)-.15 G 3.016(ft)-3.016 -G(he)-3.016 E F1(libtss2-tcti-)3.016 E/F4 10/Symbol SF(*)A F1(.so)A F0 -(libraries)3.016 E .575(to select the def)102 336 R .576 -(ault, otherwise)-.1 F F1(/dev/tpmrm0)3.076 E F0 3.076(,t)C(hen)-3.076 E -F1(/dev/tpm0)3.076 E F0 3.076(,t)C(hen)-3.076 E F1(localhost:2321)3.076 -E F0 .576(will be tried,)3.076 F(in order)102 348 Q 1.666(\(s)4.166 G -(ee)-1.666 E F1(ESYS_CONTEXT)2.5 E F0 -.834(\(3\) \) .)B F3 .625 -(See also)84 372 R F0 3.488(The tpm2-tss git repository at)102 384 R F3 +(If the helper doesn')143 414 R 2.681(te)-.18 G 1.847(xist \()-2.831 F +.181(the shell e)1.666 F .181(xits with)-.15 F F4(127)2.681 E F0 -3.151 +1.666(\), a d)1.666 H .181(iagnostic is issued and the normal prompt) +-1.666 F(is used as f)143 426 Q 2.5(all-back. If)-.1 F(it f)2.5 E +(ails for an)-.1 E 2.5(yo)-.15 G(ther reason, the prompting is aborted.) +-2.5 E F4 1.666(TPM2 back-end con\214guration)72 450 R(En)84 462 Q(vir) +-.4 E .625(onment v)-.18 F(ariables)-.1 E F3(TSS2_LOG)102 474 Q F0(An) +155 474 Q 2.5(yo)-.15 G(f:)-2.5 E F4(NONE)2.5 E F0(,)A F4(ERR)2.5 E(OR) +-.3 E F0(,)A F4 -1.2(WA)2.5 G(RNING)1.2 E F0(,)A F4(INFO)2.5 E F0(,)A F4 +(DEB)2.5 E(UG)-.1 E F0(,)A F4(TRA)2.5 E(CE)-.55 E F0 5(.D)C(ef)-5 E +(ault:)-.1 E F4 -1.2(WA)2.5 G(RNING)1.2 E F0(.)A F4 .625(TPM selection) +84 498 R F0 .516(The library)102 510 R F1(libtss2-tcti-default.so)3.016 +E F0 .516(can be link)3.016 F .516(ed to an)-.1 F 3.017(yo)-.15 G 3.017 +(ft)-3.017 G(he)-3.017 E F3(libtss2-tcti-)3.017 E/F6 10/Symbol SF(*)A F3 +(.so)A F0(libraries)3.017 E .576(to select the def)102 522 R .576 +(ault, otherwise)-.1 F F3(/dev/tpmrm0)3.076 E F0 3.076(,t)C(hen)-3.076 E +F3(/dev/tpm0)3.076 E F0 3.076(,t)C(hen)-3.076 E F3(localhost:2321)3.076 +E F0 .575(will be tried,)3.076 F(in order)102 534 Q 1.666(\(s)4.166 G +(ee)-1.666 E F3(ESYS_CONTEXT)2.5 E F0 -.834(\(3\) \) .)B F4 .625 +(See also)84 558 R F0 3.487(The tpm2-tss git repository at)102 570 R F4 (https://github)5.988 E(.com/tpm2-softwar)-.4 E(e/tpm2-tss)-.18 E F0 -3.487(and the documentation at)5.988 F F3(https://tpm2-tss.r)102 396 Q -(eadthedocs.io)-.18 E F0(.)A 3.092 -(The TPM 2.0 speci\214cations, mainly at)102 414 R F3 -(https://trustedcomputinggr)5.592 E(oup.or)-.18 E -(g/wp-content/uploads/TPM-)-.1 E(Re)102 426 Q(v-2.0-P)-.15 E(art-1-Ar) --.1 E(chitectur)-.18 E(e-01.38.pdf)-.18 E F0(and related pages.)2.5 E F3 -1.666(SPECIAL THANKS)72 450 R F0 1.6 -.8(To a)102 462 T +3.488(and the documentation at)5.988 F F4(https://tpm2-tss.r)102 582 Q +(eadthedocs.io)-.18 E F0(.)A 6.305 +(The TPM 2.0 speci\214cations, mainly at)102 600 R F4 +(https://trustedcomputinggr)8.805 E(oup.or)-.18 E(g/r)-.1 E(esour)-.18 E +(ce/tpm-library-)-.18 E(speci\214cation/)102 612 Q F0(,)A F4 +(https://trustedcomputinggr)116.04 E(oup.or)-.18 E +(g/wp-content/uploads/TPM-)-.1 E(Re)102 624 Q(v-2.0-P)-.15 E(art-1-Ar) +-.1 E(chitectur)-.18 E(e-01.38.pdf)-.18 E F0 2.5(,a)C(nd related pages.) +-2.5 E F4 1.666(SPECIAL THANKS)72 648 R F0 1.6 -.8(To a)102 660 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F3<83>122 474 Q F0(ThePhD)2.5 E F3<83>122 486 Q F0(Embark Studios) -2.5 E F3<83>122 498 Q F0(Jasper Bekk)2.5 E(ers)-.1 E F3(REPOR)72 522 Q -1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 534 Q -(.ht/~nabijaczleweli/tzpfms)-1 E F1(~nabijaczleweli/tzpfms@lists.sr.ht) -102 552 Q F0 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E -F3(https://lists.sr)2.5 E(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A F3 -1.666(SEE ALSO)72 576 R F1(tpm2_unseal)102 588 Q F0(\(1\))A -(tzpfms 0.1-23)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 25, 2021).15 E -(9)189.295 E 0 Cg EP +.15 E F4<83>122 672 Q F0(ThePhD)2.5 E(tzpfms 0.1-27)72 750 Q(No)138.745 +E -.15(ve)-.15 G(mber 28, 2021).15 E(9)189.295 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup +/F0 10/Times-Roman@0 SF -.834(ZFS-TPM2-CHANGE-KEY \(8\))72 48 R +(System Manager')53.329 E 2.5(sM)-.55 G 48.329 +(anual ZFS-TPM2-CHANGE-KEY)-2.5 F(\(8\))1.666 E/F1 10/Times-Bold@0 SF +<83>122 96 Q F0(Embark Studios)2.5 E F1<83>122 108 Q F0(Jasper Bekk)2.5 +E(ers)-.1 E F1(REPOR)72 132 Q 1.666(TING B)-.4 F(UGS)-.1 E +(https://todo.sr)102 144 Q(.ht/~nabijaczleweli/tzpfms)-1 E/F2 10 +/Courier@0 SF(~nabijaczleweli/tzpfms@lists.sr.ht)102 162 Q F0 2.5(,a)C +(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr) +2.5 E(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A F1 1.666(SEE ALSO)72 186 R +F2(tpm2_unseal)102 198 Q F0(\(1\))A(PCR allocations:)102 216 Q F1 +(https://wiki.ar)2.5 E(chlinux.or)-.18 E(g/title/T)-.1 E(rusted_Platf) +-.74 E(orm_Module#Accessing_PCR_r)-.25 E(egisters)-.18 E F0(and)102 228 +Q F1(https://trustedcomputinggr)2.5 E(oup.or)-.18 E +(g/wp-content/uploads/PC-)-.1 E(ClientSpeci\214c_Platf)102 240 Q(orm_Pr) +-.25 E(o\214le_f)-.18 E(or_TPM_2p0_Systems_v51.pdf)-.25 E F0 2.5(,S)C +(ection 2.3.4 "PCR Usage", T)-2.5 E(able 1.)-.8 E(tzpfms 0.1-27)72 750 Q +(No)138.745 E -.15(ve)-.15 G(mber 28, 2021).15 E(10)184.295 E 0 Cg EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup /F0 10/Times-Roman@0 SF -.834(ZFS-TPM2-CLEAR-KEY \(8\))72 48 R (System Manager')62.209 E 2.5(sM)-.55 G 57.209(anual ZFS-TPM2-CLEAR-KEY) -2.5 F(\(8\))1.666 E/F1 10/Times-Bold@0 SF -.2(NA)72 96 S(ME).2 E/F2 10 @@ -832,30 +902,32 @@ E F0 .575(will be tried,)3.076 F(in order)102 534 Q 1.666(\(s)4.166 G (See also)84 558 R F0 3.487(The tpm2-tss git repository at)102 570 R F1 (https://github)5.988 E(.com/tpm2-softwar)-.4 E(e/tpm2-tss)-.18 E F0 3.488(and the documentation at)5.988 F F1(https://tpm2-tss.r)102 582 Q -(eadthedocs.io)-.18 E F0(.)A 3.092 +(eadthedocs.io)-.18 E F0(.)A 6.305 (The TPM 2.0 speci\214cations, mainly at)102 600 R F1 -(https://trustedcomputinggr)5.591 E(oup.or)-.18 E -(g/wp-content/uploads/TPM-)-.1 E(Re)102 612 Q(v-2.0-P)-.15 E(art-1-Ar) --.1 E(chitectur)-.18 E(e-01.38.pdf)-.18 E F0(and related pages.)2.5 E F1 -1.666(SPECIAL THANKS)72 636 R F0 1.6 -.8(To a)102 648 T +(https://trustedcomputinggr)8.805 E(oup.or)-.18 E(g/r)-.1 E(esour)-.18 E +(ce/tpm-library-)-.18 E(speci\214cation/)102 612 Q F0(,)A F1 +(https://trustedcomputinggr)116.04 E(oup.or)-.18 E +(g/wp-content/uploads/TPM-)-.1 E(Re)102 624 Q(v-2.0-P)-.15 E(art-1-Ar) +-.1 E(chitectur)-.18 E(e-01.38.pdf)-.18 E F0 2.5(,a)C(nd related pages.) +-2.5 E F1 1.666(SPECIAL THANKS)72 648 R F0 1.6 -.8(To a)102 660 T (ll who support further de).8 E -.15(ve)-.25 G(lopment, in particular:) -.15 E F1<83>122 660 Q F0(ThePhD)2.5 E F1<83>122 672 Q F0(Embark Studios) -2.5 E(tzpfms 0.1-23)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 25, 2021) -.15 E(10)184.295 E 0 Cg EP -%%Page: 11 11 +.15 E F1<83>122 672 Q F0(ThePhD)2.5 E(tzpfms 0.1-27)72 750 Q(No)138.745 +E -.15(ve)-.15 G(mber 28, 2021).15 E(11)184.295 E 0 Cg EP +%%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.834(ZFS-TPM2-CLEAR-KEY \(8\))72 48 R (System Manager')62.209 E 2.5(sM)-.55 G 57.209(anual ZFS-TPM2-CLEAR-KEY) --2.5 F(\(8\))1.666 E/F1 10/Times-Bold@0 SF<83>122 96 Q F0(Jasper Bekk) -2.5 E(ers)-.1 E F1(REPOR)72 120 Q 1.666(TING B)-.4 F(UGS)-.1 E -(https://todo.sr)102 132 Q(.ht/~nabijaczleweli/tzpfms)-1 E/F2 10 -/Courier@0 SF(~nabijaczleweli/tzpfms@lists.sr.ht)102 150 Q F0 2.5(,a)C -(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr) -2.5 E(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-23)72 750 Q(No) -138.745 E -.15(ve)-.15 G(mber 25, 2021).15 E(11)184.295 E 0 Cg EP -%%Page: 12 12 +-2.5 F(\(8\))1.666 E/F1 10/Times-Bold@0 SF<83>122 96 Q F0 +(Embark Studios)2.5 E F1<83>122 108 Q F0(Jasper Bekk)2.5 E(ers)-.1 E F1 +(REPOR)72 132 Q 1.666(TING B)-.4 F(UGS)-.1 E(https://todo.sr)102 144 Q +(.ht/~nabijaczleweli/tzpfms)-1 E/F2 10/Courier@0 SF +(~nabijaczleweli/tzpfms@lists.sr.ht)102 162 Q F0 2.5(,a)C(rchi)-2.5 E +-.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr)2.5 E +(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-27)72 750 Q(No) +138.745 E -.15(ve)-.15 G(mber 28, 2021).15 E(12)184.295 E 0 Cg EP +%%Page: 13 13 %%BeginPageSetup BP %%EndPageSetup @@ -874,20 +946,20 @@ F F3(dataset)102 192 Q F0(.)A(The user is prompted for the additional p\ assphrase, set when creating the k)102 210 Q -.15(ey)-.1 G 2.5(,i)-.5 G 2.5(fo)-2.5 G(ne w)-2.5 E(as set.)-.1 E(See)102 228 Q/F4 10/Courier@0 SF (zfs-tpm2-change-key)2.5 E F0(\(8\) for a detailed description.)A F1 -(OPTIONS)72 252 Q F2103.666 264 Q F0 .179 -(Do a no-op/dry run, can be used e)119 276 R -.15(ve)-.25 G 2.679(ni).15 -G 2.679(ft)-2.679 G .179(he k)-2.679 F .478 -.15(ey i)-.1 H 2.678(sa).15 -G .178(lready loaded.)-2.678 F(Equi)5.178 E -.25(va)-.25 G .178(lent to) -.25 F F2 .178(zfs load-key)2.678 F F0 -.55('s)C F24.894 E F0 +(OPTIONS)72 252 Q F2103.666 264 Q F0 .178 +(Do a no-op/dry run, can be used e)119 276 R -.15(ve)-.25 G 2.678(ni).15 +G 2.679(ft)-2.678 G .179(he k)-2.679 F .479 -.15(ey i)-.1 H 2.679(sa).15 +G .179(lready loaded.)-2.679 F(Equi)5.179 E -.25(va)-.25 G .179(lent to) +.25 F F2 .179(zfs load-key)2.679 F F0 -.55('s)C F24.895 E F0 (option.)119 288 Q F1(ENVIR)72 312 Q 1.666(ONMENT V)-.3 F(ARIABLES)-1.35 -E F4(TZPFMS_PASSPHRASE_HELPER)102 324 Q F0 .465(By def)143 336 R .466(a\ +E F4(TZPFMS_PASSPHRASE_HELPER)102 324 Q F0 .466(By def)143 336 R .466(a\ ult, passphrases are prompted for and read in on the standard output an\ -d input streams.)-.1 F(If)5.466 E F4(TZPFMS_PASSPHRASE_HELPER)143 348 Q -F0 .517(is set and nonempty)3.017 F 3.017(,i)-.65 G 3.017(tw)-3.017 G -.516(ill be run via)-3.017 F F4(/bin/)3.016 E F2 2.182(sh \255c)B F0 -.516(to pro-)3.016 F(vide each passphrase, instead.)143 360 Q .188 +d input streams.)-.1 F(If)5.465 E F4(TZPFMS_PASSPHRASE_HELPER)143 348 Q +F0 .516(is set and nonempty)3.016 F 3.016(,i)-.65 G 3.016(tw)-3.016 G +.517(ill be run via)-3.016 F F4(/bin/)3.017 E F2 2.183(sh \255c)B F0 +.517(to pro-)3.017 F(vide each passphrase, instead.)143 360 Q .189 (The standard output stream of the helper is tied to an anon)143 378 R -.189(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) +.188(ymous \214le and used in its entirety as the)-.15 F(passphrase, e) 143 390 Q(xcept for a trailing ne)-.15 E(w-line, if an)-.25 E 3.8 -.65 (y. T)-.15 H(he ar).65 E(guments are:)-.18 E F4($1)155 402 Q F0 (Pre-formatted noun phrase with all the information belo)172 402 Q 1.3 @@ -903,29 +975,29 @@ F0 .517(is set and nonempty)3.017 F 3.017(,i)-.65 G 3.017(tw)-3.017 G -1.666 F(is used as f)143 468 Q 2.5(all-back. If)-.1 F(it f)2.5 E (ails for an)-.1 E 2.5(yo)-.15 G(ther reason, the prompting is aborted.) -2.5 E F1 1.666(TPM1.X back-end con\214guration)72 492 R .625 -(TPM selection)84 504 R F0(The)102 516 Q F2(tzpfms)2.767 E F0 .267 +(TPM selection)84 504 R F0(The)102 516 Q F2(tzpfms)2.768 E F0 .267 (suite connects to a local)2.767 F F4(tcsd)2.767 E F0 .267 (\(8\) process)B 1.666(\(a)4.433 G(t)-1.666 E F4(localhost:30003)2.767 E F0 4.433(\)b)1.666 G 2.767(yd)-4.433 G(ef)-2.767 E 2.767(ault. Use)-.1 F -.268(the en-)2.767 F(vironment v)102 528 Q(ariable)-.25 E F4 -(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .392 -(The T)102 546 R(rouSerS)-.35 E F4(tcsd)2.892 E F0 .392 +.267(the en-)2.767 F(vironment v)102 528 Q(ariable)-.25 E F4 +(TZPFMS_TPM1X)2.5 E F0(to specify a remote TCS hostname.)2.5 E .391 +(The T)102 546 R(rouSerS)-.35 E F4(tcsd)2.891 E F0 .391 (\(8\) daemon will try)B F4(/dev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E -F4(/udev/tpm0)2.892 E F0 2.891(,t)C(hen)-2.891 E F4(/dev/tpm)2.891 E F0 -2.891(;b)C 2.891(yo)-2.891 G(ccup)-2.891 E(ying)-.1 E +F4(/udev/tpm0)2.892 E F0 2.892(,t)C(hen)-2.892 E F4(/dev/tpm)2.892 E F0 +2.892(;b)C 2.892(yo)-2.892 G(ccup)-2.892 E(ying)-.1 E (one of the earlier ones with, for e)102 558 Q (xample, shell redirection, a later one can be selected.)-.15 E F1 .625 (See also)84 582 R F0(The T)102 594 Q(rouSerS project page at)-.35 E F1 (https://sour)2.5 E(cef)-.18 E(or)-.25 E(ge.net/pr)-.1 E(ojects/tr)-.18 -E(ousers)-.18 E F0(.)A 5.108(The TPM 1.2 main speci\214cation inde)102 -612 R 7.609(xa)-.15 G(t)-7.609 E F1(https://trustedcomputinggr)7.609 E +E(ousers)-.18 E F0(.)A 5.109(The TPM 1.2 main speci\214cation inde)102 +612 R 7.608(xa)-.15 G(t)-7.608 E F1(https://trustedcomputinggr)7.608 E (oup.or)-.18 E(g/r)-.1 E(esour)-.18 E(ce/tpm-main-)-.18 E (speci\214cation)102 624 Q F0(.)A F1 1.666(SPECIAL THANKS)72 648 R F0 1.6 -.8(To a)102 660 T(ll who support further de).8 E -.15(ve)-.25 G (lopment, in particular:).15 E F1<83>122 672 Q F0(ThePhD)2.5 E -(tzpfms 0.1-23)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 25, 2021).15 E -(12)184.295 E 0 Cg EP -%%Page: 13 13 +(tzpfms 0.1-27)72 750 Q(No)138.745 E -.15(ve)-.15 G(mber 28, 2021).15 E +(13)184.295 E 0 Cg EP +%%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup @@ -937,8 +1009,8 @@ BP (.ht/~nabijaczleweli/tzpfms)-1 E/F2 10/Courier@0 SF (~nabijaczleweli/tzpfms@lists.sr.ht)102 162 Q F0 2.5(,a)C(rchi)-2.5 E -.15(ve)-.25 G 2.5(da).15 G(t)-2.5 E F1(https://lists.sr)2.5 E -(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-23)72 750 Q(No) -138.745 E -.15(ve)-.15 G(mber 25, 2021).15 E(13)184.295 E 0 Cg EP +(.ht/~nabijaczleweli/tzpfms)-1 E F0(.)A(tzpfms 0.1-27)72 750 Q(No) +138.745 E -.15(ve)-.15 G(mber 28, 2021).15 E(14)184.295 E 0 Cg EP %%Trailer end %%EOF diff --git a/zfs-tpm-list.8 b/zfs-tpm-list.8 index da8657a..fc64368 100644 --- a/zfs-tpm-list.8 +++ b/zfs-tpm-list.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 25, 2021 +.Dd November 28, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM-LIST 8 -.Os tzpfms 0.1-23 +.Os tzpfms 0.1-27 . .Sh NAME .Nm zfs-tpm-list diff --git a/zfs-tpm-list.8.html b/zfs-tpm-list.8.html index 0077fbf..1aa3fd2 100644 --- a/zfs-tpm-list.8.html +++ b/zfs-tpm-list.8.html @@ -164,8 +164,8 @@ tarta-zoot/vm - available yes - - + +
November 25, 2021tzpfms 0.1-23November 28, 2021tzpfms 0.1-27
diff --git a/zfs-tpm1x-change-key.8 b/zfs-tpm1x-change-key.8 index 0063c77..ca8ddac 100644 --- a/zfs-tpm1x-change-key.8 +++ b/zfs-tpm1x-change-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 25, 2021 +.Dd November 28, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM1X-CHANGE-KEY 8 -.Os tzpfms 0.1-23 +.Os tzpfms 0.1-27 . .Sh NAME .Nm zfs-tpm1x-change-key @@ -11,6 +11,7 @@ .Sh SYNOPSIS .Nm .Op Fl b Ar backup-file +.Op Fl P Ar PCR Ns Oo Ns Cm \&, Ns Ar PCR Oc Ns … .Ar dataset . .Sh DESCRIPTION @@ -63,7 +64,7 @@ tools .Li tzpfms.key is a colon-separated pair of hexadecimal-string (i.e. "4F7730" for "Ow0") blobs; the first one represents the RSA key protecting the blob, -and it is protected with either the password, if provided, or the SHA1 constant +and it is protected with either the passphrase, if provided, or the SHA1 constant .Li CE4CF677875B5EB8993591D5A9AF1ED24A3A8736 ; the second represents the sealed object containing the wrapping key, and is protected with the SHA1 constant @@ -80,13 +81,13 @@ or to issue a note for manual intervention into the standard error stream. A final verification should be made by running .Nm zfs-tpm1x-load-key Fl n Ar dataset . If that command succeeds, all is well, -but otherwise the dataset can be manually rolled back to a password with +but otherwise the dataset can be manually rolled back to a passphrase with .Nm zfs-tpm1x-clear-key Ar dataset .Pq or, if that fails to work, Nm zfs Cm change-key Fl o Li keyformat=passphrase Ar dataset , and you are hereby asked to report a bug, please. .Pp .Nm zfs-tpm1x-clear-key Ar dataset -can be used to clear the properties and go back to using a password. +can be used to clear the properties and go back to using a passphrase. . .Sh OPTIONS .Bl -tag -compact -width "-b backup-file" @@ -99,6 +100,15 @@ This back-up be stored securely, off-site. In case of a catastrophic event, the key can be loaded by running .Dl Nm zfs Cm load-key Ar dataset Li < Ar backup-file +.Pp +. +.It Fl P Ar PCR Ns Oo Ns Cm \&, Ns Ar PCR Oc Ns … +Bind the key to space- or comma-separated +.Ar PCR Ns s +\(em if they change, the wrapping key will not be able to be unsealed. +The minimum amount of PCRs for a PC TPM is +.Sy 24 Pq numbered Sy 0 Ns .. Ns Sy 23 . +For most, this is also the maximum. .El . .\" SPDX-License-Identifier: MIT @@ -189,3 +199,11 @@ Jasper Bekkers .Mt ~nabijaczleweli/tzpfms@lists.sr.ht , archived at .Lk https:/\&/lists.sr.ht/~nabijaczleweli/tzpfms . +. +.Sh SEE ALSO +.\" Match this to zfs-tpm2-change-key.8: +PCR allocations: +.Lk https:/\&/wiki.archlinux.org/title/Trusted_Platform_Module#Accessing_PCR_registers +and +.Lk https:/\&/trustedcomputinggroup.org/wp-content/uploads/PC-ClientSpecific_Platform_Profile_for_TPM_2p0_Systems_v51.pdf , +Section 2.3.4 "PCR Usage", Table 1. diff --git a/zfs-tpm1x-change-key.8.html b/zfs-tpm1x-change-key.8.html index f915e04..59efb4e 100644 --- a/zfs-tpm1x-change-key.8.html +++ b/zfs-tpm1x-change-key.8.html @@ -29,6 +29,8 @@ zfs-tpm1x-change-key [-b backup-file] + [-P + PCR[,PCR]…] dataset @@ -70,7 +72,7 @@

tzpfms.key is a colon-separated pair of hexadecimal-string (i.e. "4F7730" for "Ow0") blobs; the first one represents the RSA key protecting the blob, and it is protected - with either the password, if provided, or the SHA1 constant + with either the passphrase, if provided, or the SHA1 constant CE4CF677875B5EB8993591D5A9AF1ED24A3A8736; the second represents the sealed object containing the wrapping key, and is protected with the SHA1 constant @@ -87,7 +89,7 @@

A final verification should be made by running zfs-tpm1x-load-key -n dataset. If that command succeeds, all is well, but - otherwise the dataset can be manually rolled back to a password with + otherwise the dataset can be manually rolled back to a passphrase with zfs-tpm1x-clear-key dataset (or, if that fails to work, zfs change-key -o @@ -95,7 +97,7 @@ and you are hereby asked to report a bug, please.

zfs-tpm1x-clear-key dataset can be used to clear the properties and go - back to using a password.

+ back to using a passphrase.

@@ -110,7 +112,16 @@ load-key dataset < backup-file +

+
+ PCR[,PCR]…
+
Bind the key to space- or comma-separated PCRs + — if they change, the wrapping key will not be able to be unsealed. + The minimum amount of PCRs for a PC TPM is + (numbered + ..). + For most, this is also the maximum.
@@ -193,11 +204,20 @@ archived at https://lists.sr.ht/~nabijaczleweli/tzpfms.

+
+

+

PCR allocations: + https://wiki.archlinux.org/title/Trusted_Platform_Module#Accessing_PCR_registers + and + https://trustedcomputinggroup.org/wp-content/uploads/PC-ClientSpecific_Platform_Profile_for_TPM_2p0_Systems_v51.pdf, + Section 2.3.4 "PCR Usage", Table 1.

+
- - + +
November 25, 2021tzpfms 0.1-23November 28, 2021tzpfms 0.1-27
diff --git a/zfs-tpm1x-clear-key.8 b/zfs-tpm1x-clear-key.8 index 30b7649..fb5ade0 100644 --- a/zfs-tpm1x-clear-key.8 +++ b/zfs-tpm1x-clear-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 25, 2021 +.Dd November 28, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM1X-CLEAR-KEY 8 -.Os tzpfms 0.1-23 +.Os tzpfms 0.1-27 . .Sh NAME .Nm zfs-tpm1x-clear-key diff --git a/zfs-tpm1x-clear-key.8.html b/zfs-tpm1x-clear-key.8.html index 558a6fc..d55f2c4 100644 --- a/zfs-tpm1x-clear-key.8.html +++ b/zfs-tpm1x-clear-key.8.html @@ -101,8 +101,8 @@ - - + +
November 25, 2021tzpfms 0.1-23November 28, 2021tzpfms 0.1-27
diff --git a/zfs-tpm1x-load-key.8 b/zfs-tpm1x-load-key.8 index da056d0..4c4e3fb 100644 --- a/zfs-tpm1x-load-key.8 +++ b/zfs-tpm1x-load-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 25, 2021 +.Dd November 28, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM1X-LOAD-KEY 8 -.Os tzpfms 0.1-23 +.Os tzpfms 0.1-27 . .Sh NAME .Nm zfs-tpm1x-load-key diff --git a/zfs-tpm1x-load-key.8.html b/zfs-tpm1x-load-key.8.html index 4ef80e6..c2e5a8d 100644 --- a/zfs-tpm1x-load-key.8.html +++ b/zfs-tpm1x-load-key.8.html @@ -137,8 +137,8 @@ - - + +
November 25, 2021tzpfms 0.1-23November 28, 2021tzpfms 0.1-27
diff --git a/zfs-tpm2-change-key.8 b/zfs-tpm2-change-key.8 index 5689723..d9b1e29 100644 --- a/zfs-tpm2-change-key.8 +++ b/zfs-tpm2-change-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 25, 2021 +.Dd November 28, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM2-CHANGE-KEY 8 -.Os tzpfms 0.1-23 +.Os tzpfms 0.1-27 . .Sh NAME .Nm zfs-tpm2-change-key @@ -11,6 +11,10 @@ .Sh SYNOPSIS .Nm .Op Fl b Ar backup-file +.Oo +.Fl P Ar algorithm Ns Cm \&: Ns Ar PCR Ns Oo Ns Cm \&, Ns Ar PCR Oc Ns … Ns Oo Cm + Ns Ar algorithm Ns Cm \&: Ns Ar PCR Ns Oo Ns Cm \&, Ns Ar PCR Oc Ns … Oc Ns … +.Op Fl A +.Oc .Ar dataset . .Sh DESCRIPTION @@ -50,7 +54,7 @@ The following properties are set on .It .Li xyz.nabijaczleweli:tzpfms.backend Ns = Ns Sy TPM2 .It -.Li xyz.nabijaczleweli:tzpfms.key Ns = Ns Ar ID of persistent object +.Li xyz.nabijaczleweli:tzpfms.key Ns = Ns Ar persistent-object-ID Ns Op Cm ;\& Ar algorithm Ns Cm \&: Ns Ar PCR Ns Oo Ns Cm \&, Ns Ar PCR Oc Ns … Ns Oo Cm + Ns Ar algorithm Ns Cm \&: Ns Ar PCR Ns Oo Ns Cm \&, Ns Ar PCR Oc Ns … Oc Ns … .El .Pp .Li tzpfms.backend @@ -61,10 +65,17 @@ tools .Pq namely Xr zfs-tpm2-change-key 8 , Xr zfs-tpm2-load-key 8 , and Xr zfs-tpm2-clear-key 8 . .Pp .Li tzpfms.key -is an integer representing the sealed object; +is an integer representing the sealed object, optionally followed by a semicolon and PCR list as specified with +.Fl P , +normalised to be +.Nm tpm-tools Ns -toolchain-compatible ; if needed, it can be passed to -.Nm tpm2_unseal Fl c Ev ${tzpfms.key} Op Fl p Ev ${password} -or equivalent for back-up +.Nm tpm2_unseal Fl c Ev ${tzpfms.key Ns Cm %% Ns Li ;* Ns Ev }\& +with +.Fl p Qq Li str:\& Ns Ev ${passphrase} +or +.Fl p Qq Li pcr:\& Ns Ev ${tzpfms.key Ns Cm # Ns Li *; Ns Ev }\& , +as the case may be, or equivalent, for back-up .Pq see Sx OPTIONS . If you have a sealed key you can access with that or equivalent tool and set both of these properties, it will funxion seamlessly. .Pp @@ -77,13 +88,13 @@ or to issue a note for manual intervention into the standard error stream. A final verification should be made by running .Nm zfs-tpm2-load-key Fl n Ar dataset . If that command succeeds, all is well, -but otherwise the dataset can be manually rolled back to a password with +but otherwise the dataset can be manually rolled back to a passphrase with .Nm zfs-tpm2-clear-key Ar dataset .Pq or, if that fails to work, Nm zfs Cm change-key Fl o Li keyformat=passphrase Ar dataset , and you are hereby asked to report a bug, please. .Pp .Nm zfs-tpm2-clear-key Ar dataset -can be used to free the TPM persistent object and go back to using a password. +can be used to free the TPM persistent object and go back to using a passphrase. . .Sh OPTIONS .Bl -tag -compact -width "-b backup-file" @@ -96,6 +107,48 @@ This back-up be stored securely, off-site. In case of a catastrophic event, the key can be loaded by running .Dl Nm zfs Cm load-key Ar dataset Li < Ar backup-file +.Pp +. +.It Fl P Ar algorithm Ns Cm \&: Ns Ar PCR Ns Oo Ns Cm \&, Ns Ar PCR Oc Ns … Ns Oo Cm + Ns Ar algorithm Ns Cm \&: Ns Ar PCR Ns Oo Ns Cm \&, Ns Ar PCR Oc Ns … Oc Ns … +Bind the key to space- or comma-separated +.Ar PCR Ns s +within their corresponding hashing +.Ar algorithm +\(em if they change, the wrapping key will not be able to be unsealed. +There are +.Sy 24 +PCRs, numbered +.Sy 0 Ns .. Ns Sy 23 . +.Pp +.Ar algorithm +may be any of case-insensitive +.Qq Sy sha1 , +.Qq Sy sha256 , +.Qq Sy sha384 , +.Qq Sy sha512 , +.Qq Sy sm3_256 , +.Qq Sy sm3-256 , +.Qq Sy sha3_256 , +.Qq Sy sha3-256 , +.Qq Sy sha3_384 , +.Qq Sy sha3-384 , +.Qq Sy sha3_512 , +or +.Qq Sy sha3-512 , +and must be supported by the TPM. +.Pp +. +.It Fl A +With +.Fl P , +also prompt for a passphrase. +This is skipped by default because the passphrase is +.Em OR Ns ed +with the PCR policy \(em the wrapping key can be unsealed +.Em either +passphraseless with the right PCRs +.Em or +with the passphrase, and this is usually not the intent. .El . .\" SPDX-License-Identifier: MIT @@ -168,7 +221,8 @@ and the documentation at .Lk https:/\&/tpm2-tss.readthedocs.io . .Pp The TPM 2.0 specifications, mainly at -.Lk https:/\&/trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf +.Lk https:/\&/trustedcomputinggroup.org/resource/tpm-library-specification/ , +.Lk https:/\&/trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf , and related pages. . .\" SPDX-License-Identifier: MIT @@ -193,3 +247,10 @@ archived at . .Sh SEE ALSO .Xr tpm2_unseal 1 +.Pp +.\" Match this to zfs-tpm1x-change-key.8: +PCR allocations: +.Lk https:/\&/wiki.archlinux.org/title/Trusted_Platform_Module#Accessing_PCR_registers +and +.Lk https:/\&/trustedcomputinggroup.org/wp-content/uploads/PC-ClientSpecific_Platform_Profile_for_TPM_2p0_Systems_v51.pdf , +Section 2.3.4 "PCR Usage", Table 1. diff --git a/zfs-tpm2-change-key.8.html b/zfs-tpm2-change-key.8.html index 86913b9..c2413f3 100644 --- a/zfs-tpm2-change-key.8.html +++ b/zfs-tpm2-change-key.8.html @@ -29,7 +29,9 @@ zfs-tpm2-change-key [-b backup-file] - dataset + [-P + algorithm:PCR[,PCR]…[+algorithm:PCR[,PCR]…]… + [-A]] dataset @@ -59,8 +61,8 @@ dataset:

tzpfms.backend identifies this dataset for work with TPM2-back-ended tzpfms @@ -69,10 +71,16 @@ zfs-tpm2-load-key(8), and zfs-tpm2-clear-key(8)).

tzpfms.key is an integer representing the - sealed object; if needed, it can be passed to - tpm2_unseal -c - ${tzpfms.key} [-p - ${password}] or equivalent for back-up (see + sealed object, optionally followed by a semicolon and PCR list as specified + with -P, normalised to be + tpm-tools-toolchain-compatible; if needed, it can be + passed to tpm2_unseal -c + ${tzpfms.key%%;*} + with -p + "str:${passphrase}" + or -p + "pcr:${tzpfms.key#*;}", + as the case may be, or equivalent, for back-up (see OPTIONS). If you have a sealed key you can access with that or equivalent tool and set both of these properties, it will funxion seamlessly.

@@ -86,7 +94,7 @@

A final verification should be made by running zfs-tpm2-load-key -n dataset. If that command succeeds, all is well, but - otherwise the dataset can be manually rolled back to a password with + otherwise the dataset can be manually rolled back to a passphrase with zfs-tpm2-clear-key dataset (or, if that fails to work, zfs change-key -o @@ -94,7 +102,7 @@ and you are hereby asked to report a bug, please.

zfs-tpm2-clear-key dataset can be used to free the TPM persistent object - and go back to using a password.

+ and go back to using a passphrase.

@@ -109,7 +117,43 @@ load-key dataset < backup-file +

+
+ algorithm:PCR[,PCR]…[+algorithm:PCR[,PCR]…]…
+
Bind the key to space- or comma-separated PCRs + within their corresponding hashing algorithm + — if they change, the wrapping key will not be able to be unsealed. + There are + PCRs, numbered + ... +

algorithm may be any of + case-insensitive + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + or + "", + and must be supported by the TPM.

+

+
+
+
With -P, also prompt for a passphrase. This is + skipped by default because the passphrase is + ed with + the PCR policy — the wrapping key can be unsealed + + passphraseless with the right PCRs + with the + passphrase, and this is usually not the intent.
@@ -183,7 +227,8 @@ and the documentation at https://tpm2-tss.readthedocs.io.

The TPM 2.0 specifications, mainly at - https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf + https://trustedcomputinggroup.org/resource/tpm-library-specification/, + https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf, and related pages.

@@ -209,12 +254,17 @@

tpm2_unseal(1)

+

PCR allocations: + https://wiki.archlinux.org/title/Trusted_Platform_Module#Accessing_PCR_registers + and + https://trustedcomputinggroup.org/wp-content/uploads/PC-ClientSpecific_Platform_Profile_for_TPM_2p0_Systems_v51.pdf, + Section 2.3.4 "PCR Usage", Table 1.

- - + +
November 25, 2021tzpfms 0.1-23November 28, 2021tzpfms 0.1-27
diff --git a/zfs-tpm2-clear-key.8 b/zfs-tpm2-clear-key.8 index 2907962..0e7abae 100644 --- a/zfs-tpm2-clear-key.8 +++ b/zfs-tpm2-clear-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 25, 2021 +.Dd November 28, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM2-CLEAR-KEY 8 -.Os tzpfms 0.1-23 +.Os tzpfms 0.1-27 . .Sh NAME .Nm zfs-tpm2-clear-key @@ -107,7 +107,8 @@ and the documentation at .Lk https:/\&/tpm2-tss.readthedocs.io . .Pp The TPM 2.0 specifications, mainly at -.Lk https:/\&/trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf +.Lk https:/\&/trustedcomputinggroup.org/resource/tpm-library-specification/ , +.Lk https:/\&/trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf , and related pages. . .\" SPDX-License-Identifier: MIT diff --git a/zfs-tpm2-clear-key.8.html b/zfs-tpm2-clear-key.8.html index 30d1ea1..fce0edb 100644 --- a/zfs-tpm2-clear-key.8.html +++ b/zfs-tpm2-clear-key.8.html @@ -126,7 +126,8 @@ and the documentation at https://tpm2-tss.readthedocs.io.

The TPM 2.0 specifications, mainly at - https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf + https://trustedcomputinggroup.org/resource/tpm-library-specification/, + https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf, and related pages.

@@ -151,8 +152,8 @@ - - + +
November 25, 2021tzpfms 0.1-23November 28, 2021tzpfms 0.1-27
diff --git a/zfs-tpm2-load-key.8 b/zfs-tpm2-load-key.8 index d3241f7..7c55ed1 100644 --- a/zfs-tpm2-load-key.8 +++ b/zfs-tpm2-load-key.8 @@ -1,9 +1,9 @@ .\" SPDX-License-Identifier: MIT . -.Dd November 25, 2021 +.Dd November 28, 2021 .ds doc-volume-operating-system .Dt ZFS-TPM2-LOAD-KEY 8 -.Os tzpfms 0.1-23 +.Os tzpfms 0.1-27 . .Sh NAME .Nm zfs-tpm2-load-key diff --git a/zfs-tpm2-load-key.8.html b/zfs-tpm2-load-key.8.html index f6502a6..a8b7f06 100644 --- a/zfs-tpm2-load-key.8.html +++ b/zfs-tpm2-load-key.8.html @@ -136,8 +136,8 @@ - - + +
November 25, 2021tzpfms 0.1-23November 28, 2021tzpfms 0.1-27