}
\def\progressbar@progressbar{} % the progress bar
-\newcount\progressbar@tmpcounta% auxiliary counter
-\newcount\progressbar@tmpcountb% auxiliary counter
-\newdimen\progressbar@pbht %progressbar height
-\newdimen\progressbar@pbwd %progressbar width
-\newdimen\progressbar@tmpdim % auxiliary dimension
-\progressbar@pbwd=\linewidth
-\progressbar@pbht=1.5ex
+\newlength{\ratten@progressonsectionpage}
+\newlength{\ratten@progressonsectionpage@linewidth}
-% the progress bar
-\def\progressbar@progressbar{%
+\setlength{\ratten@progressonsectionpage@linewidth}{1.5ex}
- \progressbar@tmpcounta=\insertframenumber
- \progressbar@tmpcountb=\inserttotalframenumber
- \progressbar@tmpdim=\progressbar@pbwd
- \multiply\progressbar@tmpdim by \progressbar@tmpcounta
- \divide\progressbar@tmpdim by \progressbar@tmpcountb
+\def\progressbar@progressbar{%
+\setlength{\ratten@progressonsectionpage}{%
+ \textwidth * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}%
+ }%
\begin{tikzpicture}[rounded corners=2pt,very thin]
-
+
\shade[top color=pbgray!20,bottom color=pbgray!20,middle color=pbgray!50]
- (0pt, 0pt) rectangle ++ (\progressbar@pbwd, \progressbar@pbht);
-
- \shade[draw=pbblue,top color=pbblue!50,bottom color=pbblue!50,middle color=pbblue] %
- (0pt, 0pt) rectangle ++ (\progressbar@tmpdim, \progressbar@pbht);
-
+ (0,0) rectangle (\textwidth, \ratten@progressonsectionpage@linewidth);
+ \shade[draw=pbblue,top color=pbblue!50,bottom color=pbblue!50,middle color=pbblue]
+ (0,0) rectangle (\ratten@progressonsectionpage, \ratten@progressonsectionpage@linewidth);
+
\draw[color=normal text.fg!50]
- (0pt, 0pt) rectangle (\progressbar@pbwd, \progressbar@pbht)
+ (0pt, 0pt) rectangle (\textwidth, \ratten@progressonsectionpage@linewidth)
node[pos=0.5,color=normal text.fg] {\textnormal{%
\pgfmathparse{\insertframenumber*100/\inserttotalframenumber}%
\pgfmathprintnumber[fixed,precision=2]{\pgfmathresult}\,\%%
};
\end{tikzpicture}%
}
+\def\inserttotalframenumber{100} %notwendig damit es keine demension Error gibt
\defbeamertemplate*{footline}{ratten theme}
{%
\setbeamercovered{transparent}
% %um descripten links auszurichten
-\defbeamertemplate{description item}{align left}{\insertdescriptionitem\hfill}
-\setbeamertemplate{description item}[align left]
+% \defbeamertemplate{description item}{align left}{\insertdescriptionitem\hfill}
+% \setbeamertemplate{description item}[align left]
\setbeamertemplate{itemize items}[triangle]
\item{beschränkt sich auf Zusammenhang mit LUKS}
\item{beschreibt den praktischen Einsatz}
\item{alle Beispiel Commands brauchen root-Rechte}
- \item{Annahme über Zuhörende Menschen:}
- \begin{itemize}
- \item{fortgeschrittene Linux User}
- \item{schon ein paar mal mit der CLI die Festplatte verschlüsselt}
- \item{Basis-Wissen IT-Security vorhanden}
\end{itemize}
+ \pause
+ Wer von euch:
+ \begin{itemize}
+ \item{ist fortgeschrittene Linux User?}
+ \item{hat schon ein paar mal mit der CLI die Festplatte verschlüsselt?}
+ \item{hat Basis-Wissen IT-Security?}
\end{itemize}
\note{Begriff TPM meint TPM 2.0}
- \end{frame}
+\end{frame}
\begin{frame}[plain]
\frametitle<presentation>{Inhaltsverzeichnis}
\pause
\item{kompliziert aufgebaut:}
\begin{description}
- \item[plattform] System Hersteller Bereich des TPMs
- \item[endorsement] TPM Hersteller Bereich und Privacy OWNER (Organisations-Kontrolle), Default Policies
- \item[\color<2>{amber-yellow}{storage}] Hier können User ihre Keys und Objekte ablegen
+ \item[platform] System Hersteller Bereich
+ \item[endorsement] TPM Hersteller Bereich und Privacy OWNER, Sicherheitsbereich
+ \item[\color<2>{amber-yellow}{storage}] User Bereich für Keys und Objekte
\item[no hierachy / null] Überlebt keinen Boot, berechnet Zufall, nur für temporäre Keys
\end{description}
\end{itemize}
\begin{frame}
\frametitle{Vorteile des TPM unter Linux}
\begin{itemize}
+\item{der TPM kann nun auch unter Linux genutzt werden}
\item{Festplatte kann mit dem TPM automatisch entschlüsselt werden}
\item{TPM kann Passphrase für LUKS ersetzen}
\item{Kernel, initrd und der Bootprozess können auf Änderungen überwacht werden}
\item{Entschlüsselung kann gesperrt werden}
-\item{der TPM kann nun auch unter Linux genutzt werden, weitere Features sind in aktiver Entwicklung}
+\item{TPM ist unter Linux in aktiver Entwicklung}
\end{itemize}
\end{frame}
\frametitle{Entschlüsselung an den TPM binden}
\begin{listing}
\begin{minted}[escapeinside=||]{console}
-systemd-cryptenroll --tpm2-device=auto --unlock-tpm2-device=auto /dev/vda3
+systemd-cryptenroll --tpm2-device=auto /dev/vda3
|🔐| New TPM2 token enrolled as key slot 2.
\end{minted}
\caption{TPM in Keyslot des LUKS headers eintragen}
Keyslot: 3
\end{minted}
\end{minipage}
-\note[item]{\textbf{Vorsicht} hier ist nicht sichtbar die Entschlüsselung an den PCR 7 gebunden.}
+\note[item]{\textbf{Vorsicht} hier ist per default nicht sichtbar die Entschlüsselung an den PCR 7 gebunden.}
\end{frame}
\begin{frame}
|\dots|
23 application-support 0000000000000000000000000000000000000000000000000000000000000000
\end{minted}
+\note[item]{PCR-Namen nicht besonders aussagekräftig}
\note[item]{die Prüfsumme durch ein Update der Firmware verändern?}
\note[item]{kommt nie vor: Update der Secure-Boot Zertifikate? shim-signed}
\note[item]{\dots dann stimmt die Prüfsumme nicht mehr.}
\frametitle{PCRs im UEFI Mapping}
\centering
\includegraphics[height=0.8\paperheight]{TCG-PCRs.png}
+ \note[item]{grüne und blaue Punkte ist jeweils ein PCR in den mehrere Werte vermischt gespeichert ist}
\end{frame}
Added in version 256.
|\dots|
\end{minted}
-\note{Wunsch Idee des Kollegen, wir können prüfen ob User ihre TPM-Pin geändert haben}
+\note{Frage des Kollegen gibt es die Möglichkeit zu prüfen ob die TPM-PIN auf \$ gesetzt ist?}
\end{frame}
\setbeamercovered{invisible}
\item[D] \textcolor<2>{red}{systemd-Directive} \onslide<2->{\textcolor{red}{X}}
\item[E] \textcolor<2>{red}{Eine Umgebungsvariable} \onslide<2->{\textcolor{red}{X}}
\item[F] \textcolor<2>{red}{Eine Variable von systemd-creds} \onslide<2->{\textcolor{red}{X}}
-\item[G] \textcolor<2>{gruen}{Ersatz für die Variable TPM2-PIN} \onslide<2->{\textcolor{gruen}{\checkmark}}
+\item[G] \textcolor<2>{gruen}{Ersatz für die Umgebungsvariable TPM2-PIN} \onslide<2->{\textcolor{gruen}{\checkmark}}
\item[H] \textcolor<2>{gruen}{Ein Credential das innerhalb einer Systemd-Unit verwendet werden kann} \onslide<2->{\textcolor{gruen}{\checkmark}}
\end{description}
+\note{Frage des Kollegen und was ist das jetzt eigentlich?}
\end{frame}
\setbeamercovered{transparent}
\note{Note to my inner self: "Manpage lesen hilft gegen Frustration"}
\end{frame}
+\begin{frame}
+\frametitle{Wie funktioniert systemd-creds mit systemd-cryptenroll?}
+\framesubtitle{Dokumentation?}
+\begin{itemize}
+\item{es gibt keine Dokumentation zu finden}
+\pause
+\item{es gibt kein Beispiel zu finden}
+\pause
+\item{systemd-repo auf Github}
+\begin{itemize}
+ \item{Tests durchgesehen}
+ \pause
+ \item{Pull-Request durchsucht}
+\end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Eine vage Idee}
+\begin{listing}
+\begin{minted}[breaklines,fontsize=\small]{bash}
+# Add PIN to TPM2 enrollment
+NEWPIN=1234 systemd-cryptenroll --unlock-tpm2-device=auto --tpm2-device=auto --tpm2-with-pin=yes "$IMAGE"
+
+# Add PIN to TPM2 enrollment, through systemd-creds
+systemd-run -p SetCredential=TPM2_PIN:4321 -p DynamicUser=1 -E PIN=1234 --unit=testsuite-70-cryptenroll-creds.service --wait systemd-cryptenroll --unlock-tpm2-device=auto --tpm2-device=auto --tpm2-with-pin=yes "$IMAGE"
+\end{minted}
+\caption{Test aus \#31370 PR (unvollständig)}
+\end{listing}
+\end{frame}
+
+\begin{frame}
+\frametitle{Eine vage Idee, die nicht funktioniert}
+\begin{itemize}
+\item{Aber \dots}
+\pause
+\begin{itemize}
+\item{PR wurde geschlossen, weil schon implementiert über systemd-ask-password-agent}
+\pause
+\item{im restlichen Code kein Test, der das Verhalten prüft}
+\pause
+\item{im Code von systemd-cryptenroll ist ersichtlich, dass systemd-ask-password genutzt wird (in C geschrieben)}
+\end{itemize}
+\end{itemize}
+\note{In den Tests werden nicht dokumentierte Umgebungsvariabeln genutzt, um Passwörter und ähnliches an systemd-cryptenroll zu übergeben, aber das soll nicht produktiv genutzt werden}
+\end{frame}
+
+\begin{frame}[fragile]
+\begin{minted}[escapeinside=||,breaklines,fontsize=\small,breakanywhere]{output}
+systemd-ask-password
+--credential=
+ |\colorbox{inlineheighlight}{Configure a credential to read the password from} - | if it exists. This |\colorbox{inlineheighlight}{may be used in conjunction with the ImportCredential=,}\colorbox{inlineheighlight}{ LoadCredential= and SetCredential= settings}| in unit files. See systemd.exec(5) for details. If not specified, defaults to "password". This |\colorbox{inlineheighlight}{option has no effect if no credentials }\colorbox{inlineheighlight}{directory is passed to the program}| (i.e. $CREDENTIALS_DIRECTORY is not set) or if the no credential of the specified name exists.
+ Added in version 249.
+\end{minted}
+\pause
+systemd-ask-password hilft das Credential beim User abzufragen, aber damit kann es nicht an systemd-cryptenroll übergeben werden
+\end{frame}
+
\begin{frame}[fragile]
\frametitle{systemd-cred in Zusammenhang mit TPM -- Fehler}
\begin{listing}
\vspace{-0.1cm}
\begin{listing}
\begin{minted}{console}
-systemd-run -p LoadCredential=cryptenroll.passphrase:/root/cryptenroll.passphrase \
- -p SetCredential=cryptenroll.new-tpm2-pin:4321\
- --unit=systemd-cryptsetup@root.service \
- --wait systemd-cryptenroll \
- --tpm2-device=auto \
- --tpm2-with-pin=yes /dev/vda3
+systemd-run -p LoadCredential=cryptenroll.passphrase:/root/cryptenroll.passphrase -p SetCredential=cryptenroll.new-tpm2-pin:4321 --unit=systemd-cryptsetup@root.service --wait systemd-cryptenroll --tpm2-device=auto --tpm2-with-pin=yes /dev/vda3
systemd-cryptsetup@root.service: Failed to set up credentials: Protocol error
\end{minted}
\vspace{-0.2cm}
\caption{systemd-creds init und encrypt sowie decrypt}
\end{listing}
\begin{listing}
+\pause
\begin{minted}{bash}
systemd-run -p SetCredential=cryptenroll.passphrase:test -p SetCredential=cryptenroll.new-tpm2-pin:4321 systemd-cryptenroll --tpm2-device=auto --tpm2-with-pin=yes /dev/vda3
\end{minted}
\caption{Setzt mit systemd-creds definierte Passphrase}
\end{listing}
-\note{Mit verschlüsselten Passphrases noch nicht erfolgreich\\}
-\note<beamer>{Wir wissen etwas über den TPM im Bootprocess, wie wir damit die Festplatte ver/entschlüsseln können, was es mit PCRs auf sich hat \dots fehlt noch die restliche Konfiguration}
+\note[item]{Mit verschlüsselten Passphrases noch nicht erfolgreich}
+\note[item]{systemd-cryptenroll mit Credentials ist defninitiv nicht so gedacht, wie ich das hier versucht hab}
+\note[item]<beamer>{Wir wissen etwas über den TPM im Bootprocess, wie wir damit die Festplatte ver/entschlüsseln können, was es mit PCRs auf sich hat \dots fehlt noch die restliche Konfiguration}
\end{frame}
\section{Konfiguration in System}
+
+\begin{frame}[fragile]
+\frametitle{Konfiguration in der Crypttab}
+\texttt{/etc/crypttab}
+\begin{itemize}
+ \item{systemd-Version $<$ 255}
+ \note[item]{systemd-Version $<$ 255: Zeile auskommentieren, damit systemd das LUKS nicht nochmal entschlüssen will}
+ \begin{minted}{linux-config}
+#dm_crypt-0 UUID=ede52a15-f515-4fed-838d-5433999f3f24 none luks
+ \end{minted}
+ \item{systemd-Version $>$ 256}
+ \note[item]{systemd-Version $>$ 256: nicht auskommentieren, sondern erweitern:}
+ \begin{minted}{linux-config}
+dm_crypt-0 UUID=ede52a15-f515-4fed-838d-5433999f3f24 none discard,tpm2-device=auto,tpm2-pin=yes
+ \end{minted}
+\end{itemize}
+\end{frame}
+
\begin{frame}[fragile]
\frametitle{initramfs modifizieren}
\begin{itemize}
\end{itemize}
\end{frame}
-\begin{frame}[fragile]
-\frametitle{Konfiguration in der Crypttab}
-\texttt{/etc/crypttab}
-\begin{itemize}
- \item{systemd-Version $<$ 255}
- \note[item]{systemd-Version $<$ 255: Zeile auskommentieren, damit systemd das LUKS nicht nochmal entschlüssen will}
- \begin{minted}{linux-config}
-#dm_crypt-0 UUID=ede52a15-f515-4fed-838d-5433999f3f24 none luks
- \end{minted}
- \item{systemd-Version $>$ 256}
- \note[item]{systemd-Version $>$ 256: nicht auskommentieren, sondern erweitern:}
- \begin{minted}{linux-config}
-dm_crypt-0 UUID=ede52a15-f515-4fed-838d-5433999f3f24 none discard,tpm2-device=auto,tpm2-pin=yes
- \end{minted}
-\end{itemize}
-\end{frame}
-
\section{Unterschiede bei den Distributionen}
\begin{frame}
\frametitle{Welche Unterschiede bezüglich des TPMs gibt es bei Distributionen?}
\begin{itemize}
\item{unterschiedliche Tools für initramfs}
\begin{itemize}
- \item{Dracut}
- \note[item]{Dracut: Fedora, OpenSuse}
- \item{Initramfstools}
+ \item{dracut}
+ \note[item]{dracut: Fedora, OpenSuse}
+ \item{initramfstools}
\note[item]{initramfstools: Debian, Ubuntu, Archlinux}
\note[item]{Dracut ist einfacher zu konfigurieren, daher wechseln gerade viele von initramfstools zu dracut}
\end{itemize}
\begin{frame}[fragile]
\frametitle{Debugging mit dem TPM I}
\framesubtitle{Rätselraten}
-\textbf{Folgende journald Meldung ist durch einen Konfigurationsfehler verursacht}
+\textbf{Wurde folgende journald Meldung durch einen Konfigurationsfehler verursacht?}
\note<beamer>[item]{Bitte um Handzeichen}
\begin{minted}{linux-config}
localhost kernel: Unknown kernel command line parameters "splash BOOT_IMAGE=/vmlinuz-6.8.0-49-generic tpm2-pin=yes", will be passed to user space.
\begin{frame}[fragile]
\frametitle{Debugging mit dem TPM II}
\framesubtitle{Rätselraten}
-\textbf{Folgende journald Meldung ist durch einen Konfigurationsfehler verursacht}
+\textbf{Wurde folgende journald Meldung durch einen Konfigurationsfehler verursacht?}
\note<beamer>[item]{Bitte um Handzeichen}
\begin{minted}{linux-config}
localhost systemd-udevd[278]: /usr/lib/udev/rules.d/60-tpm-udev.rules:3 Unknown user 'tss', ignoring.
\begin{frame}[fragile]
\frametitle{Debugging mit dem TPM III}
\framesubtitle{Rätselraten}
-\textbf{Folgende journald Meldung ist durch einen Konfigurationsfehler verursacht}
+\textbf{Wurde folgende journald Meldung durch einen Konfigurationsfehler verursacht?}
\note<beamer>[item]{Bitte um Handzeichen}
\begin{minted}{linux-config}
systemd[1]: systemd-tpm2-setup-early.service - TPM2 SRK Setup (Early) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
\begin{frame}[fragile]
\frametitle{Debugging mit dem TPM IV}
\framesubtitle{Rätselraten}
-\textbf{Folgende journald Meldung ist durch einen Konfigurationsfehler verursacht}
+\textbf{Wurde folgende journald Meldung durch einen Konfigurationsfehler verursacht?}
\only<2>{\textcolor{green}{\textbf{\checkmark}}}
\note<beamer>[item]{Bitte um Handzeichen}
\begin{minted}[breaklines,fontsize=\footnotesize,breakanywhere,escapeinside=||]{linux-config}
\begin{itemize}
\item{automatischer Wechsel der Entschlüsselungs-Option von PIN zu Passphrase nicht sichtbar}
\item{keine Updates der PCR Measurements (Ausnahme Archlinux und UKI)}
-\item{systemd-cryptenroll mit TPM ausgelegt für Zusammenspiel mit UKI}
+\item{\texttt{systemd-cryptenroll} mit TPM ausgelegt für Zusammenspiel mit UKI}
\item{mehrere Versuche die TPM-PIN einzugeben, nur mit \texttt{tpm2-measure-pcr=yes} in \texttt{crypttab}}
+\item{unklar wie die Credentials funktionieren ausserhalb von Units}
+\item{wenn \texttt{SetCredential} nicht funktioniert (fehlerhaftes Passwort, DA-Lockout), sieht es so aus, als wäre das Command erfolgreich gewesen}
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Nachteile des TPM in Bezug auf \texttt{systemd-cryptenroll}}
+\framesubtitle{Debuging}
+\begin{itemize}
\item{Debugging:}
\begin{itemize}
-\item{richtige Fehlermeldungen finden}
-\item{verständliche TPM-Fehlercodes}
-\item{fehlerhafte PIN-Eingabe erkennbar}
+\item{richtige Fehlermeldungen finden?}
+\item{verständliche TPM-Fehlercodes?}
+\item{fehlerhafte PIN-Eingabe erkennbar?}
\end{itemize}
\item{nur TPM Entschlüsselung wiegt in falscher Sicherheit}
\note[item]{bei Diebstahl des Rechners ist eine Festplatten-Verschlüsselung mit TPM ohne Pin so sicher wie keine Verschlüsselung}
jabber: buecherratten@jabber.in-berlin.de\\
fediverse: buecherratten@pirati.ca\\
git-repro:
+ \vspace{-0.5cm}
\begin{columns}
\only<beamer>{\begin{column}{0.2\textwidth}
\qrcode[hyperlink,height=2cm]{http://git.tuxteam.de/gitweb/?p=susannes-git/TPM-LUKS.git;a=shortlog;h=refs/heads/main}
\begin{column}{0.8\textwidth}
\url{http://git.tuxteam.de/gitweb/?p=susannes-git/TPM-LUKS.git;a=shortlog;h=refs/heads/main}
\end{column}
- \end{columns}
- }
+ \end{columns}}
\end{frame}
\end{document}