You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
348 lines
9.0 KiB
348 lines
9.0 KiB
\documentclass{beamer}
|
|
\usepackage{graphicx}
|
|
\usetheme{Madrid}
|
|
|
|
\title[Other TPM Features]{Using the TPM:\\ Other TPM Features}
|
|
\author{Ariel Segall \\ ariels@alum.mit.edu}
|
|
%\institute{\copyright MITRE Corporation 2012}
|
|
\date{Day 2\\ \bigskip Approved for Public Release: 12-2749. \\Distribution unlimited}
|
|
%\date{May 31, 2012}
|
|
|
|
\begin{document}
|
|
|
|
\begin{frame}
|
|
\maketitle
|
|
\end{frame}
|
|
|
|
\begin{frame}{License}
|
|
|
|
All materials are licensed under a Creative Commons ``Share Alike'' license.
|
|
\begin{itemize}
|
|
\item http://creativecommons.org/licenses/by-sa/3.0
|
|
\end{itemize}
|
|
\includegraphics[width=4in]{creativecommons.png}
|
|
\end{frame}
|
|
|
|
\begin{frame}{The Smorgasbord}
|
|
|
|
The TPM has a number of minor features worth discussing
|
|
\begin{itemize}
|
|
\item Not significant enough for 101
|
|
\item Too small for own talks
|
|
\end{itemize}
|
|
|
|
We'll briefly touch on several, so you'll be familiar with the concepts
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Topics We'll Cover}
|
|
|
|
\begin{itemize}
|
|
\item TPM Flags
|
|
\item Key Migration
|
|
\item Monotonic Counters
|
|
\item Tick Counters
|
|
\item Random Number Generation
|
|
\item OwnerEvict Keys
|
|
\item Clearing the TPM
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{TPM Flags}
|
|
|
|
\begin{itemize}
|
|
\item The TPM has a number of internal settings: ``flags''
|
|
\item Values (mostly) changeable by owner or set by TPM
|
|
\item Most are not very relevant to enterprise, e.g.:
|
|
\begin{itemize}
|
|
\item Ownership: determines whether an owner exists
|
|
\item ReadPubEK: determines if EK pubkey can be read; for privacy
|
|
\end{itemize}
|
|
\item Some are potentially very important:
|
|
\begin{itemize}
|
|
\item \textbf{FIPS: Many TPM commands will require minimum good security practices}
|
|
\item \textbf{nvLocked: Enables or disables all authorization checks on NVRAM}
|
|
\end{itemize}
|
|
\item Others are useful in unusal corner cases, e.g:
|
|
\begin{itemize}
|
|
\item CEKPUsed: Indicates if EK created by mfr process or TPM command
|
|
\item disableOwnerClear: Determines whether owner can clear TPM
|
|
\end{itemize}
|
|
\item Full list in TPM Structures spec
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Getting and Setting TPM Flags}
|
|
|
|
\begin{itemize}
|
|
\item \texttt{TPM\_GetCapability}: Retrieves current value of a TPM
|
|
flag or other internal information, such as number of key slots
|
|
available, size of NVRAM, etc.
|
|
\item \texttt{TPM\_SetCapability}: Owner-authorized command to change
|
|
flag values.
|
|
\item Full list of capabilities and subcapabilities (i.e., indexes to flags and other information) in Structures spec, under \texttt{TPM\_CAPABILITY\_AREA}.
|
|
\begin{itemize}
|
|
\item What does that mean? We'll cover that this afternoon.
|
|
\end{itemize}
|
|
\item Note: When programming using TSS, there are actually more
|
|
commands that can be used to retrieve and set flags. We won't cover
|
|
those today.
|
|
\end{itemize}
|
|
|
|
\begin{center}
|
|
\textbf{Some flags, including FIPS mode, are permanently set by the manufacturer.}
|
|
\end{center}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Topics We'll Cover}
|
|
|
|
\begin{itemize}
|
|
\item TPM Flags
|
|
\item {\color{red}Key Migration}
|
|
\item Monotonic Counters
|
|
\item Tick Counters
|
|
\item Random Number Generation
|
|
\item OwnerEvict Keys
|
|
\item Clearing the TPM
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Key Migration}
|
|
|
|
\begin{itemize}
|
|
\item In TPM keys talk, mentioned that keys could be migratable
|
|
\item All other talks: use non-migratable keys!
|
|
\item Key migration is a criticial feature for enterprise
|
|
\begin{itemize}
|
|
\item Backup
|
|
\item System replacement
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Migration in a Nutshell}
|
|
|
|
\begin{itemize}
|
|
\item Create migratable key K on TPM A
|
|
\item Create migration blob, reencrypting K to key on TPM B
|
|
\begin{itemize}
|
|
\item Requires authorization of owner, or delegated auth
|
|
\item Note: B doesn't actually have to be a TPM, though designed to be
|
|
\end{itemize}
|
|
\item B decrypts blob; K now available to B.
|
|
\end{itemize}
|
|
|
|
Note: K still usable on A! This is backup approach.
|
|
\end{frame}
|
|
|
|
\begin{frame}{Migration: Starting State}
|
|
\includegraphics[width=4in]{migration-illustration-1}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Migration: Creating Migration Blob}
|
|
\includegraphics[width=4in]{migration-illustration-2}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Migration: Transferring Migration Blob}
|
|
\includegraphics[width=4in]{migration-illustration-3}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Migration: Decrypting Migration Blob}
|
|
\includegraphics[width=4in]{migration-illustration-4}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Certified Migration Keys (CMKs)}
|
|
|
|
\begin{itemize}
|
|
\item Normal migratable keys cannot be certified: could be migrated to non-TPM
|
|
\item CMKs always migrate to migration authority, which verifies final destination
|
|
\item Owner approves migration authorities for system
|
|
\item Can be certified; cert includes authority info
|
|
\item More complex than normal migration, but more assurance
|
|
\end{itemize}
|
|
|
|
|
|
\end{frame}
|
|
\begin{frame}{Topics We'll Cover}
|
|
|
|
\begin{itemize}
|
|
\item TPM Flags
|
|
\item Key Migration
|
|
\item {\color{red}Monotonic Counters}
|
|
\item Tick Counters
|
|
\item Random Number Generation
|
|
\item OwnerEvict Keys
|
|
\item Clearing the TPM
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Monotonic Counters}
|
|
|
|
\begin{itemize}
|
|
\item TPMs provide monotonic counters
|
|
\item Guaranteed to always increase over time
|
|
\begin{itemize}
|
|
\item When deliberately incremented-- not clocks
|
|
\end{itemize}
|
|
\item Good for internal freshness checking!
|
|
\begin{itemize}
|
|
\item Counter values cannot be signed for external verification
|
|
\item Can use to invalidate old saved data: include value, increment counter
|
|
\end{itemize}
|
|
\item Unlike NVRAM, burnout due to too many updates extremely unlikely
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Topics We'll Cover}
|
|
|
|
\begin{itemize}
|
|
\item TPM Flags
|
|
\item Key Migration
|
|
\item Monotonic Counters
|
|
\item {\color{red}Tick Counters}
|
|
\item Random Number Generation
|
|
\item OwnerEvict Keys
|
|
\item Clearing the TPM
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Tick Counters}
|
|
|
|
\begin{itemize}
|
|
\item TPM has no internal clock
|
|
\item Closest equivalent: tick counters
|
|
\item Count from start of last tick session
|
|
\begin{itemize}
|
|
\item Usually last startup, but not guaranteed
|
|
\end{itemize}
|
|
\item Combines counter with tick session nonce, allowing comparisons
|
|
\begin{itemize}
|
|
\item TPM will sign tick stamps-- use Identity!
|
|
\item Approximate clock per boot
|
|
\end{itemize}
|
|
\item Surprisingly accurate!
|
|
\begin{itemize}
|
|
\item Intended primarily for short-term, relative comparisons
|
|
\item Usable for timing-based attestation
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Topics We'll Cover}
|
|
|
|
\begin{itemize}
|
|
\item TPM Flags
|
|
\item Key Migration
|
|
\item Monotonic Counters
|
|
\item Tick Counters
|
|
\item {\color{red}Random Number Generation}
|
|
\item OwnerEvict Keys
|
|
\item Clearing the TPM
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Random Number Generation}
|
|
|
|
\begin{itemize}
|
|
\item TPM can act as random number generator
|
|
\begin{itemize}
|
|
\item Frequent question: how good?
|
|
\item Answer: Don't know, manufacturer dependent
|
|
\item Hardware entropy recommended, not required
|
|
\end{itemize}
|
|
\item Bytes retrievable with \texttt{TPM\_GetRandom} command
|
|
\item Entropy can be added from outside with \texttt{TPM\_StirRandom} command
|
|
\begin{itemize}
|
|
\item RNG used to create TPM keys
|
|
\item Allows high-quality entropy to be imported for better key generation
|
|
\end{itemize}
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Topics We'll Cover}
|
|
|
|
\begin{itemize}
|
|
\item TPM Flags
|
|
\item Key Migration
|
|
\item Monotonic Counters
|
|
\item Tick Counters
|
|
\item Random Number Generation
|
|
\item {\color{red} OwnerEvict Keys}
|
|
\item Clearing the TPM
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
\begin{frame}{OwnerEvict Keys}
|
|
|
|
\begin{itemize}
|
|
\item We've previously said that loaded keys are unloaded on reboot,
|
|
or when the TPM runs out of key storage space.
|
|
\item There is an exception: OwnerEvict Keys
|
|
\begin{itemize}
|
|
\item Currently loaded key; owner sets OwnerEvict flag on it.
|
|
\item Key must not have any parent PCR constraints. (Constraints on key itself fine.)
|
|
\item Key will never be unloaded until flag is changed by owner.
|
|
\end{itemize}
|
|
\item Very useful; no need to track key on disk or load!
|
|
\item \textit{Very} limited; some TPMs have as few as 3 key slots.
|
|
\item Use \texttt{TPM\_KeyControlOwner} command to set.
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Topics We'll Cover}
|
|
|
|
\begin{itemize}
|
|
\item TPM Flags
|
|
\item Key Migration
|
|
\item Monotonic Counters
|
|
\item Tick Counters
|
|
\item Random Number Generation
|
|
\item OwnerEvict Keys
|
|
\item {\color{red}Clearing the TPM}
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Clearing the TPM}
|
|
|
|
\begin{itemize}
|
|
\item What does an enterprise do with TPM when disposing of machine?
|
|
\item \textit{Clear} the TPM
|
|
\item Two approaches:
|
|
\begin{itemize}
|
|
\item Through BIOS (ForceClear must be enabled; can be disabled temporarily)
|
|
\item \texttt{TPM\_OwnerClear} command (must be enabled; once
|
|
disabled, stays until TPM cleared)
|
|
\end{itemize}
|
|
\item Erases all non-permanent data from TPM
|
|
\begin{itemize}
|
|
\item Owner erased, along with SRK
|
|
\item Key storage cleared (in FIPS mode, overwritten with 0)
|
|
\item Flags returned to default value
|
|
\item Non-manufacturer NVRAM deallocated
|
|
\item etc
|
|
\end{itemize}
|
|
\item Some things remain: EK, monotonic counter
|
|
\begin{itemize}
|
|
\item Also PCRs-- cannot clear TPM to fake boot state
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Questions?}
|
|
|
|
\end{frame}
|
|
|
|
\end{document}
|
|
|