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.
383 lines
9.8 KiB
383 lines
9.8 KiB
\documentclass{beamer}
|
|
\usepackage{graphicx}
|
|
\usetheme{Madrid}
|
|
|
|
\title[Data Storage]{Using the TPM: \\ Data Protection and Storage}
|
|
\author{Ariel Segall \\ ariels@alum.mit.edu}
|
|
\date{Day 2\\ \bigskip Approved for Public Release: 12-2749. \\Distribution unlimited}
|
|
%\institute{\copyright MITRE Corporation 2012}
|
|
%\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}{What We'll Be Covering}
|
|
\begin{itemize}
|
|
\item The TPM's Tamper Resistance
|
|
\item Using Storage Keys
|
|
\item Using Binding Keys
|
|
\item NVRAM
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Revisiting the TPM's Tamper Resistance}
|
|
|
|
My most frequently asked question about TPMs:\\
|
|
``I can use it to protect
|
|
my data if the machine is stolen, right?''
|
|
|
|
\begin{itemize}
|
|
\item Reminder: TPM is \textit{tamper-resistant}, not tamper-proof
|
|
\begin{itemize}
|
|
\item Not up to government standards
|
|
\item Not designed for nation-state adversaries!
|
|
\end{itemize}
|
|
\item Far better than software protection, but keys \textit{can} be removed
|
|
\begin{itemize}
|
|
\item Expensive to break: \$100,000+ for the publicized attack
|
|
\item High failure rate: destroyed a dozen to remove keys from one
|
|
\item \textbf{Still not sufficient for sponsor high-value data with
|
|
high theft risk}
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{TPM's Storage Protection Scenarios}
|
|
|
|
\begin{itemize}
|
|
\item Evil Maids
|
|
\begin{itemize}
|
|
\item Can't copy hard drive and pull keys out at leisure
|
|
\item Combined with PCRs, can't reboot into evil OS and steal secrets
|
|
\end{itemize}
|
|
\item Software data theft
|
|
\begin{itemize}
|
|
\item Can't freely vacuum data and send off machine
|
|
\item Combine TPM keys and user passwords for best security
|
|
\item Note: At-rest protection, not during use!
|
|
\end{itemize}
|
|
\item Casual physical theft
|
|
\begin{itemize}
|
|
\item Not good enough for nation-states, plenty good against even
|
|
competent thieves
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{What This Means For Use}
|
|
|
|
\begin{itemize}
|
|
\item The TPM is strongest when protecting data at rest\ldots
|
|
\item \ldots therefore, protecting data in bulk less effective than small, focused chunks
|
|
\item Storage most effective when used in multi-part security:
|
|
\item TPM as thing you have; authorization value as thing you know
|
|
\item State verification one of the most powerful tools for data protection\ldots
|
|
\item \ldots and can also cause self-inflicted DoS. Use with care.
|
|
\end{itemize}
|
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
\begin{frame}{What We'll Be Covering}
|
|
\begin{itemize}
|
|
\item The TPM's Tamper Resistance
|
|
\item {\color{red}Using Storage Keys}
|
|
\item Using Binding Keys
|
|
\item NVRAM
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Using Storage Keys}
|
|
|
|
\begin{itemize}
|
|
\item \texttt{TPM\_Seal}: Encrypt data for later decryption with \texttt{TPM\_Unseal}
|
|
\begin{itemize}
|
|
\item Local platform only!
|
|
\end{itemize}
|
|
\item Storage keys are also used to protect TPM keys
|
|
\begin{itemize}
|
|
\item Every \texttt{TPM\_CreateWrapKey} operation must provide a storage key parent
|
|
\item When migrating keys, encrypted to storage key: new parent
|
|
\end{itemize}
|
|
\item Note: The SRK is a storage key!
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
|
|
\begin{frame}{Key Storage Hierarchy Review}
|
|
|
|
\includegraphics[width=4in]{key-storage-hierarchy}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Sealing}
|
|
|
|
\begin{itemize}
|
|
\item When sealing data, several options:
|
|
|
|
\begin{itemize}
|
|
\item Which storage key to use
|
|
\item Whether to require authorization data (password)
|
|
\item Whether to provide PCR constraints for decryption
|
|
\item Whether to provide locality constraints for decryption
|
|
\end{itemize}
|
|
\item Sealed data always contains unique TPM internal value
|
|
\begin{itemize}
|
|
\item Locked to this TPM even if the key migrates
|
|
\end{itemize}
|
|
\item Sealing also records the current PCR state
|
|
\begin{itemize}
|
|
\item Ensure that decrypted data can be trusted
|
|
\end{itemize}
|
|
\item Returns ``sealed blob''
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Unsealing}
|
|
|
|
\begin{itemize}
|
|
\item Use same storage key to decrypt
|
|
\item Verifies authorization, current PCRs, current locality against blob
|
|
\begin{itemize}
|
|
\item Note: two authorizations may be required! One for key, one for blob
|
|
\end{itemize}
|
|
\item Verifies creation data to ensure real creation value matches public value
|
|
\item Returns decrypted data
|
|
\item Note: blob can be unsealed multiple times
|
|
\end{itemize}
|
|
|
|
\medskip
|
|
|
|
Note: Once unsealed, data is in the clear!
|
|
\begin{itemize}
|
|
\item Use PCR values and authorization to minimize risk of loss during use
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Storage Key Summary}
|
|
|
|
\begin{itemize}
|
|
\item Utility key for protecting secret data, including keys
|
|
\item Directly protect user data with Seal
|
|
\begin{itemize}
|
|
\item Optionally additionally protect with password, PCR constraints
|
|
\item Local system only
|
|
\end{itemize}
|
|
\item Decrypt with Unseal
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{What We'll Be Covering}
|
|
\begin{itemize}
|
|
\item The TPM's Tamper Resistance
|
|
\item Using Storage Keys
|
|
\item {\color{red}Using Binding Keys}
|
|
\item NVRAM
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Binding Keys}
|
|
|
|
\begin{itemize}
|
|
\item Another utility key for data protection
|
|
\item Different paradigm than storage
|
|
\item Anyone on any platform can Bind data
|
|
\item Only TPM can decrypt, using \texttt{TPM\_Unbind}
|
|
\item No fancy options-- just decryption
|
|
\begin{itemize}
|
|
\item PCR constraints and authorization still possible, but on key not blob
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Storage vs. Binding Key Summary}
|
|
|
|
\begin{tabular}{|c|c|}
|
|
\hline
|
|
\textbf{Storage} & \textbf{Binding} \\
|
|
\hline
|
|
Local use only & Local or remote use \\
|
|
\hline
|
|
\textit{Seals} user data, & \textit{Binds} user data, \\
|
|
optional extra constraints & constraints only on key \\
|
|
\hline
|
|
Can be used as key parent & Encrypts user data only\\
|
|
\hline
|
|
Only authenticates local data & Usable for machine authentication \\
|
|
\hline
|
|
\end{tabular}
|
|
|
|
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{What We'll Be Covering}
|
|
\begin{itemize}
|
|
\item The TPM's Tamper Resistance
|
|
\item Using Storage Keys
|
|
\item Using Binding Keys
|
|
\item {\color{red}NVRAM}
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{NVRAM Summary}
|
|
|
|
\begin{itemize}
|
|
\item Storage area inside TPM
|
|
\item Very limited in size: only 1280 bytes required, though can be bigger
|
|
\begin{itemize}
|
|
\item No hard data on actual implementations
|
|
\end{itemize}
|
|
\item Controlled by owner; permissions can be delegated
|
|
\item Some sections reserved for specific purposes (e.g., root credentials)
|
|
\item Customizable constraints per region for read or write access
|
|
\begin{itemize}
|
|
\item PCR contents
|
|
\item Locality
|
|
\item Authorization data
|
|
\end{itemize}
|
|
\item Limited number of writes; can be burned out
|
|
\begin{itemize}
|
|
\item Order of 10,000; only a minor DoS issue for most applications
|
|
\end{itemize}
|
|
%\item Not going into how to allocate, store data today-- \\implementation complicated
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Why NVRAM is Useful}
|
|
|
|
\begin{itemize}
|
|
\item Stores data that can serve as reference
|
|
\begin{itemize}
|
|
\item Much harder to modify than data on disk!
|
|
\item Hashes for integrity checking
|
|
\item Owner or trusted authority public key
|
|
\item Very powerful for system sanity checking!
|
|
\end{itemize}
|
|
\item Stores high-value data that should not be accidentally deleted
|
|
\begin{itemize}
|
|
\item Keys
|
|
\item Certificates
|
|
\end{itemize}
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{NVRAM Use Case Examples}
|
|
|
|
\begin{itemize}
|
|
\item Storing user-chosen pictures for 'trusted boot'
|
|
\begin{itemize}
|
|
\item If correct picture retrieved, PCR values in known state
|
|
\end{itemize}
|
|
\item Preventing attacks which replace trusted authority
|
|
\begin{itemize}
|
|
\item IT-approved CA key or DNS server in read-only NVRAM
|
|
\end{itemize}
|
|
\item Integrity reference for software
|
|
\begin{itemize}
|
|
\item Put hash of file in write-limited NVRAM
|
|
\item Current AV definitions? Most recent save file? Policy approved
|
|
by owner? Approved OS list for boot loader?
|
|
\item If file is public key, can use to verify owner signature.
|
|
\end{itemize}
|
|
\item Resources for early boot, DRTM
|
|
\begin{itemize}
|
|
\item Limited space, but easy to constrain access
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
\begin{frame}{Using NVRAM-- Quick Summary}
|
|
|
|
\begin{itemize}
|
|
\item Establish a region of NVRAM with desired size and permissions
|
|
\begin{itemize}
|
|
\item \texttt{TPM\_NV\_DefineSpace}
|
|
\item Owner only, unless permissions delegated
|
|
\end{itemize}
|
|
\item Separate commands for owner, non-owner access
|
|
\begin{itemize}
|
|
\item \texttt{TPM\_NV\_WriteValue}, \texttt{TPM\_NV\_ReadValue} for non-owner
|
|
\item \texttt{TPM\_NV\_WriteValueAuth}, \texttt{TPM\_NV\_ReadValueAuth} for owner
|
|
\end{itemize}
|
|
\item \textbf{Note: Access control enforcement on NVRAM is not automatic!}
|
|
\begin{itemize}
|
|
\item Manufacturers need ability to write certs into NVRAM without being owner
|
|
\item Supposed to set flag enabling access control afterwards
|
|
\item Don't always!
|
|
\item How to check and set flag in next section.
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
\begin{frame}{Problems with NVRAM}
|
|
|
|
\begin{itemize}
|
|
\item Space is \textit{very} limited
|
|
\begin{itemize}
|
|
\item For one application, not a problem; if commonly used, potentially serious
|
|
\item Many hashes; very few certificates or keys
|
|
\end{itemize}
|
|
\item Limited number of writes in lifetime
|
|
\begin{itemize}
|
|
\item How many? Good question!
|
|
\item Not suitable for applications with frequent updates
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{TPM Data Protection Review}
|
|
|
|
\begin{itemize}
|
|
\item TPM designed for protection of data at rest
|
|
\item Storage keys protect data on this platform
|
|
\begin{itemize}
|
|
\item Many protection options
|
|
\end{itemize}
|
|
\item Binding keys protect data from anywhere
|
|
\item NVRAM protects limited, high-value data
|
|
\begin{itemize}
|
|
\item Good for integrity verification and system checks
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
|
|
\end{frame}
|
|
|
|
\begin{frame}{Questions?}
|
|
|
|
\end{frame}
|
|
\end{document}
|
|
|