Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- \documentclass[10pt,xcolor=dvipsnames]{beamer}
- \usetheme[progressbar=frametitle]{metropolis}
- \usepackage{booktabs}
- \usepackage{tkz-graph}
- \usepackage[default]{comicneue}
- \usepackage[T1]{fontenc}
- %\usepackage[scale=2]{ccicons}
- \usepackage{pgfplots}
- \usepgfplotslibrary{dateplot}
- \usepackage{xspace}
- \newcommand{\themename}{\textbf{\textsc{metropolis}}\xspace}
- % =================== Commands to allow hand-drawn style in tikz ==================
- \usepackage{tikz}
- \usetikzlibrary{decorations,positioning}
- \usetikzlibrary{calc, decorations.pathmorphing, patterns, arrows.meta}
- \makeatletter
- \pgfdeclaredecoration{penciline}{initial}{
- \state{initial}[width=+\pgfdecoratedinputsegmentremainingdistance,auto corner on length=1mm,]{
- \pgfpathcurveto%
- {% From
- \pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}
- {\pgfdecorationsegmentamplitude}
- }
- {% Control 1
- \pgfmathrand
- \pgfpointadd{\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
- {\pgfqpoint{-\pgfdecorationsegmentaspect\pgfdecoratedinputsegmentremainingdistance}%
- {\pgfmathresult\pgfdecorationsegmentamplitude}
- }
- }
- {%TO
- \pgfpointadd{\pgfpointdecoratedinputsegmentlast}{\pgfpoint{1pt}{1pt}}
- }
- }
- \state{final}{}
- }
- \makeatother
- % End of ============= Commands to allow hand-drawn style in tikz ==================
- \usepackage{graphicx,listings,color,xcolor}
- % Put settings for the code layout.
- \lstset{ %
- basicstyle=\ttfamily\scriptsize, % the size of the fonts that are used for the code
- numbers=left, % where to put the line-numbers
- numberstyle=\tiny\color{gray}, % the style that is used for the line-numbers
- stepnumber=1, % the step between two line-numbers. If it's 1, each line
- % will be numbered
- numbersep=5pt, % how far the line-numbers are from the code
- backgroundcolor=\color{lightgray}, % choose the background color. You must add \usepackage{color}
- showspaces=false, % show spaces adding particular underscores
- showstringspaces=false, % underline spaces within strings
- showtabs=false, % show tabs within strings adding particular underscores
- basewidth=0.54em,
- frame=single, % adds a frame around the code
- rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. commens (green here))
- tabsize=2, % sets default tabsize to 2 spaces
- captionpos=b, % sets the caption-position to bottom
- breaklines=true, % sets automatic line breaking
- breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
- title=\lstname, % show the filename of files included with \lstinputlisting;
- % also try caption instead of title
- keywordstyle=\color{blue}, % keyword style
- commentstyle=\color{OliveGreen}, % comment style
- stringstyle=\color{mauve}, % string literal style
- escapeinside={\%*}{*)}, % if you want to add a comment within your code
- morekeywords={*,...} % if you want to add more keywords to the set
- }
- \renewcommand{\baselinestretch}{1.18}
- \title{Understanding the fundamentals of attacks}
- \subtitle{What is happening when someone writes an exploit?}
- \date{\today}
- \author{Halvar Flake / Thomas Dullien}
- \institute{The /home owners association}
- %\titlegraphic{\hfill\includegraphics[height=1.5cm]{logo}}
- \tikzset{
- invisible/.style={opacity=0},
- visible on/.style={alt={#1{}{invisible}}},
- alt/.code args={<#1>#2#3}{%
- \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
- },
- }
- \begin{document}
- %\maketitle
- \definecolor{verylightgray}{gray}{0.85}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5, 4.5);
- \node at (5.5, 1.3) { \fontfamily{augie}\selectfont{\huge Rearchitecting }};
- \node at (5.5, 0.3) { \fontfamily{augie}\selectfont{\huge a }};
- \node at (5.5, -0.7) { \fontfamily{augie}\selectfont{\huge defendable }};
- \node at (5.5, -1.7) { \fontfamily{augie}\selectfont{\huge Internet }};
- \node at (5.5, -3.8) { \fontfamily{augie}\selectfont{Halvar Flake / Thomas Dullien}};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Who is this guy? }};
- \node at (5.5, 0.2) {
- \begin{tabular}{l}
- \fontfamily{augie}\selectfont{\large
- - Reverse engineering \& vuln-dev since 1998}\\ \\
- \fontfamily{augie}\selectfont{\large
- - 2004-2011: Small company in Bochum}\\ \\
- \fontfamily{augie}\selectfont{\large
- - Offensive and defensive customers}\\ \\
- \fontfamily{augie}\selectfont{\large
- - 2011-2015: Defensive work at Google}\\ \\
- \fontfamily{augie}\selectfont{\large
- - Since Nov 2016: Offensive research at Google P0}\\
- \end{tabular}
- };
- %\node at (5.5, -3.7) { \fontfamily{augie}\selectfont{\Large Who is this guy? }};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Are we living in a dystopian
- sci-fi farce? }};
- \node at (5.5, 0.2) {
- \begin{tabular}{l}
- \fontfamily{augie}\selectfont{\large
- - North Korea accused of hacking Sony ...}\\ \\
- \fontfamily{augie}\selectfont{\large
- - got protected by Google and Microsoft...}\\ \\
- \fontfamily{augie}\selectfont{\large
- - Russia accused of meddling in US elections}\\ \\
- \fontfamily{augie}\selectfont{\large
- - Governments are imitating hacking culture}\\ \\
- \fontfamily{augie}\selectfont{\large
- - People are getting hacked left, right, and center}\\
- \end{tabular}
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Attackers vs Defenders }};
- \node at (2.5, 0.5) {
- \begin{tabular}{l}
- \fontfamily{augie}\selectfont{\large
- Attacker tasks:}\\ \\
- \fontfamily{augie}\selectfont{\large
- Get in}\\ \\
- \fontfamily{augie}\selectfont{\large
- Stay in}\\ \\
- \fontfamily{augie}\selectfont{\large
- Get stuff out}\\ \\
- \end{tabular}
- };
- \node at (7.5, 0) {
- \begin{tabular}{l}
- \fontfamily{augie}\selectfont{\large
- Defender tasks:}\\ \\
- \fontfamily{augie}\selectfont{\large
- Deny}\\ \\
- \fontfamily{augie}\selectfont{\large
- Contain}\\ \\
- \fontfamily{augie}\selectfont{\large
- Detect}\\ \\
- \fontfamily{augie}\selectfont{\large
- Cleanup}\\ \\
- \end{tabular}
- };
- %\draw [decorate,thick,decoration={brace,amplitude=10pt,mirror}]
- \draw[decorate,thick,decoration={brace,amplitude=5mm,mirror}]
- (8, -2) -- (8, 1.5) node[midway,right] {
- \fontfamily{augie}\selectfont{\large \;\;
- Tactical}};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Attackers vs Defenders }};
- \node at (2.5, 0.5) {
- \begin{tabular}{l}
- \fontfamily{augie}\selectfont{\large
- Attacker tasks:}\\ \\
- \fontfamily{augie}\selectfont{\large
- Get in}\\ \\
- \fontfamily{augie}\selectfont{\large
- Stay in}\\ \\
- \fontfamily{augie}\selectfont{\large
- Get stuff out}\\ \\
- \end{tabular}
- };
- \node at (7.5, 0) {
- \begin{tabular}{l}
- \fontfamily{augie}\selectfont{\large
- Defender tasks:}\\ \\
- \fontfamily{augie}\selectfont{\large
- Deny}\\ \\
- \fontfamily{augie}\selectfont{\large
- Contain}\\ \\
- \fontfamily{augie}\selectfont{\large
- Detect}\\ \\
- \fontfamily{augie}\selectfont{\large
- Cleanup}\\ \\
- \end{tabular}
- };
- \node at (7.3, -3) {
- \begin{tabular}{l}
- \fontfamily{augie}\selectfont{\large
- Desgining the}\\
- \fontfamily{augie}\selectfont{\large
- battlefield}
- \end{tabular}
- };
- %\draw [decorate,thick,decoration={brace,amplitude=10pt,mirror}]
- \draw[decorate,thick,decoration={brace,amplitude=5mm,mirror}]
- (8, -2) -- (8, 1.5) node[midway,right] {
- \fontfamily{augie}\selectfont{\large \;\;\;
- Tactical}};
- \draw[decorate,thick,decoration={brace,amplitude=3mm,mirror}]
- (8.8, -3.8) -- (8.8, -2.2) node[midway,right] {
- \fontfamily{augie}\selectfont{\large \;\;
- Strategic}};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node[text width=9cm] at (5.5, 0.5) {
- \fontfamily{augie}\selectfont{\Large
- \begin{center}
- ``We build our computer (systems) the way we build our cities: over time, without a plan, on top of ruins."
- \vspace{5mm}
- - Ellen Ullman
- \end{center}
- }};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Building forts }};
- \node[inner sep=0pt] (whitehead) at (5.5,-1)
- {\includegraphics[width=1\textwidth]{Jaisalmer-Fort.jpg}};
- \node[text width=9cm] at (5.5, 2.3) {
- \fontfamily{augie}\selectfont{\large
- \begin{center}
- Jaisalmer (Rajastan)
- \end{center}
- }};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Building forts }};
- \node[inner sep=0pt] (whitehead) at (5.5,-1)
- {\includegraphics[width=1.8\textwidth]{jaisalmer_map.jpg}};
- \node[text width=9cm] at (5.5, 2.3) {
- \fontfamily{augie}\selectfont{\large
- }};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node[text width=9cm] at (5.5, 0.5) {
- \fontfamily{augie}\selectfont{\Huge
- \begin{center}
- How\; should\; things\; be\; designed\; differently\; to\; give\; the\;
- defensive\; side\; a\; fighting\; chance?\footnote{
- \fontfamily{augie}\selectfont{Caveat on the next slide}}
- \vspace{5mm}
- \end{center}
- }};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node[text width=9cm] at (5.5, 1) {
- \fontfamily{augie}\selectfont{\large
- \begin{center}
- ``Offensive\; problems\; are\; largely\; technical,\; defensive\; problems\; are
- \;largely\; political.''
- \vspace{3.4mm}
- This talk ignores political problems.
- \vspace{3.4mm}
- Focus is on technical problems on the defensive side.
- \end{center}
- }};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large The status quo }};
- \node[text width=9cm] at (5.5, 2.3) {
- \fontfamily{augie}\selectfont{\large
- What is the only safe way to disinfect a computer that was hacked
- by a nontrivial attacker?
- }};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large The status quo }};
- \node[inner sep=0pt] (whitehead) at (5,-1)
- {\includegraphics[width=.25\textwidth]{trash-can-24015_960_720.png}};
- \node[text width=9cm] at (5.5, 2.3) {
- \fontfamily{augie}\selectfont{\large
- What is the only safe way to disinfect a computer that was hacked
- by a nontrivial attacker?
- }};
- \end{tikzpicture}
- \end{frame}
- \newcommand*{\drawdown}[3]{
- \draw[decorate,thick] (#1, #2) -- (#1+0.5, #2)
- -- (#1+0.5, #2+0.5) -- (#1+2.0, #2+0.5) -- (#1+2.0, #2) -- (#1+2.5, #2)
- -- (#1+1.25, #2-1) -- (#1, #2);
- }
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Ownership - Possession - Control}};
- \node[text width=4cm] at (2, 1.7) {
- \fontfamily{augie}\selectfont{\large
- The real world:
- }
- };
- \node[text width=3cm] at (2, 0.7) {
- \fontfamily{augie}\selectfont{\large
- Ownership
- }
- };
- \node[text width=3cm] at (2, -0.3) {
- \fontfamily{augie}\selectfont{\large
- Possession
- }
- };
- \node[text width=3cm] at (2, -2.8) {
- \fontfamily{augie}\selectfont{\large
- Control
- }
- };
- \node[text width=4cm] at (9, 1.7) {
- \fontfamily{augie}\selectfont{\large
- The digital world:
- }
- };
- \node[text width=3cm] at (9, 0.7) {
- \fontfamily{augie}\selectfont{\large
- Ownership
- }
- };
- \node[text width=3cm] at (9, -0.3) {
- \fontfamily{augie}\selectfont{\large
- Possession
- }
- };
- \node[text width=3cm] at (9, -2.8) {
- \fontfamily{augie}\selectfont{\large
- Control
- }
- };
- \drawdown{0.5}{-1.5}{0};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Ownership - Possession - Control}};
- \node[text width=4cm] at (2, 1.7) {
- \fontfamily{augie}\selectfont{\large
- The real world:
- }
- };
- \node[text width=3cm] at (2, 0.7) {
- \fontfamily{augie}\selectfont{\large
- Ownership
- }
- };
- \node[text width=3cm] at (2, -0.3) {
- \fontfamily{augie}\selectfont{\large
- Possession
- }
- };
- \node[text width=3cm] at (2, -2.8) {
- \fontfamily{augie}\selectfont{\large
- Control
- }
- };
- \node[text width=4cm] at (9, 1.7) {
- \fontfamily{augie}\selectfont{\large
- The digital world:
- }
- };
- \node[text width=3cm] at (9, 0.7) {
- \fontfamily{augie}\selectfont{\large
- Ownership
- }
- };
- \node[text width=3cm] at (9, -0.3) {
- \fontfamily{augie}\selectfont{\large
- Possession
- }
- };
- \node[text width=3cm] at (9, -2.8) {
- \fontfamily{augie}\selectfont{\large
- Control
- }
- };
- \drawdown{0.5}{-1.5}{0};
- \drawdown{7.5}{-1.5}{0};
- \draw[decorate,thick] (7.5, -2.5) -- (10.0, -1.0);
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Ownership - Possession - Control}};
- \node[text width=4cm] at (2, 1.7) {
- \fontfamily{augie}\selectfont{\large
- The real world:
- }
- };
- \node[text width=3cm] at (2, 0.7) {
- \fontfamily{augie}\selectfont{\large
- Ownership
- }
- };
- \node[text width=3cm] at (2, -0.3) {
- \fontfamily{augie}\selectfont{\large
- Possession
- }
- };
- \node[text width=3cm] at (2, -2.8) {
- \fontfamily{augie}\selectfont{\large
- Control
- }
- };
- \node[text width=4cm] at (9, 1.7) {
- \fontfamily{augie}\selectfont{\large
- The digital world:
- }
- };
- \node[text width=3cm] at (9, 0.7) {
- \fontfamily{augie}\selectfont{\large
- Ownership
- }
- };
- \node[text width=3cm] at (9, -0.3) {
- \fontfamily{augie}\selectfont{\large
- Possession
- }
- };
- \node[text width=3cm] at (9, -2.8) {
- \fontfamily{augie}\selectfont{\large
- Control
- }
- };
- \drawdown{0.5}{-1.5}{0}
- \drawdown{7.5}{-1.5}{0}
- \draw[decorate,thick] (7.5, -2.5) -- (10, -1);
- \draw[decorate,thick,->] (6, 1.75) -- (4.5, 1.75)
- node[midway,above] {
- \fontfamily{augie}\selectfont{\large \;\;
- Eats world}};
- node[thick, decorate]{Eats world};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Ownership - Possession - Control}};
- \node[text width=4cm] at (2, 1.7) {
- \fontfamily{augie}\selectfont{\large
- The real world:
- }
- };
- \node[text width=3cm] at (2, 0.7) {
- \fontfamily{augie}\selectfont{\large
- Ownership
- }
- };
- \node[text width=3cm] at (2, -0.3) {
- \fontfamily{augie}\selectfont{\large
- Possession
- }
- };
- \node[text width=3cm] at (2, -2.8) {
- \fontfamily{augie}\selectfont{\large
- Control
- }
- };
- \node[text width=4cm] at (9, 1.7) {
- \fontfamily{augie}\selectfont{\large
- The digital world:
- }
- };
- \node[text width=3cm] at (9, 0.7) {
- \fontfamily{augie}\selectfont{\large
- Ownership
- }
- };
- \node[text width=3cm] at (9, -0.3) {
- \fontfamily{augie}\selectfont{\large
- Possession
- }
- };
- \node[text width=3cm] at (9, -2.8) {
- \fontfamily{augie}\selectfont{\large
- Control
- }
- };
- \drawdown{0.5}{-1.5}{0}
- \drawdown{7.5}{-1.5}{0}
- \draw[decorate,thick] (7.5, -2.5) -- (10, -1);
- \draw[decorate,thick] (0.5, -2.5) -- (3, -1);
- \draw[decorate,thick,->] (6, 1.75) -- (4.5, 1.75)
- node[midway,above] {
- \fontfamily{augie}\selectfont{\large \;\;
- Eats world}};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Ownership - Possession -
- Control}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- \begin{itemize}
- \item Control is very easily delegateable
- \vspace{3mm}
- \item Our computing systems require constant delegation of control
- \vspace{3mm}
- \item Real-world analogy:
- \begin{itemize}
- \item Give power-of-attorney over your bank account to pay for train ticket
- \vspace{6mm}
- \item Give access to your flat (and shoe cupboard) to your shoe vendor
- \end{itemize}
- \end{itemize}
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Revoke delegated control?}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- \begin{itemize}
- \item Our systems require delegating control.
- \vspace{3mm}
- \item Our systems fail \emph{horribly} at revoking control.
- \vspace{3mm}
- \item Status quo: Near-impossible to revoke control against a party that resists.
- \end{itemize}
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node[text width=9cm] at (5.5, 0.5) {
- \fontfamily{augie}\selectfont{\Huge
- \begin{center}
- Redesign,\; Step\; 1: Establishing\; who\; is\; in\; control\; of\; a\; device\;
- right\; now.
- \end{center}
- }};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Need to inventory privileged code}};
- \node[text width=10cm] at (4.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- \begin{itemize}
- \item Userspace code
- \item Kernel code
- \item BIOS code, EFI stuff
- \item CPU Microcode
- \item \dots
- \end{itemize}
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Need to inventory privileged code}};
- \node[text width=10cm] at (4.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- \begin{itemize}
- \item Userspace code
- \item Kernel code
- \item BIOS code, EFI stuff
- \item CPU Microcode
- \item \dots
- \end{itemize}
- }
- };
- \node[text width=10cm] at (9.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- \begin{itemize}
- \item Harddisk firmware
- \item NIC firmware
- \item Intel ME firmware
- \item GPU firmware
- \item Keyboard firmware
- \item USB controller firmware
- \item \dots
- \end{itemize}
- }
- };
- \draw[decorate,thick,decoration={brace,amplitude=5mm,mirror}]
- (1, -2.5) -- (10, -2.5) node[midway,below=5mm] {
- \fontfamily{augie}\selectfont{\large \;\;
- Check Origin!}}
- node[midway,yshift=-5mm,below=5mm] {
- \fontfamily{augie}\selectfont{\large \;\;
- Check that origin affirms this code is theirs!}};
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Problems Inventorizing Code}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- \begin{itemize}
- \item No standard way of getting firmware from a device.
- \vspace{3mm}
- \item The few places where there is a way, the existing firmware gets to decide
- what to answer.
- \vspace{3mm}
- \item Needed: Non-updateable, pure hardware path to dump all firmwares.
- \end{itemize}
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node (harddisk) at (1.5, 3.75) {
- \fontfamily{augie}\selectfont{\large
- Harddisk FW
- }
- };
- \node (nic) at (1.5, 3.25) {
- \fontfamily{augie}\selectfont{\large
- NIC FW
- }
- };
- \node (bios) at (1.5, 2.75) {
- \fontfamily{augie}\selectfont{\large
- BIOS Flash
- }
- };
- \node (me) at (1.5, 2.25) {
- \fontfamily{augie}\selectfont{\large
- Intel ME
- }
- };
- \node (os) at (1.5, 1.75) {
- \fontfamily{augie}\selectfont{\large
- Minimal OS
- }
- };
- \node[draw,thick, decorate, text width=4cm] (datapath) at (6.5, 2.5) {
- \fontfamily{augie}\selectfont{\large
- Non-updateable pure hardware path to dump memory
- }
- };
- \node[draw,thick, decorate, text width=4cm] (hasher) at (6.5, 0) {
- \fontfamily{augie}\selectfont{\large
- Hardware-implemented hash calculation (actual wires)
- }
- };
- \node[draw,thick, decorate, text width=4cm] (screen) at (4.5, -3) {
- \fontfamily{augie}\selectfont{\large
- Simplest possible screen to display numbers
- }
- };
- \node[draw,thick, decorate, text width=4cm] (radio) at (9.5, -3) {
- \fontfamily{augie}\selectfont{\large
- Simplest possible transmitter to transmit device ID, hash
- }
- };
- \draw[thick,decorate,->] (hasher) -- (radio);
- \draw[thick,decorate,->] (hasher) -- (screen);
- \draw[thick,decorate,->] (datapath) -- (hasher);
- \draw[thick,decorate,->] (harddisk) -- (datapath);
- \draw[thick,decorate,->] (nic) -- (datapath);
- \draw[thick,decorate,->] (bios) -- (datapath);
- \draw[thick,decorate,->] (me) -- (datapath);
- \draw[thick,decorate,->] (os) -- (datapath);
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node (harddisk) at (1.5, 3.75) {
- \fontfamily{augie}\selectfont{\large
- Harddisk FW
- }
- };
- \node (nic) at (1.5, 3.25) {
- \fontfamily{augie}\selectfont{\large
- NIC FW
- }
- };
- \node (bios) at (1.5, 2.75) {
- \fontfamily{augie}\selectfont{\large
- BIOS Flash
- }
- };
- \node (me) at (1.5, 2.25) {
- \fontfamily{augie}\selectfont{\large
- Intel ME
- }
- };
- \node (os) at (1.5, 1.75) {
- \fontfamily{augie}\selectfont{\large
- Minimal OS
- }
- };
- \node[draw,thick, decorate, text width=4cm] (datapath) at (6.5, 2.5) {
- \fontfamily{augie}\selectfont{\large
- Non-updateable pure hardware path to dump memory
- }
- };
- \node[draw,thick, decorate, text width=4cm] (hasher) at (6.5, 0) {
- \fontfamily{augie}\selectfont{\large
- Hardware-implemented hash calculation (actual wires)
- }
- };
- \node[draw,thick, decorate, text width=4cm] (screen) at (4.5, -3) {
- \fontfamily{augie}\selectfont{\large
- Simplest possible screen to display numbers
- }
- };
- \node[draw,thick, decorate, text width=4cm] (radio) at (9.5, -3) {
- \fontfamily{augie}\selectfont{\large
- Simplest possible transmitter to transmit device ID, hash
- }
- };
- \draw[thick,decorate,->] (hasher) -- (radio);
- \draw[thick,decorate,->] (hasher) -- (screen);
- \draw[thick,decorate,->] (datapath) -- (hasher);
- \draw[thick,decorate,->,color=red] (harddisk) -- (datapath);
- \draw[thick,decorate,->,color=red] (nic) -- (datapath);
- \draw[thick,decorate,->,color=red] (bios) -- (datapath);
- \draw[thick,decorate,->,color=red] (me) -- (datapath);
- \draw[thick,decorate,->,color=red] (os) -- (datapath);
- \node[draw,thick, decorate, color=red, text width=3cm] (label) at (1.5, 0) {
- \fontfamily{augie}\selectfont{\large
- Needs standardized interface.
- }
- };
- \draw[thick,decorate,color=red] (label) -- (datapath);
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node (harddisk) at (1.5, 3.75) {
- \fontfamily{augie}\selectfont{\large
- Harddisk FW
- }
- };
- \node (nic) at (1.5, 3.25) {
- \fontfamily{augie}\selectfont{\large
- NIC FW
- }
- };
- \node (bios) at (1.5, 2.75) {
- \fontfamily{augie}\selectfont{\large
- BIOS Flash
- }
- };
- \node (me) at (1.5, 2.25) {
- \fontfamily{augie}\selectfont{\large
- Intel ME
- }
- };
- \node (os) at (1.5, 1.75) {
- \fontfamily{augie}\selectfont{\large
- Minimal OS
- }
- };
- \node[draw,thick, decorate, text width=4cm, color=red] (datapath) at (6.5, 2.5) {
- \fontfamily{augie}\selectfont{\large
- Non-updateable pure hardware path to dump memory
- }
- };
- \node[draw,thick, decorate, text width=4cm, color=red] (hasher) at (6.5, 0) {
- \fontfamily{augie}\selectfont{\large
- Hardware-implemented hash calculation (actual wires)
- }
- };
- \node[draw,thick, decorate, text width=4cm, color=red] (screen) at (4.5, -3) {
- \fontfamily{augie}\selectfont{\large
- Simplest possible screen to display numbers
- }
- };
- \node[draw,thick, decorate, text width=4cm, color=red] (radio) at (9.5, -3) {
- \fontfamily{augie}\selectfont{\large
- Simplest possible transmitter to transmit device ID, hash
- }
- };
- \draw[thick,decorate,->] (hasher) -- (radio);
- \draw[thick,decorate,->] (hasher) -- (screen);
- \draw[thick,decorate,->] (datapath) -- (hasher);
- \draw[thick,decorate,->] (harddisk) -- (datapath);
- \draw[thick,decorate,->] (nic) -- (datapath);
- \draw[thick,decorate,->] (bios) -- (datapath);
- \draw[thick,decorate,->] (me) -- (datapath);
- \draw[thick,decorate,->] (os) -- (datapath);
- \node[draw,thick, decorate, color=red, text width=3cm] (label) at (1.5, 0) {
- \fontfamily{augie}\selectfont{\large
- Should be a standardized component.
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large What now?}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- \begin{itemize}
- \item We have a tamper-resistant way of obtaining hashes of code
- in the device.
- \vspace{3mm}
- \item We need a mechanism for vendors to ``affirm'' binaries:
- ``Yes, this is our binary and we stand by it.''
- \end{itemize}
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Status quo?}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- Code Signatures are a bad way to affirm provenance of code.
- \begin{itemize}
- \item Signing keys may be stolen and used for years without anybody
- noticing.
- \vspace{3mm}
- \item Vendors may be compelled to secretly sign something that is then
- only deployed on few machines.
- \end{itemize}
- \vspace{5mm}
- Code signatures in their current form cannot be trusted. }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large What's needed?}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- \begin{itemize}
- \item Code signing transparency.
- \item Public distributed ledger.
- \item Append-only, tamperproof.
- \item Hashes of all code by all vendors need to be placed in public
- ledger.
- \item ``My name is X and I endorse this binary.''
- \end{itemize}
- \vspace{5mm}
- % Code signatures in their current form cannot be trusted.
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large What else?}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- \begin{itemize}
- \item We have hashes now.
- \item And a public ledger to check that the vendor ``claims'' them.
- \item How to address third-party code being backdoored?
- \end{itemize}
- \vspace{5mm}
- Transitive trust is the silent killer of security.
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[node distance=2cm, overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Detour: Trust graphs}};
- \node[draw,thick, decorate] (computer) at (5.5, -3) {
- \fontfamily{augie}\selectfont{\large
- Your computer
- }
- };
- \node[visible on=<2->,draw,thick, decorate, above =.5cm of computer.north] (Adobe) {
- \fontfamily{augie}\selectfont{\large
- Adobe
- }
- };
- \node[visible on=<2->,draw,thick, decorate, left =.5cm of Adobe.west] (ms) {
- \fontfamily{augie}\selectfont{\large
- MS
- }
- };
- \node[visible on=<2->,draw,thick, decorate, left =.5cm of ms.west] (nVidia) {
- \fontfamily{augie}\selectfont{\large
- nVidia
- }
- };
- \node[visible on=<2->,draw,thick, decorate, right =.5cm of Adobe.east] (Google) {
- \fontfamily{augie}\selectfont{\large
- Google
- }
- };
- \node[visible on=<2->,draw,thick, decorate, right =.5cm of Google.east] (HP) {
- \fontfamily{augie}\selectfont{\large
- HP
- }
- };
- \draw[visible on=<2->,thick, decorate,->] (nVidia) -- (computer);
- \draw[visible on=<2->,thick, decorate,->] (ms) -- (computer);
- \draw[visible on=<2->,thick, decorate,->] (Adobe) -- (computer);
- \draw[visible on=<2->,thick, decorate,->] (Google) -- (computer);
- \draw[visible on=<2->,thick, decorate,->] (HP) -- (computer);
- \node[visible on=<3->,draw,thick, decorate, above =1.5cm of Adobe.north] (zlib) {
- \fontfamily{augie}\selectfont{\large
- zlib
- }
- };
- \node[visible on=<3->,draw,thick, decorate, left = .5cm of zlib.west] (kernel) {
- \fontfamily{augie}\selectfont{\large
- kernel.org
- }
- };
- \node[visible on=<3->,draw,thick, decorate, right =.5cm of zlib.east] (libtiff) {
- \fontfamily{augie}\selectfont{\large
- libtiff
- }
- };
- \draw[visible on=<4->,thick, decorate,->] (libtiff) -- (Adobe);
- \draw[visible on=<4->,thick, decorate,->] (libtiff) -- (HP);
- \draw[visible on=<4->,thick, decorate,->] (zlib) -- (Google);
- \draw[visible on=<4->,thick, decorate,->] (zlib) -- (nVidia);
- \draw[visible on=<4->,thick, decorate,->] (kernel) -- (Google);
- \draw[visible on=<4->,thick, decorate,->] (kernel) -- (nVidia);
- \draw[visible on=<4->,thick, decorate,->] (kernel) -- (HP);
- \node[visible on=<5->,draw,thick, decorate, above =1.5cm of zlib.north] (AMI) {
- \fontfamily{augie}\selectfont{\large
- AMI Bios
- }
- };
- \node[visible on=<5->,draw,thick, decorate, left = .5cm of AMI.west] (Phoenix) {
- \fontfamily{augie}\selectfont{\large
- Phoenix
- }
- };
- \node[visible on=<5->,draw,thick, decorate, right =.5cm of AMI.east] (Broadcom) {
- \fontfamily{augie}\selectfont{\large
- Broadcom
- }
- };
- \node[visible on=<5->,draw,thick, decorate, right =.5cm of Broadcom.east] (Apple) {
- \fontfamily{augie}\selectfont{\large
- Apple
- }
- };
- \draw[visible on=<6->,thick, decorate,->] (Apple) -- (Google);
- \draw[visible on=<6->,thick, decorate,->] (Apple) -- (Adobe);
- \draw[visible on=<6->,thick, decorate,->] (Adobe) -- (Apple);
- \draw[visible on=<6->,thick, decorate,->] (zlib) -- (Apple);
- \draw[visible on=<6->,thick, decorate,->] (AMI) -- (ms);
- \draw[visible on=<6->,thick, decorate,->] (Phoenix) -- (ms);
- \draw[visible on=<6->,thick, decorate,->] (AMI) -- (kernel);
- \draw[visible on=<7->,thick, decorate,->] (ms) -- (Phoenix);
- \draw[visible on=<7->,thick, decorate,->] (ms) -- (AMI);
- \draw[visible on=<7->,thick, decorate,->] (ms) -- (Broadcom);
- \draw[visible on=<7->,thick, decorate,->] (Google) -- (Broadcom);
- \draw[visible on=<7->,thick, decorate,->] (Apple) -- (Broadcom);
- \draw[visible on=<7->,thick, decorate,->] (Apple) -- (libtiff);
- \draw[visible on=<7->,thick, decorate,->] (AMI) -- (Apple);
- \draw[visible on=<7->,thick, decorate,->] (Broadcom) -- (AMI);
- \draw[visible on=<7->,thick, decorate,->] (kernel) -- (AMI);
- \draw[visible on=<7->,thick, decorate,->] (kernel) -- (Phoenix);
- \draw[visible on=<7->,thick, decorate,->] (nVidia) -- (Phoenix);
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[node distance=2cm, overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Detour: Trust graphs}};
- \node[draw,thick, decorate] (computer) at (5.5, -3) {
- \fontfamily{augie}\selectfont{\large
- Your computer
- }
- };
- \begin{scope}[shift={(5,0.5)}]
- \def \n {20}
- \def \radius {2.4cm}
- \def \margin {4} % margin in angles, depends on the radius
- \foreach \s in {1,...,\n}
- {
- \node[draw, thick, decorate, rectangle] (\s) at ({360/\n * (\s - 1)}:\radius) {
- \fontfamily{augie}\selectfont{\tiny\s}};
- \draw[->, decorate, thick, ->] ({360/\n * (\s - 1)+\margin}:\radius)
- arc ({360/\n * (\s - 1)+\margin}:{360/\n * (\s)-\margin}:\radius);
- }
- \foreach \s in {1,2,...,20}
- {
- \foreach \k in {3,5,7,...,19} {
- \draw[->, decorate, thick, ->] (\s) -- (\k);
- }
- }
- \foreach \k in {1,2,...,20} {
- \draw[->, decorate, thick, ->] (\k) -- (computer);
- }
- \end{scope}
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large What's needed?}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- Assume you find malicious code signed by a third party on your machine...
- \begin{itemize}
- \item Is there even a way for you to figure out how it got there?
- \item Is the signer obliged to investigate?
- \item Is there even an auditable trail to establish who committed the
- malicious code to the signers code repo?
- \end{itemize}
- Answer: No on all of the above.
- \vspace{5mm}
- % Code signatures in their current form cannot be trusted.
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large What's needed?}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- What is needed to establish this?
- \begin{itemize}
- \item Signed commits.
- \item Reproducible / deterministic builds.
- \item Public code ledger should
- include hash of sources from which the code was built.
- \end{itemize}
- \vspace{5mm}
- % Code signatures in their current form cannot be trusted.
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large What's needed?}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- \begin{itemize}
- \item Ideally, the source code from which binaries are built should be in the
- ledger, too.
- \item Given the fear that source code is ``secret sauce'', this is unrealistic.
- \item So at a minimum, a generic ``right to reverse engineer'' would be needed.
- \end{itemize}
- \vspace{5mm}
- % Code signatures in their current form cannot be trusted.
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Recap}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- Given these engineering changes, we would get:
- \begin{itemize}
- \item Devices where we can establish ``no malicious control'' at points in time.
- \item The ability to diagnose key theft and software backdooring.
- \end{itemize}
- What would this cost us?
- \vspace{5mm}
- % Code signatures in their current form cannot be trusted.
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Recap}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- What would the costs of these changes be?
- \begin{itemize}
- \item Hardware: Less than 1\$ per device.
- \item Software: Global ledger, less than \$ 1m a year (with staff).
- \item Legal: Changes to RE laws \& standardization.
- \end{itemize}
- Not excessive, in my view?
- \vspace{5mm}
- % Code signatures in their current form cannot be trusted.
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Who is doing this?}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- Right now, none of the big vendors are doing this.
- % Code signatures in their current form cannot be trusted.
- \begin{itemize}
- \item Microsoft: Does not control hardware, focus on making exploits
- difficult instead (CFG, RFG, VBS).
- \item Android: Does not control hardware, focus on fixing bugs.
- \item Apple: Closest. Gets extra slide.
- \end{itemize}
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Is Apple building this?}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- % Code signatures in their current form cannot be trusted.
- \begin{itemize}
- \item The touch bar is already an independent screen.
- \item Does not meet criteria for non-updateability and inspectability, though.
- \item Also: Apple's intransparent culture is probably obstacle to
- adopting a public ledger?
- \end{itemize}
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[fragile]
- \begin{tikzpicture}[overlay,remember picture, decoration=penciline]
- \draw[style=help lines,color=verylightgray] (-.5, -4.5) grid[step=0.5cm] (11.5,4.5);
- \node at (5.5, 3.7) { \fontfamily{augie}\selectfont{\Large Summary}};
- \node[text width=10cm] at (5.5, -0.1) {
- \fontfamily{augie}\selectfont{\large
- Defendable systems can be engineered.
- \vspace{3mm}
- \begin{itemize}
- \item Require long-term thinking, planning, and execution.
- \item Require concerted engineering efforts.
- \item Defenders should think in terms of re-engineering their
- infrastructure to be defendable.
- \item Defenders need to coalesce into larger groups
- that can shape market through buying power.
- \end{itemize}
- \vspace{5mm}
- % Code signatures in their current form cannot be trusted.
- }
- };
- \end{tikzpicture}
- \end{frame}
- \begin{frame}[standout]
- \fontfamily{augie}\selectfont{\large Questions? }
- \end{frame}
- \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement