diff options
author | Rasmus Dahlberg <rasmus@rgdd.se> | 2024-10-15 15:35:20 +0200 |
---|---|---|
committer | Rasmus Dahlberg <rasmus@rgdd.se> | 2024-10-15 15:35:45 +0200 |
commit | 76bae02bcd7d6b3ec9eea428e5e95da184a8dbfb (patch) | |
tree | 410ab71c78c99d35aecd46733958a5699cdf5204 /slides | |
parent | 883a67439aff566962adafeb0385c6ae972073a3 (diff) |
Rescue some slides from old private mono repos
Diffstat (limited to 'slides')
560 files changed, 15095 insertions, 0 deletions
diff --git a/slides/2018-ct-intro/README b/slides/2018-ct-intro/README new file mode 100644 index 0000000..3e18970 --- /dev/null +++ b/slides/2018-ct-intro/README @@ -0,0 +1 @@ +Intro to CT when Tobias and I was doing a few guest lectures at Soleil IT. diff --git a/slides/2018-ct-intro/beamercolorthemergd.sty b/slides/2018-ct-intro/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2018-ct-intro/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2018-ct-intro/beamerfontthemergd.sty b/slides/2018-ct-intro/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2018-ct-intro/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2018-ct-intro/beamerinnerthemergd.sty b/slides/2018-ct-intro/beamerinnerthemergd.sty new file mode 100644 index 0000000..0d49176 --- /dev/null +++ b/slides/2018-ct-intro/beamerinnerthemergd.sty @@ -0,0 +1,43 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](Logo){\includegraphics[width=3cm]{img/logo}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add subtitle + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{subtitle}\insertsubtitle\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=12pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2018-ct-intro/beamerouterthemergd.sty b/slides/2018-ct-intro/beamerouterthemergd.sty new file mode 100644 index 0000000..ba757c6 --- /dev/null +++ b/slides/2018-ct-intro/beamerouterthemergd.sty @@ -0,0 +1,66 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add mail + \begin{beamercolorbox}[ + wd=0.22\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \texttt{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add author + \begin{beamercolorbox}[ + wd=0.73\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + %\insertauthor + \inserttitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2018-ct-intro/beamerthemergd.sty b/slides/2018-ct-intro/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2018-ct-intro/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2018-ct-intro/img/apple-logo.png b/slides/2018-ct-intro/img/apple-logo.png Binary files differnew file mode 100644 index 0000000..2bdfbab --- /dev/null +++ b/slides/2018-ct-intro/img/apple-logo.png diff --git a/slides/2018-ct-intro/img/ca-mess.pdf b/slides/2018-ct-intro/img/ca-mess.pdf Binary files differnew file mode 100644 index 0000000..44b963a --- /dev/null +++ b/slides/2018-ct-intro/img/ca-mess.pdf diff --git a/slides/2018-ct-intro/img/chrome-cert.png b/slides/2018-ct-intro/img/chrome-cert.png Binary files differnew file mode 100644 index 0000000..32e1c5c --- /dev/null +++ b/slides/2018-ct-intro/img/chrome-cert.png diff --git a/slides/2018-ct-intro/img/chrome-http.png b/slides/2018-ct-intro/img/chrome-http.png Binary files differnew file mode 100644 index 0000000..284ab02 --- /dev/null +++ b/slides/2018-ct-intro/img/chrome-http.png diff --git a/slides/2018-ct-intro/img/chrome-https.png b/slides/2018-ct-intro/img/chrome-https.png Binary files differnew file mode 100644 index 0000000..e3d26f0 --- /dev/null +++ b/slides/2018-ct-intro/img/chrome-https.png diff --git a/slides/2018-ct-intro/img/chrome-logo.png b/slides/2018-ct-intro/img/chrome-logo.png Binary files differnew file mode 100644 index 0000000..070e192 --- /dev/null +++ b/slides/2018-ct-intro/img/chrome-logo.png diff --git a/slides/2018-ct-intro/img/ct.png b/slides/2018-ct-intro/img/ct.png Binary files differnew file mode 100644 index 0000000..10267e7 --- /dev/null +++ b/slides/2018-ct-intro/img/ct.png diff --git a/slides/2018-ct-intro/img/firefox-logo.png b/slides/2018-ct-intro/img/firefox-logo.png Binary files differnew file mode 100644 index 0000000..9ebb106 --- /dev/null +++ b/slides/2018-ct-intro/img/firefox-logo.png diff --git a/slides/2018-ct-intro/img/le.png b/slides/2018-ct-intro/img/le.png Binary files differnew file mode 100644 index 0000000..b7f89d9 --- /dev/null +++ b/slides/2018-ct-intro/img/le.png diff --git a/slides/2018-ct-intro/img/logo.png b/slides/2018-ct-intro/img/logo.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2018-ct-intro/img/logo.png diff --git a/slides/2018-ct-intro/img/monitor-comodo.png b/slides/2018-ct-intro/img/monitor-comodo.png Binary files differnew file mode 100644 index 0000000..23484f5 --- /dev/null +++ b/slides/2018-ct-intro/img/monitor-comodo.png diff --git a/slides/2018-ct-intro/img/monitor-facebook.png b/slides/2018-ct-intro/img/monitor-facebook.png Binary files differnew file mode 100644 index 0000000..68f62c4 --- /dev/null +++ b/slides/2018-ct-intro/img/monitor-facebook.png diff --git a/slides/2018-ct-intro/img/monitor-facebook2.png b/slides/2018-ct-intro/img/monitor-facebook2.png Binary files differnew file mode 100644 index 0000000..e540815 --- /dev/null +++ b/slides/2018-ct-intro/img/monitor-facebook2.png diff --git a/slides/2018-ct-intro/img/monitor-sslmate.png b/slides/2018-ct-intro/img/monitor-sslmate.png Binary files differnew file mode 100644 index 0000000..8640a04 --- /dev/null +++ b/slides/2018-ct-intro/img/monitor-sslmate.png diff --git a/slides/2018-ct-intro/img/padlock.pdf b/slides/2018-ct-intro/img/padlock.pdf Binary files differnew file mode 100644 index 0000000..b902e72 --- /dev/null +++ b/slides/2018-ct-intro/img/padlock.pdf diff --git a/slides/2018-ct-intro/img/qleft.pdf b/slides/2018-ct-intro/img/qleft.pdf Binary files differnew file mode 100644 index 0000000..f35a078 --- /dev/null +++ b/slides/2018-ct-intro/img/qleft.pdf diff --git a/slides/2018-ct-intro/img/qright.pdf b/slides/2018-ct-intro/img/qright.pdf Binary files differnew file mode 100644 index 0000000..da2e8e3 --- /dev/null +++ b/slides/2018-ct-intro/img/qright.pdf diff --git a/slides/2018-ct-intro/img/roadmap.pdf b/slides/2018-ct-intro/img/roadmap.pdf Binary files differnew file mode 100644 index 0000000..867fb20 --- /dev/null +++ b/slides/2018-ct-intro/img/roadmap.pdf diff --git a/slides/2018-ct-intro/img/take-away.pdf b/slides/2018-ct-intro/img/take-away.pdf new file mode 100644 index 0000000..7d3b190 --- /dev/null +++ b/slides/2018-ct-intro/img/take-away.pdf @@ -0,0 +1,68 @@ +%PDF-1.4 +%µí®û +3 0 obj +<< /Length 4 0 R + /Filter /FlateDecode +>> +stream +xœmŒAÃ0"„‚
ŽýŒ>¡—¦‡äæÿRŸ#$–E³{’rÎã×Gy»àCš\ÅÆ`×Â;´ã»¨(dçUt€Ðè0fµ„-ÉÒTØ…¬ÕA7ïè
TxÂ1f¯Õš;"£*¤4{È~éM7ä‘$ +endstream +endobj +4 0 obj + 118 +endobj +2 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +5 0 obj +<< /Type /Page + /Parent 1 0 R + /MediaBox [ 0 0 12.8 12.8 ] + /Contents 3 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 2 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 5 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Creator (cairo 1.14.0 (http://cairographics.org)) + /Producer (cairo 1.14.0 (http://cairographics.org)) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000520 00000 n +0000000232 00000 n +0000000015 00000 n +0000000210 00000 n +0000000304 00000 n +0000000585 00000 n +0000000712 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +764 +%%EOF diff --git a/slides/2018-ct-intro/img/ty.pdf b/slides/2018-ct-intro/img/ty.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2018-ct-intro/img/ty.pdf diff --git a/slides/2018-ct-intro/main.tex b/slides/2018-ct-intro/main.tex new file mode 100644 index 0000000..f03c3ed --- /dev/null +++ b/slides/2018-ct-intro/main.tex @@ -0,0 +1,22 @@ +\pdfminorversion=4 +\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + An Introduction to Certificate Transparency +} +%\subtitle{% +%} +\author{% + Rasmus Dahlberg and Tobias Pulls +} +\institute{% + Karlstad University +} +\date{% +} +\begin{document} + \input{src/body} +\end{document} diff --git a/slides/2018-ct-intro/makefile b/slides/2018-ct-intro/makefile new file mode 100644 index 0000000..b42d0ec --- /dev/null +++ b/slides/2018-ct-intro/makefile @@ -0,0 +1,25 @@ +.PHONY: clean tidy open + +MAIN = main + +TEX_SRC = src/$(wildcard:.tex) +TEX_IMG = \ + img/$(wildcard:.jpg) \ + img/$(wildcard:.tex) \ + img/$(wildcard:.pdf) \ + img/$(wildcard:.png) +TEX = \ + $(TEX_SRC) $(TEX_IMG) $(MAIN).tex + +$(MAIN).pdf: $(TEX) + pdflatex $(MAIN) + @pdflatex $(MAIN) + +open: $(MAIN).pdf + okular $(MAIN).pdf & + +tidy: + rm -rf *.nav *.out *.log *.aux *.toc *.snm + +clean: + rm -rf *.nav *.out *.log *.aux *.toc *.snm $(MAIN).pdf diff --git a/slides/2018-ct-intro/slides.pdf b/slides/2018-ct-intro/slides.pdf Binary files differnew file mode 100644 index 0000000..a46aec6 --- /dev/null +++ b/slides/2018-ct-intro/slides.pdf diff --git a/slides/2018-ct-intro/src/background.tex b/slides/2018-ct-intro/src/background.tex new file mode 100644 index 0000000..a61d205 --- /dev/null +++ b/slides/2018-ct-intro/src/background.tex @@ -0,0 +1,55 @@ +\begin{frame} + \frametitle{How is trust established on the web?} + \centering + \includegraphics<1>[height=0.85\textheight]{img/chrome-http} + \includegraphics<2>[height=0.85\textheight]{img/chrome-https} +\end{frame} + +\begin{frame} + \frametitle{What is the meaning of the padlock?} + \begin{columns} + \begin{column}{0.69\textwidth} + \begin{description} + \item[\tyes] Communication is encrypted + \item[\tyes] Communication is not tampered with + \item[\tyes] Server identity is verified + \end{description} + \end{column} + \begin{column}{0.29\textwidth} + \centering + \includegraphics[width=0.9\textwidth]{img/padlock} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Server verification relies on certificate issuance} + \centering + \includegraphics[height=0.85\textheight]{img/chrome-cert} +\end{frame} + +\begin{frame} + \frametitle{Tracking certificate issuance is a mess} + \centering + \includegraphics[height=0.8\textheight,width=0.7\textwidth]{img/ca-mess} + \scriptsize{\url{https://www.eff.org/files/colour_map_of_cas.pdf}} +\end{frame} + +\begin{frame} + \frametitle{Certificate issuance gone wrong...} + \centering + \begin{tabular}{cc|l} + Year & Issuer & Mis-issued certificates affected e.g. \\ + \toprule + 2010 & Versign & Unkown \\ + 2011 & Comodo & Google, Mozilla, Yahoo \\ + 2011 & DigiNotar & Google\footnote{These certificates were used to attack $\approx100,000$ gmail users in Iran}, Skype, Tor... \\ + 2012 & Trustwave & Enterprise employees \\ + 2012 & T\"{u}rkTrust & Google \\ + 2013 & ANSSI & Google \\ + 2013 & Thawte & Google \\ + 2016 & Let's Encrypt & Facebook \\ + ... & ... & ... \\ + \end{tabular} +\end{frame} + diff --git a/slides/2018-ct-intro/src/body.tex b/slides/2018-ct-intro/src/body.tex new file mode 100644 index 0000000..f3f6842 --- /dev/null +++ b/slides/2018-ct-intro/src/body.tex @@ -0,0 +1,7 @@ +\input{src/titlepage} +\input{src/outline} +\input{src/background} +\input{src/ct} +\input{src/your-role} +\input{src/take-away} +\input{src/questions} diff --git a/slides/2018-ct-intro/src/ct.tex b/slides/2018-ct-intro/src/ct.tex new file mode 100644 index 0000000..88496a3 --- /dev/null +++ b/slides/2018-ct-intro/src/ct.tex @@ -0,0 +1,77 @@ +\begin{frame} + \frametitle{Certificate Transparency (CT) to the resque} + \centering + \begin{columns} + \begin{column}{0.55\textwidth} + \begin{itemize} + \item Publicly log all certificates + \item Clients require proof of logging + \item Anyone can inspect the logs + \item Goal is to \alert{detect} mis-issuance + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \includegraphics[width=\textwidth]{img/ct} + \end{column} + \end{columns} + \vfill + \scriptsize{\url{https://www.certificate-transparency.org/what-is-ct}} +\end{frame} + +\begin{frame} + \frametitle{Adoption status of CT among common platforms} + \begin{columns} + \begin{column}{0.33\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/chrome-logo} + \\incrementally + \end{column} + \begin{column}{0.33\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/apple-logo} + \\incrementally soon + \end{column} + \begin{column}{0.33\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/firefox-logo} + \\unclear + \end{column} + \end{columns} + + \vfill + \begin{itemize} + \item Clients require at least two promises of log inclusion + \item Log is trusted until auditing hits deployment + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Who are the log operators?} + \centering + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Google Chrome includes 27 different CT logs + \item Three logs found cheating while auditing (mistakes) + \begin{itemize} + \item Same key for test and production log (Izenpe) + \item Time rollback after power outage (Venafi) + \item Invalid promises of log inclusion (Cloudflare) + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \begin{tabular}{c|c} + Log operator & Number of logs \\ + \toprule + DigiCert & 10 \\ + Google & 9 \\ + Cloudflare & 4 \\ + Comodo & 2 \\ + CNNIC & 1 \\ + Venafi & 1 \\ + \bottomrule + \end{tabular} + \end{column} + \end{columns} +\end{frame} diff --git a/slides/2018-ct-intro/src/outline.tex b/slides/2018-ct-intro/src/outline.tex new file mode 100644 index 0000000..6e47792 --- /dev/null +++ b/slides/2018-ct-intro/src/outline.tex @@ -0,0 +1,16 @@ +\begin{frame} + \frametitle{Outline} + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{enumerate} + \item Background + \item Principles + \item Status quo + \item Your role + \end{enumerate} + \end{column} + \begin{column}{0.49\textwidth} + \includegraphics[width=0.5\textwidth]{img/roadmap} + \end{column} + \end{columns} +\end{frame} diff --git a/slides/2018-ct-intro/src/preamble.tex b/slides/2018-ct-intro/src/preamble.tex new file mode 100644 index 0000000..6905b0f --- /dev/null +++ b/slides/2018-ct-intro/src/preamble.tex @@ -0,0 +1,62 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{pifont} +\usepackage{graphicx} +\usepackage{color} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + shapes.misc,% + positioning,% + arrows,% + snakes,% + calc,% + shadows,% + shapes.arrows,% + fit,% + backgrounds,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +%\setbeamertemplate{itemize item}[circle] +%\setbeamertemplate{itemize subitem}[default] +%\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} diff --git a/slides/2018-ct-intro/src/questions.tex b/slides/2018-ct-intro/src/questions.tex new file mode 100644 index 0000000..85cb2f3 --- /dev/null +++ b/slides/2018-ct-intro/src/questions.tex @@ -0,0 +1,17 @@ +\begin{frame} + \frametitle{Any questions?} \label{frm:que} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qleft} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qright} + \end{column} + \end{columns} + + \centering + \vspace{-1cm} + \includegraphics[width=0.20\textwidth]{img/ty} +\end{frame} diff --git a/slides/2018-ct-intro/src/take-away.tex b/slides/2018-ct-intro/src/take-away.tex new file mode 100644 index 0000000..448e1aa --- /dev/null +++ b/slides/2018-ct-intro/src/take-away.tex @@ -0,0 +1,24 @@ +\begin{frame} + \frametitle{Take away} + \begin{columns} + \begin{column}{0.69\textwidth} + \begin{itemize} + \item Certificate issuance has undergone a paradigm shift + \begin{itemize} + \item Automated and free certificates: Let's Encrypt + \item Transparency: CT, mandatory logging of certificates + \end{itemize} + \item CT does nothing for you without involvement + \begin{itemize} + \item Setup secure connections on your web services + \item Monitor domain names for mis-issued certificates + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.29\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/take-away} + \end{column} + \end{columns} + +\end{frame} diff --git a/slides/2018-ct-intro/src/titlepage.tex b/slides/2018-ct-intro/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2018-ct-intro/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2018-ct-intro/src/your-role.tex b/slides/2018-ct-intro/src/your-role.tex new file mode 100644 index 0000000..8ce8a65 --- /dev/null +++ b/slides/2018-ct-intro/src/your-role.tex @@ -0,0 +1,54 @@ +\begin{frame} + \frametitle{Ensure that your web solutions get the padlock} + \centering + \includegraphics[width=\textwidth]{img/le} + + \vfill + \begin{itemize} + \item There is a dedicated CT log for Let's Encrypt! + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Inspect certificates interactively} + \centering + \includegraphics[width=\textwidth]{img/monitor-comodo} +\end{frame} + +\begin{frame} + \frametitle{Inspect certificates interactively (cont.)} + \centering + \includegraphics[height=0.85\textheight]{img/monitor-facebook2} +\end{frame} + +\begin{frame} + \frametitle{Sign up for certificate notifications} + \centering + \includegraphics[width=\textwidth]{img/monitor-facebook} +\end{frame} + +\begin{frame} + \frametitle{Sign up for certificate notifications (cont.)} + \centering + \includegraphics[width=\textwidth]{img/monitor-sslmate} +\end{frame} + +\begin{frame} + \frametitle{Get your hands dirty by running your own CT monitor} + \begin{itemize} + \item Continiously fetch certificates from all logs + \begin{itemize} + \item Rest API\footnote{ + \scriptsize{\url{https://tools.ietf.org/html/rfc6962}} + } + \item Certstream\footnote{% + \scriptsize{\url{https://github.com/CaliDog/certstream-server}} + } + \end{itemize} + \item Verify cryptographic properties + \begin{itemize} + \item Is yesterday's log included in today's log? + \item Are promises of inclusion honored? + \end{itemize} + \end{itemize} +\end{frame} diff --git a/slides/2018-lwm/.gitignore b/slides/2018-lwm/.gitignore new file mode 100644 index 0000000..4a7f033 --- /dev/null +++ b/slides/2018-lwm/.gitignore @@ -0,0 +1,12 @@ +*.aux +*.fdb_latexmk +*.fls +*.fls +*.log +*.nav +*.out +main.pdf +*.snm +*.toc +*.nav +*.snm diff --git a/slides/2018-lwm/README b/slides/2018-lwm/README new file mode 100644 index 0000000..21bb6c9 --- /dev/null +++ b/slides/2018-lwm/README @@ -0,0 +1 @@ +Presentation at NordSec. diff --git a/slides/2018-lwm/beamercolorthemergd.sty b/slides/2018-lwm/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2018-lwm/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2018-lwm/beamerfontthemergd.sty b/slides/2018-lwm/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2018-lwm/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2018-lwm/beamerinnerthemergd.sty b/slides/2018-lwm/beamerinnerthemergd.sty new file mode 100644 index 0000000..4dfd6cf --- /dev/null +++ b/slides/2018-lwm/beamerinnerthemergd.sty @@ -0,0 +1,49 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](Logo){\includegraphics[width=3cm]{img/logo}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add subtitle + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{subtitle}\insertsubtitle\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=12pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + % Add date + \node[ + text=fg, + text width=0.75\paperwidth, + below right= 0.25cm and 4.5cm of current page.north, + ](Date) {\today}; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2018-lwm/beamerouterthemergd.sty b/slides/2018-lwm/beamerouterthemergd.sty new file mode 100644 index 0000000..ba757c6 --- /dev/null +++ b/slides/2018-lwm/beamerouterthemergd.sty @@ -0,0 +1,66 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add mail + \begin{beamercolorbox}[ + wd=0.22\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \texttt{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add author + \begin{beamercolorbox}[ + wd=0.73\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + %\insertauthor + \inserttitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2018-lwm/beamerthemergd.sty b/slides/2018-lwm/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2018-lwm/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2018-lwm/handout.pdf b/slides/2018-lwm/handout.pdf Binary files differnew file mode 100644 index 0000000..823a3ba --- /dev/null +++ b/slides/2018-lwm/handout.pdf diff --git a/slides/2018-lwm/img/batch.pdf b/slides/2018-lwm/img/batch.pdf Binary files differnew file mode 100644 index 0000000..f98250f --- /dev/null +++ b/slides/2018-lwm/img/batch.pdf diff --git a/slides/2018-lwm/img/ct.png b/slides/2018-lwm/img/ct.png Binary files differnew file mode 100644 index 0000000..10267e7 --- /dev/null +++ b/slides/2018-lwm/img/ct.png diff --git a/slides/2018-lwm/img/frequency.pdf b/slides/2018-lwm/img/frequency.pdf Binary files differnew file mode 100644 index 0000000..4957b24 --- /dev/null +++ b/slides/2018-lwm/img/frequency.pdf diff --git a/slides/2018-lwm/img/logo.png b/slides/2018-lwm/img/logo.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2018-lwm/img/logo.png diff --git a/slides/2018-lwm/img/mt.tex b/slides/2018-lwm/img/mt.tex new file mode 100644 index 0000000..984da14 --- /dev/null +++ b/slides/2018-lwm/img/mt.tex @@ -0,0 +1,26 @@ +\begin{tikzpicture}[ + sibling distance=32pt, + -latex, + apnode/.style = { + draw=none, + }, + ap/.style = { + draw=black, + }, +] + \Tree [ + .$r\gets\hash(h_{ab}\concat h_{cd})$ [ + .\node[apnode]{$h_{ab}\gets\hash(h_a\concat h_b)$}; [ + .$h_a\gets\hash(a)$ + ] [ + .$h_b\gets\hash(b)$ + ] + ] \edge[ap]; [ + .$h_{cd}\gets\hash(h_c\concat h_d)$ [ + .\node[apnode]{$h_c\gets\hash(c)$}; + ] \edge[ap]; [ + .$h_d\gets\hash(d)$ + ] + ] + ] +\end{tikzpicture} diff --git a/slides/2018-lwm/img/mtp.tex b/slides/2018-lwm/img/mtp.tex new file mode 100644 index 0000000..a62b333 --- /dev/null +++ b/slides/2018-lwm/img/mtp.tex @@ -0,0 +1,28 @@ +\begin{tikzpicture}[ + sibling distance=32pt, + -latex, + apnode/.style = { + draw=black, + dashed, + }, + ap/.style = { + draw=black, + dashed, + }, +] + \Tree [ + .$r\gets\hash(h_{ab}\concat h_{cd})$ [ + .\node[apnode]{$h_{ab}\gets\hash(h_a\concat h_b)$}; [ + .$h_a\gets\hash(a)$ + ] [ + .$h_b\gets\hash(b)$ + ] + ] \edge[ap]; [ + .$h_{cd}\gets\hash(h_c\concat h_d)$ [ + .\node[apnode]{$h_c\gets\hash(c)$}; + ] \edge[ap]; [ + .$h_d\gets\hash(d)$ + ] + ] + ] +\end{tikzpicture} diff --git a/slides/2018-lwm/img/overview.tex b/slides/2018-lwm/img/overview.tex new file mode 100644 index 0000000..9dff7b0 --- /dev/null +++ b/slides/2018-lwm/img/overview.tex @@ -0,0 +1,74 @@ +\begin{tikzpicture}[ + -latex, + rrs/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + ls/.style = { + font=\fontsize{6}{6}\selectfont, + }, +] +\draw (0, 1) node[rrs, fill=darkRed] (Log) {Log}; +\draw (0, -1) node[rrs, fill=darkGreen] (Subject) {Subject}; +\draw (3.5, 0) node[rrs, fill=darkBlue] (Endpoint) {Notifier}; +\draw (-3.5, 0) node[rrs, fill=gray] (Monitor) {Monitor}; + + +\path [draw, ->, rounded corners] + (Log.north) |- + ($ (Log.north) + (Log.west) - (Log) + (-0.25, 0.25) $) + node[ls, above, pos=0.75]{ + STH with snapshot extension + } |- + (Log.west); + +\path [draw, ->, rounded corners] + (Monitor.south) |- + ($ (Monitor.south) + (Monitor.west) - (Monitor) + (-0.25, -0.25) $) + node[ls, below, pos=0.75]{ + verify STH extension + } |- + (Monitor.west); + +\path [draw, ->, rounded corners] + (Subject.south) |- + ($ (Subject.south) + (Subject.east) - (Subject) + (0.25, -0.25) $) + node[ls, below, pos=0.75]{ + verify notification + } |- + (Subject.east); + +\path [draw, <-, dashed, rounded corners] + (Endpoint.north) |- + ($ (Endpoint.east) + (Endpoint.north) - (Endpoint) + (0.25, 0.25) $) + node[ls, above, pos=0.75]{ + optional verify + } |- + (Endpoint.east); + +\draw [->] + (Log.south east) -- + node[ls, sloped, anchor=center, above]{% + batch, STH + } + (Endpoint.north west); + +\draw [->] + (Endpoint.south west) -- + node[ls, sloped, anchor=center, above]{% + notification + } + (Subject.north east); + +\path [draw, ->] + (Log.south west) -- + node[ls, sloped, anchor=center, above]{% + batch, STH + } + (Monitor.north east); +\end{tikzpicture} diff --git a/slides/2018-lwm/img/perf.jpg b/slides/2018-lwm/img/perf.jpg Binary files differnew file mode 100644 index 0000000..42564f4 --- /dev/null +++ b/slides/2018-lwm/img/perf.jpg diff --git a/slides/2018-lwm/img/proofcom.pdf b/slides/2018-lwm/img/proofcom.pdf Binary files differnew file mode 100644 index 0000000..473d817 --- /dev/null +++ b/slides/2018-lwm/img/proofcom.pdf diff --git a/slides/2018-lwm/img/proofgen.pdf b/slides/2018-lwm/img/proofgen.pdf Binary files differnew file mode 100644 index 0000000..deb7ca4 --- /dev/null +++ b/slides/2018-lwm/img/proofgen.pdf diff --git a/slides/2018-lwm/img/proofvf.pdf b/slides/2018-lwm/img/proofvf.pdf Binary files differnew file mode 100644 index 0000000..a2db9d1 --- /dev/null +++ b/slides/2018-lwm/img/proofvf.pdf diff --git a/slides/2018-lwm/img/qleft.pdf b/slides/2018-lwm/img/qleft.pdf Binary files differnew file mode 100644 index 0000000..f35a078 --- /dev/null +++ b/slides/2018-lwm/img/qleft.pdf diff --git a/slides/2018-lwm/img/qright.pdf b/slides/2018-lwm/img/qright.pdf Binary files differnew file mode 100644 index 0000000..da2e8e3 --- /dev/null +++ b/slides/2018-lwm/img/qright.pdf diff --git a/slides/2018-lwm/img/self-monitor.tex b/slides/2018-lwm/img/self-monitor.tex new file mode 100644 index 0000000..0896990 --- /dev/null +++ b/slides/2018-lwm/img/self-monitor.tex @@ -0,0 +1,34 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + ls/.style = { + draw=none, + font=\fontsize{6}{6}\selectfont, + }, +] + \node[entity,fill=darkGreen](domain) at (0,0) {Subject}; + \node[entity,fill=darkRed](log) at (0,-3) {Log}; + \path[draw,thick,-latex] + (domain.south west) -- + node[ls,sloped,below]{Any new certs?} + (log.north west); + \path[draw,thick,-latex] + (log.north east) -- + node[ls,sloped,below]{List of certs} + (domain.south east); + \path[draw,thick,-latex] + (domain.north) |- + ($ (domain.west) + (domain.north) + (domain) + (-0.25, 0.25) $) + node[ls,above,pos=0.75]{ + All ok? + } |- + (domain.west); +\end{tikzpicture} diff --git a/slides/2018-lwm/img/snapshot.pdf b/slides/2018-lwm/img/snapshot.pdf Binary files differnew file mode 100644 index 0000000..df185f6 --- /dev/null +++ b/slides/2018-lwm/img/snapshot.pdf diff --git a/slides/2018-lwm/img/takeaway.pdf b/slides/2018-lwm/img/takeaway.pdf new file mode 100644 index 0000000..7d3b190 --- /dev/null +++ b/slides/2018-lwm/img/takeaway.pdf @@ -0,0 +1,68 @@ +%PDF-1.4 +%µí®û +3 0 obj +<< /Length 4 0 R + /Filter /FlateDecode +>> +stream +xœmŒAÃ0"„‚
ŽýŒ>¡—¦‡äæÿRŸ#$–E³{’rÎã×Gy»àCš\ÅÆ`×Â;´ã»¨(dçUt€Ðè0fµ„-ÉÒTØ…¬ÕA7ïè
TxÂ1f¯Õš;"£*¤4{È~éM7ä‘$ +endstream +endobj +4 0 obj + 118 +endobj +2 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +5 0 obj +<< /Type /Page + /Parent 1 0 R + /MediaBox [ 0 0 12.8 12.8 ] + /Contents 3 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 2 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 5 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Creator (cairo 1.14.0 (http://cairographics.org)) + /Producer (cairo 1.14.0 (http://cairographics.org)) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000520 00000 n +0000000232 00000 n +0000000015 00000 n +0000000210 00000 n +0000000304 00000 n +0000000585 00000 n +0000000712 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +764 +%%EOF diff --git a/slides/2018-lwm/img/tp-monitor.tex b/slides/2018-lwm/img/tp-monitor.tex new file mode 100644 index 0000000..37a6241 --- /dev/null +++ b/slides/2018-lwm/img/tp-monitor.tex @@ -0,0 +1,43 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + ls/.style = { + draw=none, + font=\fontsize{6}{6}\selectfont, + }, +] + \node[entity,fill=darkGreen](domain) at (0,0) {Subject}; + \node[entity,fill=darkRed](log) at (0,-3) {Log}; + \node[entity,fill=darkBlue](monitor) at (3,-1.5) {Monitor}; + \path[draw,thick,-latex] + (domain) -| + node[ls,above]{Notify if you see my certs} + (monitor); + \path[draw,thick,-latex] + (monitor) -- + node[ls,sloped,above]{Found cert!} + (domain); + \path[draw,thick,-latex] + (monitor) |- + node[ls,below]{Any new certs?} + (log); + \path[draw,thick,-latex] + (log) -- + node[ls,sloped,above]{List of certs} + (monitor); + \path[draw,thick,-latex] + (domain.north) |- + ($ (domain.west) + (domain.north) + (domain) + (-0.25, 0.25) $) + node[ls,above,pos=0.75]{ + All ok? + } |- + (domain.west); +\end{tikzpicture} diff --git a/slides/2018-lwm/img/ty.pdf b/slides/2018-lwm/img/ty.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2018-lwm/img/ty.pdf diff --git a/slides/2018-lwm/img/wildcard.tex b/slides/2018-lwm/img/wildcard.tex new file mode 100644 index 0000000..11f328e --- /dev/null +++ b/slides/2018-lwm/img/wildcard.tex @@ -0,0 +1,22 @@ +\begin{tikzpicture}[ + sibling distance=6pt, + level distance=150pt, + -latex, + grow=left, +] + \Tree [ + .$r\gets\hash(h_{01}\concat h_{23})$ [ + .$h_{01}\gets\hash(h_0\concat h_1)$ [ + .$h_0\gets\hash(\mathsf{gro.elpmaxe})$ + ] [ + .$h_1\gets\hash(\mathsf{moc.elpmaxe})$ + ] + ] [ + .$h_{23}\gets\hash(h_2\concat h_3)$ [ + .$h_2\gets\hash(\mathsf{moc.elpmaxe.bus})$ + ] [ + .$h_3\gets\hash(\mathsf{ten.elpmaxe})$ + ] + ] + ] +\end{tikzpicture} diff --git a/slides/2018-lwm/img/wish.pdf b/slides/2018-lwm/img/wish.pdf Binary files differnew file mode 100644 index 0000000..372db92 --- /dev/null +++ b/slides/2018-lwm/img/wish.pdf diff --git a/slides/2018-lwm/main.tex b/slides/2018-lwm/main.tex new file mode 100644 index 0000000..d1060f8 --- /dev/null +++ b/slides/2018-lwm/main.tex @@ -0,0 +1,27 @@ +\pdfminorversion=4 +%\documentclass[aspectratio=169]{beamer} +\documentclass[handout,aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + Verifiable Light-Weight Monitoring for Certificate Transparency Logs +} +%\subtitle{% +%} +\author{% + \textbf{Rasmus Dahlberg} and Tobias Pulls +} +\institute{% + Karlstad University +} +\date{% + \today +} + +\begin{document} + \input{src/titlepage} + \input{src/body} + \input{src/questions} +\end{document} diff --git a/slides/2018-lwm/slides.pdf b/slides/2018-lwm/slides.pdf Binary files differnew file mode 100644 index 0000000..29be110 --- /dev/null +++ b/slides/2018-lwm/slides.pdf diff --git a/slides/2018-lwm/src/body.tex b/slides/2018-lwm/src/body.tex new file mode 100644 index 0000000..67f3c5e --- /dev/null +++ b/slides/2018-lwm/src/body.tex @@ -0,0 +1,268 @@ +\begin{frame} + \frametitle{Certificate Transparency (CT)} + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Add transparency to CA ecosystem + \item Publicly log all certificates + \item No need\footnotemark{} to trust the log + \begin{itemize} + \item Membership proofs + \item Append-only proofs + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=\textwidth]{img/ct} + \burl{http://www.certificate-transparency.org/what-is-ct} + \end{column} + \end{columns} + \footnotetext{As deployed right now we do trust the logs tho \Frowny} +\end{frame} + +\begin{frame} + \frametitle{Certificate logging in greater detail + \titlefloatright{Merkle tree}} + \centering + \vfill + \input{img/mt} + \pause + \vfill + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Append new certificates in batches + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Sign tree head every hour \ding{224} STH + \end{itemize} + \end{column} + \end{columns} + \vfill + %\vfill\centering\alert{Anyone can audit and monitor the log, but as deployed + % not much of this yet} +\end{frame} + +\begin{frame} + \frametitle{Generating a membership proof + \titlefloatright{Audit path}} + \centering + \vfill + \input{img/mtp} + \vfill + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Traverse tree from root to leaf + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Grab all sibling hashes on the way + \end{itemize} + \end{column} + \end{columns} + \vfill +\end{frame} + +\begin{frame} + \frametitle{Two approaches towards monitoring a CT log} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \vbox to 0.8\textheight { + \textbf{Self-monitoring} + \vfill + \input{img/self-monitor} + \vfill + \pause + \begin{description} + \item[\Frowny] Continuous uptime + \item[\Frowny] Download everything + \end{description} + \pause + } + \end{column} + \begin{column}{0.49\textwidth} + \centering + \vbox to 0.8\textheight { + \textbf{Monitoring-as-a-service} + \vfill + \input{img/tp-monitor} + \pause + \vfill + \begin{description} + \item[\Smiley] Ezpz + \item[\Frowny] Trusted 3rd party + \end{description} + } + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Notion of what we would like to achieve + \titlefloatright{`Wish list'}} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item CT/bis backwards compatibility + \item Piggy-back on gossip-audit model + \item Self-monitor wildcards w/o full download + \item Reduced 3rd party monitoring trust + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \centering + \includegraphics[height=0.8\textheight]{img/wish} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{An overview of light-weight monitoring} + \centering + \input{img/overview} + \vfill + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item A new Merkle tree for each batch + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Add snapshot to STH as extension + \end{itemize} + \end{column} + \end{columns} + \vfill\centering\alert{One wildcard (non-)membership notification per STH}\\ + \pause + \alert{How do you know if you got all notifications \ding{224} index + extension} +\end{frame} + +\begin{frame} + \frametitle{Wildcard notifications} + \centering + \input{img/wildcard} + \begin{columns} + \begin{column}{0.39\textwidth} + \begin{itemize} + \item Merkleize reverse-sorted list + \end{itemize} + \end{column} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Wildcard proof \ding{224} at most two audit paths + \end{itemize} + \end{column} + \end{columns} + \pause + \vfill\centering\alert{Security of this data structure? It is still just a + Merkle tree...} +\end{frame} + +\begin{frame} + \frametitle{Performance evaluation \titlefloatright{Experimental setup}} + \begin{columns} + \begin{column}{0.49\textwidth} + \vbox to .6\textheight{ + \begin{itemize} + \item PoC: 351 lines of Go\footnotemark + \item Interesting metrics + \begin{itemize} + \item Snapshot creation time + \item Proof generation time + \item Proof verification time + \item Bandwidth overhead + \end{itemize} + \item Two log characteristics that matter + \begin{itemize} + \item STH frequency + \item Batch size + \end{itemize} + \end{itemize} + \vfill\centering\alert{We observed all Chrome-included logs for eight + months to determine these characteristics} + } + \end{column} + \begin{column}{0.49\textwidth} + \vbox to 0.8\textheight{ + \centering + \vfill + \textbf{Google's Icarus Log}\\ + \vfill + \includegraphics[width=\textwidth]{img/frequency}\\ + \vfill + \includegraphics[width=\textwidth]{img/batch} + \vfill + } + \end{column} + \end{columns} + \footnotetext{\burl{https://github.com/rgdd/lwm}} +\end{frame} + +\begin{frame} + \frametitle{Snapshot creation time} + \centering + \includegraphics[height=0.6\textheight]{img/snapshot} + \vfill\centering\alert{Negligible in comparison to STH issuance rate (1h)} +\end{frame} + +\begin{frame} + \frametitle{Proof generation time} + \centering + \includegraphics[height=0.6\textheight]{img/proofgen} + \vfill\centering\alert{At least 288M non-membership proofs per hour on a + single core} +\end{frame} + +\begin{frame} + \frametitle{Proof generation and verification for *.com} + \centering + \includegraphics[height=0.6\textheight]{img/proofcom} + \vfill\centering\alert{352k matches in max batch \ding{224} 29k proofs per + hour on a single core} +\end{frame} + +\begin{frame} + \frametitle{Bandwidth overhead} + \begin{columns} + \begin{column}{0.69\textwidth} + \begin{description} + \item[Audit paths] max batch size \ding{224} 1 KB + \item[Self-monitor] compare to median batch size of 32.6 MB + \item[Notifier] 288M audit paths per hour \ding{224} 640 Mbps + \end{description} + \end{column} + \begin{column}{0.39\textwidth} + \centering\includegraphics[width=\textwidth]{img/perf} + \burl{http://blog.coviam.com/wp-content/uploads/2016/07/Performance-Evaluation-Process-z.jpg} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Take away} + \begin{columns} + \begin{column}{0.79\textwidth} + \begin{itemize} + \item Unfortunate if CT monitoring relies on trusted parties + \item Light-weight monitoring + \begin{itemize} + \item One verifiable wildcard notification per batch + \item Untrusted notification component with push/pull model + \item Untrusted log \ding{224} rely on one honest monitor + \item Trusted log \ding{224} no need to also trust monitor + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.19\textwidth} + \centering\includegraphics[width=\textwidth]{img/takeaway} + \end{column} + \end{columns} +\end{frame} diff --git a/slides/2018-lwm/src/preamble.tex b/slides/2018-lwm/src/preamble.tex new file mode 100644 index 0000000..abefa6d --- /dev/null +++ b/slides/2018-lwm/src/preamble.tex @@ -0,0 +1,99 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{marvosym} +\usepackage{rotate} +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{graphicx} +\usepackage{color} +\usepackage{drawstack} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +\usepackage{floatrow} +%\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +\lstdefinestyle{CStyle}{ + backgroundcolor=\color{lightGray!25}, + commentstyle=\color{darkGreen}, + keywordstyle=\color{darkBlue}, + numberstyle=\tiny\color{darkRed}, + stringstyle=\color{darkPurple}, + basicstyle=\footnotesize, + breakatwhitespace=false, + breaklines=false, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + language=C, + morekeywords={size_t}, +} + +%\setbeamertemplate{itemize item}[circle] +%\setbeamertemplate{itemize subitem}[default] +%\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\titlefloatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} + +\def\rding{\rotatebox[origin=c]{-90}{\ding{224}}} diff --git a/slides/2018-lwm/src/questions.tex b/slides/2018-lwm/src/questions.tex new file mode 100644 index 0000000..85cb2f3 --- /dev/null +++ b/slides/2018-lwm/src/questions.tex @@ -0,0 +1,17 @@ +\begin{frame} + \frametitle{Any questions?} \label{frm:que} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qleft} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qright} + \end{column} + \end{columns} + + \centering + \vspace{-1cm} + \includegraphics[width=0.20\textwidth]{img/ty} +\end{frame} diff --git a/slides/2018-lwm/src/titlepage.tex b/slides/2018-lwm/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2018-lwm/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2018-software-security/.gitignore b/slides/2018-software-security/.gitignore new file mode 100644 index 0000000..4a7f033 --- /dev/null +++ b/slides/2018-software-security/.gitignore @@ -0,0 +1,12 @@ +*.aux +*.fdb_latexmk +*.fls +*.fls +*.log +*.nav +*.out +main.pdf +*.snm +*.toc +*.nav +*.snm diff --git a/slides/2018-software-security/README b/slides/2018-software-security/README new file mode 100644 index 0000000..b236d9b --- /dev/null +++ b/slides/2018-software-security/README @@ -0,0 +1 @@ +~2x lectures on software security, used 2018-2019 at kau. diff --git a/slides/2018-software-security/beamercolorthemergd.sty b/slides/2018-software-security/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2018-software-security/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2018-software-security/beamerfontthemergd.sty b/slides/2018-software-security/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2018-software-security/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2018-software-security/beamerinnerthemergd.sty b/slides/2018-software-security/beamerinnerthemergd.sty new file mode 100644 index 0000000..4dfd6cf --- /dev/null +++ b/slides/2018-software-security/beamerinnerthemergd.sty @@ -0,0 +1,49 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](Logo){\includegraphics[width=3cm]{img/logo}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add subtitle + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{subtitle}\insertsubtitle\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=12pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + % Add date + \node[ + text=fg, + text width=0.75\paperwidth, + below right= 0.25cm and 4.5cm of current page.north, + ](Date) {\today}; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2018-software-security/beamerouterthemergd.sty b/slides/2018-software-security/beamerouterthemergd.sty new file mode 100644 index 0000000..ba757c6 --- /dev/null +++ b/slides/2018-software-security/beamerouterthemergd.sty @@ -0,0 +1,66 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add mail + \begin{beamercolorbox}[ + wd=0.22\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \texttt{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add author + \begin{beamercolorbox}[ + wd=0.73\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + %\insertauthor + \inserttitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2018-software-security/beamerthemergd.sty b/slides/2018-software-security/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2018-software-security/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2018-software-security/demo/cmd_complex b/slides/2018-software-security/demo/cmd_complex new file mode 100644 index 0000000..b8bc8e4 --- /dev/null +++ b/slides/2018-software-security/demo/cmd_complex @@ -0,0 +1,17 @@ +# compile +gcc -Wall -Werror -std=c99 -ggdb -fno-stack-protector -m32 -o complex complex.c + +# want +ptr to "/bin/bash" <-- will becomes system's first args +dummy RA <-- will becomes sytem's RA +ptr to system <-- RA +... + +# find /bin/bash +x/500s $rsp + +# find system +p system + +# run with args +run `python -c 'print "some stuff"'` diff --git a/slides/2018-software-security/demo/cmd_simple b/slides/2018-software-security/demo/cmd_simple new file mode 100644 index 0000000..266535e --- /dev/null +++ b/slides/2018-software-security/demo/cmd_simple @@ -0,0 +1,28 @@ +# compile +gcc -std=c99 -fno-stack-protector -Wno-deprecated-declarations -ggdb -o simple simple.c + +# run +gdb ./simple + +# demo commands +list main +list greeter +list fun + +disassemble main +disassemble greeter +disassemble fun + +info register + +b main +b greeter +b fun + +run + +# show +- return address / register values +- 11a -> "8a" +- segfault +- jump fun diff --git a/slides/2018-software-security/demo/complex.c b/slides/2018-software-security/demo/complex.c new file mode 100644 index 0000000..ae91ac6 --- /dev/null +++ b/slides/2018-software-security/demo/complex.c @@ -0,0 +1,13 @@ +#include <stdio.h> +#include <string.h> + +void f(char *b) { + char buf[8]; + strcpy(buf, b); + printf("buf: %s\n", buf); +} + +int main(int argc, char *argv[]) { + f(argv[1]); + return 0; +} diff --git a/slides/2018-software-security/demo/simple.c b/slides/2018-software-security/demo/simple.c new file mode 100644 index 0000000..cd07c07 --- /dev/null +++ b/slides/2018-software-security/demo/simple.c @@ -0,0 +1,22 @@ +#include <stdio.h> +#include <stdbool.h> +#include <stdlib.h> + +void fun() { + printf("fun times!\n"); +} + +void mul(int first) { + int second = 0; + char buf[8] = {1,2,3,4,5,6,7,8}; + printf("Enter a number: "); + gets(buf); + second = atoi(buf); + printf("%d*%d = %d\n", first, second, first*second); +} + +int main() { + int first = 2; + mul(first); + return 0; +} diff --git a/slides/2018-software-security/handout.pdf b/slides/2018-software-security/handout.pdf Binary files differnew file mode 100644 index 0000000..00e1f42 --- /dev/null +++ b/slides/2018-software-security/handout.pdf diff --git a/slides/2018-software-security/img/afl.jpg b/slides/2018-software-security/img/afl.jpg Binary files differnew file mode 100644 index 0000000..42baef0 --- /dev/null +++ b/slides/2018-software-security/img/afl.jpg diff --git a/slides/2018-software-security/img/afl.png b/slides/2018-software-security/img/afl.png Binary files differnew file mode 100644 index 0000000..d259912 --- /dev/null +++ b/slides/2018-software-security/img/afl.png diff --git a/slides/2018-software-security/img/air-plane.pdf b/slides/2018-software-security/img/air-plane.pdf Binary files differnew file mode 100644 index 0000000..3b27910 --- /dev/null +++ b/slides/2018-software-security/img/air-plane.pdf diff --git a/slides/2018-software-security/img/attacker.pdf b/slides/2018-software-security/img/attacker.pdf Binary files differnew file mode 100644 index 0000000..bd8f863 --- /dev/null +++ b/slides/2018-software-security/img/attacker.pdf diff --git a/slides/2018-software-security/img/bad-encode.jpg b/slides/2018-software-security/img/bad-encode.jpg Binary files differnew file mode 100644 index 0000000..e9ea82e --- /dev/null +++ b/slides/2018-software-security/img/bad-encode.jpg diff --git a/slides/2018-software-security/img/bug.jpg b/slides/2018-software-security/img/bug.jpg Binary files differnew file mode 100644 index 0000000..3b86ec3 --- /dev/null +++ b/slides/2018-software-security/img/bug.jpg diff --git a/slides/2018-software-security/img/canary-after.png b/slides/2018-software-security/img/canary-after.png Binary files differnew file mode 100644 index 0000000..ad9965a --- /dev/null +++ b/slides/2018-software-security/img/canary-after.png diff --git a/slides/2018-software-security/img/canary-before.png b/slides/2018-software-security/img/canary-before.png Binary files differnew file mode 100644 index 0000000..0b7bebe --- /dev/null +++ b/slides/2018-software-security/img/canary-before.png diff --git a/slides/2018-software-security/img/canary-bird.jpg b/slides/2018-software-security/img/canary-bird.jpg Binary files differnew file mode 100644 index 0000000..c89b42c --- /dev/null +++ b/slides/2018-software-security/img/canary-bird.jpg diff --git a/slides/2018-software-security/img/checklist.pdf b/slides/2018-software-security/img/checklist.pdf Binary files differnew file mode 100644 index 0000000..ceeac09 --- /dev/null +++ b/slides/2018-software-security/img/checklist.pdf diff --git a/slides/2018-software-security/img/clang.png b/slides/2018-software-security/img/clang.png Binary files differnew file mode 100644 index 0000000..06dd0dd --- /dev/null +++ b/slides/2018-software-security/img/clang.png diff --git a/slides/2018-software-security/img/cwe.png b/slides/2018-software-security/img/cwe.png Binary files differnew file mode 100644 index 0000000..5d2fa27 --- /dev/null +++ b/slides/2018-software-security/img/cwe.png diff --git a/slides/2018-software-security/img/demo.png b/slides/2018-software-security/img/demo.png Binary files differnew file mode 100644 index 0000000..03a10fc --- /dev/null +++ b/slides/2018-software-security/img/demo.png diff --git a/slides/2018-software-security/img/google-rewards.png b/slides/2018-software-security/img/google-rewards.png Binary files differnew file mode 100644 index 0000000..34492fc --- /dev/null +++ b/slides/2018-software-security/img/google-rewards.png diff --git a/slides/2018-software-security/img/hb1.png b/slides/2018-software-security/img/hb1.png Binary files differnew file mode 100644 index 0000000..fe606c5 --- /dev/null +++ b/slides/2018-software-security/img/hb1.png diff --git a/slides/2018-software-security/img/hb2.png b/slides/2018-software-security/img/hb2.png Binary files differnew file mode 100644 index 0000000..b65179d --- /dev/null +++ b/slides/2018-software-security/img/hb2.png diff --git a/slides/2018-software-security/img/hb3.png b/slides/2018-software-security/img/hb3.png Binary files differnew file mode 100644 index 0000000..371b4c4 --- /dev/null +++ b/slides/2018-software-security/img/hb3.png diff --git a/slides/2018-software-security/img/hb4.png b/slides/2018-software-security/img/hb4.png Binary files differnew file mode 100644 index 0000000..8a52e7d --- /dev/null +++ b/slides/2018-software-security/img/hb4.png diff --git a/slides/2018-software-security/img/hb5.png b/slides/2018-software-security/img/hb5.png Binary files differnew file mode 100644 index 0000000..1df3291 --- /dev/null +++ b/slides/2018-software-security/img/hb5.png diff --git a/slides/2018-software-security/img/hb6.png b/slides/2018-software-security/img/hb6.png Binary files differnew file mode 100644 index 0000000..8cfb9b5 --- /dev/null +++ b/slides/2018-software-security/img/hb6.png diff --git a/slides/2018-software-security/img/heartbleed.png b/slides/2018-software-security/img/heartbleed.png Binary files differnew file mode 100644 index 0000000..27933db --- /dev/null +++ b/slides/2018-software-security/img/heartbleed.png diff --git a/slides/2018-software-security/img/icloud.tex b/slides/2018-software-security/img/icloud.tex new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/slides/2018-software-security/img/icloud.tex diff --git a/slides/2018-software-security/img/libc.jpg b/slides/2018-software-security/img/libc.jpg Binary files differnew file mode 100644 index 0000000..8dd2012 --- /dev/null +++ b/slides/2018-software-security/img/libc.jpg diff --git a/slides/2018-software-security/img/logo.png b/slides/2018-software-security/img/logo.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2018-software-security/img/logo.png diff --git a/slides/2018-software-security/img/memlay.png b/slides/2018-software-security/img/memlay.png Binary files differnew file mode 100644 index 0000000..9c7aa52 --- /dev/null +++ b/slides/2018-software-security/img/memlay.png diff --git a/slides/2018-software-security/img/memory-safe/go.png b/slides/2018-software-security/img/memory-safe/go.png Binary files differnew file mode 100644 index 0000000..74266bb --- /dev/null +++ b/slides/2018-software-security/img/memory-safe/go.png diff --git a/slides/2018-software-security/img/memory-safe/java.png b/slides/2018-software-security/img/memory-safe/java.png Binary files differnew file mode 100644 index 0000000..b1fb238 --- /dev/null +++ b/slides/2018-software-security/img/memory-safe/java.png diff --git a/slides/2018-software-security/img/memory-safe/python.jpg b/slides/2018-software-security/img/memory-safe/python.jpg Binary files differnew file mode 100644 index 0000000..a1779d6 --- /dev/null +++ b/slides/2018-software-security/img/memory-safe/python.jpg diff --git a/slides/2018-software-security/img/memory-safe/rust.png b/slides/2018-software-security/img/memory-safe/rust.png Binary files differnew file mode 100644 index 0000000..0016983 --- /dev/null +++ b/slides/2018-software-security/img/memory-safe/rust.png diff --git a/slides/2018-software-security/img/mit1.png b/slides/2018-software-security/img/mit1.png Binary files differnew file mode 100644 index 0000000..bba6d7e --- /dev/null +++ b/slides/2018-software-security/img/mit1.png diff --git a/slides/2018-software-security/img/mit2.png b/slides/2018-software-security/img/mit2.png Binary files differnew file mode 100644 index 0000000..4d6a9ff --- /dev/null +++ b/slides/2018-software-security/img/mit2.png diff --git a/slides/2018-software-security/img/mit3.png b/slides/2018-software-security/img/mit3.png Binary files differnew file mode 100644 index 0000000..110c58e --- /dev/null +++ b/slides/2018-software-security/img/mit3.png diff --git a/slides/2018-software-security/img/qleft.pdf b/slides/2018-software-security/img/qleft.pdf Binary files differnew file mode 100644 index 0000000..f35a078 --- /dev/null +++ b/slides/2018-software-security/img/qleft.pdf diff --git a/slides/2018-software-security/img/qright.pdf b/slides/2018-software-security/img/qright.pdf Binary files differnew file mode 100644 index 0000000..da2e8e3 --- /dev/null +++ b/slides/2018-software-security/img/qright.pdf diff --git a/slides/2018-software-security/img/question.png b/slides/2018-software-security/img/question.png Binary files differnew file mode 100644 index 0000000..4e174a6 --- /dev/null +++ b/slides/2018-software-security/img/question.png diff --git a/slides/2018-software-security/img/real-bug.png b/slides/2018-software-security/img/real-bug.png Binary files differnew file mode 100644 index 0000000..05bb42d --- /dev/null +++ b/slides/2018-software-security/img/real-bug.png diff --git a/slides/2018-software-security/img/stack-smashing.png b/slides/2018-software-security/img/stack-smashing.png Binary files differnew file mode 100644 index 0000000..7d06eb2 --- /dev/null +++ b/slides/2018-software-security/img/stack-smashing.png diff --git a/slides/2018-software-security/img/summary.jpg b/slides/2018-software-security/img/summary.jpg Binary files differnew file mode 100644 index 0000000..3850ec7 --- /dev/null +++ b/slides/2018-software-security/img/summary.jpg diff --git a/slides/2018-software-security/img/take-away.pdf b/slides/2018-software-security/img/take-away.pdf new file mode 100644 index 0000000..7d3b190 --- /dev/null +++ b/slides/2018-software-security/img/take-away.pdf @@ -0,0 +1,68 @@ +%PDF-1.4 +%µí®û +3 0 obj +<< /Length 4 0 R + /Filter /FlateDecode +>> +stream +xœmŒAÃ0"„‚
ŽýŒ>¡—¦‡äæÿRŸ#$–E³{’rÎã×Gy»àCš\ÅÆ`×Â;´ã»¨(dçUt€Ðè0fµ„-ÉÒTØ…¬ÕA7ïè
TxÂ1f¯Õš;"£*¤4{È~éM7ä‘$ +endstream +endobj +4 0 obj + 118 +endobj +2 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +5 0 obj +<< /Type /Page + /Parent 1 0 R + /MediaBox [ 0 0 12.8 12.8 ] + /Contents 3 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 2 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 5 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Creator (cairo 1.14.0 (http://cairographics.org)) + /Producer (cairo 1.14.0 (http://cairographics.org)) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000520 00000 n +0000000232 00000 n +0000000015 00000 n +0000000210 00000 n +0000000304 00000 n +0000000585 00000 n +0000000712 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +764 +%%EOF diff --git a/slides/2018-software-security/img/ty.pdf b/slides/2018-software-security/img/ty.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2018-software-security/img/ty.pdf diff --git a/slides/2018-software-security/img/weird-machine.png b/slides/2018-software-security/img/weird-machine.png Binary files differnew file mode 100644 index 0000000..cd0bddf --- /dev/null +++ b/slides/2018-software-security/img/weird-machine.png diff --git a/slides/2018-software-security/img/zerodium.png b/slides/2018-software-security/img/zerodium.png Binary files differnew file mode 100644 index 0000000..3caa73a --- /dev/null +++ b/slides/2018-software-security/img/zerodium.png diff --git a/slides/2018-software-security/main.tex b/slides/2018-software-security/main.tex new file mode 100644 index 0000000..f442493 --- /dev/null +++ b/slides/2018-software-security/main.tex @@ -0,0 +1,27 @@ +\pdfminorversion=4 +%\documentclass[handout,aspectratio=169]{beamer} +\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + Software Security I\&II +} +%\subtitle{% +%} +\author{% + Rasmus Dahlberg +} +\institute{% + Karlstad University +} +\date{% + \today +} + +\begin{document} + \input{src/titlepage} + \input{src/body} + \input{src/questions} +\end{document} diff --git a/slides/2018-software-security/sample/._bo-stack.c.swp b/slides/2018-software-security/sample/._bo-stack.c.swp Binary files differnew file mode 100644 index 0000000..376288d --- /dev/null +++ b/slides/2018-software-security/sample/._bo-stack.c.swp diff --git a/slides/2018-software-security/sample/_bo-heap.c b/slides/2018-software-security/sample/_bo-heap.c new file mode 100644 index 0000000..a89959c --- /dev/null +++ b/slides/2018-software-security/sample/_bo-heap.c @@ -0,0 +1,19 @@ +void verify_heap() +{ + char *buf = malloc(8*sizeof(char)); + char *verified = malloc(sizeof(int)); + *verified = 0; + gets(buf); + /* <verification goes here> */ + if (*verified) { + printf("accept\n"); + } else { + printf("reject\n"); + } +} + +int main(int argc, char *argv[]) +{ + verify_heap(); + return 0; +} diff --git a/slides/2018-software-security/sample/_bo-stack.c b/slides/2018-software-security/sample/_bo-stack.c new file mode 100644 index 0000000..167496e --- /dev/null +++ b/slides/2018-software-security/sample/_bo-stack.c @@ -0,0 +1,21 @@ +#include <stdio.h> + +void verify_stack() +{ + int verified = 0; + char buf[8] = {4,4,4,4,8,8,8,8}; + gets(buf); + /* <verification goes here> */ + if (verified) { + printf("accept\n"); + } else { + printf("reject\n"); + } +} + +int main(int argc, char *argv[]) +{ + printf("Lucky number: %d\n", 1337); + verify_stack(); + return 0; +} diff --git a/slides/2018-software-security/sample/_stack-frame.c b/slides/2018-software-security/sample/_stack-frame.c new file mode 100644 index 0000000..32f4fe2 --- /dev/null +++ b/slides/2018-software-security/sample/_stack-frame.c @@ -0,0 +1,26 @@ +#include <stdio.h> + +int add(int a, int b) +{ + int result; + result = a+b; + return result; +} + +int sub(int a, int b) +{ + int result; + result = add(a,-b); + return result; +} + +int algorithm() +{ + printf("result: %d\n", sub(2,1)); +} + +int main(int argc, char *argv[]) +{ + algorithm(); + return 0; +} diff --git a/slides/2018-software-security/sample/assignment-buffer-overflow.c b/slides/2018-software-security/sample/assignment-buffer-overflow.c new file mode 100644 index 0000000..2fb0d58 --- /dev/null +++ b/slides/2018-software-security/sample/assignment-buffer-overflow.c @@ -0,0 +1,15 @@ +#include <stdio.h> +#include <limits.h> +#define SECRET UINT_MAX + +void gotcha() { printf("Gotcha!\n"); } + +int main() { + unsigned secret = 0; + char buf[8]; + scanf("%s", buf); + if (secret == SECRET) { + gotcha(); + } + return 0; +} diff --git a/slides/2018-software-security/sample/assignment-integer-overflow.c b/slides/2018-software-security/sample/assignment-integer-overflow.c new file mode 100644 index 0000000..58c59b1 --- /dev/null +++ b/slides/2018-software-security/sample/assignment-integer-overflow.c @@ -0,0 +1,15 @@ +#include <stdio.h> + +int get_int() { + int v; printf("Enter an integer: "); + scanf("%d", &v); + return v; +} + +int main() { + int a=get_int(), b=get_int(), max=10; + if (a+b > max) + printf("%d+%d > %d\n", a, b, max); + else + printf("%d+%d <= %d\n", a, b, max); +} diff --git a/slides/2018-software-security/sample/bad-add.c b/slides/2018-software-security/sample/bad-add.c new file mode 100644 index 0000000..42424de --- /dev/null +++ b/slides/2018-software-security/sample/bad-add.c @@ -0,0 +1,10 @@ +void cat(char *dst, size_t n, + char *src1, size_t n1, + char *src2, size_t n2) +{ + if (n1+n2 <= n) { + strncpy(dst, src1, n); + strncat(dst, src2, n-n1); + } +} +... diff --git a/slides/2018-software-security/sample/bad-call.c b/slides/2018-software-security/sample/bad-call.c new file mode 100644 index 0000000..9d6d57b --- /dev/null +++ b/slides/2018-software-security/sample/bad-call.c @@ -0,0 +1,10 @@ +void init(char v, char *buf, int n) +{ + char *b = buf; + while (b < buf+n) { + *b++ = val; + } +} +... +char *buf = malloc(2); +init('A', buf, sizeof(buf)); diff --git a/slides/2018-software-security/sample/bad-index.c b/slides/2018-software-security/sample/bad-index.c new file mode 100644 index 0000000..37d94b3 --- /dev/null +++ b/slides/2018-software-security/sample/bad-index.c @@ -0,0 +1,4 @@ +char b[4] = "abc"; +b[3] = 'd'; +printf("b: %s\n", b); +... diff --git a/slides/2018-software-security/sample/bad-index2.c b/slides/2018-software-security/sample/bad-index2.c new file mode 100644 index 0000000..b9f5be6 --- /dev/null +++ b/slides/2018-software-security/sample/bad-index2.c @@ -0,0 +1,4 @@ +char b[4] = "abc"; +b[4] = 'd'; +printf("b: %s\n", s); +... diff --git a/slides/2018-software-security/sample/bad-printf.c b/slides/2018-software-security/sample/bad-printf.c new file mode 100644 index 0000000..7026600 --- /dev/null +++ b/slides/2018-software-security/sample/bad-printf.c @@ -0,0 +1,4 @@ +char b[4]; +fgets(b, 4, stdin); +printf(b); +... diff --git a/slides/2018-software-security/sample/bo-heap.c b/slides/2018-software-security/sample/bo-heap.c new file mode 100644 index 0000000..60fd29e --- /dev/null +++ b/slides/2018-software-security/sample/bo-heap.c @@ -0,0 +1,13 @@ +void verify_heap() +{ + char *buf = malloc(8*sizeof(char)); + int *verified = malloc(sizeof(int)); + *verified = 0; + gets(buf); + /* <verification goes here> */ + if (*verified) { + printf("accept\n"); + } else { + printf("reject\n"); + } +} diff --git a/slides/2018-software-security/sample/bo-stack.c b/slides/2018-software-security/sample/bo-stack.c new file mode 100644 index 0000000..f8bcb55 --- /dev/null +++ b/slides/2018-software-security/sample/bo-stack.c @@ -0,0 +1,12 @@ +void verify_stack() +{ + int verified = 0; + char buf[8]; + gets(buf); + /* <verification goes here> */ + if (verified) { + printf("accept\n"); + } else { + printf("reject\n"); + } +} diff --git a/slides/2018-software-security/sample/build b/slides/2018-software-security/sample/build new file mode 100755 index 0000000..123db54 --- /dev/null +++ b/slides/2018-software-security/sample/build @@ -0,0 +1,10 @@ +#!/bin/bash + +echo "[Compile] bo-stack" +gcc -g -O0 -fno-stack-protector -o bo-stack _bo-stack.c &> /dev/null + +echo "[Compile] bo-heap" +gcc -g -O0 -fno-stack-protector -o bo-heap _bo-heap.c &> /dev/null + +echo "[Compile] stack-frame" +gcc -g -O0 -fno-stack-protector -o stack-frame _stack-frame.c diff --git a/slides/2018-software-security/sample/ldd b/slides/2018-software-security/sample/ldd new file mode 100644 index 0000000..dc2cc99 --- /dev/null +++ b/slides/2018-software-security/sample/ldd @@ -0,0 +1,7 @@ +$ cat main.c +int main() { return 0; } +$ gcc main.c +$ ldd ./a.out + linux-vdso.so.1 (0x00007fff3a9e4000) + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa5bfeda000) + /lib64/ld-linux-x86-64.so.2 (0x00007fa5c04cd000) diff --git a/slides/2018-software-security/sample/ldd2 b/slides/2018-software-security/sample/ldd2 new file mode 100644 index 0000000..ff87494 --- /dev/null +++ b/slides/2018-software-security/sample/ldd2 @@ -0,0 +1,8 @@ +$ ldd ./a.out + linux-vdso.so.1 (0x00007ffdda7ce000) + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7f307ba000) + /lib64/ld-linux-x86-64.so.2 (0x00007f7f30dad000) +$ ldd ./a.out + linux-vdso.so.1 (0x00007ffe387d4000) + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdd793ef000) + /lib64/ld-linux-x86-64.so.2 (0x00007fdd799e2000) diff --git a/slides/2018-software-security/sample/main.c b/slides/2018-software-security/sample/main.c new file mode 100644 index 0000000..f8b643a --- /dev/null +++ b/slides/2018-software-security/sample/main.c @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} diff --git a/slides/2018-software-security/sample/splint b/slides/2018-software-security/sample/splint new file mode 100644 index 0000000..af8501e --- /dev/null +++ b/slides/2018-software-security/sample/splint @@ -0,0 +1,17 @@ +static-analysis.c: (in function main) +static-analysis.c:7:9: Possibly null storage buf passed as non-null param: + fgets (buf, ...) + A possibly null pointer is passed as a parameter corresponding to a formal + parameter with no /*@null@*/ annotation. If NULL may be used for this + parameter, add a /*@null@*/ annotation to the function parameter declaration. + (Use -nullpass to inhibit warning) + static-analysis.c:6:15: Storage buf may become null +static-analysis.c:7:3: Return value (type char *) ignored: fgets(buf, 8, stdin) + Result returned by function call is not used. If this is intended, can cast + result to (void) to eliminate message. (Use -retvalother to inhibit warning) +static-analysis.c:9:12: Fresh storage buf not released before return + A memory leak has been detected. Storage allocated locally is not released + before the last reference to it is lost. (Use -mustfreefresh to inhibit + warning) + static-analysis.c:6:25: Fresh storage buf created + diff --git a/slides/2018-software-security/sample/stack-frame.c b/slides/2018-software-security/sample/stack-frame.c new file mode 100644 index 0000000..b5c962f --- /dev/null +++ b/slides/2018-software-security/sample/stack-frame.c @@ -0,0 +1,18 @@ +int add(int a, int b) +{ + int result; + result = a+b; + return result; +} + +int sub(int a, int b) +{ + int result; + result = add(a,-b); + return result; +} + +int algorithm() +{ + printf("result: %d\n", sub(2,1)); +} diff --git a/slides/2018-software-security/sample/static-analysis.c b/slides/2018-software-security/sample/static-analysis.c new file mode 100644 index 0000000..3d89478 --- /dev/null +++ b/slides/2018-software-security/sample/static-analysis.c @@ -0,0 +1,10 @@ +#include <stdio.h> +#include <stdlib.h> + +int main() +{ + char *buf = malloc(8); + fgets(buf, 8, stdin); + printf("%s\n", buf); + return 0; +} diff --git a/slides/2018-software-security/slides.pdf b/slides/2018-software-security/slides.pdf Binary files differnew file mode 100644 index 0000000..b073cf6 --- /dev/null +++ b/slides/2018-software-security/slides.pdf diff --git a/slides/2018-software-security/src/body.tex b/slides/2018-software-security/src/body.tex new file mode 100644 index 0000000..0eb89e1 --- /dev/null +++ b/slides/2018-software-security/src/body.tex @@ -0,0 +1,1009 @@ +\begin{frame} +\frametitle{Learning outcomes} + \vfill\centering + \smartdiagramset{ + sequence item height=1.75cm, + sequence item width=2.5cm, + sequence item text width = 2.4cm, + } + \smartdiagram[sequence diagram]{% + What is software security,% + Software security gone wrong,% + Buffer overflows and + defenses% + } + \pause + \vfill\centering\textbf{Already covered here or elsewhere:} least privilege, + modern crypto, use secure APIs, pass strings to complex subsystems with + care, do unit testing, security audits, ... +\end{frame} + +\begin{frame} + \frametitle{Be aware of other common coding mistakes not covered here} + \centering\includegraphics[width=\textwidth]{img/cwe} + \burl{https://cwe.mitre.org/data/definitions/699.html} +\end{frame} + +\begin{frame} + \frametitle{Software vulnerabilities pay\titlefloatright{Zerodium's program}} + \centering\includegraphics[height=0.8\textheight]{img/zerodium}\\ + \burl{https://zerodium.com/program.html} +\end{frame} + +\begin{frame} + \frametitle{Software vulnerabilities pay\titlefloatright{Google's + program}} + \centering\includegraphics[height=0.8\textheight]{img/google-rewards}\\ + \burl{https://www.google.com/about/appsecurity/reward-program/index.html} +\end{frame} + + +\begin{frame} + \frametitle{% + What is software security about?% + \titlefloatright{% + Weird machines\footnote{\burl{https://en.wikipedia.org/wiki/Weird_machine}}% + }% + } + \centering + \includegraphics[height=0.4\textheight]{img/weird-machine} + \\\vfill + Security properties and threat model $\rightarrow$ + program should work as intended +\end{frame} + +\begin{frame} + \frametitle{Can you spell software vulnerability? \titlefloatright{BUG}} + \centering\includegraphics[height=0.5\textheight]{img/real-bug} + % REMEMBER@bug: bad composition, implementation error, logical error +\end{frame} + +\begin{frame} + %REMEMBER@bad comp: Mat Honan + \frametitle{Bad composition \titlefloatright{Gmail password + reset\footnote{% + \burl{https://www.wired.com/2012/08/apple-amazon-mat-honan-hacking/} + \titlefloatright{Credit: Nickolai Zeldovich and James Mickens} + }}} + \centering + \begin{tikzpicture} + \node[draw=gray, rounded rectangle, fill=gray!25, minimum width=4cm, + minimum height=2cm](gmail) at (0,0) {% + \begin{tabular}{c} + \textbf{Gmail reset}\\ + \begin{tabular}{l} + \textbf{-} use backup mail\\ + \textbf{-} \texttt{m****n@me.com}\\ + \\ + \end{tabular} + \end{tabular} + }; + \pause + + \node[draw=gray, rounded rectangle, fill=gray!25, minimum width=4cm, + minimum height=2cm, below=1cm of gmail](appleid) {% + \begin{tabular}{c} + \textbf{AppleID reset}\\ + \begin{tabular}{l} + \textbf{-} mail address\\ + \textbf{-} billing address\\ + \textbf{-} last four in CC\\ + \end{tabular} + \end{tabular} + }; + \pause + + \node[draw=gray, rounded rectangle, fill=gray!25, minimum width=4cm, + minimum height=2cm, right=3cm of gmail](amazon) {% + \begin{tabular}{c} + \textbf{Amazon reset}\\ + \begin{tabular}{l} + \textbf{-} name \\ + \textbf{-} billing address\\ + \textbf{-} CC number\\ + \end{tabular} + \end{tabular} + }; + \pause + + \node[draw=gray, rounded rectangle, fill=gray!25, minimum width=4cm, + minimum height=2cm, below=1cm of amazon](amazonadd) {% + \begin{tabular}{c} + \textbf{Amazon add CC}\\ + \begin{tabular}{l} + \textbf{-} name \\ + \textbf{-} mail address\\ + \textbf{-} billing address\\ + \end{tabular} + \end{tabular} + }; + + \pause + \path[draw,thick,-latex] + (amazonadd) -- + node[draw=none,right]{precaution\footnotemark} + (amazon); + \pause + \path[draw,thick,-latex] (amazon) -- (appleid); + \pause + \path[draw,thick,-latex] (appleid) -- (gmail); + \end{tikzpicture} + \footnotetext{\tiny{Obfuscate CC, s.t., only last last 4 CC digits are shown}} +\end{frame} + +\begin{frame} + \frametitle{Implementation error\titlefloatright{% + iCloud hack\footnote{% + \burl{https://github.com/hackappcom/ibrute} + \titlefloatright{Credit: Nickolai Zeldovich and James Mickens} + }}} + \centering + \begin{tikzpicture} + \node[draw=gray, thick, rounded rectangle, minimum width=4cm, minimum + height=2cm, fill=gray!25] (icloud) at (0,0) {iCloud}; + \node[draw=none, left=2cm of icloud](ifile) {Files}; + \node[draw=none, above=1cm of icloud](ifeature) {Other features}; + \coordinate(imid) at ($ (ifile.north) !.5! (ifeature) $); + \node[draw=none] (isharing) at ($ (imid) + (-.75,.5) $) {Sharing}; + \node[draw=none, right=2cm of icloud](ifind) {% + \begin{tabular}{c} + Find my\\ + iPhone + \end{tabular} + }; + \path[draw, -latex] (ifile) -- (icloud); + \path[draw, -latex] (isharing) -- (icloud); + \path[draw, -latex] (ifeature) -- (icloud); + \path[draw, -latex] (ifind) -- (icloud); + \end{tikzpicture} + \pause + \vfill + \begin{columns} + \begin{column}{0.49\textwidth} + \vbox to .2\textheight{ + \vfill + \begin{itemize} + \item User must login to use a feature + \pause + \item \textbf{Rate limited login attempts?} + \end{itemize} + \vfill + } + \end{column} + \begin{column}{0.49\textwidth} + \vbox to .2\textheight{ + \vfill + Files, sharing, other features? + \titlefloatright{\textcolor{darkGreen}{Yep}}\\ + \pause + Find my iPhone...? + \titlefloatright{\textcolor{darkRed}{Nop}} + \vfill + } + \end{column} + \end{columns} + \pause + \vfill + \alert{Lesson learned: the importance of testing against abnormal behaviour} +\end{frame} + +\begin{frame} + \frametitle{Implementation error\titlefloatright{Subject + names and TLS\footnote{% + \burl{https://www.blackhat.com/presentations/bh-usa-09/MARLINSPIKE/BHUSA09-Marlinspike-DefeatSSL-PAPER1.pdf} + }}} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item TLS certificate: identity-to-key binding + \pause + \item Subject name? Pascal string + \begin{itemize} + \item Length followed by characters + \end{itemize} + \pause + \item Many TLS implementations? C string + \begin{itemize} + \item Characters with null-termination + \end{itemize} + \end{itemize} + \end{column} + \pause + \begin{column}{0.39\textwidth} + \includegraphics[width=\textwidth]{img/bad-encode} + \end{column} + \end{columns} + \pause + \vfill\centering\alert{Lesson learned: only process data at uniform formats} +\end{frame} + +\begin{frame} + \frametitle{The bad news :/} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Much software is written in \texttt{C}/\texttt{C++} + \item Recipe for disaster: + \begin{itemize} + \item Exposure to raw memory addresses + \item No built-in bound checking and safety + \item Operate on untrusted user input + \end{itemize} + \item Why? + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \centering\includegraphics[height=0.6\textheight]{img/clang}\\ + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{It is easy to get wrong \titlefloatright{1/2}} + \vfill + \begin{columns} + \begin{column}{0.33\textwidth} + \vbox to .4\textheight{ + \centering + \lstinputlisting[style=CStyle]{sample/bad-index.c} + \vfill + Problem? \\ + \pause + \textbf{over-read} \\ + \pause + } + \end{column} + \begin{column}{0.33\textwidth} + \vbox to .4\textheight{ + \centering + \lstinputlisting[style=CStyle]{sample/bad-index2.c} + \vfill + Problem? \\ + \pause + \textbf{over-write} \\ + \pause + } + \end{column} + \begin{column}{0.33\textwidth} + \vbox to .4\textheight{ + \centering + \lstinputlisting[style=CStyle]{sample/bad-printf.c} + \vfill + Problem? \\ + \pause + \textbf{over-read} \\ + } + \end{column} + \end{columns} + \vfill +\end{frame} + +\begin{frame} + \frametitle{It is easy to get wrong \titlefloatright{2/2}} + \vfill + \begin{columns} + \begin{column}{0.49\textwidth} + \vbox to .6\textheight{ + \centering + \lstinputlisting[style=CStyle]{sample/bad-call.c} + \vfill + Problem? \\ + \pause + \textbf{over-write} + \pause + } + \end{column} + \begin{column}{0.49\textwidth} + \vbox to .6\textheight{ + \centering + \lstinputlisting[style=CStyle]{sample/bad-add.c} + \vfill + Problem? \\ + \pause + \textbf{over-write} + } + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{A famous over-read in OpenSSL\titlefloatright{% + Heartbleed bug% + \includegraphics[height=16pt]{img/heartbleed}% + }} + \begin{columns} + \begin{column}{0.49\textwidth} + \includegraphics[width=\textwidth]{img/hb1} + \includegraphics[width=\textwidth]{img/hb2} + \includegraphics[width=\textwidth]{img/hb3} + \end{column} + \begin{column}{0.49\textwidth} + \includegraphics[width=\textwidth]{img/hb4} + \includegraphics[width=\textwidth]{img/hb5} + \includegraphics[width=\textwidth]{img/hb6} + \end{column} + \end{columns} + \vfill\centering\burl{https://xkcd.com/1354/} + %REMEMBER@after heartbleed: transition -> easy bug, not the typical case. Usually, attckers exploit buffer overflows (i.e., write outside of buffer boundaries) to change the program flow, e.g., by changing the value of adjacent variables. In extreme cases, entirely new functionality can be inserted - hello world program with buf overflow -> delete files... This is what we will work towards now. +\end{frame} + +\begin{frame} + %REMEMBER: explain stack briefly, and paint everything on board - local vars + \frametitle{Buffer overflow \titlefloatright{Stack}} + \begin{columns} + \begin{column}{0.59\textwidth} + \lstinputlisting[style=CStyle]{sample/bo-stack.c} + \end{column} + \pause + \begin{column}{0.39\textwidth} + \begin{itemize} + \item Input 1: Neal \ding{224} \textcolor{darkRed}{reject} + \pause + \item Input 2: Caffrey \ding{224} \textcolor{darkRed}{reject} + \pause + \item Input 3: Overflow! \ding{224} \textcolor{darkGreen}{accept} + \pause + \end{itemize} + \end{column} + \end{columns} + \vfill\centering\alert{Buffer overflow occurs when writing outside of a buffer's boundaries} +\end{frame} + +\begin{frame} + %REMEMBER: explain heapy briefly, and paint everything on board - need var lifetime that is longer than function lifetime + \frametitle{Buffer overflow \titlefloatright{Heap}} + \begin{columns} + \begin{column}{0.59\textwidth} + \lstinputlisting[style=CStyle]{sample/bo-heap.c} + \end{column} + \pause + \begin{column}{0.39\textwidth} + \begin{itemize} + \item Input 1: Neal \ding{224} \textcolor{darkRed}{reject} + \pause + \item Input 2: Caffrey \ding{224} \textcolor{darkRed}{reject} + \pause + \item Input 3: aaa...aaa \ding{224} \textcolor{darkGreen}{accept} + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + % Just to make sure that everyone is on the same page now, and work towards stack frames + \frametitle{Memory layout} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Heap grows towards higher addresses + \begin{itemize} + \item Manual memory (de)allocation + \end{itemize} + \item Stack grows towards lower addresses + \begin{itemize} + \item Automatic memory (de)allocation + \item Each function has a `stack frame' + \end{itemize} + \item Data: e.g., global and static variables + \item Code: instructions that CPU can process + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \centering\includegraphics[height=0.6\textheight]{img/memlay} + \end{column} + \end{columns} + %\pause + %\vfill\centering\alert{Note: each process has its own virtual memory that + % is translated to physical memory} +\end{frame} + +\begin{frame} + \frametitle{Stack frames} + \begin{columns} + \begin{column}{0.49\textwidth} + \lstinputlisting[style=CStyle]{sample/stack-frame.c} + \end{column} + \begin{column}{0.49\textwidth} + Each function gets its own stack frame + \begin{itemize} + \item Local variables + \item Function parameters + \item Housekeeping such as: + \begin{itemize} + \item Return address + \item Register values + \end{itemize} + \end{itemize} + \vspace{12pt} + \alert{Push ordering} \ding{224} + \alert{see calling conventions} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Pushing an popping stack frames} + \begin{columns} + \begin{column}{0.166\textwidth} + \begin{drawstack}[scale=0.5] + \cell{algorithm} + \end{drawstack} + \end{column} + \begin{column}{0.166\textwidth} + \begin{drawstack}[scale=0.5] + \cell{algorithm} + \cell{sub} + \end{drawstack} + \end{column} + \begin{column}{0.166\textwidth} + \begin{drawstack}[scale=0.5] + \cell{algorithm} + \cell{sub} + \cell{add} + \end{drawstack} + \end{column} + \begin{column}{0.166\textwidth} + \begin{drawstack}[scale=0.5] + \cell{algorithm} + \cell{sub} + \end{drawstack} + \end{column} + \begin{column}{0.166\textwidth} + \begin{drawstack}[scale=0.5] + \cell{algorithm} + \end{drawstack} + \end{column} + \begin{column}{0.166\textwidth} + \begin{drawstack}[scale=0.5] + \cell{algorithm} + \cell{printf} + \end{drawstack} + \end{column} + \end{columns} + \vfill\centering\alert{Return to caller's context using housekeeping + information} +\end{frame} + +\begin{frame} + \frametitle{Buffer overflow on the stack continued \titlefloatright{(1/2)}} + \begin{columns} + \begin{column}{0.59\textwidth} + \lstinputlisting[style=CStyle]{sample/bo-stack.c} + \end{column} + \begin{column}{0.39\textwidth} + \begin{itemize} + \item Input 4: aaa...aaa \ding{224} \textcolor{darkRed}{segfault} + \item Why not segfault on heap? + \item Why segfault on stack? + \end{itemize} + \end{column} + \end{columns} +\end{frame} + + +\begin{frame} + \frametitle{Buffer overflow on the stack continued \titlefloatright{(2/2)}} + \begin{columns} + \begin{column}{0.49\textwidth} + %\lstinputlisting[style=CStyle,firstline=3,lastline=4,numbers=none]{% + % sample/bo-stack.c + %} + \lstinputlisting[style=CStyle]{sample/bo-stack.c} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \begin{drawstack}[scale=0.5] + \cell{RA} \cellcomL{\scriptsize{0x...\textcolor{darkRed}{32}}} + \cell{\texttt{verified}} + \cellcomL{\scriptsize{0x...\textcolor{darkRed}{28}}} + \padding{3}{% + \begin{tabular}{c} + \texttt{buf[7]} \\ + ... \\ + \texttt{buf[0]} \\ + \end{tabular} + } \cellcomL{\scriptsize{0x...\textcolor{darkRed}{20}}} + \end{drawstack} + \end{column} + \end{columns} + \pause + \centering\vfill\alert{% + Can we solve the problem by pushing \texttt{buf} first?% + } +\end{frame} + +\begin{frame} + \frametitle{Buffer overflow that leads to code execution} + \centering\includegraphics[height=0.6\textheight]{img/demo} +\end{frame} + +\begin{frame} + \frametitle{Summary of principles for stack smashing attacks} + \centering\includegraphics[height=0.6\textheight]{img/stack-smashing}\\ + \vfill + \alert{1.} Gain control of return address + \titlefloatright{\alert{2.} Point to some malicious code} +\end{frame} + +\begin{frame} + \frametitle{The hard part is jumping to malicious code \titlefloatright{`In the buffer'}} + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{enumerate} + \item Add asm instructions in the buffer + \begin{itemize} + \item Usually to open a shell + \item `Shell-code' + \end{itemize} + \item Jump to the buffer's shell-code + \end{enumerate} + \vspace{1cm}\centering + Exact address of buffer?\\ + \rding\\ + Use a nop-sled + \end{column} + \begin{column}{0.49\textwidth} + \centering + \begin{tikzpicture}[scale=0.5] + \stacktop{} + % cells + \cell{RA} \coordinate (ra) at (currentcell.east); + \cell{shell code} \coordinate (sc) at (currentcell.west); + \bcell{\texttt{nop}} \coordinate(nopl) at (currentcell.west); + \bcell{...} \coordinate(nopm) at (currentcell.east); + \bcell{\texttt{nop}} \coordinate(nopf) at (currentcell.west); + \cellptr{\texttt{\&buf[0]}} + % air plane + \coordinate(mid) at ($ (nopl) !.5! (nopf) $); + \node(plane) at ($ (mid) + (-2,0) $){% + \includegraphics[width=45pt]{img/air-plane} + }; + % edges + \path[draw=darkRed,-latex,rounded corners,dashed,thick] + (ra) -- ($ (ra) + (2,0) $) |- (nopm); + \stackbottom{} + \end{tikzpicture} + \end{column} + \end{columns} + \pause + \centering\vfill\alert{% + Note: nop-sled + asm may also be injected to the heap---`heap spraying' + } +\end{frame} + +\begin{frame} + \frametitle{The hard part is jumping to malicious code \titlefloatright{% + `Return-to-libc'}} + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{enumerate} + \item Point to an already loaded function + \begin{itemize} + \item \texttt{system()} + \end{itemize} + \item Prepare stack with arguments + \begin{itemize} + \item \texttt{"rm -rf /home/\$USER"} + \end{itemize} + \end{enumerate} + \vspace{12pt} + \ding{224}\texttt{system("rm -rf /home/\$USER")} + \end{column} + \pause + \begin{column}{0.49\textwidth} + \centering\includegraphics[height=0.45\textheight]{img/libc} + \end{column} + \end{columns} + \vfill + \lstinputlisting[style=CStyle,numbers=none]{sample/ldd} +\end{frame} + +\begin{frame} + \frametitle{Widely used stack smashing mitigation techniques} + \textbf{Idea:} try to prevent the two necessary stack smashing conditions from + meeting met + \vfill + \pause + \begin{itemize} + \item<2-> Address randomization \titlefloatright{Increases jump uncertainty} + \item<3-> Non-executable memory \titlefloatright{Stop if instruction pointer + gets here} + \item<4-> Stack canaries \titlefloatright{Stop if RA got tampered with} + \end{itemize} + \vfill + \lstinputlisting[style=CStyle,numbers=none]{sample/ldd2} +\end{frame} + +\begin{frame} + \frametitle{Canaries} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \vbox to .8\textheight{ + \vfill + \begin{quote} + `` [...] miners would bring a caged canary into new coal seams. Canaries + are especially sensitive to methane and carbon monoxide [...], as long + as the bird kept singing, the miners knew their air supply was safe.'' + \end{quote} + \vfill + \begin{quote} + ``\textbf{Short but meaningful}'' + \end{quote} + \vfill + } + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[height=0.8\textheight]{img/canary-bird}\\ + \centering\burl{https://www.wisegeek.com/what-does-it-mean-to-be-a-canary-in-a-coal-mine.htm} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Stack canaries \titlefloatright{Before overflow}} + \centering + \includegraphics[width=0.95\textwidth]{img/canary-before} + \vfill + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Terminator canaries + \item Random canaries + \item ... + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \textbf{Require:}\\ + CY must be valid to use RA + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Stack canaries \titlefloatright{After overflow}} + \centering + \includegraphics[width=0.8\textwidth]{img/canary-after} + \vfill + \textbf{Stop running---invalid canary value!} + \pause + \vfill + \vfill\centering\alert{Can anyone think of examples where the two canary + types fail?} + % == stack == + % - local variable which is a function pointer gets overwritten; when + % called the attacker's function is used instead + % - somehow extract random canary value from memory or rewrite it + % - guess canary, e.g., due to bad randomness + % == terminator == + % - you have a double buffer overflow vulnerability: first you overwrite as + % normal to hit RA, then subsequently you `repair' the predictable canary +\end{frame} + +\begin{frame} + \frametitle{Great mitigation techniques, but we realize that...} + \centering\Huge{% + it is still imperfect + \vfill + What else can we do? + } + \pause + \vfill + \normalsize + \begin{columns} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Avoid bugs in C/C++ code + \end{itemize} + \end{column} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Build and use tools that help catching bugs + \end{itemize} + \end{column} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Use memory safe programming languages + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Avoid bugs in C/C\texttt{++} code} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Sanitize all untrusted user input + \item Manually verify all bounds \alert{correctly} + \item Be aware of integer underflow/overflow + \item Use safe(r) functions and learn caveats + \begin{itemize} + \item \texttt{fgets} vs.\ \texttt{gets} + \item \texttt{strncpy} vs.\ \texttt{strcpy} + \item \texttt{man strncpy} \ding{224} null-termination? + \end{itemize} + \item \textbf{Adopt a secure coding standard} + \begin{itemize} + \item CERT C\footnotemark + \item MISRA C\footnotemark (embedded systems) + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \centering\includegraphics[height=0.6\textheight]{img/checklist} + \end{column} + \end{columns} + \footnotetext[6]{\burl{https://resources.sei.cmu.edu/downloads/secure-coding/assets/sei-cert-c-coding-standard-2016-v01.pdf}} + \footnotetext{\burl{https://www.misra.org.uk/Activities/MISRAC/tabid/160/Default.aspx}} +\end{frame} + + +\begin{frame} + \frametitle{Build and use tools that help catching bugs \titlefloatright{% + Static analysis% + \footnote{\burl{https://www.perforce.com/blog/qac/what-static-code-analysis}} + }} + \begin{columns} + \begin{column}{0.69\textwidth} + \begin{itemize} + \item Automated source code analysis \alert{before} runtime + \item Output warnings if errors are suspected + \item Assess compliance with coding standards + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \vbox to .7\textheight{% + \centering + \lstinputlisting[style=CStyle]{sample/static-analysis.c} + \texttt{\$ splint main.c} \\ + \ding{224} 3 non-gcc warnings + \vfill + \tiny{\alert{Details:}} \burl{https://www.splint.org/} + } + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Build and use tools that help catching bugs \titlefloatright{Dynamic + analysis}} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Analyze what program does at \alert{runtime} + \item Valgrind---look for memory errors + \item Fuzzing\footnotemark---what happens on funky input? + \begin{itemize} + \item<2-> Random and mutation-based + \item<3-> Structure-aware + \item<4-> Program-aware + \item<5-> Automated feedback loops + \item<6-> ... + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \vbox to .8\textheight{ + \vfill\centering + \includegraphics[width=\textwidth]{img/afl.jpg} + \burl{https://upload.wikimedia.org/wikipedia/commons/0/08/Rabbit_american_fuzzy_lop_buck_white.jpg} + \vfill + } + \end{column} + \end{columns} + \footnotetext{\tiny{Brief introduction and a few demos:} + \burl{https://www.youtube.com/watch?v=dMmsPwkSqOc}} +\end{frame} + +\begin{frame} + \frametitle{Is fuzzing worth the effort? \titlefloatright{American Fuzzer Lop + (AFL)}} + \centering + \includegraphics[width=0.8\textwidth]{img/afl}\\ + \burl{http://lcamtuf.coredump.cx/afl/} + \vfill\normalsize\alert{And around 120 more projects!} +\end{frame} + +\begin{frame} + \frametitle{Use memory-safe programming languages} + \begin{columns} + \begin{column}{0.59\textwidth} + \vbox to 0.5\textheight{% + \textbf{Intuition:} \texttt{x[y] = z} should stop normal program + execution if \texttt{x} is non-array or \texttt{y} is out-of-range, + and you should not operate on raw memory addresses\footnotemark + \vfill + \only<2->{ + \textbf{Challenges:} + \begin{itemize} + \item You need low-level access to hardware + \item You inherit a large \texttt{C}/\texttt{C++} project + \item Someone must implement the core correctly + \end{itemize} + } + } + \end{column} + \begin{column}{0.39\textwidth} + \begin{tikzpicture} + \node[draw=none](first) at (0,0) {% + \includegraphics[height=2cm]{img/memory-safe/go} + \includegraphics[height=2cm]{img/memory-safe/rust} + }; + \node[draw=none, below =0pt of first] (second) {% + \includegraphics[height=1cm]{img/memory-safe/python} + }; + \node[draw=none, below =0pt of second] (third) {% + \includegraphics[height=1.5cm]{img/memory-safe/java} + }; + \coordinate(mycord) at ($ (first.east) !.5! (third.east) $); + \node[draw=none](fourth) at ($ (mycord) !.5! (third) $) {% + \hspace{2cm}\huge{\texttt{C\#}} + }; + \end{tikzpicture} + \end{column} + \end{columns} + \vfill + \centering + \begin{description} + \item<3->[\alert{What about performance?}] \alert{Is it a valid concern?} + \end{description} + \footnotetext{\tiny{If you want a more precise intuition:} + \burl{http://www.pl-enthusiast.net/2014/07/21/memory-safety/} + } +\end{frame} + +%\begin{frame} +% \frametitle{Take a deeper dive into buffer overflow vulnerabilities and +% defenses} +% \vfill +% \begin{columns} +% \begin{column}{0.33\textwidth} +% \centering +% \includegraphics[width=\textwidth]{img/mit1} +% \burl{https://www.youtube.com/watch?v=GqmQg-cszw4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=1} +% \end{column} +% \begin{column}{0.33\textwidth} +% \centering +% \includegraphics[width=\textwidth]{img/mit2} +% \burl{https://www.youtube.com/watch?v=r4KjHEgg9Wg&index=2&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh} +% \end{column} +% \begin{column}{0.33\textwidth} +% \centering +% \includegraphics[width=\textwidth]{img/mit3} +% \burl{https://www.youtube.com/watch?v=xSQxaie_h1o&index=3&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh} +% \end{column} +% \end{columns} +% \vfill\centering\alert{Optional!} +%\end{frame} + +\begin{frame} + \frametitle{Summary} + \begin{columns} + \begin{column}{.59\textwidth} + \begin{itemize} + \item Weird machines + \item Over-read, over-write + \item Change program flow + \item Mitigation techniques + \item Tools and other options + \end{itemize} + \end{column} + \begin{column}{.49\textwidth} + \centering\includegraphics[width=\textwidth]{img/take-away} + \end{column} + \end{columns} + %\centering\includegraphics[height=0.8\textheight]{img/summary} +\end{frame} + +\begin{frame} + \frametitle{Assignment questions \titlefloatright{(1/3)}} + \alert{1.} Suppose that the code below is compiled as follows: + \texttt{gcc -Wall -Werror -std=c99 main.c}. Provide two \alert{integer + inputs} that will result in `unintended behaviour' and name what this + threat is called. Make assumptions if necessary. + % Assume int is 4 bytes. + % - Number 1: 1 + % - Number 2: 2147483647 // 2^31 - 1 + % => 1+2147483647 <= 10 + % (integer overflow) + \begin{columns} + \begin{column}{0.59\textwidth} + \lstinputlisting[style=CStyle]{sample/assignment-integer-overflow.c} + \end{column} + \begin{column}{0.39\textwidth} + \vbox to .65\textheight{ + \vfill + \alert{2.} Determine which compiler option could be used to ensure + that the program aborts if such unintended behaviour occurs. Does + this solution work for \texttt{unsigned int}s? Why (not)? \\ + % -ftrapv: abort if signed integer overflow. Does not work for + % unsigned since overflow is well-defined and in many cases intended. + \vfill + \alert{3.} What is the compliant way of adding two unsigned integers + according to CERT C standard? + % §5.1.1.2, page 133 (find link to CERT C pdf in the slides) + % unsigned int ui_b, ui_a, sum; + % if (UINT_MAX - ui_a < ui_b) { + % /* handle error condition */ + % } else { + % sum = ui_a + ui_b; + % } + \vfill + } + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Assignment questions \titlefloatright{(2/3)}} + \alert{4.} Suppose that the code below is compiled as follows: \texttt{gcc + -Wall -Werror -std=c99 -fno-stack-protector main.c}. Explain the steps + necessary to trigger the print statement. Make assumptions if necessary. + % Assume that secret is 4 bytes and on a higher address than buf. + % Exploit: python -c 'print "\xff"*12' | ./a.out + \begin{columns} + \begin{column}{0.59\textwidth} + \lstinputlisting[style=CStyle]{sample/assignment-buffer-overflow.c} + \end{column} + \begin{column}{0.39\textwidth} + \vbox to .65\textheight{ + \vfill + \alert{5.} How would you adapt your strategy if \texttt{SECRET} was set + to \texttt{0xff0a0dff}? Explain principles. + % If we try to enter this value gets() will stop since CRLF. Instead + % we would have to overwrite the return address so that the program + % jumps to gotcha(). + \vfill + \alert{6.} Which type of buffer overflow mitigation technique does the + new secret value remind you of? + % Terminator-based stack canary + \vfill + \alert{7.} Explain two other mitigation techniques that make it harder + to execute code in a buffer overflow. + % - Address randomization: every time program executes all addresses + % are changed based on a cryptographically secure PRNG + % - Non-executable memory: halt program if instruction pointer takes + % on a value that corresponds to memory that should not be executed + % + % In other words: both of these techniques try to make it hard for + % the attacker to specify a return address that does not cause a crash + } + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Assignment questions \titlefloatright{(3/3)}} + \vfill + \alert{8.} Attackers may use \texttt{nop}-sleds to increase the likelihood of + jumping to their shell-code. To defend against this a colleague of yours + suggested that all user input be filtered for repeated \texttt{nop} + instructions. How would you trivially bypass such a filtering mechanism? + % Use other dummy instructions that increment instruction pointer, e.g., + % add, sub, mul, and write results to dummy register (not important). + \vfill + \alert{9.} What is the difference between static and dynamic code analysis?\\ + % Static code analysis takes place _before_ a program is being executed. + % Conversely, dynamic code analysis examines what a program does at runtime. + \vfill + \alert{10.} Briefly explain the process of fuzzing a program: how does it work + and what is the goal? Name one fuzzer that found a buffer overflow + vulnerability in a TLS library. + % - How: supply lots and lots of funky input and see what happens; record + % errors % and examine in more detail later. + % - Goal: find untested cases that cause `unintended behaviour' + % - Example: American Fuzzy Lop (AFL) + \vfill + \alert{11.} Suppose that you are hired by a consultant company to work on a + brand new project. Explain the circumstances in which you would choose to + program in \texttt{C/C++}, and why you might choose a different programming + language in most other cases. + % C/C++: if low-level access to memory is _required_, i.e., there should + % be a very clear motivation why you must use C as opposed to Go,C#, ... + % Memory safe languages: would be chosen otherwise, since it is generally + % easier not to mess up the code. + \vfill +\end{frame} diff --git a/slides/2018-software-security/src/preamble.tex b/slides/2018-software-security/src/preamble.tex new file mode 100644 index 0000000..cd99ec4 --- /dev/null +++ b/slides/2018-software-security/src/preamble.tex @@ -0,0 +1,98 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{rotate} +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{graphicx} +\usepackage{color} +\usepackage{drawstack} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage{floatrow} +%\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +\lstdefinestyle{CStyle}{ + backgroundcolor=\color{lightGray!25}, + commentstyle=\color{darkGreen}, + keywordstyle=\color{darkBlue}, + numberstyle=\tiny\color{darkRed}, + stringstyle=\color{darkPurple}, + basicstyle=\footnotesize, + breakatwhitespace=false, + breaklines=false, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + language=C, + morekeywords={size_t}, +} + +%\setbeamertemplate{itemize item}[circle] +%\setbeamertemplate{itemize subitem}[default] +%\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\titlefloatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} + +\def\rding{\rotatebox[origin=c]{-90}{\ding{224}}} diff --git a/slides/2018-software-security/src/questions.tex b/slides/2018-software-security/src/questions.tex new file mode 100644 index 0000000..85cb2f3 --- /dev/null +++ b/slides/2018-software-security/src/questions.tex @@ -0,0 +1,17 @@ +\begin{frame} + \frametitle{Any questions?} \label{frm:que} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qleft} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qright} + \end{column} + \end{columns} + + \centering + \vspace{-1cm} + \includegraphics[width=0.20\textwidth]{img/ty} +\end{frame} diff --git a/slides/2018-software-security/src/titlepage.tex b/slides/2018-software-security/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2018-software-security/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2019-ctga/README b/slides/2019-ctga/README new file mode 100644 index 0000000..a3ded55 --- /dev/null +++ b/slides/2019-ctga/README @@ -0,0 +1,2 @@ +10m version of aggregation-based CT gossip at SWITS. The full 30m presentation +from the paper's conference no longer compile so this one will have to do. diff --git a/slides/2019-ctga/beamercolorthemergd.sty b/slides/2019-ctga/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2019-ctga/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2019-ctga/beamerfontthemergd.sty b/slides/2019-ctga/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2019-ctga/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2019-ctga/beamerinnerthemergd.sty b/slides/2019-ctga/beamerinnerthemergd.sty new file mode 100644 index 0000000..0d49176 --- /dev/null +++ b/slides/2019-ctga/beamerinnerthemergd.sty @@ -0,0 +1,43 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](Logo){\includegraphics[width=3cm]{img/logo}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add subtitle + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{subtitle}\insertsubtitle\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=12pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2019-ctga/beamerouterthemergd.sty b/slides/2019-ctga/beamerouterthemergd.sty new file mode 100644 index 0000000..ba757c6 --- /dev/null +++ b/slides/2019-ctga/beamerouterthemergd.sty @@ -0,0 +1,66 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add mail + \begin{beamercolorbox}[ + wd=0.22\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \texttt{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add author + \begin{beamercolorbox}[ + wd=0.73\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + %\insertauthor + \inserttitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2019-ctga/beamerthemergd.sty b/slides/2019-ctga/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2019-ctga/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2019-ctga/img/ct.png b/slides/2019-ctga/img/ct.png Binary files differnew file mode 100644 index 0000000..10267e7 --- /dev/null +++ b/slides/2019-ctga/img/ct.png diff --git a/slides/2019-ctga/img/design.pdf b/slides/2019-ctga/img/design.pdf Binary files differnew file mode 100644 index 0000000..3a9aba1 --- /dev/null +++ b/slides/2019-ctga/img/design.pdf diff --git a/slides/2019-ctga/img/logo.png b/slides/2019-ctga/img/logo.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2019-ctga/img/logo.png diff --git a/slides/2019-ctga/img/perf-netfpga.pdf b/slides/2019-ctga/img/perf-netfpga.pdf Binary files differnew file mode 100644 index 0000000..17ee58d --- /dev/null +++ b/slides/2019-ctga/img/perf-netfpga.pdf diff --git a/slides/2019-ctga/img/perf-xdp.pdf b/slides/2019-ctga/img/perf-xdp.pdf Binary files differnew file mode 100644 index 0000000..a4dae27 --- /dev/null +++ b/slides/2019-ctga/img/perf-xdp.pdf diff --git a/slides/2019-ctga/img/pl.pdf b/slides/2019-ctga/img/pl.pdf Binary files differnew file mode 100644 index 0000000..a03d97f --- /dev/null +++ b/slides/2019-ctga/img/pl.pdf diff --git a/slides/2019-ctga/img/qleft.pdf b/slides/2019-ctga/img/qleft.pdf Binary files differnew file mode 100644 index 0000000..f35a078 --- /dev/null +++ b/slides/2019-ctga/img/qleft.pdf diff --git a/slides/2019-ctga/img/qright.pdf b/slides/2019-ctga/img/qright.pdf Binary files differnew file mode 100644 index 0000000..da2e8e3 --- /dev/null +++ b/slides/2019-ctga/img/qright.pdf diff --git a/slides/2019-ctga/img/roadmap.pdf b/slides/2019-ctga/img/roadmap.pdf Binary files differnew file mode 100644 index 0000000..867fb20 --- /dev/null +++ b/slides/2019-ctga/img/roadmap.pdf diff --git a/slides/2019-ctga/img/take-away.pdf b/slides/2019-ctga/img/take-away.pdf new file mode 100644 index 0000000..7d3b190 --- /dev/null +++ b/slides/2019-ctga/img/take-away.pdf @@ -0,0 +1,68 @@ +%PDF-1.4 +%µí®û +3 0 obj +<< /Length 4 0 R + /Filter /FlateDecode +>> +stream +xœmŒAÃ0"„‚
ŽýŒ>¡—¦‡äæÿRŸ#$–E³{’rÎã×Gy»àCš\ÅÆ`×Â;´ã»¨(dçUt€Ðè0fµ„-ÉÒTØ…¬ÕA7ïè
TxÂ1f¯Õš;"£*¤4{È~éM7ä‘$ +endstream +endobj +4 0 obj + 118 +endobj +2 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +5 0 obj +<< /Type /Page + /Parent 1 0 R + /MediaBox [ 0 0 12.8 12.8 ] + /Contents 3 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 2 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 5 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Creator (cairo 1.14.0 (http://cairographics.org)) + /Producer (cairo 1.14.0 (http://cairographics.org)) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000520 00000 n +0000000232 00000 n +0000000015 00000 n +0000000210 00000 n +0000000304 00000 n +0000000585 00000 n +0000000712 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +764 +%%EOF diff --git a/slides/2019-ctga/img/ty.pdf b/slides/2019-ctga/img/ty.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2019-ctga/img/ty.pdf diff --git a/slides/2019-ctga/img/wcov-goo.pdf b/slides/2019-ctga/img/wcov-goo.pdf Binary files differnew file mode 100644 index 0000000..73f77b6 --- /dev/null +++ b/slides/2019-ctga/img/wcov-goo.pdf diff --git a/slides/2019-ctga/img/wcov-nor.pdf b/slides/2019-ctga/img/wcov-nor.pdf Binary files differnew file mode 100644 index 0000000..e7d216d --- /dev/null +++ b/slides/2019-ctga/img/wcov-nor.pdf diff --git a/slides/2019-ctga/main.tex b/slides/2019-ctga/main.tex new file mode 100644 index 0000000..12a7fb2 --- /dev/null +++ b/slides/2019-ctga/main.tex @@ -0,0 +1,28 @@ +\pdfminorversion=4 +\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + Aggregating Certificate Transparency Gossip Using Programmable Packet + Processors +} +%\subtitle{% +%} +\author{% + \textbf{Rasmus Dahlberg}, + Tobias Pulls, + Jonathan Vestin,\\ + Toke H{\o}iland-J{\o}rgensen, and + Andreas Kassler +} +\institute{% + Karlstad University +} +\date{% + \today +} +\begin{document} + \input{src/body} +\end{document} diff --git a/slides/2019-ctga/makefile b/slides/2019-ctga/makefile new file mode 100644 index 0000000..b42d0ec --- /dev/null +++ b/slides/2019-ctga/makefile @@ -0,0 +1,25 @@ +.PHONY: clean tidy open + +MAIN = main + +TEX_SRC = src/$(wildcard:.tex) +TEX_IMG = \ + img/$(wildcard:.jpg) \ + img/$(wildcard:.tex) \ + img/$(wildcard:.pdf) \ + img/$(wildcard:.png) +TEX = \ + $(TEX_SRC) $(TEX_IMG) $(MAIN).tex + +$(MAIN).pdf: $(TEX) + pdflatex $(MAIN) + @pdflatex $(MAIN) + +open: $(MAIN).pdf + okular $(MAIN).pdf & + +tidy: + rm -rf *.nav *.out *.log *.aux *.toc *.snm + +clean: + rm -rf *.nav *.out *.log *.aux *.toc *.snm $(MAIN).pdf diff --git a/slides/2019-ctga/slides.pdf b/slides/2019-ctga/slides.pdf Binary files differnew file mode 100644 index 0000000..b7e43d2 --- /dev/null +++ b/slides/2019-ctga/slides.pdf diff --git a/slides/2019-ctga/src/background.tex b/slides/2019-ctga/src/background.tex new file mode 100644 index 0000000..49d5e94 --- /dev/null +++ b/slides/2019-ctga/src/background.tex @@ -0,0 +1,21 @@ +\begin{frame} + \frametitle{Certificate Transparency---in short CT} + \centering + \begin{columns} + \begin{column}{0.45\textwidth} + \begin{itemize} + \item Goal is to detect mis-issuance + \item Publicly log all certificates + \item Clients require proof of logging + \end{itemize} + \end{column} + \begin{column}{0.55\textwidth} + \centering + \includegraphics[width=0.8\textwidth]{img/ct} + \scriptsize{\url{https://www.certificate-transparency.org/what-is-ct}} + \end{column} + \end{columns} + \pause + \vfill + \alert{How do you know if you see the same log?} +\end{frame} diff --git a/slides/2019-ctga/src/body.tex b/slides/2019-ctga/src/body.tex new file mode 100644 index 0000000..10c9342 --- /dev/null +++ b/slides/2019-ctga/src/body.tex @@ -0,0 +1,6 @@ +\input{src/titlepage} +%\input{src/outline} +\input{src/background} +\input{src/ctga} +\input{src/take-away} +\input{src/questions} diff --git a/slides/2019-ctga/src/ctga.tex b/slides/2019-ctga/src/ctga.tex new file mode 100644 index 0000000..326b009 --- /dev/null +++ b/slides/2019-ctga/src/ctga.tex @@ -0,0 +1,32 @@ +\begin{frame} + \frametitle{Overview---in-line aggregation and off-path verification} + \centering + \includegraphics[width=\textwidth]{img/design} + \pause + Security notion---aggregation indistinguishability + \pause\\ + Intended attacker---distant + \pause\\ + (Multi)path fragmentation + \pause\\ + Implementation? XDP, P4, ... +\end{frame} + +\begin{frame} + \frametitle{Performance and aggregation indistinguishability---XDP} + \centering + \includegraphics[height=0.8\textheight]{img/perf-xdp} +\end{frame} + +\begin{frame} + \frametitle{Performance and aggregation indistinguishability---P4} + \centering + \includegraphics[height=0.8\textheight]{img/perf-netfpga} +\end{frame} + +\begin{frame} + \frametitle{Network measurements---split-view protection against Google and NORDUnet} + \centering + \includegraphics[width=0.7\textwidth]{img/wcov-goo} + \includegraphics[width=0.7\textwidth]{img/wcov-nor} +\end{frame} diff --git a/slides/2019-ctga/src/outline.tex b/slides/2019-ctga/src/outline.tex new file mode 100644 index 0000000..55b4f9f --- /dev/null +++ b/slides/2019-ctga/src/outline.tex @@ -0,0 +1,17 @@ +\begin{frame} + \frametitle{Outline} + \begin{columns} + \begin{column}{0.39\textwidth} + \centering + \begin{enumerate} + \item Motivation + \item Overview + \item Evaluation + \item Take away + \end{enumerate} + \end{column} + \begin{column}{0.39\textwidth} + \includegraphics[width=0.6\textwidth]{img/roadmap} + \end{column} + \end{columns} +\end{frame} diff --git a/slides/2019-ctga/src/preamble.tex b/slides/2019-ctga/src/preamble.tex new file mode 100644 index 0000000..6905b0f --- /dev/null +++ b/slides/2019-ctga/src/preamble.tex @@ -0,0 +1,62 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{pifont} +\usepackage{graphicx} +\usepackage{color} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + shapes.misc,% + positioning,% + arrows,% + snakes,% + calc,% + shadows,% + shapes.arrows,% + fit,% + backgrounds,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +%\setbeamertemplate{itemize item}[circle] +%\setbeamertemplate{itemize subitem}[default] +%\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} diff --git a/slides/2019-ctga/src/questions.tex b/slides/2019-ctga/src/questions.tex new file mode 100644 index 0000000..85cb2f3 --- /dev/null +++ b/slides/2019-ctga/src/questions.tex @@ -0,0 +1,17 @@ +\begin{frame} + \frametitle{Any questions?} \label{frm:que} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qleft} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qright} + \end{column} + \end{columns} + + \centering + \vspace{-1cm} + \includegraphics[width=0.20\textwidth]{img/ty} +\end{frame} diff --git a/slides/2019-ctga/src/take-away.tex b/slides/2019-ctga/src/take-away.tex new file mode 100644 index 0000000..1368c75 --- /dev/null +++ b/slides/2019-ctga/src/take-away.tex @@ -0,0 +1,15 @@ +\begin{frame} + \frametitle{Take away} + \begin{columns} + \begin{column}{0.69\textwidth} + \begin{itemize} + \item Program the network to gossip `as a service' + \item Easily deployed, not much opt-in needed + \end{itemize} + \end{column} + \begin{column}{0.29\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/take-away} + \end{column} + \end{columns} +\end{frame} diff --git a/slides/2019-ctga/src/titlepage.tex b/slides/2019-ctga/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2019-ctga/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2019-it-intro-computer-structure/.gitignore b/slides/2019-it-intro-computer-structure/.gitignore new file mode 100644 index 0000000..4a7f033 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/.gitignore @@ -0,0 +1,12 @@ +*.aux +*.fdb_latexmk +*.fls +*.fls +*.log +*.nav +*.out +main.pdf +*.snm +*.toc +*.nav +*.snm diff --git a/slides/2019-it-intro-computer-structure/README b/slides/2019-it-intro-computer-structure/README new file mode 100644 index 0000000..c562a38 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/README @@ -0,0 +1 @@ +Lecture on computer structure in an introduction to IT course at kau. diff --git a/slides/2019-it-intro-computer-structure/beamercolorthemergd.sty b/slides/2019-it-intro-computer-structure/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2019-it-intro-computer-structure/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2019-it-intro-computer-structure/beamerfontthemergd.sty b/slides/2019-it-intro-computer-structure/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2019-it-intro-computer-structure/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2019-it-intro-computer-structure/beamerinnerthemergd.sty b/slides/2019-it-intro-computer-structure/beamerinnerthemergd.sty new file mode 100644 index 0000000..0d49176 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/beamerinnerthemergd.sty @@ -0,0 +1,43 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](Logo){\includegraphics[width=3cm]{img/logo}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add subtitle + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{subtitle}\insertsubtitle\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=12pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2019-it-intro-computer-structure/beamerouterthemergd.sty b/slides/2019-it-intro-computer-structure/beamerouterthemergd.sty new file mode 100644 index 0000000..ba757c6 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/beamerouterthemergd.sty @@ -0,0 +1,66 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add mail + \begin{beamercolorbox}[ + wd=0.22\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \texttt{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add author + \begin{beamercolorbox}[ + wd=0.73\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + %\insertauthor + \inserttitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2019-it-intro-computer-structure/beamerthemergd.sty b/slides/2019-it-intro-computer-structure/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2019-it-intro-computer-structure/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2019-it-intro-computer-structure/handout.pdf b/slides/2019-it-intro-computer-structure/handout.pdf Binary files differnew file mode 100644 index 0000000..ec23377 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/handout.pdf diff --git a/slides/2019-it-intro-computer-structure/img/ascii.png b/slides/2019-it-intro-computer-structure/img/ascii.png Binary files differnew file mode 100644 index 0000000..e989951 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/ascii.png diff --git a/slides/2019-it-intro-computer-structure/img/audio-card.jpg b/slides/2019-it-intro-computer-structure/img/audio-card.jpg Binary files differnew file mode 100644 index 0000000..666d859 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/audio-card.jpg diff --git a/slides/2019-it-intro-computer-structure/img/binary-joke.jpg b/slides/2019-it-intro-computer-structure/img/binary-joke.jpg Binary files differnew file mode 100644 index 0000000..5e636ab --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/binary-joke.jpg diff --git a/slides/2019-it-intro-computer-structure/img/binary.jpg b/slides/2019-it-intro-computer-structure/img/binary.jpg Binary files differnew file mode 100644 index 0000000..0a1b06c --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/binary.jpg diff --git a/slides/2019-it-intro-computer-structure/img/build-pc.jpg b/slides/2019-it-intro-computer-structure/img/build-pc.jpg Binary files differnew file mode 100644 index 0000000..2c60e4f --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/build-pc.jpg diff --git a/slides/2019-it-intro-computer-structure/img/case1.png b/slides/2019-it-intro-computer-structure/img/case1.png Binary files differnew file mode 100644 index 0000000..82aa630 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/case1.png diff --git a/slides/2019-it-intro-computer-structure/img/case2.png b/slides/2019-it-intro-computer-structure/img/case2.png Binary files differnew file mode 100644 index 0000000..7f97fe4 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/case2.png diff --git a/slides/2019-it-intro-computer-structure/img/computers-everywhere.jpg b/slides/2019-it-intro-computer-structure/img/computers-everywhere.jpg Binary files differnew file mode 100644 index 0000000..79ddcee --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/computers-everywhere.jpg diff --git a/slides/2019-it-intro-computer-structure/img/cpu.png b/slides/2019-it-intro-computer-structure/img/cpu.png Binary files differnew file mode 100644 index 0000000..1e7340f --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/cpu.png diff --git a/slides/2019-it-intro-computer-structure/img/dp.jpeg b/slides/2019-it-intro-computer-structure/img/dp.jpeg Binary files differnew file mode 100644 index 0000000..b6087a7 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/dp.jpeg diff --git a/slides/2019-it-intro-computer-structure/img/graphics-card.jpg b/slides/2019-it-intro-computer-structure/img/graphics-card.jpg Binary files differnew file mode 100644 index 0000000..fc0da5e --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/graphics-card.jpg diff --git a/slides/2019-it-intro-computer-structure/img/group.pdf b/slides/2019-it-intro-computer-structure/img/group.pdf Binary files differnew file mode 100644 index 0000000..515c974 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/group.pdf diff --git a/slides/2019-it-intro-computer-structure/img/hdd.jpg b/slides/2019-it-intro-computer-structure/img/hdd.jpg Binary files differnew file mode 100644 index 0000000..3b59ac9 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/hdd.jpg diff --git a/slides/2019-it-intro-computer-structure/img/hdmi.jpg b/slides/2019-it-intro-computer-structure/img/hdmi.jpg Binary files differnew file mode 100644 index 0000000..8ef0ae9 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/hdmi.jpg diff --git a/slides/2019-it-intro-computer-structure/img/iphone.png b/slides/2019-it-intro-computer-structure/img/iphone.png Binary files differnew file mode 100644 index 0000000..70b82fd --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/iphone.png diff --git a/slides/2019-it-intro-computer-structure/img/light-bulb.pdf b/slides/2019-it-intro-computer-structure/img/light-bulb.pdf Binary files differnew file mode 100644 index 0000000..1801ee0 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/light-bulb.pdf diff --git a/slides/2019-it-intro-computer-structure/img/light-bulb.svg b/slides/2019-it-intro-computer-structure/img/light-bulb.svg new file mode 100644 index 0000000..e5d8813 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/light-bulb.svg @@ -0,0 +1,619 @@ +<?xml version="1.0" encoding="utf-8"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 1529.988 1712.543" enable-background="new 0 0 1529.988 1712.543" xml:space="preserve">
+<g>
+ <path stroke="#000000" d="M862.003,56.256c4.786,12.509,8.45,25.423,12.794,38.098c4.869,14.267,9.149,28.756,14.369,42.894
+ c33.432-0.617,66.955,2.292,99.595,9.665c17.498-25.046,34.573-50.423,52.089-75.479c1.197,31.434,2.495,62.859,3.774,94.293
+ c9.674,4.308,19.155,9.039,28.737,13.549c25.801-25.405,50.92-51.519,76.795-76.841c-2.191,24.475-5.099,48.886-7.502,73.334
+ c-1.16,12.362-2.973,24.678-3.618,37.086c30.348,14.737,59.039,33.266,83.726,56.351c1.141,1.445,2.946,0.681,4.354,0.11
+ c34.886-15.133,69.799-30.21,104.695-45.306c3.921-1.684,7.769-3.562,11.856-4.86c-2.973,5.79-6.848,11.036-10.245,16.55
+ c-12.344,19.265-24.687,38.531-37.04,57.787c-7.879,12.546-16.2,24.816-23.813,37.509c4.52,6.738,7.916,14.24,13.706,20.076
+ c31.121-1.786,62.178-4.648,93.29-6.489c-15.538,23.582-31.922,46.622-47.616,70.094c-1.012,1.141-0.497,2.623,0.184,3.783
+ c9.932,17.415,18.814,35.503,25.745,54.335c0.451,1.454,2.448,0.93,3.627,1.16c27.66,0.009,55.32-0.046,82.981,0.028
+ c-20.839,15.252-42.056,30.007-62.831,45.361c0.46,0.239,1.371,0.7,1.832,0.93c-3.912-0.249-7.207,2.255-9.711,4.989
+ c1.178,7.898,3.222,15.676,4.335,23.61c1.832,11.082,2.964,22.257,3.958,33.432c10.41,3.682,21.198,6.222,31.766,9.444
+ c17.866,5.32,35.944,10.015,53.682,15.758c-21.778,7.603-43.547,15.234-65.326,22.855c-6.278,2.384-12.804,4.142-18.934,6.867
+ c-1.657,2.826-0.755,6.508-1.151,9.683c26.151,14.626,52.66,28.608,78.949,42.986c6.149,3.525,12.656,6.434,18.557,10.392
+ c-36.487,4.124-73.003,8.026-109.481,12.307c-6.149,20.775-13.807,41.09-22.763,60.825c-3.958,9.103-8.597,17.885-12.61,26.951
+ c18.216,20.112,36.782,39.921,55.173,59.895c-22.285-4.068-44.542-8.303-66.817-12.408c-4.529-0.801-9.011-1.979-13.623-2.135
+ c-5.063,10.236-10.558,20.25-16.081,30.247c-2.255,4.372-5.247,8.358-7.134,12.914c1.639,4.593,5.081,8.303,7.493,12.518
+ c19.615,30.145,36.782,61.948,50.092,95.398c15.225,38.098,27.117,77.55,35.171,117.783c7.438,38.421,11.754,78.111,5.744,117.047
+ c-4.63,30.201-17.875,58.781-36.948,82.557c-13.365,16.762-29.124,31.443-45.554,45.149c5.44,7.023,11.543,13.706,15.206,21.916
+ c4.105,8.376,4.391,18.188,2.209,27.154c-3.019,12.178-9.361,23.196-16.108,33.662c-10.429,15.676-20.978,31.278-30.983,47.229
+ c-9.895,15.639-18.916,31.821-29.188,47.22c-8.754,12.969-18.179,26.049-31.222,35.052c-11.285,7.87-24.963,11.23-38.411,12.979
+ c-10.273-0.469-20.803-1.832-30.118-6.48c-9.463-4.658-18.179-11.221-24.393-19.818c-3.875-5.468-6.103-11.929-7.198-18.492
+ c-0.442-1.776-0.405-4.418-2.78-4.621c-8.192-2.145-16.053-5.385-23.316-9.739c-3.212,8.247-6.397,16.808-12.528,23.417
+ c-13.172,15.151-33.634,21.042-52.854,23.647c-5.79,13.623-11.423,27.504-20.167,39.562c-8.8,12.362-20.628,22.607-34.306,29.216
+ c-16.624,8.293-35.162,11.957-53.571,13.292c-21.649,0.847-43.428,1.335-64.985-1.206c-2.402-0.249-4.796-0.423-7.18-0.608
+ c-17.342-2.053-34.591-5.661-51.086-11.441c-14.645-5.366-28.848-13.062-39.369-24.807c-7.934-8.744-13.338-19.56-16.743-30.808
+ c-1.749-5.366-2.071-11.092-3.848-16.421c-2.117-2.706-5.495-3.967-8.247-5.863c-14.7-9.352-29.593-19.376-39.875-33.726
+ c-9.766-13.641-13.835-30.532-14.396-47.091c-1.068-6.839,0.377-13.927-1.749-20.6c-0.856-3.148-1.638-6.314-2.099-9.527
+ c-2.863-21.456-1.436-43.189,0.488-64.654c1.381-14.7,3.268-29.345,5.044-43.999c0.69-6.36,0.534-12.767,0.396-19.137
+ c1.049-12.822-0.249-25.727-1.141-38.522c-0.525-3.452-0.654-6.94-0.506-10.42c0.166-2.679,0.028-5.357-0.479-7.981
+ c-1.924-18.778-3.59-37.601-6.756-56.232c-4.151-24.844-9.444-49.577-17.093-73.583c-34.177,14.939-68.308,30.081-103.452,42.618
+ c-36.469,13.034-73.951,23.822-112.39,29.05c-23.555,2.991-47.671,3.562-71.033-1.151c-27.577-5.385-53.682-19.514-71.889-41.108
+ c-19.652-23.196-31.084-51.988-39.866-80.753c-6.517-21.291-11.027-43.115-15.445-64.912c-4.28-12.96-7.575-26.233-9.674-39.718
+ c-1.353-9.987-4.409-19.624-6.25-29.51c-3.627-17.811-6.011-35.843-7.953-53.912c-7.023-1.372-14.102-2.347-21.152-3.489
+ c-2.688-0.193-4.271-2.568-6.296-4.004c-5.007-3.894-9.499-8.56-12.537-14.166c-5.357-9.711-7.87-20.655-10.19-31.406
+ c-0.534-3.857-4.925-4.832-7.474-7.078c-13.531-10.484-28.203-20.858-36.285-36.432c-9.766-19.45-19.974-38.678-28.884-58.542
+ c-9.766-22.174-19.891-44.367-25.966-67.903c-3.599-13.964-7.658-28.498-5.081-42.995c2.034-7.309,5.164-14.543,10.365-20.186
+ c5.007-5.458,10.714-10.254,16.771-14.497c6.931-5.118,15.666-7.309,24.19-7.493c4.731-0.138,9.49-1.261,14.203-0.285
+ c2.54,0.469,4.842,1.703,7.143,2.826c2.715-4.796,5.578-9.785,10.236-12.96c9.14-6.719,20.95-7.373,31.867-7.87
+ c4.777,0.055,9.555-0.405,14.23-1.381c3.084-3.001,5.633-6.591,9.297-8.965c14.369-9.84,32.898-11.69,49.742-8.91
+ c-2.255-19.532-5.173-39.074-5.007-58.8c-0.12-13.31,1.003-26.648,3.636-39.7c1.961-8.929,3.019-18.096,6.278-26.684
+ c2.715-7.953,7.493-14.921,12.141-21.843c3.654-5.21,8.441-9.978,14.58-12.086c4.897-1.657,10.318-0.608,14.801,1.767
+ c4.602,2.439,9.527,4.317,13.77,7.391c8.606,6.13,15.409,14.451,20.591,23.601c9.748,13.494,15.565,29.372,18.989,45.554
+ c-0.037,1.556,1.353,2.135,2.725,1.961c16.881,0.037,33.763,0,50.654,0.009c5.164-0.046,10.346,0.23,15.51-0.295
+ c10.153-35.401,23.417-70.02,41.311-102.255c0.847-1.371,1.399-2.973,0.018-4.216c-18.253-23.159-36.846-46.06-55.026-69.293
+ c28.341,7.879,56.535,16.292,84.831,24.319c1.408,0.709,2.789,0.156,3.7-1.031c10.659-11.764,20.352-24.531,32.732-34.6
+ c11.018-10.226,22.616-19.827,34.831-28.599c1.003-1.012,3.323-2.126,2.218-3.838c-14.589-26.915-29.676-53.571-44.164-80.532
+ c31.084,16.329,61.745,33.505,92.747,50.009c1.97,1.243,4.022-0.203,5.799-1.077c16.145-9.002,32.741-17.148,49.383-25.184
+ c11.294-5.32,22.736-10.365,33.735-16.302c-1.648-28.323-4.151-56.591-5.799-84.904c12.841,13.301,25.147,27.117,37.758,40.639
+ c6.94,7.226,13.365,14.994,20.582,21.916c3.544-0.12,6.766-1.859,10.162-2.725c26.583-7.622,53.894-12.574,81.379-15.427
+ C843.602,112.543,852.402,84.257,862.003,56.256 M862.049,65.249c-8.211,23.987-15.703,48.242-23.997,72.202
+ c-0.203,0.966-0.387,1.933-0.543,2.899c15.943-1.611,31.959-2.679,47.984-2.899c0.092-0.506,0.285-1.51,0.387-2.007l-0.709,0.083
+ c-2.034-6.775-4.271-13.494-6.508-20.214C873.039,98.653,867.875,81.836,862.049,65.249 M1024.852,100.2
+ c-10.825,15.961-22.018,31.683-32.622,47.8c16.707,4.197,33.063,9.757,48.941,16.421c-0.727-27.706-2.163-55.412-3.194-83.119
+ C1033.413,87.469,1029.252,93.913,1024.852,100.2 M687.831,104.82c1.859,24.825,3.378,49.678,5.422,74.494
+ c14.967-7.088,30.09-13.973,45.932-18.897C722.211,141.75,705.118,123.184,687.831,104.82 M1113.42,143.664
+ c-12.307,12.491-24.797,24.797-36.994,37.39c10.585,5.477,20.858,11.515,31.213,17.397c9.306,4.188,18.741,8.073,27.899,12.592
+ c3.912-33.349,7.042-66.799,10.677-100.193C1135.079,121.573,1124.383,132.757,1113.42,143.664 M859.361,161.227
+ c-31.986,1.85-63.687,7.796-94.275,17.314c-35.843,11.156-71.502,23.352-105.366,39.691
+ c-35.687,16.992-69.901,37.426-100.58,62.417c-24.079,19.717-45.674,42.489-63.918,67.71c-9.453,12.933-17.811,26.62-25.764,40.51
+ c-9.72,17.323-18.658,35.171-25.184,53.958c-7.198,20.665-13.485,41.651-19.155,62.785c-3.424,20.094-5.643,40.39-8.036,60.631
+ c-2.927,27.356-5.017,54.842-4.74,82.373c0.304,47.073,7.769,94.919,28.185,137.721c19.661,40.943,48.131,76.813,77.642,111.036
+ c13.2,14.728,26.013,29.805,39.166,44.578c22.68,25.69,45.37,51.528,64.672,79.906c21.033,30.827,36.975,65.05,47.423,100.865
+ c12.399,41.587,17.572,84.849,22.036,127.881c0.663,4.869,0.515,9.849,1.776,14.635c0.396,1.832,1.988,2.992,3.212,4.299
+ c18.363,17.682,37.316,35.042,58.993,48.629c16.587,10.438,34.739,18.4,53.7,23.38c22.229,5.965,45.278,8.33,68.244,8.68
+ c28.047-0.23,56.13-3.71,83.183-11.239c36.902-10.079,71.87-25.948,106.204-42.581c1.537-0.488,1.786-2.025,1.85-3.406
+ c3.406-49.788,6.535-99.65,12.795-149.19c3.305-23.96,7.971-47.938,17.001-70.462c5.965-15.16,14.286-29.363,24.531-42.029
+ c19.974-24.65,45.526-43.87,71.005-62.436c6.149-5.201,10.935-11.791,16.412-17.673c6.876-7.879,13.779-15.768,19.919-24.245
+ c20.922-28.958,40.519-58.892,58.468-89.783c20.517-35.576,38.687-72.634,52.071-111.506
+ c13.411-38.918,21.926-79.924,21.106-121.226c-0.828-25.782-5.256-51.381-12.426-76.141c-10.493-36.423-26.371-71.042-44.21-104.4
+ c-18.005-33.422-38.218-65.584-58.818-97.45c-2.881-4.658-6.848-8.478-10.328-12.656c-5.771-6.517-11.589-12.969-17.342-19.496
+ c-1.731-1.997-3.848-3.562-6.048-4.971c-51.427-34.159-103.489-68.096-160.337-92.645
+ c-48.518-21.189-100.847-34.334-153.875-35.723C885.502,159.69,872.413,160.951,859.361,161.227 M516.283,181.532
+ c13.107,24.199,26.39,48.325,39.847,72.331c13.927-9.895,28.535-18.759,43.281-27.356
+ C571.723,211.484,544.099,196.324,516.283,181.532 M1226.804,273.073c3.268,2.688,6.038,5.891,8.791,9.094
+ c13.108,13.982,24.531,29.473,34.821,45.619c1.878-2.577,3.59-5.274,5.311-7.971c20.03-31.351,40.225-62.601,60.18-94.008
+ C1299.503,241.473,1263.07,257.094,1226.804,273.073 M402.89,303.789c16.366,20.711,32.741,41.412,49.383,61.892
+ c7.934-13.973,17.121-27.182,26.804-39.994C453.718,318.278,428.35,310.849,402.89,303.789 M1288.669,354.388
+ c14.58,18.741,28.194,38.227,40.372,58.625c14.865-21.521,29.63-43.124,44.293-64.774
+ C1345.103,350.089,1316.881,352.188,1288.669,354.388 M256.83,416.519c-2.292,2.651-2.651,6.241-3.516,9.499
+ c-5.136,21.06-10.208,42.443-9.693,64.267c0.497,20.278,2.458,40.491,3.765,60.723c-0.156,2.135,1.777,3.36,3.01,4.786
+ c4.28,4.317,7.575,9.591,9.389,15.409c2.55,7.907,4.142,16.081,6.241,24.116c7.962,2.126,15.427,5.679,22.616,9.637
+ c10.18,4.86,20.121,10.843,27.467,19.551c4.667,5.265,7.934,11.543,11.174,17.737c3.59-16.55,6.673-33.238,8.643-50.074
+ c2.752-24.328,3.277-48.886,2.117-73.334c-0.838-18.446-3.663-36.764-7.769-54.75c-1.491-4.731-3.728-9.186-5.928-13.623
+ c-7.437-14.396-16.274-28.774-29.602-38.448c-6.167-4.354-13.466-8.183-21.235-7.529
+ C266.264,405.271,260.962,411.015,256.83,416.519 M339.948,476.764c2.789,13.522,4.4,27.264,5.532,41.016
+ c15.169,10.816,30.155,21.926,45.499,32.493c3.94-24.761,9.223-49.3,15.998-73.435
+ C384.637,476.645,362.288,476.783,339.948,476.764 M1359.573,476.829c4.98,14.764,9.536,29.685,13.209,44.836
+ c8.883-5.688,17.213-12.178,25.856-18.216c12.261-8.947,24.77-17.553,36.892-26.675
+ C1410.208,476.764,1384.885,476.654,1359.573,476.829 M345.95,521.941c0.341,10.006,1.077,20.002,0.939,30.017
+ c0.35,26.141-2.614,52.228-7.465,77.89c-1.187,6.047-2.154,12.159-4.004,18.05c-0.856,2.31-0.644,4.786-0.442,7.198
+ c14.985-6.204,29.759-12.896,44.698-19.183c1.316-0.709,2.992-1.105,3.875-2.384c0.58-25.976,2.614-51.942,6.526-77.651
+ c0.893-2.688-2.145-3.894-3.802-5.284C372.745,541.161,359.637,531.127,345.95,521.941 M198.996,566.667
+ c-8.146,3.691-13.918,11.046-18.115,18.704c-2.568,20.582-4.225,41.679-0.221,62.196c3.479,18.345,11.018,35.558,18.299,52.642
+ c0.672,2.402,3.663,2.283,5.633,2.89c7.723,1.629,14.571-3.369,20.674-7.364c-5.265-3.802-10.733-7.401-15.317-12.031
+ c-8.155-8.036-14.433-18.299-16.366-29.685c-2.54-14.497-1.215-29.63,3.258-43.621c2.633-7.907,7.115-16.476,15.602-19.183
+ c14.792-3.581,30.127-1.003,44.799,1.961c-3.194-7.382-3.608-15.731-7.695-22.754c-1.408-2.209-2.329-5.468-5.376-5.771
+ C229.418,561.19,213.061,559.975,198.996,566.667 M149.024,583.843c-4.225,1.049-8.579,2.706-11.644,5.909
+ c-1.961,3.397-3.222,7.152-4.685,10.779c-4.225,10.917-4.575,22.754-5.145,34.297c-0.23,4.271,0.423,8.505,0.69,12.758
+ c1.123,13.466,2.301,26.961,4.805,40.252c1.344,6.729,2.936,13.549,6.268,19.615c2.237,4.041,5.615,7.787,10.171,9.149
+ c5.311,1.611,10.963,0.028,15.832-2.255c9.011-4.4,16.872-10.733,24.696-16.909c-2.734-6.001-5.449-12.021-7.787-18.188
+ c-5.274-15.077-10.53-30.357-12.077-46.346c-1.316-11.524-0.258-23.168,1.85-34.527c0.801-5.827,1.657-11.662,3.406-17.286
+ C166.559,581.293,157.676,581.901,149.024,583.843 M1382.29,586.07c1.224,15.805,1.123,31.692,0.598,47.533
+ c18.64-6.213,37.104-12.933,55.67-19.357c6.094-2.264,12.399-3.995,18.317-6.701C1432.032,600.31,1407.179,593.112,1382.29,586.07
+ M88.218,602.151c-4.207,2.918-8.551,5.633-12.813,8.477c-4.216,3.746-7.99,7.99-11.782,12.169
+ c-2.752,4.05-2.043,9.205-1.951,13.835c0,17.158,3.01,34.435,9.831,50.249c3.397,7.778,6.305,15.777,10.116,23.371
+ c8.542-0.654,17.332-1.767,25.101-5.615c7.833-3.894,11.718-12.334,14.562-20.131c-2.007-27.936-4.63-55.873-6.94-83.8
+ C105.725,599.261,96.382,598.451,88.218,602.151 M219.053,601.755c-6.904,1.215-12.813,6.351-15.077,12.979
+ c-3.958,11.165-2.761,23.288-2.071,34.886c-0.009,5.081,3.314,9.269,5.744,13.476c4.925,8.671,10.346,17.986,19.542,22.699
+ c9.361,5.035,19.127,9.278,28.94,13.356c2.458,1.003,5.827,1.961,5.983,5.173c0.101,2.126,1.289,5.237-0.81,6.692
+ c-7.557,0.506-15.455-1.694-22.763,1.086c-6.692,2.421-13.338,5.9-17.912,11.506c-8.367,12.15-12.445,26.592-15.215,40.924
+ c-0.129,1.924-1.859,3.074-3.194,4.225c-2.402,1.418-5.403-1.399-4.704-3.921c1.74-6.057,1.767-12.445,3.36-18.538
+ c3.093-14.774,11.101-29.593,24.733-37.021c-9.011,3.507-19.67,7.088-28.673,1.51c-1.648-1.399-3.507-2.531-5.237-3.811
+ c-2.54,3.369-5.596,6.287-8.735,9.103c-2.78,1.574-5.33,3.544-8.165,5.044c-4.998,2.623-10.346,4.474-15.795,5.909
+ c-2.623-0.074-5.247,0.129-7.879,0.064c-3.443-0.709-6.71-2.08-9.536-4.179c-4.179-3.737-7.483-8.293-10.245-13.144
+ c-2.54-4.934-4.731-10.061-5.679-15.565c-1.869,4.658-3.323,9.591-6.462,13.614c-1.988,2.982-4.98,5.09-7.18,7.879
+ c-4.059,2.393-7.916,5.366-12.592,6.499c-3.94,1.141-8.054,0.341-11.975-0.442c3.82,12.417,7.907,24.88,14.212,36.285l-0.138,0.469
+ c3.157,7.677,6.397,15.344,9.849,22.901c2.798,6.434,6.038,12.703,10.024,18.483c3.176,4.713,6.6,9.26,10.236,13.632
+ c3.028,3.783,6.029,7.603,9.361,11.138c2.605,2.375,5.283,4.676,8.073,6.83c1.436,0.976,2.872,1.97,4.299,2.973
+ c4.022,2.577,8.22,4.879,12.546,6.904c19.081,8.284,40.455,10.687,61.018,8.008c14.893-1.721,28.884-8.155,41.163-16.568
+ c13.881-9.481,25.561-21.714,36.975-33.947c6.25-6.425,10.641-14.369,14.387-22.432c8.68-19.689,12.003-41.182,14.645-62.371
+ c0.396-4.299,1.298-8.597,0.746-12.914c-1.224-12.297-2.016-24.862-6.296-36.561c-4.473-11.515-10.411-22.717-19.137-31.591
+ c-12.776-13.678-30.072-22.211-47.818-27.467C247.892,601.617,233.219,598.69,219.053,601.755 M336.441,658.097
+ c-2.08,0.239-1.381,3.01,0.543,2.697c15.86,2.927,31.683,6.047,47.579,8.763c-0.746-10.613-1.105-21.254-0.856-31.894
+ C367.921,644.41,352.172,651.24,336.441,658.097 M1381.471,650.503c-1.546,19.809-5.458,39.396-10.576,58.588
+ c32.87-3.47,65.712-7.18,98.536-10.963C1440.151,682.186,1410.87,666.216,1381.471,650.503 M336.947,664.163
+ c1.095,3.231,2.393,6.388,3.461,9.637c4.897,14.359,5.431,29.842,3.636,44.809c-2.274,19.017-7.263,37.647-13.936,55.578
+ c-1.206,2.605,0,5.385,0.451,8.026c4.75,21.097,3.875,43.953-4.879,63.918c-3.792,8.809-10.88,15.666-18.741,20.922
+ c0.267,6.37,0.948,12.712,1.482,19.072c0.746,6.351,0.792,12.923,3.203,18.952c16.449,46.769,32.198,93.971,53.82,138.678
+ c7.925,15.979,16.559,31.793,27.955,45.609c2.329,2.513,4.326,5.624,7.447,7.235c8.017,2.43,16.605,1.776,24.816,0.81
+ c16.918-2.384,33.22-7.842,49.208-13.706c18.621-6.996,36.81-15.059,54.879-23.362c1.51-0.617,2.817-1.666,3.148-3.332
+ c8.201-24.927,16.357-49.871,24.623-74.779c0.663-2.412,2.227-5.366,0.203-7.529c-9.969-12.601-19.431-25.663-30.099-37.684
+ c-5.486,0.736-10.521,3.406-15.804,4.998c-30.118,10.438-60.116,21.217-90.298,31.443c20.048-29.952,40.878-59.398,61.018-89.295
+ c-1.482-2.448-2.955-4.915-4.814-7.078c-15.261-17.756-29.961-36.036-43.078-55.449c-0.792-1.85-2.927-1.464-4.538-1.473
+ c-29.823,1.721-59.628,3.7-89.461,5.329c18.557-25.985,37.555-51.666,56.176-77.596c1.602-2.016,0.451-4.621-0.083-6.793
+ c-6.94-22.091-10.088-45.149-12.205-68.133C368.685,669.962,352.844,666.906,336.947,664.163 M229.372,707.517
+ c4.648-1.795,9.315-3.636,14.332-4.096c-1.73-0.727-3.489-1.371-5.21-2.099C235.613,703.624,232.419,705.465,229.372,707.517
+ M347.063,821.886c28.222-1.5,56.425-3.378,84.637-5.063c-13.669-20.72-24.531-43.317-32.198-66.918
+ C381.848,773.773,364.617,797.944,347.063,821.886 M314.856,803.237c-4.105,3.258-9.122,5.376-12.509,9.481
+ c-2.494,2.771-5.293,5.302-7.493,8.339c-2.752,1.666-4.74,4.363-7.272,6.351c-5.495,5.053-11.736,9.159-17.866,13.375
+ c-3.599,1.528-6.922,3.673-10.549,5.164c-2.725,1.289-5.707,2.025-8.33,3.535c-9.49,2.752-18.897,6.103-28.829,6.95l-0.267,0.295
+ c-5.348,0.083-10.677,0.534-16.025,0.469c-4.004-0.221-7.999-0.442-11.966-0.994l-0.525,0.405
+ c-4.271-1.454-8.763-1.997-13.181-2.78c-5.854-2.163-11.939-3.719-17.599-6.397c1.123,4.225,2.31,8.45,3.719,12.592
+ c0.93,2.752,1.878,5.504,2.909,8.22c0.93,1.997,1.85,4.004,2.826,5.992c0.93,1.546,1.85,3.102,2.761,4.685
+ c1.638,2.007,3.424,3.903,5.33,5.679c1.73,1.086,3.461,2.78,5.689,2.412c3.406,0.69,6.821,1.5,10.3,1.675
+ c3.599,0.709,7.18,1.565,10.834,1.905c4.566,1.537,9.352,0.405,14-0.037c20.922-2.936,41.495-8.818,60.631-17.802
+ c11.635-5.734,23.435-12.482,31.351-23.021c2.163-2.2,3.875-4.943,5.017-7.796c1.74-2.844,2.992-5.965,3.774-9.195
+ c0.856-2.375,1.611-4.805,1.896-7.309c0.534-2.126,0.957-4.289,1.059-6.462c0.828-5.007,1.059-10.088,0.966-15.142
+ c0.368-3.351,0.074-6.738-0.166-10.079c0.313-2.2,0.018-4.427-0.166-6.618C321.944,792.633,318.658,798.101,314.856,803.237
+ M1332.815,803.412c-3.728,8.22-8.054,16.145-12.15,24.181c-1.068,1.97-1.97,4.124-3.673,5.652
+ c-2.826,2.301-3.949,5.882-5.652,8.975c23.03,4.63,46.171,8.836,69.302,12.969c-5.523-6.471-11.488-12.528-17.185-18.833
+ C1353.203,825.411,1343.262,814.163,1332.815,803.412 M464.626,916.087c-11.644,17.093-23.555,33.993-35.006,51.206
+ c31.894-11,63.743-22.174,95.554-33.441c-13.015-16.025-26.629-31.545-40.068-47.211
+ C477.927,896.205,471.493,906.302,464.626,916.087 M1196.235,995.993c-6.167,6.397-12.877,12.334-18.667,19.054
+ c4.805,15.768,10.401,31.305,15.289,47.055c1.73,7.382,5.053,14.24,7.134,21.521c7.207,22.285,14.866,44.44,21.806,66.817
+ c-19.597-13.531-38.734-27.743-58.155-41.532c-13.439-9.444-26.5-19.45-40.179-28.544c-12.767,30.053-18.87,62.362-23.96,94.468
+ c-1.795,12.334-4.004,24.641-4.345,37.132c-0.092,11.313-1.27,22.57-1.362,33.901c-0.561,1.813-0.865,3.7-0.838,5.624
+ c-0.626,23.352,0.939,46.677,1.795,70.002c0.69-0.101,1.399-0.175,2.117-0.239c16.246-6.627,33.579-10.889,51.141-11.745
+ c8.551-0.46,17.093,0.534,25.626,0.93c2.218-1.049,3.608-3.304,5.569-4.759c6.867-5.854,16.228-7.41,24.982-7.714
+ c12.426-0.387,24.908,1.298,36.819,4.879c6.766-7.603,13.181-15.501,19.818-23.214c3.562-4.428,7.806-8.404,10.401-13.531
+ c5.118-9.831,9.361-20.149,12.169-30.882c4.97-18.64,5.928-38.089,5.624-57.29c-1.767-23.086-5.725-45.95-10.788-68.52
+ c-11.119-48.104-27.356-95.95-55.781-136.764C1213.899,980.63,1204.961,988.187,1196.235,995.993 M555.219,998.478
+ c-6.517,19.643-12.979,39.295-19.413,58.956c19.763-9.269,39.369-18.86,58.864-28.682c-10.3-16.826-21.484-33.082-33.137-48.997
+ C559.122,985.886,557.216,992.201,555.219,998.478 M1153.829,1035.481c-5.863,4.317-9.913,10.475-14.23,16.219
+ c-5.827,7.99-10.742,16.642-14.709,25.699c30.394,22.082,60.972,43.925,91.522,65.786c-5.063-16.412-10.696-32.64-15.989-48.978
+ c-1.988-6.793-4.777-13.338-6.25-20.269c-6.903-18.778-12.73-37.951-19.109-56.913
+ C1168.198,1023.423,1161.294,1029.793,1153.829,1035.481 M697.201,1289.678c0.101,8.781,1.335,17.526,0.838,26.316
+ c0.11,1.749-0.69,4.041,1.022,5.274c22.671,21.235,46.511,41.817,74.208,56.259c16.734,8.8,34.849,14.939,53.507,18.041
+ c24.061,4.161,48.675,4.612,72.984,2.623c5.873-0.184,11.736-1.022,17.59-1.666c6.48-0.7,12.923-1.73,19.358-2.771
+ c4.612-1.031,9.545-1.123,13.945-2.89c4.096-0.083,8.026-1.445,12.031-2.237c28.562-6.471,56.278-16.394,82.686-29.032
+ c3.286-1.758,7.447-2.642,9.416-6.13c3.452-5.348,7.934-9.904,11.957-14.792c0.838-4.409,0.525-8.947,0.967-13.393
+ c0.488-4.658,0.884-9.334,0.93-14.01c-12.215,5.44-24.236,11.34-36.506,16.651c-20.342,8.883-41.108,16.854-62.426,23.049
+ c-7.778,2.375-15.786,3.884-23.592,6.13c-4.639,0.469-9.269,1.482-13.789,2.633c-2.936-0.138-5.799,0.764-8.689,1.058
+ c-3.636,0.69-7.401,0.58-10.954,1.648c-3.838-0.267-7.658,0.451-11.46,0.755c-6.103,0.414-12.224,0.258-18.308,0.764
+ c-5.339,0.414-10.65-0.654-15.97-0.193c-25.838-1.068-51.74-4.97-76.261-13.402c-20.747-7.088-40.142-17.802-57.76-30.79
+ C720.268,1310.518,708.937,1299.841,697.201,1289.678 M1195.545,1312.994c-2.191,0.589-4.409,1.371-5.974,3.093
+ c-2.918,2.89-6.204,5.56-8.33,9.14c-2.163,4.786-2.485,10.273-1.454,15.4c1.095,6.112,1.942,12.399,4.427,18.152
+ c0.654,4.52,2.927,8.634,4.777,12.776c7.06,13.954,17.02,26.445,28.59,36.902c4.409,4.602,9.49,8.514,14.617,12.307
+ c4.216,2.955,8.478,5.928,13.144,8.165c4.345,2.209,8.8,4.538,13.595,5.587c10.346,3.746,21.456,5.228,32.419,5.753
+ c5.642-8.514,11.156-17.222,14.967-26.74c1.141-3.212,2.587-6.489,2.679-9.923c-1.39-7.723-4.621-15.096-8.754-21.723
+ c-1.178-3.461-3.516-6.388-5.311-9.536c-0.957-1.602-1.924-3.194-2.844-4.786c-3.452,2.642-7.097,5.081-10.263,8.063
+ c-5.081,3.36-9.849,7.18-14.691,10.88c-3.875,2.126-6.379,5.836-9.674,8.634c-6.057,3.406-12.712-0.396-18.363-2.798
+ c-2.412-2.016-5.035-3.746-7.474-5.688c-10.521-9.104-19.183-20.609-23.454-33.965c-0.138-3.866-1.252-8.045,0.847-11.598
+ c1.979-3.194,4.786-5.744,7.014-8.754c3.222-3.608,6.296-7.336,9.435-11.009c2.071-2.458,4.161-4.906,6.222-7.373
+ C1220.011,1310.785,1207.253,1309.082,1195.545,1312.994 M1085.797,1341.179c-10.742,6.241-21.419,14.12-26.869,25.635
+ c-4.906,9.554-5.928,20.49-6.397,31.057c0.12,3.295,0.35,6.812,1.997,9.766c2.163,2.725,6.388,3.378,9.527,2.126
+ c6.241-2.007,12.85-2.393,19.357-2.679c0.129-4.676,0.976-9.269,1.915-13.825c1.85,0.35,3.691,0.718,5.56,1.105
+ c-0.69,4.207-1.73,8.404-1.666,12.702c0.046,4.593,0.884,9.205,0.166,13.798c-0.506,3.737-2.034,7.226-3.691,10.585
+ c-1.694-0.828-3.378-1.62-5.063-2.393c1.804-3.838,3.304-7.87,3.452-12.15c-3.802-0.267-7.787-1.086-11.432,0.46
+ c-5.155,1.841-10.769,3.332-14.792,7.272c-3.949,4.096-7.364,8.947-8.542,14.617c-3.084,11.266,0.884,22.883,5.983,32.916
+ c6.968,13.531,15.777,26.206,26.381,37.141c8.56,8.984,19.873,15.648,32.299,17.259c3.037,0.304,6.765-0.414,9.122,2.025
+ c2.191,2.577,1.234,6.158,0.893,9.205c-0.7,4.087,0.994,8.192,3.194,11.57c3.222,4.437,7.649,7.796,12.04,10.99
+ c6.986,4.842,14.599,8.956,22.828,11.257c9.149,2.476,19.523,1.104,27.356-4.4c14.884-9.481,30.33-19.081,41.265-33.247
+ c10.779-14.433,16.375-31.821,25.488-47.229c8.165-14.185,18.557-26.869,28.535-39.774c-5.955-1.104-12.049-0.58-18.004-1.574
+ c-14.028-1.786-27.191-7.98-38.421-16.43c-14.157-10.512-26.473-23.362-37.288-37.242c-9.196-12.196-17.784-25.654-20.204-41.007
+ c-0.709-9.38-5.063-18.345-3.719-27.89c-6.36-0.46-12.767-0.736-19.136-0.331
+ C1126.288,1324.656,1104.805,1330.455,1085.797,1341.179 M696.125,1338.003c-1.546,9.555-3.102,19.109-4.897,28.618
+ c-0.285,1.151,0.092,2.053,1.141,2.715c25.083,20.545,51.546,40.041,81.526,52.854c17.59,7.677,36.165,12.923,55.007,16.458
+ c22.653,4.225,45.729,6.075,68.768,5.633c10.438-0.156,20.858-0.976,31.213-2.182c4.197-0.644,8.652-0.626,12.638-2.117
+ c5.9-0.221,11.598-1.97,17.332-3.194c29.584-7.06,57.272-20.444,82.898-36.598c0.957-8.063,0.635-16.348,2.448-24.346
+ c-16.421,7.483-33.284,14.037-50.552,19.284c-17.112,5.366-34.702,8.956-52.274,12.408c-5.928,0.626-11.902,1.473-17.737,2.761
+ c-1.298-0.341-2.642,0.009-3.921,0.11c-22.358,2.835-44.937,3.295-67.434,2.356c-21.695-1.869-43.538-5.247-63.927-13.2
+ c-19.928-7.511-38.42-18.437-55.477-31.121C719.992,1359.073,708.247,1348.276,696.125,1338.003 M689.212,1384.984
+ c-0.175,7.042-0.966,14.065-0.736,21.125c12.748,12.61,26.068,24.844,41.292,34.426c7.161,4.713,15.013,8.211,22.229,12.841
+ c26.5,15.814,56.186,25.865,86.598,30.734c19.864,3.268,40.031,4.878,60.171,4.299c9.407,0.138,18.796-0.865,28.157-1.712
+ c7.603-1.031,15.381-1.648,22.763-3.765c4.142-0.35,8.137-1.547,12.15-2.55c20.803-5.293,40.685-13.789,59.426-24.19
+ c5.219-2.448,9.72-6.195,13.209-10.76c0.405-3.369,0.626-6.821,2.025-9.96c2.642-7.005,8.643-11.791,13.255-17.443
+ c-0.562-1.684-1.141-3.35-1.731-4.989c-12.38,7.806-25.239,14.847-38.522,21.005c-15.022,6.821-30.385,13.393-46.714,16.348
+ l-0.147,0.377c-5.449,0.69-10.816,1.951-16.255,2.697c-11.027,1.675-22.147,2.679-33.247,3.608
+ c-24.825,1.5-49.816,1.684-74.549-1.151c-21.53-2.32-42.811-7.576-62.583-16.486c-13.025-5.937-25.598-12.85-37.988-20.011
+ C720.793,1409.367,704.989,1397.134,689.212,1384.984 M688.144,1425.43c-0.7,4.851-0.81,9.794-0.571,14.691
+ c9.812,13.927,21.732,26.473,35.42,36.672c11.055,8.349,23.509,14.636,36.34,19.753c21.005,8.358,42.949,14.12,65.059,18.732
+ c18.317,3.866,36.975,6.167,55.661,7.078c10.153,0.368,20.315,0.948,30.477,0.856c5.56-0.497,11.138-0.331,16.707-0.727
+ c4.354,0.055,8.763-0.258,13.052-1.031c1.427,0.064,2.863,0.037,4.317-0.055c18.962-1.988,37.905-5.523,55.734-12.463
+ c17.148-6.471,33.109-15.878,47.542-27.154c-3.553-6.14-6.83-12.454-9.508-19.026c-22.561,13.411-46.613,24.641-72.101,31.176
+ c-8.781,2.467-17.839,3.654-26.721,5.633c-5.136,0.028-10.171,1.289-15.28,1.758c-4.087,0.653-8.192,1.104-12.251,1.841
+ c-28.305,3.102-57.005,1.197-84.904-4.28c-35.862-7.134-71.208-20.048-100.644-42.167
+ C713.42,1446.628,700.294,1436.613,688.144,1425.43 M692.94,1469.612c-0.359,4.308-0.166,8.652-0.654,12.969
+ c-0.746,4.427,1.813,8.367,3.415,12.307c6.213,14.184,14.764,27.706,26.915,37.528c12.518,10.438,27.651,17.213,43.096,22.073
+ c20.885,6.397,42.563,9.729,64.231,12.132c23.803,2.347,47.736,3.443,71.659,2.807c7.345,0.092,14.746-0.285,22.036-1.059
+ c8.266,0.101,16.504-1.16,24.724-1.951c13.862-1.546,27.66-3.894,41.173-7.373c15.519-4.059,30.91-10.07,43.492-20.26
+ c12.795-10.088,21.41-24.853,25.58-40.473c-0.736-1.675-1.915-3.083-2.909-4.575c-8.79,6.591-17.903,12.804-27.587,18.014
+ c-20.711,11.377-43.621,18.502-66.983,21.834c-7.732,1.316-15.602,1.537-23.334,2.771c-4.676-0.083-9.416-0.037-14.01,0.856
+ c-10.917-0.221-21.898,0.074-32.842-0.175c-5.79-0.939-11.718-0.313-17.526-1.151c-12.169-0.727-24.3-2.007-36.377-3.636
+ c-36.736-5.182-74.034-13.512-106.084-33.008C717.056,1491.041,704.832,1480.437,692.94,1469.612 M743.869,1577.261
+ c-2.421,2.835-4.225,6.812-2.973,10.567c1.703,5.192,5.118,9.573,7.575,14.415c3.792,7.75,10.641,13.365,17.268,18.64
+ c19.937,14.47,44.67,19.772,68.584,23.389c24.926,3.443,50.267,4.474,75.331,1.942c15.243-1.629,30.486-4.934,44.376-11.57
+ c13.273-6.112,25.028-15.105,35.457-25.258c5.974-5.974,11.764-13.108,12.27-21.926c-4.078-1.114-8.266-0.046-12.279,0.764
+ c-19.68,4.704-39.497,9.021-59.61,11.359c-41.256,4.639-83.183,1.381-123.739-7.078c-19.707-4.096-39.037-9.72-58.321-15.409
+ C746.548,1576.893,744.827,1575.954,743.869,1577.261z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M862.049,65.249c5.827,16.587,10.99,33.404,16.614,50.064
+ c2.237,6.719,4.474,13.439,6.508,20.214c-6.36,0.976-12.804,0.515-19.192,1.003c-7.235,0.543-14.479,0.902-21.686,1.721
+ c-2.126,0.304-4.253-0.064-6.241-0.801C846.345,113.491,853.838,89.237,862.049,65.249z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M1024.852,100.2c4.4-6.287,8.56-12.73,13.126-18.897
+ c1.031,27.706,2.467,55.412,3.194,83.119c-15.878-6.664-32.235-12.224-48.941-16.421
+ C1002.835,131.882,1014.028,116.16,1024.852,100.2z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M687.831,104.82c17.286,18.363,34.38,36.929,51.353,55.596
+ c-15.841,4.925-30.965,11.81-45.932,18.897C691.209,154.498,689.69,129.645,687.831,104.82z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M1113.42,143.664c10.963-10.908,21.659-22.091,32.796-32.815
+ c-3.636,33.395-6.766,66.845-10.677,100.193c-9.159-4.52-18.594-8.404-27.899-12.592c-10.355-5.882-20.628-11.92-31.213-17.397
+ C1088.623,168.462,1101.114,156.155,1113.42,143.664z"/>
+ <path fill="#CFB000" stroke="#CFB000" d="M885.171,135.527l0.709-0.083c-0.101,0.497-0.294,1.5-0.387,2.007
+ c-16.025,0.221-32.042,1.289-47.984,2.899c0.157-0.967,0.341-1.933,0.543-2.899c1.988,0.736,4.114,1.105,6.241,0.801
+ c7.207-0.819,14.451-1.178,21.686-1.721C872.367,136.043,878.81,136.503,885.171,135.527z"/>
+ <path fill="#FFFF29" stroke="#FFFF29" d="M859.361,161.227c13.052-0.276,26.141-1.537,39.194-0.258
+ c53.028,1.39,105.357,14.534,153.875,35.723c56.848,24.549,108.91,58.487,160.337,92.645c2.2,1.408,4.317,2.973,6.048,4.971
+ c5.753,6.526,11.57,12.979,17.342,19.496c3.479,4.179,7.447,7.999,10.328,12.656c20.6,31.867,40.814,64.028,58.818,97.45
+ c17.839,33.358,33.717,67.977,44.21,104.4c7.17,24.761,11.598,50.359,12.426,76.141c0.819,41.302-7.695,82.309-21.106,121.226
+ c-13.384,38.872-31.554,75.93-52.071,111.506c-17.949,30.891-37.546,60.825-58.468,89.783c-6.14,8.477-13.043,16.366-19.919,24.245
+ c-5.477,5.882-10.263,12.472-16.412,17.673c-25.479,18.566-51.031,37.785-71.005,62.436
+ c-10.245,12.666-18.566,26.869-24.531,42.029c-9.03,22.524-13.697,46.502-17.001,70.462c-6.259,49.54-9.389,99.402-12.795,149.19
+ c-0.064,1.381-0.313,2.918-1.85,3.406c-34.334,16.633-69.302,32.502-106.204,42.581c-27.053,7.529-55.136,11.009-83.183,11.239
+ c-22.966-0.35-46.014-2.715-68.244-8.68c-18.962-4.98-37.113-12.942-53.7-23.38c-21.677-13.586-40.63-30.946-58.993-48.629
+ c-1.224-1.307-2.817-2.467-3.212-4.299c-1.261-4.786-1.114-9.766-1.776-14.635c-4.464-43.032-9.637-86.294-22.036-127.881
+ c-10.447-35.815-26.39-70.039-47.423-100.865c-19.302-28.378-41.992-54.216-64.672-79.906
+ c-13.154-14.774-25.966-29.851-39.166-44.578c-29.51-34.223-57.98-70.094-77.642-111.036
+ c-20.416-42.802-27.881-90.648-28.185-137.721c-0.276-27.531,1.813-55.017,4.74-82.373c2.393-20.241,4.612-40.538,8.036-60.631
+ c5.67-21.134,11.957-42.121,19.155-62.785c6.526-18.787,15.464-36.635,25.184-53.958c7.953-13.89,16.311-27.577,25.764-40.51
+ c18.244-25.221,39.838-47.993,63.918-67.71c30.679-24.991,64.893-45.425,100.58-62.417c33.864-16.338,69.523-28.535,105.366-39.691
+ C795.673,169.023,827.375,163.077,859.361,161.227 M835.834,166.731c-25.341,3.231-50.212,10.236-73.509,20.701
+ c-4.888,2.715-10.457,4.446-14.654,8.247c-7.373,2.771-13.43,8.054-19.698,12.656c-4.335,3.848-9.352,7.244-12.482,12.215
+ c-4.308,3.139-7.161,7.741-10.153,12.058c-2.66,4.28-5.431,8.643-6.766,13.549c-4.519,9.435-5.909,20.388-4.28,30.707
+ c0.295,3.746,0.966,7.566,2.614,10.981c1.951,7.732,5.661,15.215,10.981,21.171c2.485,4.952,6.591,8.772,10.411,12.684
+ c2.485,2.402,4.869,5.026,7.981,6.664c3.728,4.078,8.487,6.996,13.025,10.07c3.82,2.366,7.548,5.035,11.865,6.434
+ c3.277,3.258,7.741,4.713,11.837,6.637c4.059,1.74,8.017,3.746,12.224,5.118c4.124,3.323,9.49,4.28,14.378,5.992
+ c19.339,5.072,39.166,9.306,59.26,8.873c4.612,0.074,9.177,0.966,13.798,0.93c11.966-0.055,23.932-0.074,35.898,0.009
+ c6.462,0.064,12.85-1.335,19.33-0.93c15.547-0.046,30.928-2.955,46.033-6.416c6.443-1.39,12.482-4.068,18.759-6.011
+ c4.612-1.675,9.499-2.992,13.448-6.057c5.495-2.126,11.34-4.142,15.777-8.174c3.056-0.911,5.762-2.633,8.468-4.289
+ c5.661-3.746,11.773-7.115,16.329-12.261c3.028-1.73,5.56-4.188,8.036-6.618c3.387-3.415,6.949-6.793,9.214-11.11
+ c2.145-1.887,3.636-4.372,5.127-6.784c2.982-5.026,5.873-10.254,7.014-16.053c2.366-5.541,3.24-11.736,2.881-17.728
+ c0.589-3.774-0.009-7.603-0.654-11.322c-0.856-4.28-1.694-8.68-3.949-12.491c-1.27-5.136-4.289-9.61-7.069-14.037
+ c-3.12-4.492-6.195-9.214-10.668-12.491c-0.847-1.51-2.034-2.78-3.24-3.986c-7.493-7.088-15.777-13.319-24.641-18.603
+ c-4.51-2.623-8.919-5.633-13.982-7.097c-1.85-1.786-4.345-2.605-6.646-3.599c-5.707-2.237-11.147-5.164-17.075-6.821
+ c-21.272-7.447-43.446-12.454-65.924-14.424c-6.765-0.23-13.467-1.418-20.25-1.279
+ C875.175,163.721,855.311,163.325,835.834,166.731 M712.509,437.727c-14.221,10.318-25.58,24.181-34.306,39.35
+ c-16.541,29.059-23.73,62.841-23.251,96.116c0.598,33.735,9.14,67.857,27.531,96.401c12.316,19.017,29.575,35.558,50.948,43.824
+ c17.286,6.765,36.948,7.263,54.529,1.289c15.105-5.044,28.507-14.415,39.433-25.902c11.469-12.012,20.352-26.307,27.053-41.458
+ c8.938,20.987,22.211,40.768,40.961,54.17c14.608,10.558,33.063,16.164,51.086,13.844c13.991-1.666,27.191-7.815,38.181-16.495
+ c13.687-10.779,24.282-25.074,32.216-40.482c16.891-33.073,22.552-71.152,19.551-107.953c-2.927-33.22-13.209-66.661-33.947-93.198
+ c-13.071-16.679-31.324-30.33-52.577-33.947c-17.452-3.166-35.779,1.187-50.607,10.714c-21.005,13.393-35.576,34.821-45.168,57.447
+ c-10.751-23.61-26.979-45.628-49.65-58.938c-14.82-8.735-32.364-13.163-49.549-11.349
+ C739.589,422.521,724.898,428.679,712.509,437.727 M919.523,938.335c-23.288,6.6-47.404,9.812-71.53,11.23
+ c-8.008,0-16.025,0.948-24.015,0.11c-14.7-1.27-29.234-4.197-43.428-8.165c-7.106-1.749-13.918-4.602-21.079-6.011
+ c0.313,15.51,2.255,31.093,6.94,45.922c4.685,14.424,10.963,28.94,21.99,39.7c10.061,9.941,23.472,15.749,37.123,18.815
+ c22.68,4.906,46.659,3.673,68.741-3.452c15.878-4.961,30.523-14.083,41.578-26.565c8.956-9.904,15.538-21.65,21.815-33.358
+ c5.145-9.518,8.22-19.947,11.055-30.33c2.384-8.929,4.4-18.078,4.17-27.366c-1.454-0.589-2.89-1.187-4.335-1.73
+ C954.087,927.814,937.224,935.122,919.523,938.335z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M516.283,181.532c27.817,14.792,55.44,29.952,83.128,44.974
+ c-14.746,8.597-29.354,17.461-43.281,27.356C542.673,229.857,529.39,205.732,516.283,181.532z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M1226.804,273.073c36.267-15.979,72.699-31.6,109.103-47.266
+ c-19.956,31.406-40.151,62.656-60.18,94.008c-1.721,2.697-3.433,5.394-5.311,7.971c-10.291-16.145-21.714-31.637-34.821-45.619
+ C1232.842,278.964,1230.072,275.761,1226.804,273.073z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M402.89,303.789c25.46,7.06,50.828,14.488,76.187,21.898
+ c-9.683,12.813-18.87,26.022-26.804,39.994C435.631,345.201,419.256,324.5,402.89,303.789z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M1288.669,354.388c28.212-2.2,56.434-4.299,84.665-6.149
+ c-14.663,21.649-29.427,43.253-44.293,64.774C1316.863,392.615,1303.249,373.128,1288.669,354.388z"/>
+ <defs>
+ <filter id="Adobe_OpacityMaskFilter" filterUnits="userSpaceOnUse" x="693.905" y="163.267" width="376.585" height="209.664">
+ <feColorMatrix type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"/>
+ </filter>
+ </defs>
+ <mask maskUnits="userSpaceOnUse" x="693.905" y="163.267" width="376.585" height="209.664" id="SVGID_1_">
+ <g filter="url(#Adobe_OpacityMaskFilter)">
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="878.3787" y1="381.623" x2="878.3787" y2="158.0083">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="0.0912" style="stop-color:#F9F9F9"/>
+ <stop offset="0.2171" style="stop-color:#E7E7E7"/>
+ <stop offset="0.3633" style="stop-color:#CACACA"/>
+ <stop offset="0.5249" style="stop-color:#A1A1A1"/>
+ <stop offset="0.6991" style="stop-color:#6C6C6C"/>
+ <stop offset="0.881" style="stop-color:#2D2D2D"/>
+ <stop offset="1" style="stop-color:#000000"/>
+ </linearGradient>
+ <rect x="671.233" y="158.008" fill="url(#SVGID_2_)" stroke="#FFFF3B" stroke-width="0.0938" width="414.291" height="223.615"/>
+ </g>
+ </mask>
+ <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="882.1978" y1="163.7669" x2="882.1978" y2="372.4311">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="1" style="stop-color:#FFFF3B"/>
+ </linearGradient>
+ <path mask="url(#SVGID_1_)" fill="url(#SVGID_3_)" stroke="#FFFF3B" d="M1069.096,258.677c-0.856-4.28-1.694-8.68-3.949-12.491
+ c-1.27-5.136-4.289-9.61-7.069-14.037c-3.12-4.492-6.195-9.214-10.668-12.491c-0.847-1.51-2.034-2.78-3.24-3.986
+ c-7.493-7.088-15.777-13.319-24.641-18.603c-4.51-2.623-8.919-5.633-13.982-7.097c-1.85-1.786-4.345-2.605-6.646-3.599
+ c-5.707-2.237-11.147-5.164-17.075-6.821c-21.272-7.446-43.446-12.454-65.924-14.424c-6.765-0.23-13.466-1.418-20.25-1.279
+ c-19.707-0.129-39.571-0.525-59.048,2.881c-25.341,3.231-50.212,10.236-73.509,20.701c-4.888,2.715-10.457,4.446-14.654,8.247
+ c-7.373,2.771-13.43,8.054-19.698,12.656c-4.335,3.848-9.352,7.244-12.482,12.215c-4.308,3.139-7.161,7.741-10.153,12.058
+ c-2.66,4.28-5.431,8.643-6.766,13.549c-4.519,9.435-5.909,20.388-4.28,30.707c0.295,3.746,0.966,7.566,2.614,10.981
+ c1.951,7.732,5.661,15.215,10.981,21.171c2.485,4.952,6.591,8.772,10.411,12.684c2.485,2.402,4.869,5.026,7.981,6.664
+ c3.728,4.078,8.487,6.996,13.025,10.07c3.82,2.366,7.548,5.035,11.865,6.434c3.277,3.259,7.741,4.713,11.837,6.637
+ c4.059,1.74,8.017,3.746,12.224,5.118c4.124,3.323,9.49,4.28,14.378,5.992c19.339,5.072,39.166,9.306,59.26,8.873
+ c4.612,0.074,9.177,0.967,13.798,0.93c11.966-0.055,23.932-0.074,35.898,0.009c6.462,0.064,12.85-1.335,19.33-0.93
+ c15.547-0.046,30.928-2.955,46.033-6.416c6.443-1.39,12.482-4.068,18.759-6.011c4.612-1.675,9.499-2.992,13.448-6.057
+ c5.495-2.126,11.34-4.142,15.777-8.174c3.056-0.911,5.762-2.633,8.468-4.289c5.661-3.746,11.773-7.115,16.329-12.261
+ c3.028-1.73,5.56-4.188,8.036-6.618c3.387-3.415,6.949-6.793,9.214-11.11c2.145-1.887,3.636-4.372,5.127-6.784
+ c2.982-5.026,5.873-10.254,7.014-16.053v0c2.366-5.541,3.24-11.736,2.881-17.728
+ C1070.339,266.225,1069.74,262.396,1069.096,258.677z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M256.83,416.519c4.133-5.504,9.435-11.248,16.679-12.031
+ c7.769-0.654,15.068,3.176,21.235,7.529c13.328,9.674,22.165,24.052,29.602,38.448c2.2,4.437,4.437,8.892,5.928,13.623
+ c4.105,17.986,6.931,36.303,7.769,54.75c1.16,24.448,0.635,49.006-2.117,73.334c-1.97,16.835-5.053,33.524-8.643,50.074
+ c-3.24-6.195-6.508-12.472-11.174-17.737c-7.345-8.708-17.286-14.691-27.467-19.551c-7.189-3.958-14.654-7.511-22.616-9.637
+ c-2.099-8.036-3.691-16.209-6.241-24.116c-1.813-5.817-5.109-11.092-9.389-15.409c-1.233-1.427-3.166-2.651-3.01-4.786
+ c-1.307-20.232-3.268-40.445-3.765-60.723c-0.515-21.824,4.556-43.207,9.693-64.267C254.179,422.76,254.538,419.17,256.83,416.519z
+ "/>
+ <path stroke="#000000" d="M712.509,437.727c12.39-9.048,27.08-15.206,42.434-16.568c17.185-1.813,34.729,2.614,49.549,11.349
+ c22.671,13.31,38.899,35.328,49.65,58.938c9.591-22.625,24.162-44.054,45.168-57.447c14.829-9.527,33.155-13.881,50.607-10.714
+ c21.254,3.617,39.507,17.268,52.577,33.947c20.738,26.537,31.02,59.978,33.947,93.198c3.001,36.8-2.66,74.88-19.551,107.953
+ c-7.934,15.409-18.529,29.704-32.216,40.482c-10.99,8.68-24.19,14.829-38.181,16.495c-18.023,2.32-36.478-3.286-51.086-13.844
+ c-18.75-13.402-32.023-33.183-40.961-54.17c-6.701,15.151-15.584,29.446-27.053,41.458c-10.926,11.487-24.328,20.858-39.433,25.902
+ c-17.581,5.974-37.242,5.477-54.529-1.289c-21.373-8.266-38.632-24.807-50.948-43.824c-18.391-28.544-26.933-62.666-27.531-96.401
+ c-0.479-33.275,6.71-67.056,23.251-96.116C686.929,461.908,698.288,448.046,712.509,437.727 M752.522,431.588
+ c-23.26,3.406-43.069,18.732-56.673,37.307c-12.205,16.522-20.379,35.788-25.203,55.698c-7.842,32.971-7.023,68.05,2.734,100.525
+ c7.345,23.905,19.836,46.843,38.807,63.485c13.089,11.506,29.805,19.514,47.423,20.076c14.083,0.709,28.176-3.323,40.188-10.595
+ c17.029-10.236,30.099-26.031,39.497-43.345c6.268-10.806,7.732-23.444,10.76-35.355c0.654-2.274,1.215-4.713,2.844-6.517
+ c1.961-1.427,3.719,0.838,4.271,2.577c3.019,8.192,3.728,17.001,5.863,25.423c7.097,17.737,17.452,34.545,31.885,47.248
+ c11.626,10.272,26.574,17.471,42.296,17.599c15.243,0.433,30.072-5.854,41.753-15.381c11.303-9.15,20.214-20.968,27.145-33.68
+ c9.693-17.894,15.62-37.666,18.557-57.75c5.247-37.997,0.911-77.991-16.081-112.666c-8.358-16.707-19.919-32.327-35.595-42.811
+ c-12.399-8.339-27.807-12.767-42.728-10.475c-12.058,1.648-23.325,7.253-32.714,14.866c-12.012,9.711-21.309,22.423-28.406,36.055
+ c-5.118,9.61-8.33,20.112-13.651,29.621c-0.856,1.224-2.016,2.927-3.746,2.531c-1.832-0.58-2.402-2.679-2.982-4.28
+ c-1.629-6.048-2.918-12.205-5.099-18.087c-9.674-20.95-24.254-40.4-44.311-52.347C785.419,432.913,768.658,429.194,752.522,431.588
+ z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M339.948,476.764c22.34,0.018,44.689-0.12,67.029,0.074
+ c-6.775,24.135-12.058,48.675-15.998,73.435c-15.344-10.567-30.33-21.677-45.499-32.493
+ C344.348,504.029,342.737,490.286,339.948,476.764z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M1359.573,476.829c25.313-0.175,50.635-0.064,75.957-0.055
+ c-12.123,9.122-24.632,17.728-36.892,26.675c-8.643,6.038-16.974,12.528-25.856,18.216
+ C1369.109,506.514,1364.552,491.593,1359.573,476.829z"/>
+ <path stroke="#000000" d="M730.449,498.082c6.158-0.893,12.703,0.028,18.041,3.35c7.714,4.823,12.951,13.715,12.454,22.929
+ c0.11,12.712-10.742,24.356-23.417,25.212c-7.548,0.746-15.353-1.915-20.701-7.318c-9.923-9.076-10.162-26.261-1.123-36.018
+ C719.551,502.022,724.834,499.077,730.449,498.082z"/>
+ <path stroke="#000000" d="M889.184,503.927c9.95-9.932,28.332-9.223,37.362,1.648c9.564,10.199,8.284,28.047-2.476,36.902
+ c-10.558,9.508-28.792,7.916-37.344-3.525c-5.587-6.296-6.057-15.059-5.376-23.039c0.046-0.893,0.304-1.703,0.764-2.448
+ C884.25,510.131,886.358,506.726,889.184,503.927z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M198.996,566.667c14.065-6.692,30.422-5.477,45.177-2.016
+ c3.047,0.304,3.967,3.562,5.376,5.771c4.087,7.023,4.501,15.372,7.695,22.754c-14.672-2.964-30.007-5.541-44.799-1.961
+ c-8.487,2.706-12.969,11.276-15.602,19.183c-4.473,13.991-5.799,29.124-3.258,43.621c1.933,11.386,8.211,21.649,16.366,29.685
+ c4.584,4.63,10.052,8.229,15.317,12.031c-6.103,3.995-12.951,8.993-20.674,7.364c-1.97-0.607-4.961-0.488-5.633-2.89
+ c-7.281-17.084-14.82-34.297-18.299-52.642c-4.004-20.517-2.347-41.615,0.221-62.196
+ C185.079,577.712,190.85,570.358,198.996,566.667z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M149.024,583.843c8.652-1.942,17.535-2.55,26.381-2.752
+ c-1.749,5.624-2.605,11.46-3.406,17.286c-2.108,11.359-3.166,23.003-1.85,34.527c1.546,15.989,6.802,31.268,12.077,46.346
+ c2.338,6.167,5.053,12.187,7.787,18.188c-7.824,6.176-15.685,12.509-24.696,16.909c-4.869,2.283-10.521,3.866-15.832,2.255
+ c-4.556-1.362-7.934-5.109-10.171-9.149c-3.332-6.066-4.925-12.887-6.268-19.615c-2.504-13.292-3.682-26.786-4.805-40.252
+ c-0.267-4.253-0.92-8.487-0.69-12.758c0.571-11.543,0.92-23.38,5.145-34.297c1.464-3.627,2.725-7.382,4.685-10.779
+ C140.445,586.549,144.799,584.892,149.024,583.843z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M1382.29,586.07c24.89,7.042,49.742,14.24,74.586,21.475
+ c-5.919,2.706-12.224,4.437-18.317,6.701c-18.566,6.425-37.031,13.144-55.67,19.357
+ C1383.413,617.762,1383.514,601.875,1382.29,586.07z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M1008.588,486.236c-8.358-16.707-19.919-32.327-35.595-42.811
+ c-12.399-8.339-27.807-12.767-42.728-10.475c-12.058,1.648-23.325,7.253-32.714,14.866c-12.012,9.711-21.309,22.423-28.406,36.055
+ c-5.118,9.61-8.33,20.112-13.651,29.621c-0.856,1.224-2.016,2.927-3.746,2.531c-1.832-0.58-2.402-2.679-2.982-4.28
+ c-1.629-6.048-2.918-12.205-5.099-18.087c-9.674-20.95-24.254-40.4-44.311-52.347c-13.936-8.395-30.698-12.113-46.834-9.72
+ c-23.26,3.406-43.069,18.732-56.673,37.307c-12.205,16.522-20.379,35.788-25.203,55.698c-7.842,32.971-7.023,68.05,2.734,100.525
+ c7.345,23.905,19.836,46.843,38.807,63.485c13.089,11.506,29.805,19.514,47.423,20.076c14.083,0.709,28.176-3.323,40.188-10.595
+ c17.029-10.236,30.099-26.031,39.497-43.345c6.268-10.806,7.732-23.445,10.76-35.355c0.654-2.274,1.215-4.713,2.844-6.517
+ c1.961-1.427,3.719,0.838,4.271,2.577c3.019,8.192,3.728,17.001,5.863,25.424c7.097,17.737,17.452,34.545,31.885,47.248
+ c11.626,10.273,26.574,17.471,42.296,17.6c15.243,0.433,30.072-5.854,41.753-15.381c11.303-9.15,20.214-20.968,27.145-33.68
+ c9.693-17.894,15.62-37.666,18.557-57.75C1029.915,560.905,1025.58,520.91,1008.588,486.236z M755.077,502.854
+ c-1.109-1.049-2.3-2.012-3.556-2.88C752.777,500.842,753.968,501.805,755.077,502.854z M760.944,524.362
+ c0.11,12.712-10.742,24.356-23.417,25.212c-7.548,0.746-15.353-1.915-20.701-7.318c-9.923-9.076-10.162-26.261-1.123-36.018
+ c3.848-4.216,9.131-7.161,14.746-8.155c6.158-0.893,12.703,0.028,18.041,3.351C756.204,506.256,761.441,515.148,760.944,524.362z
+ M924.07,542.477c-10.558,9.509-28.792,7.916-37.344-3.525c-5.587-6.296-6.057-15.059-5.376-23.039
+ c0.046-0.893,0.304-1.703,0.764-2.449c2.135-3.332,4.243-6.738,7.069-9.536c9.95-9.932,28.332-9.223,37.362,1.648
+ C936.11,515.774,934.83,533.622,924.07,542.477z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M88.218,602.151c8.165-3.7,17.507-2.89,26.123-1.445c2.31,27.927,4.934,55.863,6.94,83.8
+ c-2.844,7.796-6.729,16.237-14.562,20.131c-7.769,3.848-16.559,4.961-25.101,5.615c-3.811-7.594-6.719-15.593-10.116-23.371
+ c-6.821-15.814-9.831-33.091-9.831-50.249c-0.092-4.63-0.801-9.785,1.951-13.835c3.792-4.179,7.566-8.422,11.782-12.169
+ C79.666,607.784,84.011,605.069,88.218,602.151z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M336.441,658.097c15.731-6.858,31.48-13.687,47.266-20.435
+ c-0.249,10.641,0.11,21.281,0.856,31.894c-15.897-2.715-31.719-5.836-47.579-8.763C335.06,661.107,334.361,658.336,336.441,658.097
+ z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M1381.471,650.503c29.4,15.712,58.68,31.683,87.96,47.625
+ c-32.824,3.783-65.666,7.493-98.536,10.963C1376.012,689.899,1379.924,670.312,1381.471,650.503z"/>
+ <path fill="#FEFEFE" stroke="#FEFEFE" d="M229.372,707.517c3.047-2.053,6.241-3.894,9.122-6.195
+ c1.721,0.727,3.479,1.371,5.21,2.099C238.687,703.881,234.02,705.722,229.372,707.517z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M334.849,701.148c-1.224-12.298-2.016-24.862-6.296-36.561
+ c-4.473-11.515-10.411-22.717-19.137-31.591c-12.776-13.678-30.072-22.211-47.818-27.467c-13.706-3.912-28.378-6.839-42.544-3.774
+ c0,0,0,0,0,0c-6.904,1.215-12.813,6.351-15.077,12.979c-3.958,11.165-2.761,23.288-2.071,34.886
+ c-0.009,5.081,3.314,9.269,5.744,13.476c4.924,8.671,10.346,17.986,19.542,22.699c9.361,5.035,19.127,9.278,28.94,13.356
+ c2.458,1.003,5.827,1.961,5.983,5.173c0.101,2.126,1.289,5.237-0.81,6.692c-7.557,0.506-15.455-1.694-22.763,1.086
+ c-6.692,2.421-13.338,5.9-17.912,11.506c-8.367,12.15-12.445,26.592-15.215,40.924c-0.129,1.924-1.859,3.074-3.194,4.225
+ c-2.402,1.418-5.403-1.399-4.704-3.921c1.74-6.057,1.767-12.445,3.36-18.538c3.093-14.773,11.101-29.593,24.733-37.021
+ c-9.011,3.507-19.67,7.088-28.673,1.51c-1.648-1.399-3.507-2.531-5.237-3.811c-2.541,3.369-5.596,6.287-8.735,9.104
+ c-2.78,1.574-5.329,3.544-8.165,5.044c-4.998,2.623-10.346,4.474-15.795,5.909c-2.623-0.074-5.247,0.129-7.879,0.065
+ c-3.443-0.709-6.71-2.08-9.536-4.179c-4.179-3.737-7.483-8.293-10.245-13.144c-2.541-4.934-4.731-10.061-5.679-15.565
+ c-1.869,4.658-3.323,9.591-6.462,13.614c-1.988,2.982-4.98,5.09-7.18,7.879c-4.059,2.393-7.916,5.366-12.592,6.498
+ c-3.94,1.141-8.054,0.341-11.975-0.442c3.82,12.417,7.907,24.88,14.212,36.285l-0.138,0.469c3.157,7.677,6.397,15.344,9.849,22.901
+ c2.798,6.434,6.038,12.703,10.024,18.483c3.176,4.713,6.6,9.26,10.236,13.632c3.028,3.783,6.029,7.603,9.361,11.138
+ c2.605,2.375,5.284,4.676,8.073,6.83c1.436,0.976,2.872,1.97,4.299,2.973c4.022,2.577,8.22,4.879,12.546,6.904
+ c19.081,8.284,40.455,10.687,61.018,8.008c14.893-1.721,28.884-8.155,41.163-16.568c13.881-9.481,25.561-21.714,36.975-33.947
+ c6.25-6.425,10.641-14.369,14.387-22.432c8.68-19.689,12.003-41.182,14.645-62.371
+ C334.499,709.763,335.401,705.465,334.849,701.148z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M347.063,821.886c17.553-23.941,34.785-48.113,52.439-71.981
+ c7.668,23.601,18.529,46.198,32.198,66.918C403.488,818.508,375.285,820.385,347.063,821.886z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M1332.815,803.412c10.447,10.751,20.388,21.999,30.642,32.944
+ c5.698,6.305,11.662,12.362,17.185,18.833c-23.131-4.133-46.272-8.339-69.302-12.969c1.703-3.093,2.826-6.673,5.652-8.975
+ c1.703-1.528,2.605-3.682,3.673-5.652C1324.76,819.557,1329.087,811.632,1332.815,803.412z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M325.34,793.747c0.313-2.2,0.018-4.427-0.166-6.618
+ c-3.231,5.504-6.517,10.972-10.319,16.108c-4.105,3.258-9.122,5.376-12.509,9.481c-2.494,2.771-5.293,5.302-7.493,8.339
+ c-2.752,1.666-4.74,4.363-7.272,6.351c-5.495,5.053-11.736,9.159-17.866,13.375c-3.599,1.528-6.922,3.673-10.549,5.164
+ c-2.725,1.289-5.707,2.025-8.33,3.535c-9.49,2.752-18.897,6.103-28.829,6.95l-0.267,0.295c-5.348,0.083-10.677,0.534-16.025,0.469
+ c-4.004-0.221-7.999-0.442-11.966-0.994l-0.525,0.405c-4.271-1.454-8.763-1.997-13.181-2.78
+ c-5.854-2.163-11.939-3.719-17.599-6.397c1.123,4.225,2.31,8.45,3.719,12.592c0.93,2.752,1.878,5.504,2.909,8.22
+ c0.93,1.997,1.85,4.004,2.826,5.992c0.93,1.546,1.85,3.102,2.761,4.685c1.638,2.007,3.424,3.903,5.33,5.679
+ c1.73,1.086,3.461,2.78,5.689,2.412c3.406,0.69,6.821,1.5,10.3,1.675c3.599,0.709,7.18,1.565,10.834,1.905
+ c4.566,1.537,9.352,0.405,14-0.037c20.922-2.936,41.495-8.818,60.631-17.802c11.635-5.734,23.435-12.482,31.351-23.021
+ c2.163-2.2,3.875-4.943,5.017-7.796c1.74-2.844,2.992-5.965,3.774-9.195c0.856-2.375,1.611-4.805,1.896-7.309
+ c0.534-2.126,0.957-4.289,1.059-6.462c0.828-5.007,1.059-10.088,0.966-15.142C325.874,800.476,325.58,797.088,325.34,793.747z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M464.626,916.087c6.867-9.785,13.301-19.882,20.48-29.446
+ c13.439,15.666,27.053,31.186,40.068,47.211c-31.811,11.267-63.66,22.441-95.554,33.441
+ C441.071,950.08,452.982,933.18,464.626,916.087z"/>
+ <path fill="#010100" stroke="#010100" d="M919.523,938.335c17.701-3.212,34.564-10.521,49.024-21.198
+ c1.445,0.543,2.881,1.141,4.335,1.73c0.23,9.288-1.786,18.437-4.17,27.366c-2.835,10.383-5.909,20.812-11.055,30.33
+ c-6.278,11.708-12.859,23.454-21.815,33.358c-11.055,12.482-25.7,21.603-41.578,26.565c-22.082,7.124-46.06,8.358-68.741,3.452
+ c-13.651-3.065-27.062-8.873-37.123-18.815c-11.027-10.76-17.305-25.276-21.99-39.7c-4.685-14.829-6.627-30.412-6.94-45.922
+ c7.161,1.408,13.973,4.262,21.079,6.011c14.194,3.967,28.728,6.894,43.428,8.165c7.99,0.838,16.007-0.11,24.015-0.11
+ C872.119,948.147,896.235,944.934,919.523,938.335 M930.302,940.986c-8.496,2.347-16.679,5.771-25.368,7.428
+ c0.672,7.539,2.283,14.948,3.369,22.441c11.81-3.82,22.386-10.539,32.447-17.673c8.109-5.283,16.145-10.797,23.518-17.075
+ c1.114-4.105,1.712-8.33,2.577-12.491C955.219,930.474,943.243,936.963,930.302,940.986 M764.396,941.391
+ c1.178,7.981,2.577,15.924,3.59,23.923c16.311,6.047,33.146,11.018,50.479,13.034c0.018-8.192,0.037-16.394-0.009-24.586
+ C799.917,953.228,780.918,950.264,764.396,941.391 M946.704,954.82c-3.12,1.73-6.103,3.691-9.039,5.716
+ c-3.636,2.126-7.281,4.234-10.871,6.453c-4.888,2.494-9.886,4.796-14.755,7.345c-4.124,1.215-8.109,2.835-12.169,4.243
+ c-15.271,5.311-31.416,7.281-47.441,8.542c-8.137,0.469-16.246-0.405-24.374-0.442c-4.713-0.911-9.462-1.519-14.212-2.154
+ c-4.271-0.718-8.432-2.053-12.73-2.485c-4.308-1.27-8.56-2.761-12.96-3.627c-6.121-2.044-12.279-3.995-18.419-5.974
+ c1.381,4.391,2.412,8.929,4.51,13.052c3.019,10.144,7.787,19.845,13.825,28.553c7.824,11.193,20.692,17.977,33.947,20.287
+ c3.019-3.13,5.081-7.042,7.778-10.438c1.105-1.141,2.007-2.467,3.01-3.691c2.043-2.366,4.096-4.722,6.204-7.023
+ c2.43-2.209,4.842-4.437,7.134-6.793c3.111-1.777,5.633-4.4,8.257-6.793c3.958-2.007,7.493-4.731,11.211-7.134
+ c4.768-1.049,8.956-3.875,13.715-5.053c8.211-2.789,16.881-3.36,25.433-4.096c3.866,0.571,7.732,1.206,11.561,2.016
+ c2.2,1.491,4.308,3.13,6.305,4.915c0.607,2.899,0.838,5.854,0.902,8.818c-3.093,9.591-9.113,17.701-14.323,26.178
+ c13.503-10.475,26.279-22.386,35.457-36.929c8.293-13.255,14.599-27.844,17.655-43.207
+ C957.078,948.285,952.016,951.755,946.704,954.82 M864.396,953.578c-0.018,8.505-0.009,17.02,0,25.525
+ c14.184-1.408,28.461-3.295,42.038-7.806c-1.252-7.447-2.522-14.893-3.774-22.34C890.068,951.562,877.255,953.2,864.396,953.578
+ M820.14,953.845c0.046,8.257-0.037,16.523,0.046,24.788c14.12,1.335,28.332,1.684,42.48,0.497c0-8.468,0-16.937,0-25.396
+ c-9.481,0.479-18.989,0.497-28.461-0.129C829.51,953.09,824.834,954.13,820.14,953.845 M892.351,993.084
+ c-1.85,1.749-3.645,3.553-5.293,5.495c-1.537,1.767-3.028,3.581-4.446,5.449c-1.326,2.099-2.559,4.243-3.673,6.462
+ c-0.654,2.191-1.243,4.4-1.657,6.664c-0.405,1.712-0.193,4.234-2.43,4.612c-0.156-2.955-0.101-5.909,0.147-8.855
+ c0.672-2.531,1.565-4.998,2.587-7.401c2.062-1.924,3.663-4.28,5.504-6.397c2.347-2.412,4.547-4.961,6.489-7.714
+ c-5.633,0.902-11.239,2.062-16.587,4.078c-4.483,1.73-8.864,3.746-12.85,6.462c-3.59,1.74-6.968,3.903-9.96,6.554
+ c-3.231,2.614-6.305,5.431-9.085,8.524c-5.201,5.836-10.006,12.012-14.313,18.529c10.65,1.648,21.383,2.743,32.143,3.341
+ c10.447,0.037,21.042-1.243,30.836-5.044c3.516-1.427,7.52-2.163,10.245-5.035c1.105-1.979,2.347-3.875,3.599-5.753
+ c1.537-2.384,3.019-4.814,4.556-7.198c1.224-2.108,2.43-4.216,3.682-6.296c0.598-1.657,1.197-3.314,1.777-4.971l0.589,0.092
+ c0.46-1.648,0.957-3.277,1.5-4.878c0.764-2.522,2.283-6.075-0.755-7.686c-5.293-2.789-11.616-1.942-17.378-1.832
+ C895.37,990.13,893.685,991.501,892.351,993.084z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M930.302,940.986c12.942-4.022,24.917-10.512,36.543-17.369
+ c-0.865,4.161-1.464,8.385-2.577,12.491c-7.373,6.278-15.409,11.791-23.518,17.075c-10.061,7.134-20.637,13.853-32.447,17.673
+ c-1.086-7.493-2.697-14.902-3.369-22.441C913.623,946.757,921.806,943.333,930.302,940.986z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M764.396,941.391c16.522,8.873,35.521,11.837,54.059,12.371
+ c0.046,8.192,0.028,16.393,0.009,24.586c-17.332-2.016-34.168-6.986-50.479-13.034
+ C766.973,957.315,765.574,949.371,764.396,941.391z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M864.396,953.578c12.859-0.377,25.672-2.016,38.264-4.621
+ c1.252,7.447,2.522,14.893,3.774,22.34c-13.577,4.51-27.853,6.397-42.038,7.806C864.387,970.597,864.377,962.083,864.396,953.578z"
+ />
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M820.14,953.845c4.694,0.285,9.37-0.755,14.065-0.239
+ c9.472,0.626,18.98,0.608,28.461,0.129c0,8.459,0,16.927,0,25.396c-14.148,1.187-28.36,0.838-42.48-0.497
+ C820.103,970.367,820.186,962.101,820.14,953.845z"/>
+ <path fill="#FFD800" stroke="#FFD800" d="M555.219,998.478c1.997-6.278,3.903-12.592,6.314-18.722
+ c11.653,15.915,22.837,32.17,33.137,48.997c-19.496,9.821-39.102,19.413-58.864,28.682
+ C542.24,1037.773,548.702,1018.121,555.219,998.478z"/>
+ <g>
+ <radialGradient id="SVGID_4_" cx="882.4555" cy="969.4006" r="97.0879" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#540403"/>
+ <stop offset="1" style="stop-color:#FE0E0A"/>
+ </radialGradient>
+ <path fill="url(#SVGID_4_)" stroke="#FE0E0A" d="M911.846,1009.561c-1.252,2.08-2.458,4.188-3.682,6.296
+ c-1.537,2.384-3.019,4.814-4.556,7.198c-1.252,1.878-2.494,3.774-3.599,5.753c-2.725,2.872-6.729,3.608-10.245,5.035
+ c-9.794,3.802-20.388,5.081-30.836,5.044c-10.76-0.598-21.493-1.694-32.143-3.341c4.308-6.517,9.113-12.693,14.313-18.529
+ c2.78-3.093,5.854-5.909,9.085-8.524c2.992-2.651,6.37-4.814,9.96-6.554c3.986-2.715,8.367-4.731,12.85-6.462
+ c5.348-2.016,10.954-3.176,16.587-4.078c-1.942,2.752-4.142,5.302-6.489,7.714c-1.841,2.117-3.443,4.473-5.504,6.397
+ c-1.022,2.402-1.915,4.869-2.587,7.401c-0.249,2.945-0.304,5.9-0.147,8.855c2.237-0.377,2.025-2.9,2.43-4.612
+ c0.414-2.264,1.003-4.473,1.657-6.664c1.114-2.218,2.347-4.363,3.673-6.462c1.418-1.869,2.909-3.682,4.446-5.449
+ c1.648-1.942,3.443-3.746,5.293-5.495c1.335-1.583,3.019-2.955,5.228-2.798c5.762-0.11,12.086-0.957,17.378,1.832
+ c3.038,1.611,1.519,5.164,0.755,7.686c-0.543,1.602-1.04,3.231-1.5,4.878l-0.589-0.092
+ C913.043,1006.247,912.444,1007.904,911.846,1009.561z M946.704,954.82c-3.12,1.73-6.103,3.691-9.039,5.716
+ c-3.636,2.126-7.281,4.234-10.871,6.453c-4.888,2.494-9.886,4.796-14.755,7.345c-4.124,1.215-8.109,2.835-12.169,4.243
+ c-15.271,5.311-31.416,7.281-47.441,8.542c-8.137,0.469-16.246-0.405-24.374-0.442c-4.713-0.911-9.462-1.519-14.212-2.154
+ c-4.271-0.718-8.432-2.053-12.73-2.485c-4.308-1.27-8.56-2.761-12.96-3.627c-6.121-2.044-12.279-3.995-18.419-5.974
+ c1.381,4.391,2.412,8.929,4.51,13.052c3.019,10.144,7.787,19.845,13.825,28.553c7.824,11.193,20.692,17.977,33.947,20.287
+ c3.019-3.13,5.081-7.042,7.778-10.438c1.105-1.141,2.007-2.467,3.01-3.691c2.043-2.366,4.096-4.722,6.204-7.023
+ c2.43-2.209,4.842-4.437,7.134-6.793c3.111-1.777,5.633-4.4,8.257-6.793c3.958-2.007,7.493-4.731,11.211-7.134
+ c4.768-1.049,8.956-3.875,13.715-5.053c8.211-2.789,16.881-3.36,25.433-4.096c3.866,0.571,7.732,1.206,11.561,2.016
+ c2.2,1.491,4.308,3.13,6.305,4.915c0.607,2.899,0.838,5.854,0.902,8.818c-3.093,9.591-9.113,17.701-14.323,26.178
+ c13.503-10.475,26.279-22.386,35.457-36.929c8.293-13.255,14.599-27.844,17.655-43.207
+ C957.078,948.285,952.016,951.755,946.704,954.82z"/>
+ </g>
+ <path fill="#FFD800" stroke="#FFD800" d="M1153.829,1035.481c7.465-5.689,14.369-12.058,21.235-18.456
+ c6.379,18.962,12.206,38.135,19.109,56.913c1.473,6.931,4.262,13.476,6.25,20.269c5.293,16.338,10.926,32.566,15.989,48.978
+ c-30.551-21.861-61.129-43.704-91.522-65.786c3.967-9.057,8.883-17.71,14.709-25.699
+ C1143.915,1045.956,1147.965,1039.798,1153.829,1035.481z"/>
+ <path opacity="0.44" fill="#030303" stroke="#030303" enable-background="new " d="M1092.958,1251.488
+ c-0.027-1.924,0.276-3.811,0.838-5.624c-1.224,23.094,1.132,46.143,1.427,69.229c-0.074,2.163,0.69,4.225,1.648,6.158
+ c-0.718,0.064-1.427,0.138-2.117,0.239C1093.897,1298.165,1092.332,1274.84,1092.958,1251.488z"/>
+ <path opacity="0.66" fill="#191819" stroke="#191819" enable-background="new " d="M666.771,1267.725
+ c0.506,2.623,0.644,5.302,0.479,7.981C665.767,1273.276,666.587,1270.358,666.771,1267.725z"/>
+ <path opacity="0.67" fill="#171717" stroke="#171717" enable-background="new " d="M667.756,1286.125
+ c0.893,12.795,2.191,25.7,1.141,38.522c-1.077-7.262,0.156-14.608-0.81-21.861C667.719,1297.236,667.627,1291.676,667.756,1286.125
+ z"/>
+ <path opacity="0.18" stroke="#000000" enable-background="new " d="M668.087,1302.786c0.966,7.253-0.267,14.599,0.81,21.861
+ c0.138,6.37,0.295,12.776-0.396,19.137c-1.776,14.654-3.663,29.299-5.044,43.999c-1.924,21.465-3.351,43.198-0.488,64.654
+ c-1.095-1.059-1.869-2.366-1.859-3.903c-0.663-8.293-1.951-16.578-1.565-24.917c1.224-24.079,3.378-48.104,6.646-71.999
+ c1.684-10.871,1.464-21.935,0.709-32.87C666.771,1313.408,666.2,1307.895,668.087,1302.786z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M1085.797,1341.179c19.008-10.724,40.491-16.523,62.132-18.686
+ c6.37-0.405,12.776-0.129,19.136,0.331c-1.344,9.545,3.01,18.511,3.719,27.89c2.421,15.353,11.009,28.811,20.204,41.007
+ c10.815,13.881,23.131,26.73,37.288,37.242c11.23,8.45,24.393,14.645,38.421,16.43c5.955,0.994,12.049,0.469,18.004,1.574
+ c-9.978,12.905-20.37,25.589-28.535,39.774c-9.113,15.409-14.709,32.796-25.488,47.229c-10.935,14.166-26.381,23.767-41.265,33.247
+ c-7.833,5.504-18.207,6.876-27.356,4.4c-8.229-2.301-15.841-6.416-22.828-11.257c-4.391-3.194-8.818-6.554-12.04-10.99
+ c-2.2-3.378-3.894-7.484-3.194-11.57c0.341-3.047,1.298-6.627-0.893-9.205c-2.356-2.439-6.084-1.721-9.122-2.025
+ c-12.426-1.611-23.739-8.275-32.299-17.259c-10.604-10.935-19.413-23.61-26.381-37.141c-5.099-10.033-9.067-21.65-5.983-32.916
+ c1.178-5.67,4.593-10.521,8.542-14.617c4.022-3.939,9.637-5.431,14.792-7.272c3.645-1.546,7.631-0.727,11.432-0.46
+ c-0.147,4.28-1.648,8.312-3.452,12.15c1.684,0.773,3.369,1.565,5.063,2.393c1.657-3.36,3.185-6.848,3.691-10.585
+ c0.718-4.593-0.12-9.205-0.166-13.798c-0.064-4.298,0.976-8.496,1.666-12.702c-1.868-0.387-3.709-0.755-5.56-1.105
+ c-0.939,4.556-1.786,9.15-1.915,13.825c-6.508,0.285-13.117,0.672-19.357,2.679c-3.139,1.252-7.364,0.598-9.527-2.126
+ c-1.648-2.955-1.878-6.471-1.997-9.766c0.469-10.567,1.491-21.502,6.397-31.057
+ C1064.377,1355.299,1075.055,1347.42,1085.797,1341.179z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M1032.133,1327.924c-20.342,8.883-41.108,16.854-62.426,23.049
+ c-7.778,2.375-15.786,3.884-23.592,6.13c-4.639,0.469-9.269,1.482-13.789,2.633c-2.936-0.138-5.799,0.764-8.689,1.058
+ c-3.636,0.69-7.401,0.58-10.954,1.648c-3.838-0.267-7.658,0.451-11.46,0.755c-6.103,0.414-12.224,0.258-18.308,0.764
+ c-5.339,0.414-10.65-0.654-15.97-0.193c-25.838-1.068-51.74-4.97-76.261-13.402c-20.747-7.088-40.142-17.802-57.76-30.79
+ c-12.656-9.057-23.987-19.735-35.723-29.897c0.101,8.781,1.335,17.526,0.838,26.316c0.11,1.749-0.69,4.041,1.022,5.274
+ c22.671,21.235,46.511,41.817,74.208,56.259c16.734,8.8,34.849,14.939,53.507,18.041c24.061,4.161,48.675,4.612,72.984,2.623
+ c5.873-0.184,11.736-1.022,17.59-1.666c6.48-0.7,12.923-1.73,19.358-2.771c4.612-1.031,9.545-1.123,13.945-2.89
+ c4.096-0.083,8.026-1.445,12.031-2.237c28.562-6.471,56.278-16.394,82.686-29.032c3.286-1.758,7.447-2.642,9.416-6.13
+ c3.452-5.348,7.934-9.904,11.957-14.792c0.838-4.409,0.525-8.947,0.967-13.393c0.488-4.658,0.884-9.334,0.93-14.01
+ C1056.425,1316.713,1044.403,1322.613,1032.133,1327.924z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M1300.248,1381.882c-1.178-3.461-3.516-6.388-5.311-9.536
+ c-0.957-1.602-1.924-3.194-2.844-4.786c-3.452,2.642-7.097,5.081-10.263,8.063c-5.081,3.36-9.849,7.18-14.691,10.88
+ c-3.875,2.126-6.379,5.836-9.674,8.634c-6.057,3.406-12.712-0.396-18.363-2.798c-2.412-2.016-5.035-3.746-7.474-5.688
+ c-10.521-9.104-19.183-20.609-23.454-33.965c-0.138-3.866-1.252-8.045,0.847-11.598c1.979-3.194,4.786-5.744,7.014-8.754
+ c3.222-3.608,6.296-7.336,9.435-11.009c2.071-2.458,4.161-4.906,6.222-7.373c-11.681-3.166-24.438-4.869-36.147-0.957
+ c-2.191,0.589-4.409,1.371-5.974,3.093c-2.918,2.89-6.204,5.56-8.33,9.14c-2.163,4.786-2.485,10.273-1.454,15.4
+ c1.095,6.112,1.942,12.399,4.427,18.152c0.654,4.52,2.927,8.634,4.777,12.776c7.06,13.954,17.02,26.445,28.59,36.902
+ c4.409,4.602,9.49,8.514,14.617,12.307c4.216,2.955,8.478,5.928,13.144,8.165c4.345,2.209,8.8,4.538,13.595,5.587
+ c10.346,3.746,21.456,5.228,32.419,5.753c5.642-8.514,11.156-17.222,14.967-26.74c1.141-3.212,2.587-6.489,2.679-9.923
+ C1307.612,1395.882,1304.381,1388.51,1300.248,1381.882z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M993.648,1395.128c-17.112,5.366-34.702,8.956-52.274,12.408
+ c-5.928,0.626-11.902,1.473-17.737,2.761c-1.298-0.341-2.642,0.009-3.921,0.11c-22.358,2.835-44.937,3.295-67.434,2.356
+ c-21.695-1.869-43.538-5.247-63.927-13.2c-19.928-7.511-38.42-18.437-55.477-31.121c-12.887-9.37-24.632-20.167-36.754-30.44
+ c-1.546,9.555-3.102,19.109-4.897,28.618c-0.285,1.151,0.092,2.053,1.141,2.715c25.083,20.545,51.546,40.041,81.526,52.854
+ c17.59,7.677,36.165,12.923,55.007,16.458c22.653,4.225,45.729,6.075,68.768,5.633c10.438-0.156,20.858-0.976,31.213-2.182
+ c4.197-0.644,8.652-0.626,12.638-2.117c5.9-0.221,11.598-1.97,17.332-3.194c29.584-7.06,57.272-20.444,82.898-36.598
+ c0.957-8.063,0.635-16.348,2.448-24.346C1027.78,1383.327,1010.917,1389.881,993.648,1395.128z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M1048.021,1413.04c-12.38,7.806-25.239,14.847-38.522,21.005
+ c-15.022,6.821-30.385,13.393-46.714,16.348l-0.147,0.377c-5.449,0.69-10.816,1.951-16.255,2.697
+ c-11.027,1.675-22.147,2.679-33.247,3.608c-24.825,1.5-49.816,1.684-74.549-1.151c-21.53-2.32-42.811-7.576-62.583-16.486
+ c-13.025-5.937-25.598-12.85-37.988-20.011c-17.222-10.061-33.027-22.294-48.803-34.444c-0.175,7.042-0.966,14.065-0.736,21.125
+ c12.748,12.61,26.068,24.844,41.292,34.426c7.161,4.713,15.013,8.211,22.229,12.841c26.5,15.814,56.186,25.865,86.598,30.734
+ c19.864,3.268,40.031,4.878,60.171,4.299c9.407,0.138,18.796-0.865,28.157-1.712c7.603-1.031,15.381-1.648,22.763-3.765
+ c4.142-0.35,8.137-1.547,12.15-2.55c20.803-5.293,40.685-13.789,59.426-24.19c5.219-2.448,9.72-6.195,13.209-10.76
+ c0.405-3.369,0.626-6.821,2.025-9.96c2.642-7.005,8.643-11.791,13.255-17.443C1049.19,1416.345,1048.61,1414.679,1048.021,1413.04z
+ "/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M1038.374,1462.755c-22.561,13.411-46.613,24.641-72.101,31.176
+ c-8.781,2.467-17.839,3.654-26.721,5.633c-5.136,0.028-10.171,1.289-15.28,1.758c-4.087,0.653-8.192,1.104-12.251,1.841
+ c-28.305,3.102-57.005,1.197-84.904-4.28c-35.862-7.134-71.208-20.048-100.644-42.167c-13.052-10.089-26.178-20.103-38.328-31.287
+ c-0.7,4.851-0.81,9.794-0.571,14.691c9.812,13.927,21.732,26.473,35.42,36.672c11.055,8.349,23.509,14.636,36.34,19.753
+ c21.005,8.358,42.949,14.12,65.059,18.732c18.317,3.866,36.975,6.167,55.661,7.078c10.153,0.368,20.315,0.948,30.477,0.856
+ c5.56-0.497,11.138-0.331,16.707-0.727c4.354,0.055,8.763-0.258,13.052-1.031c1.427,0.064,2.863,0.037,4.317-0.055
+ c18.962-1.988,37.905-5.523,55.734-12.463c17.148-6.471,33.109-15.878,47.542-27.154
+ C1044.33,1475.641,1041.053,1469.327,1038.374,1462.755z"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M1055.697,1493.738c-8.79,6.591-17.903,12.804-27.587,18.014
+ c-20.711,11.377-43.621,18.502-66.983,21.834c-7.732,1.316-15.602,1.537-23.334,2.771c-4.676-0.083-9.416-0.037-14.01,0.856
+ c-10.917-0.221-21.898,0.074-32.842-0.175c-5.79-0.939-11.718-0.313-17.526-1.151c-12.169-0.727-24.3-2.007-36.377-3.636
+ c-36.736-5.182-74.034-13.512-106.084-33.008c-13.899-8.201-26.123-18.805-38.016-29.63c-0.359,4.308-0.166,8.652-0.654,12.969
+ c-0.746,4.427,1.813,8.367,3.415,12.307c6.213,14.184,14.764,27.706,26.915,37.528c12.518,10.438,27.651,17.213,43.096,22.073
+ c20.885,6.397,42.563,9.729,64.231,12.132c23.803,2.347,47.736,3.443,71.659,2.807c7.345,0.092,14.746-0.285,22.036-1.059
+ c8.266,0.101,16.504-1.16,24.724-1.951c13.862-1.546,27.66-3.894,41.173-7.373c15.519-4.059,30.91-10.07,43.492-20.26
+ c12.795-10.088,21.41-24.853,25.58-40.473C1057.87,1496.637,1056.692,1495.229,1055.697,1493.738z"/>
+ <path fill="#4C4C4C" stroke="#4C4C4C" d="M743.869,1577.261c0.957-1.307,2.679-0.368,3.94-0.166
+ c19.284,5.688,38.614,11.313,58.321,15.409c40.556,8.459,82.483,11.718,123.739,7.078c20.112-2.338,39.93-6.655,59.61-11.359
+ c4.013-0.81,8.201-1.878,12.279-0.764c-0.506,8.818-6.296,15.952-12.27,21.926c-10.429,10.153-22.183,19.146-35.457,25.258
+ c-13.89,6.637-29.133,9.941-44.376,11.57c-25.064,2.531-50.405,1.5-75.331-1.942c-23.914-3.617-48.647-8.919-68.584-23.389
+ c-6.627-5.274-13.476-10.889-17.268-18.64c-2.458-4.842-5.873-9.223-7.575-14.415
+ C739.644,1584.073,741.448,1580.096,743.869,1577.261z"/>
+ <path opacity="0.48" stroke="#000000" enable-background="new " d="M840.381,1652.722c2.384,0.184,4.777,0.359,7.18,0.608
+ c21.557,2.541,43.336,2.053,64.985,1.206c-3.01,1.141-6.268,0.847-9.416,1.086c-12.537,0.957-25.156,0.773-37.693-0.156
+ C857.069,1655.004,848.49,1654.995,840.381,1652.722z"/>
+</g>
+</svg>
diff --git a/slides/2019-it-intro-computer-structure/img/logo.png b/slides/2019-it-intro-computer-structure/img/logo.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/logo.png diff --git a/slides/2019-it-intro-computer-structure/img/mbp.png b/slides/2019-it-intro-computer-structure/img/mbp.png Binary files differnew file mode 100644 index 0000000..f491eba --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/mbp.png diff --git a/slides/2019-it-intro-computer-structure/img/memory.tex b/slides/2019-it-intro-computer-structure/img/memory.tex new file mode 100644 index 0000000..b15dc92 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/memory.tex @@ -0,0 +1,50 @@ +\begin{tikzpicture}[ mem/.style={ + draw=lightGray, + top color=lightGray, + bottom color=white, + rounded rectangle, + shading=axis, + minimum width=2cm, + }, + plain/.style={ + draw=none, + }, + arrow/.style={ + thick, + decoration={ + markings, + mark=at position 1 with {\arrow[semithick]{open triangle 60}} + }, + double distance=1.4pt, shorten >= 5.5pt, + preaction = {decorate}, + postaction = {draw,line width=1.4pt, white,shorten >= 4.5pt} + }, +] + \node at (0, 2) [mem] (hdd) {HDD}; + \node[below=12pt of hdd, mem] (ssd) {SSD}; + \node[below=12pt of ssd, mem] (ram) {RAM}; + \node[below=12pt of ram, mem] (cache) {Cache}; + \node[below=12pt of cache, mem] (register) {Register}; + + \node[left=6pt of hdd, plain] {TB}; + \node[left=6pt of ssd, plain] {GB}; + \node[left=6pt of ram, plain] {GB}; + \node[left=6pt of cache, plain] {MB}; + \node[left=6pt of register, plain] {bits}; + + \node[right=6pt of hdd, plain] {persistent}; + \node[right=6pt of ssd, plain] {persistent}; + \node[right=6pt of ram, plain] {volatile}; + \node[right=6pt of cache, plain] {volatile}; + \node[right=6pt of register, plain] {volatile}; + + \draw[arrow] + ($ (current bounding box.south west) + (-0.5,0) $) -- + (current bounding box.north west); + \draw[arrow] + ($ (current bounding box.north east) + (0.5,0) $) -- + (current bounding box.south east); + + \node[above=0pt of current bounding box.north west] {largest}; + \node[below=0pt of current bounding box.south east] {fastest}; +\end{tikzpicture} diff --git a/slides/2019-it-intro-computer-structure/img/moderkort.pdf b/slides/2019-it-intro-computer-structure/img/moderkort.pdf Binary files differnew file mode 100644 index 0000000..d9bdc30 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/moderkort.pdf diff --git a/slides/2019-it-intro-computer-structure/img/moores-law.png b/slides/2019-it-intro-computer-structure/img/moores-law.png Binary files differnew file mode 100644 index 0000000..74772df --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/moores-law.png diff --git a/slides/2019-it-intro-computer-structure/img/motherboard.jpg b/slides/2019-it-intro-computer-structure/img/motherboard.jpg Binary files differnew file mode 100644 index 0000000..b3ad2cf --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/motherboard.jpg diff --git a/slides/2019-it-intro-computer-structure/img/network-card.jpg b/slides/2019-it-intro-computer-structure/img/network-card.jpg Binary files differnew file mode 100644 index 0000000..93a4d21 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/network-card.jpg diff --git a/slides/2019-it-intro-computer-structure/img/new-motherboard.jpg b/slides/2019-it-intro-computer-structure/img/new-motherboard.jpg Binary files differnew file mode 100644 index 0000000..c2318d3 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/new-motherboard.jpg diff --git a/slides/2019-it-intro-computer-structure/img/new-motherboard2.jpg b/slides/2019-it-intro-computer-structure/img/new-motherboard2.jpg Binary files differnew file mode 100644 index 0000000..b55e065 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/new-motherboard2.jpg diff --git a/slides/2019-it-intro-computer-structure/img/pc-cat.jpg b/slides/2019-it-intro-computer-structure/img/pc-cat.jpg Binary files differnew file mode 100644 index 0000000..202ab4f --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/pc-cat.jpg diff --git a/slides/2019-it-intro-computer-structure/img/qleft.pdf b/slides/2019-it-intro-computer-structure/img/qleft.pdf Binary files differnew file mode 100644 index 0000000..f35a078 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/qleft.pdf diff --git a/slides/2019-it-intro-computer-structure/img/qright.pdf b/slides/2019-it-intro-computer-structure/img/qright.pdf Binary files differnew file mode 100644 index 0000000..da2e8e3 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/qright.pdf diff --git a/slides/2019-it-intro-computer-structure/img/ram.png b/slides/2019-it-intro-computer-structure/img/ram.png Binary files differnew file mode 100644 index 0000000..4ddd0d8 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/ram.png diff --git a/slides/2019-it-intro-computer-structure/img/raspberrypi.jpg b/slides/2019-it-intro-computer-structure/img/raspberrypi.jpg Binary files differnew file mode 100644 index 0000000..7e44705 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/raspberrypi.jpg diff --git a/slides/2019-it-intro-computer-structure/img/ssd.png b/slides/2019-it-intro-computer-structure/img/ssd.png Binary files differnew file mode 100644 index 0000000..10733c9 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/ssd.png diff --git a/slides/2019-it-intro-computer-structure/img/ty.pdf b/slides/2019-it-intro-computer-structure/img/ty.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/ty.pdf diff --git a/slides/2019-it-intro-computer-structure/img/usb.jpg b/slides/2019-it-intro-computer-structure/img/usb.jpg Binary files differnew file mode 100644 index 0000000..5a6040f --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/usb.jpg diff --git a/slides/2019-it-intro-computer-structure/img/usb1.jpg b/slides/2019-it-intro-computer-structure/img/usb1.jpg Binary files differnew file mode 100644 index 0000000..1723b4f --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/usb1.jpg diff --git a/slides/2019-it-intro-computer-structure/img/usb2.jpg b/slides/2019-it-intro-computer-structure/img/usb2.jpg Binary files differnew file mode 100644 index 0000000..bef5497 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/usb2.jpg diff --git a/slides/2019-it-intro-computer-structure/img/video.png b/slides/2019-it-intro-computer-structure/img/video.png Binary files differnew file mode 100644 index 0000000..fd5f338 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/video.png diff --git a/slides/2019-it-intro-computer-structure/img/z3.jpg b/slides/2019-it-intro-computer-structure/img/z3.jpg Binary files differnew file mode 100644 index 0000000..be1f262 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/img/z3.jpg diff --git a/slides/2019-it-intro-computer-structure/main.tex b/slides/2019-it-intro-computer-structure/main.tex new file mode 100644 index 0000000..50976fa --- /dev/null +++ b/slides/2019-it-intro-computer-structure/main.tex @@ -0,0 +1,26 @@ +\pdfminorversion=4 +\documentclass[aspectratio=169]{beamer} +%\documentclass[handout,aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + Computer Structure +} +%\subtitle{% +%} +\author{% + Rasmus Dahlberg +} +\institute{% + Karlstad University +} +\date{% + \today +} +\begin{document} + \input{src/titlepage} + \input{src/body} + \input{src/questions} +\end{document} diff --git a/slides/2019-it-intro-computer-structure/slides.pdf b/slides/2019-it-intro-computer-structure/slides.pdf Binary files differnew file mode 100644 index 0000000..f95eadd --- /dev/null +++ b/slides/2019-it-intro-computer-structure/slides.pdf diff --git a/slides/2019-it-intro-computer-structure/src/body.tex b/slides/2019-it-intro-computer-structure/src/body.tex new file mode 100644 index 0000000..5f98f22 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/src/body.tex @@ -0,0 +1,601 @@ +\begin{frame} + \frametitle{Motivation} + \begin{columns} + \begin{column}{0.59\linewidth} + \includegraphics[height=0.8\textheight]{img/computers-everywhere} + %\burl{http://images.slideplayer.com/26/8674558/slides/slide_3.jpg} + \end{column} + \begin{column}{0.39\linewidth} + \begin{itemize} + \item What can a computer do? + \item How do you choose one? + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Learning outcome based on syllabus} + \begin{itemize} + \item Describe the components of a computer and their interaction + (ISGA01) + \item Give an account of the components of a computer and their + interaction (ISGA06) + \item Give an account of the components of a computer and how they interact + (ISGA90) + \end{itemize} + \vfill\centering + \smartdiagramset{ + sequence item height=1.75cm, + sequence item width=2.5cm, + sequence item text width = 2.4cm, + } + \smartdiagram[sequence diagram]{% + What is a computer?,% + How is information processed?,% + Hardware components and purpose?% + } +\end{frame} + +%\begin{frame} +% \frametitle{The first computers} +% %The first computer? Z3 by Konrad Zuse (Germany, 1941)} +% \begin{columns} +% \begin{column}{0.59\textwidth} +% \includegraphics[width=\textwidth]{img/z3} +% %\burl{https://www.livescience.com/20718-computer-history.html} +% \end{column} +% \begin{column}{0.39\textwidth} +% % Say but not in slide: +% % - Brief history of Zuse (it's a funny story) +% % - Z3 destroyed in world-war II, rebuild in 1960 and now in museum +% % - MUL -> 3s :) +% \begin{itemize} +% \item 2000 `brain cells' +% \item Program is a punched film\footnotemark +% \item Keyboard for input +% \item Lamps for output +% \end{itemize} +% Other: +% \begin{itemize} +% \item ENIAC (1946) +% \end{itemize} +% \end{column} +% \end{columns} +% \footnotetext[1]{\tiny{Play with punch cards: \burl{https://www.vintageisthenewold.com/living-like-the-pioneers-code-fortran-in-a-punch-card/}}} +%\end{frame} + +\begin{frame} + \frametitle{A typical computer} + \centering\includegraphics[width=0.7\textwidth]{img/binary} + %\burl{http://amusementpark3.blogspot.com/2010/10/blog-entry-41.html} +\end{frame} + +\begin{frame} + \frametitle{Current computer definitions in Swedish and English} + \begin{itemize} + \item Digital enhet f\"{o}r ber\"{a}kning, symbolbehandling och + kommunikation\footnote{% + \burl{https://www.ne.se/uppslagsverk/encyklopedi/l\%C3\%A5ng/dator} + } + \item An electronic device for storing and processing data, typically in + binary form, according to instructions given to it in a variable program% + \footnote{% + \burl{https://en.oxforddictionaries.com/definition/computer} + } + \item A computer is a device that can be instructed to carry out sequences + of arithmetic or logical operations automatically via computer + programming\footnote{% + \burl{https://en.wikipedia.org/wiki/Computer} + } + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Information theory} + \begin{columns} + \begin{column}{0.79\textwidth} + \begin{itemize} + \item The smallest piece of information is binary + \item One `bit' represents a zero or a one + \item Example of sending a single bit? + \item Example of sending multiple bits? + % + \end{itemize} + \end{column} + \begin{column}{0.19\textwidth} + \centering\includegraphics[width=\textwidth]{img/light-bulb} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{What does this mean?} + \centering\Huge{\texttt{% + 01011001% + 01101111% + 01100100% + 01100001% + }} + \large\vfill\pause + \alert{Many different things...} + \vfill + \centering + \begin{itemize} + \item 32-bit unsigned integer: 1500472417 + \item 32-bit floating point: $4.21143045\cdot 10^{15}$ + \item Groups of 8 bits: 89,~111,~100,~97 + \begin{itemize} + \item Byte + \item Number between 0--255 (\alert{why?}) + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Information theory continued} + \begin{columns} + \begin{column}{0.49\textwidth} + Decimal numbers as we know them: + \begin{flalign*} + 107 &= + \textcolor{red}{1}\cdot100 + + \textcolor{red}{0}\cdot10 + + \textcolor{red}{7}\cdot1 \\ + &= + \textcolor{red}{1}\cdot\textcolor{blue}{10}^2 + + \textcolor{red}{0}\cdot\textcolor{blue}{10}^1 + + \textcolor{red}{7}\cdot\textcolor{blue}{10}^0 + \end{flalign*} + A position is associated with 0--9 \\ + A position is weighted by $10^i$, $i\geq0$\\ + This is known as base \textcolor{blue}{10} \\ + \vspace{1cm} + \pause + \alert{Why is this intuitive for us?} + \pause + \end{column} + \begin{column}{0.49\textwidth} + Binary numbers follow the same idea: + \begin{flalign*} + 1101 &= + \textcolor{red}{1}\cdot8 + + \textcolor{red}{1}\cdot4 + + \textcolor{red}{0}\cdot2 + + \textcolor{red}{1}\cdot1 \\ + &= + \textcolor{red}{1}\cdot\textcolor{blue}{2}^3 + + \textcolor{red}{1}\cdot\textcolor{blue}{2}^2 + + \textcolor{red}{0}\cdot\textcolor{blue}{2}^1 + + \textcolor{red}{1}\cdot\textcolor{blue}{2}^0 = 13 + \end{flalign*} + A position is associated with 0--1 \\ + A position is weighted by $2^i$, $i\geq0$\\ + This is known as base \textcolor{blue}{2} \\ + \vspace{1cm} + \pause + \alert{Why is this intuitive for a computer?} + \end{column} + \end{columns} + \centering + \vfill +\end{frame} + +\begin{frame} + \frametitle{Now you can proudly wear this T-shirt!} + \centering\includegraphics[height=0.8\textheight]{img/binary-joke} +\end{frame} + +\begin{frame} + \frametitle{Be aware of different unit systems} + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{tabular}{ccc} + \toprule + \textbf{unit} & \textbf{abbreviation} & \textbf{meaning} \\ + \midrule + kilo & k & $10^3$ \\ + mega & M & $10^6$ \\ + giga & G & $10^9$ \\ + tera & T & $10^{12}$ \\ + \bottomrule + \end{tabular}\\ + \vspace{6pt} + (Decimal numbers as we know them) + \vfill + \end{column} + \begin{column}{0.49\textwidth} + \begin{tabular}{ccc} + \toprule + \textbf{unit} & \textbf{abbreviation} & \textbf{meaning} \\ + \midrule + kibi & Ki & $2^{10}$ \\ + mebi & Mi & $2^{20}$ \\ + gibi & Gi & $2^{30}$ \\ + tebi & Ti & $2^{40}$ \\ + \bottomrule + \end{tabular}\\ + \vspace{6pt} + (Binary numbers, note $2^{10}=1024$)\\ + \end{column} + \end{columns} + \pause + \vfill\centering + \alert{``I bought a 500~GB hard drive, but Windows says it is 465.7~GB?''} +\end{frame} + +\begin{frame} + \frametitle{Amercian Standard Code for Information Interchange} + \begin{columns} + \begin{column}{0.79\textwidth} + \centering\includegraphics[height=0.9\textheight]{img/ascii} + %\burl{https://simple.wikipedia.org/wiki/ASCII\#/media/File:ASCII-Table-wide.svg} + \end{column} + \begin{column}{0.24\textwidth} + \begin{itemize} + \item 89: Y + \item 111: o + \item 100: d + \item 97: a + \pause + \item \aa, \"{a}, \"{o}? + \begin{itemize} + \item UTF-8 + \item UTF-16 + \item UTF-32 + \end{itemize} + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Divide yourself into small groups} + %% Name required (or optional) parts in a typical computer + \centering + \includegraphics[height=0.5\textheight]{img/group} + \\\Huge{Interactive exersice} +\end{frame} + +\begin{frame} + \frametitle{My office setup\footnote{\burl{https://www.dustinhome.se/favorites/index/9620211}}} + \begin{columns} + \begin{column}{0.49\textwidth} + Computer case containing: + \begin{itemize} + \item Central Processing Unit (CPU) + \item Random Access Memory (RAM) + \item Solid State Drive (SSD) + \item Hard drive (HDD) + \item Power Supply Unit (PSU) + \item Fan for CPU cooling + \item Motherboard + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[height=0.4\textheight]{img/case1} + \includegraphics[height=0.4\textheight]{img/case2} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Central Processing Unit (CPU) \titlefloatright{`Processor'}} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Does most of the computing + \item Instruction set + \begin{itemize} + \item load + \item store + \item add + \item conditional jump + \item ... + \end{itemize} + \item Registers + \item Clock speed + \item Number of cores + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \centering + \includegraphics[width=\textwidth]{img/cpu} + Intel Core i7 7700K / 4.2~GHz processor LGA1151 Socket + \end{column} + \end{columns} + \vfill\pause\centering\alert{Is faster clock speed always better?} +\end{frame} + +\begin{frame} + \frametitle{Gordon Moore predicted the number of transitors on a dense + integrated circuit} + \begin{columns} + \begin{column}{0.59\textwidth} + \includegraphics[width=\textwidth]{img/moores-law} + \burl{https://en.wikipedia.org/wiki/Moore\%27s\_law\#/media/File:Moore\%27s\_Law\_Transistor\_Count\_1971-2016.png} + \end{column} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Moore's law + \begin{itemize} + \item 1965: doubles every year + \item 1975: doubles every two years + \item $\approx$2025: dead + \end{itemize} + \item David House + \begin{itemize} + \item 18 months $\rightarrow$ 2x performance + \end{itemize} + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Different types of memory, all storing zeros and ones only!} + \begin{columns} + \begin{column}{0.49\textwidth} + \input{img/memory} + \end{column} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item HDD: `h\aa{}rddisk' + \item SSD: `typ en h\aa{}rddisk' + \item RAM: `internminne eller arbetsminne' + \item Cache: on and nearby the CPU + \item Register: on the CPU + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Different types of memory continued} + \begin{columns} + \begin{column}{0.33\textwidth} + \centering + HDD \\ + \includegraphics[width=\textwidth]{img/hdd}\\ + WD Blue 4TB 3.5" Serial ATA-600 \\ + \end{column} + \begin{column}{0.33\textwidth} + \centering + SSD \\ + \includegraphics[width=\textwidth]{img/ssd} \\ + Crucial MX500 500GB Serial ATA-600 \\ + \end{column} + \begin{column}{0.33\textwidth} + \centering + RAM \\ + \includegraphics[width=\textwidth]{img/ram} \\ + CORSAIR V LPX 32GB (2X16) DDR4 2400MHZ \\ + \end{column} + \end{columns} + \vspace{1cm} + + \pause + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{itemize} + % biggest different is no moving vs moving parts + % # most important from my point of view + % - life time: no moving parts -> survive longer + % - speed: no moving parts -> less work to do stuff + % - price per GB: ssd much more expensive due to underlying tech + % # important depending on use-case + % - noise (ssd < hdd) + % - temperature (ssd < hdd) + % - energy consumption (ssd < hdd) + % - weight (ssd < hdd) + % + % See more at: https://www.netonnet.se/Content/Info/ssd + \item Trade-offs between SSD and HDD? + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \begin{itemize} + % Depends on your use-case! + \item How much RAM do you need? + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Motherboard (or, the thing everything is attached to) + \titlefloatright{`Moderkort'}} + % ATX power connector: this is where you connect PSU + % IDE connector: for hard drive, dvd, etc (newer: SATA) + % North bridge or `memory controller': controls transfers between CPU + % and RAM; hence it is nearby both of these components + % South bridge or `input/output controller': manages controllers between + % peripheral devices. + % The term `bridge' is generally used when connecting two buses + % Dynamic Vs Static ram -> has to do with underlying tech; static is + % faster but more expensive + % CMOS Backup battery: to remember important stuff while shutdown, e.g., + % BIOS settings and date. + % AGP slot: for some graphic cards (legacy, nowadays PCI) + % PCI slots: attach various extension cards here (i.e., daughter boards), + % e.g., network, audio, and graphic cards + \begin{columns} + \begin{column}{0.69\textwidth} + \centering\includegraphics[width=\textwidth]{img/motherboard} + \end{column} + \begin{column}{0.29\textwidth} + Contains at least: + \begin{itemize} + \item Processor slot + \item Memory slot + \item Connectors, e.g., + \begin{itemize} + \item Power + \item SATA + \item SCSI + \item ... + \end{itemize} + \item Control circuits + \begin{itemize} + \item BIOS + \item Cache + \item ... + \end{itemize} + \end{itemize} + \end{column} + \end{columns} + \pause + \vfill + \centering\alert{What should you think about when you buy hardware?} + % BIOS: Basic Input Output System + % - the first software to run when a computer is started + % - identifies and configures hardware, e.g., hard drive, CPU, memory, etc. + % - instructs the computer how to perform a number basic operations, e.g., + % controlling the keyboard and booting the OS. +\end{frame} + +\begin{frame} + \frametitle{A newer motherboard: ASUS PRIME Z370-P \titlefloatright{Manual\footnote{% + \burl{https://www.asus.com/us/Motherboards/PRIME-Z370-P/HelpDesk\_Manual/} + }}} + \centering\includegraphics[height=0.85\textheight]{img/new-motherboard2} +\end{frame} + +\begin{frame} + \frametitle{A newer motherboard continued} + \centering\includegraphics[height=0.85\textheight]{img/moderkort} +\end{frame} + +\begin{frame} + \frametitle{Expantion cards usually use PCI(e)\titlefloatright{`Instickskort'}} + \begin{columns} + \begin{column}{0.33\textwidth} + \hfill + \centering + % - It's common with 2000+ cores + % - It has its own dedicated RAM (e.g., 8GB) + % - Not so general purpose as a CPU, but it's good at what it does... + % - Fun with GPUs? Cryptocurrency mining and password cracking! + \alert{Graphics card} for complex math, geometry, and coloring + (`grafikkort') + \includegraphics[height=0.4\textheight]{img/graphics-card} + %\burl{https://www.techpowerup.com/img/16-12-20/917a7803f315.jpg}\\ + \end{column} + \begin{column}{0.33\textwidth} + \hfill + \centering + \alert{Audio card} for enhanced sound experiences + (`ljudkort') + \includegraphics[height=0.4\textheight]{img/audio-card} + %\burl{https://images-na.ssl-images-amazon.com/images/I/411rdurQRkL.jpg} + \end{column} + \begin{column}{0.33\textwidth} + \hfill + \centering + % For special needs, e.g., WiFi or 10GBit/s Ethernet + \alert{Network card} for data exchange over a computer network + (`n\"{a}tverkskort') + \includegraphics[height=0.4\textheight]{img/network-card} + \end{column} + \end{columns} + \pause + \vspace{0.5cm} + \centering\alert{Is my office setup without graphics, sound, and Internet?!} +\end{frame} + +\begin{frame} + \frametitle{A few common external connectors} + \begin{columns} + \begin{column}{0.49\textwidth} + \vbox to 0.8\textwidth{% + \centering + \alert{USB}\vspace{6pt}\\ + \includegraphics[width=0.8\textwidth]{img/usb1} + \includegraphics[width=0.8\textwidth]{img/usb2} + %\burl{https://www.bhphotovideo.com/explora/amp/computers/tips-and-solutions/thunderbolt-3-usb-31-usb-type-c-making-sense-connections} + \vfill + External HDD and devices + } + \end{column} + \begin{column}{0.49\textwidth} + \vbox to 0.8\textwidth{% + \begin{columns} + \begin{column}{0.49\textwidth} + \centering\alert{HDMI}\vspace{6pt}\\ + \includegraphics[height=0.3\textheight]{img/hdmi} + \end{column} + \begin{column}{0.49\textwidth} + \centering\alert{DP}\vspace{6pt}\\ + \includegraphics[height=0.3\textheight]{img/dp} + \end{column} + \end{columns} + \centering\vfill + Mainly video and audio + } + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{You will find the same basic components in every computer---Raspberry Pi} + \begin{columns} + \begin{column}{0.69\textwidth} + \centering\includegraphics[height=0.8\textheight]{img/raspberrypi}\\ + \burl{https://www.raspberrypi.org/} + \end{column} + \begin{column}{0.29\textwidth} + All components are embedded on a SoC: + \begin{itemize} + \item CPU + \item Memory + \item Connectors + \item Control circuits + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{You will find the same basic components in every computer---MBP} + \centering\includegraphics[height=0.8\textheight]{img/mbp} + \burl{https://www.ifixit.com/Teardown/MacBook+Pro+15-Inch+Touch+Bar+Teardown/73395} +\end{frame} + + +\begin{frame} + \frametitle{You will find the same basic components in every computer---iPhone} + \centering\includegraphics[height=0.8\textheight]{img/iphone} + \burl{https://www.ifixit.com/Teardown/iPhone+5s+Teardown/17383} +\end{frame} + +\begin{frame} + \frametitle{In the labs you will (de)assemble a computer} + \begin{columns} + \begin{column}{0.59\textwidth} + \centering\includegraphics[width=\textwidth]{img/build-pc} + %\burl{https://cdn.fstoppers.com/styles/large-16-9/s3/lead/2017/05/best\_pc\_build\_for\_adobe\_premiere.jpg} + \end{column} + \begin{column}{0.39\textwidth} + \begin{itemize} + \item Be grounded + \item Be ``stern but fair'' + \item Be careful with cables + \begin{itemize} + \item Jank? No... + \item Pull? Gently! + \item Wiggle? If you must! + \end{itemize} + \item Attach in the right direction + \item Avoid touching circuit boards + \item Ask if you need help + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Nervous? Prepare yourself by watching a computer being built} + \centering\includegraphics[height=0.8\textheight]{img/video} + \burl{https://www.youtube.com/watch?v=0bUghCx9iso} +\end{frame} diff --git a/slides/2019-it-intro-computer-structure/src/preamble.tex b/slides/2019-it-intro-computer-structure/src/preamble.tex new file mode 100644 index 0000000..e91df78 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/src/preamble.tex @@ -0,0 +1,72 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{graphicx} +\usepackage{color} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +\usepackage{floatrow} +%\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +%\setbeamertemplate{itemize item}[circle] +%\setbeamertemplate{itemize subitem}[default] +%\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\titlefloatright}[1]{\hspace{0pt plus 1 filll}#1} diff --git a/slides/2019-it-intro-computer-structure/src/questions.tex b/slides/2019-it-intro-computer-structure/src/questions.tex new file mode 100644 index 0000000..85cb2f3 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/src/questions.tex @@ -0,0 +1,17 @@ +\begin{frame} + \frametitle{Any questions?} \label{frm:que} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qleft} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qright} + \end{column} + \end{columns} + + \centering + \vspace{-1cm} + \includegraphics[width=0.20\textwidth]{img/ty} +\end{frame} diff --git a/slides/2019-it-intro-computer-structure/src/titlepage.tex b/slides/2019-it-intro-computer-structure/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2019-it-intro-computer-structure/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2019-it-intro-computer-systems/.gitignore b/slides/2019-it-intro-computer-systems/.gitignore new file mode 100644 index 0000000..4a7f033 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/.gitignore @@ -0,0 +1,12 @@ +*.aux +*.fdb_latexmk +*.fls +*.fls +*.log +*.nav +*.out +main.pdf +*.snm +*.toc +*.nav +*.snm diff --git a/slides/2019-it-intro-computer-systems/NOTE b/slides/2019-it-intro-computer-systems/NOTE new file mode 100644 index 0000000..cd9ac06 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/NOTE @@ -0,0 +1,2 @@ +- Few more slides would be good here, or shrink down so that +computer fundamentals + computer systems -> 3h works too. diff --git a/slides/2019-it-intro-computer-systems/README b/slides/2019-it-intro-computer-systems/README new file mode 100644 index 0000000..68a8dc7 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/README @@ -0,0 +1 @@ +Lecture on computer systems in an introduction to IT course at kau. diff --git a/slides/2019-it-intro-computer-systems/beamercolorthemergd.sty b/slides/2019-it-intro-computer-systems/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2019-it-intro-computer-systems/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2019-it-intro-computer-systems/beamerfontthemergd.sty b/slides/2019-it-intro-computer-systems/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2019-it-intro-computer-systems/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2019-it-intro-computer-systems/beamerinnerthemergd.sty b/slides/2019-it-intro-computer-systems/beamerinnerthemergd.sty new file mode 100644 index 0000000..0d49176 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/beamerinnerthemergd.sty @@ -0,0 +1,43 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](Logo){\includegraphics[width=3cm]{img/logo}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add subtitle + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{subtitle}\insertsubtitle\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=12pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2019-it-intro-computer-systems/beamerouterthemergd.sty b/slides/2019-it-intro-computer-systems/beamerouterthemergd.sty new file mode 100644 index 0000000..ba757c6 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/beamerouterthemergd.sty @@ -0,0 +1,66 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add mail + \begin{beamercolorbox}[ + wd=0.22\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \texttt{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add author + \begin{beamercolorbox}[ + wd=0.73\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + %\insertauthor + \inserttitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2019-it-intro-computer-systems/beamerthemergd.sty b/slides/2019-it-intro-computer-systems/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2019-it-intro-computer-systems/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2019-it-intro-computer-systems/handout.pdf b/slides/2019-it-intro-computer-systems/handout.pdf Binary files differnew file mode 100644 index 0000000..945325c --- /dev/null +++ b/slides/2019-it-intro-computer-systems/handout.pdf diff --git a/slides/2019-it-intro-computer-systems/img/apps.jpg b/slides/2019-it-intro-computer-systems/img/apps.jpg Binary files differnew file mode 100644 index 0000000..1f41651 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/apps.jpg diff --git a/slides/2019-it-intro-computer-systems/img/apps2.jpg b/slides/2019-it-intro-computer-systems/img/apps2.jpg Binary files differnew file mode 100644 index 0000000..f6f7173 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/apps2.jpg diff --git a/slides/2019-it-intro-computer-systems/img/aws.png b/slides/2019-it-intro-computer-systems/img/aws.png Binary files differnew file mode 100644 index 0000000..ac9b4c3 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/aws.png diff --git a/slides/2019-it-intro-computer-systems/img/binary.jpg b/slides/2019-it-intro-computer-systems/img/binary.jpg Binary files differnew file mode 100644 index 0000000..5e636ab --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/binary.jpg diff --git a/slides/2019-it-intro-computer-systems/img/computer-system.tex b/slides/2019-it-intro-computer-systems/img/computer-system.tex new file mode 100644 index 0000000..7966868 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/computer-system.tex @@ -0,0 +1,42 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw=lightGray, + top color=lightGray, + bottom color=white, + rectangle, + shading=axis, + minimum width=2cm, + }, + nop/.style = { + draw=none, + }, + frame/.style = { + draw, + -, + dashed, + thick, + rounded corners, + }, + label/.style = { + draw=none, + }, +] + % Software and hardware + \node[entity] (hardware) at (0,0) {hardware}; + \node[entity, above=12pt of hardware] (software) {software}; + \node[nop] at ($ (software) !.5! (hardware) $) {+}; + \coordinate (l) at ($ (current bounding box.west) + (-0.5, 0 ) $); + \coordinate (r) at ($ (current bounding box.east) + ( 0.5, 0 ) $); + \coordinate (b) at ($ (current bounding box.south) + ( 0, -0.5) $); + \coordinate (t) at ($ (current bounding box.north) + ( 0, 0.5) $); + \path[frame] + (l) |- (t) + node[label,below]{computer system} -| + (r) |- (b) -| (l); + + % User and data + \node[nop, above=of t] (user) {\includegraphics[width=1cm]{img/user}}; + \node[nop, above=-10pt of user] {user}; + \draw[latex-latex] (user) -- node[label,right]{data} ($ (t) + (0, 0.25) $); +\end{tikzpicture} diff --git a/slides/2019-it-intro-computer-systems/img/data.pdf b/slides/2019-it-intro-computer-systems/img/data.pdf Binary files differnew file mode 100644 index 0000000..5426fba --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/data.pdf diff --git a/slides/2019-it-intro-computer-systems/img/driver.png b/slides/2019-it-intro-computer-systems/img/driver.png Binary files differnew file mode 100644 index 0000000..de83586 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/driver.png diff --git a/slides/2019-it-intro-computer-systems/img/ethernet.jpg b/slides/2019-it-intro-computer-systems/img/ethernet.jpg Binary files differnew file mode 100644 index 0000000..1168bd1 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/ethernet.jpg diff --git a/slides/2019-it-intro-computer-systems/img/gce.png b/slides/2019-it-intro-computer-systems/img/gce.png Binary files differnew file mode 100644 index 0000000..a4249e5 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/gce.png diff --git a/slides/2019-it-intro-computer-systems/img/google.png b/slides/2019-it-intro-computer-systems/img/google.png Binary files differnew file mode 100644 index 0000000..4f0a30d --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/google.png diff --git a/slides/2019-it-intro-computer-systems/img/group.pdf b/slides/2019-it-intro-computer-systems/img/group.pdf Binary files differnew file mode 100644 index 0000000..515c974 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/group.pdf diff --git a/slides/2019-it-intro-computer-systems/img/hdd.jpg b/slides/2019-it-intro-computer-systems/img/hdd.jpg Binary files differnew file mode 100644 index 0000000..3b59ac9 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/hdd.jpg diff --git a/slides/2019-it-intro-computer-systems/img/headphones.jpg b/slides/2019-it-intro-computer-systems/img/headphones.jpg Binary files differnew file mode 100644 index 0000000..44ff4d2 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/headphones.jpg diff --git a/slides/2019-it-intro-computer-systems/img/icloud.png b/slides/2019-it-intro-computer-systems/img/icloud.png Binary files differnew file mode 100644 index 0000000..774875d --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/icloud.png diff --git a/slides/2019-it-intro-computer-systems/img/ict.jpg b/slides/2019-it-intro-computer-systems/img/ict.jpg Binary files differnew file mode 100644 index 0000000..250c673 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/ict.jpg diff --git a/slides/2019-it-intro-computer-systems/img/internet.png b/slides/2019-it-intro-computer-systems/img/internet.png Binary files differnew file mode 100644 index 0000000..e5e9f27 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/internet.png diff --git a/slides/2019-it-intro-computer-systems/img/kbuss.png b/slides/2019-it-intro-computer-systems/img/kbuss.png Binary files differnew file mode 100644 index 0000000..8f0b122 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/kbuss.png diff --git a/slides/2019-it-intro-computer-systems/img/keyboard.jpeg b/slides/2019-it-intro-computer-systems/img/keyboard.jpeg Binary files differnew file mode 100644 index 0000000..734034e --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/keyboard.jpeg diff --git a/slides/2019-it-intro-computer-systems/img/know-it-all.tex b/slides/2019-it-intro-computer-systems/img/know-it-all.tex new file mode 100644 index 0000000..c2e44fa --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/know-it-all.tex @@ -0,0 +1,57 @@ +\newcommand{\twolines}[2]{\begin{tabular}{c}#1\\#2\end{tabular}} +\scalebox{0.8}{ + \begin{tikzpicture}[ + -latex, + entity/.style = { + draw=lightGray, + thick, + ellipse, + minimum height=1.75cm, + top color = lightGray, + bottom color = white, + }, + plain/.style = { + draw=none, + }, + arrow/.style = { + draw = black, + -triangle 90,line width=1mm, + postaction={draw, line width=0.1cm, shorten >=0.1cm, -}, + }, + cs/.style = { + draw=lightGray, + thick, + cloud, + cloud puffs = 15.7, + cloud ignores aspect, + }, + ] + \node[entity] (vlsi) at (0,0) {Electronics}; + \node[entity, right=of vlsi] (hwa) {\twolines{Hardware}{architecture}}; + \node[entity, right=of hwa] (si) {\twolines{Software}{infrastructure}}; + \node[entity, right=of si] (as) {\twolines{Software}{development}}; + + \path[arrow] (vlsi) -- (hwa); + \path[arrow] (hwa) -- (si); + \path[arrow] (si) -- (as); + + \coordinate(l) at ($ (vlsi) !.5! (hwa) $); + \coordinate(m) at ($ (hwa) !.5! (si) $); + \coordinate(r) at ($ (si) !.5! (as) $); + + \pause + \node[plain, text=darkGreen, above=of l] {Computer parts}; + \pause + \node[plain, text=darkBlue, below=of m] {Hardware-software relation}; + \pause + \node[plain, text=darkRed, above=of r] {Programming and software engineering}; + + \pause + \node[cs, above=1cm of si] {% + \begin{tabular}{c} + Networking, security, and\\ + distributed computing + \end{tabular} + }; + \end{tikzpicture} +} diff --git a/slides/2019-it-intro-computer-systems/img/layered.tex b/slides/2019-it-intro-computer-systems/img/layered.tex new file mode 100644 index 0000000..565753f --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/layered.tex @@ -0,0 +1,29 @@ +\begin{tikzpicture}[ + entity/.style = { + draw=lightGray!30, + rounded rectangle, + minimum width=5cm, + minimum height=0.75cm, + bottom color = black!75, + text = white, + thick, + }, + arrow/.style = { + draw = darkOrange, + -triangle 90,line width=1mm, + postaction={draw, line width=0.1cm, shorten >=0.1cm, -}, + } +] +\node[entity, top color = darkBlue] (user) at (0,0) {user}; +\node[entity, top color = darkPurple, below=of user] (app) {application software}; +\node[entity, top color = darkGreen, below=of app] (sys) {system software}; +\node[entity, top color = darkRed, below=of sys] (hw) {hardware}; + +\path[arrow] (user.330) -- (app.30); +\path[arrow] (app.330) -- (sys.30); +\path[arrow] (sys.330) -- (hw.30); + +\path[arrow] (hw.150) -- (sys.210); +\path[arrow] (sys.150) -- (app.210); +\path[arrow] (app.150) -- (user.210); +\end{tikzpicture} diff --git a/slides/2019-it-intro-computer-systems/img/logo.png b/slides/2019-it-intro-computer-systems/img/logo.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/logo.png diff --git a/slides/2019-it-intro-computer-systems/img/mcloud.png b/slides/2019-it-intro-computer-systems/img/mcloud.png Binary files differnew file mode 100644 index 0000000..3960700 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/mcloud.png diff --git a/slides/2019-it-intro-computer-systems/img/monitor.jpg b/slides/2019-it-intro-computer-systems/img/monitor.jpg Binary files differnew file mode 100644 index 0000000..5796969 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/monitor.jpg diff --git a/slides/2019-it-intro-computer-systems/img/mouse.png b/slides/2019-it-intro-computer-systems/img/mouse.png Binary files differnew file mode 100644 index 0000000..ec60d01 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/mouse.png diff --git a/slides/2019-it-intro-computer-systems/img/mouseclick.pdf b/slides/2019-it-intro-computer-systems/img/mouseclick.pdf Binary files differnew file mode 100644 index 0000000..09e9871 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/mouseclick.pdf diff --git a/slides/2019-it-intro-computer-systems/img/nop.jpg b/slides/2019-it-intro-computer-systems/img/nop.jpg Binary files differnew file mode 100644 index 0000000..2d8c1b7 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/nop.jpg diff --git a/slides/2019-it-intro-computer-systems/img/os.png b/slides/2019-it-intro-computer-systems/img/os.png Binary files differnew file mode 100644 index 0000000..5f93900 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/os.png diff --git a/slides/2019-it-intro-computer-systems/img/performance.tex b/slides/2019-it-intro-computer-systems/img/performance.tex new file mode 100644 index 0000000..5f4e816 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/performance.tex @@ -0,0 +1,20 @@ +\begin{tikzpicture}[ + arrow/.style = { + draw, + -latex, + }, + plain/.style = { + draw=none, + } +] + \coordinate(o) at (0,0); + \coordinate(y) at (0,4); + \coordinate(x) at (6,0); + + \coordinate(c1) at (0.5,0.5); + \coordinate(c2) at (5.5,3); + + \path[arrow] (o) -- node[plain, below, pos=0.9]{time} (x); + \path[arrow] (o) -- node[plain, above, pos=1]{performance} (y); + \path[arrow] (c1) -- (c2); +\end{tikzpicture} diff --git a/slides/2019-it-intro-computer-systems/img/qleft.pdf b/slides/2019-it-intro-computer-systems/img/qleft.pdf Binary files differnew file mode 100644 index 0000000..f35a078 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/qleft.pdf diff --git a/slides/2019-it-intro-computer-systems/img/qright.pdf b/slides/2019-it-intro-computer-systems/img/qright.pdf Binary files differnew file mode 100644 index 0000000..da2e8e3 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/qright.pdf diff --git a/slides/2019-it-intro-computer-systems/img/radio-tower.pdf b/slides/2019-it-intro-computer-systems/img/radio-tower.pdf Binary files differnew file mode 100644 index 0000000..c38118f --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/radio-tower.pdf diff --git a/slides/2019-it-intro-computer-systems/img/reality.jpg b/slides/2019-it-intro-computer-systems/img/reality.jpg Binary files differnew file mode 100644 index 0000000..91e414a --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/reality.jpg diff --git a/slides/2019-it-intro-computer-systems/img/sensor.jpg b/slides/2019-it-intro-computer-systems/img/sensor.jpg Binary files differnew file mode 100644 index 0000000..7c54558 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/sensor.jpg diff --git a/slides/2019-it-intro-computer-systems/img/ssd.png b/slides/2019-it-intro-computer-systems/img/ssd.png Binary files differnew file mode 100644 index 0000000..10733c9 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/ssd.png diff --git a/slides/2019-it-intro-computer-systems/img/systems.tex b/slides/2019-it-intro-computer-systems/img/systems.tex new file mode 100644 index 0000000..d1be691 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/systems.tex @@ -0,0 +1,27 @@ +\begin{tikzpicture}[ + plain/.style = { + draw=none, + }, + fill opacity = 0.5, +] + \coordinate(first) at (0,0); + \coordinate(second) at (45:2cm); + \coordinate(third) at (0:2cm); + + % CS, IS, and ICT circles + \fill[red] (first) circle (1.5cm); + \fill[green] (second) circle (1.5cm); + \fill[blue] (third) circle (1.5cm); + + % CS, IS, and ICT labels + \node[plain, below=0pt of first] (CS) {CS}; + \node[plain, above=0pt of second] (IS) {IS}; + \node[plain, below=0pt of third] (ICT) {ICT}; + + % IT intersection between CS and IS + \clip (first) circle (1.5cm); + \fill[white, fill opacity=0.75] (second) circle (1.5cm); + + % IT label + \node[plain] at ($ (CS) !.5! (IS) $) {IT}; +\end{tikzpicture} diff --git a/slides/2019-it-intro-computer-systems/img/traffic-light.png b/slides/2019-it-intro-computer-systems/img/traffic-light.png Binary files differnew file mode 100644 index 0000000..2b9a2de --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/traffic-light.png diff --git a/slides/2019-it-intro-computer-systems/img/trends.tex b/slides/2019-it-intro-computer-systems/img/trends.tex new file mode 100644 index 0000000..7dea798 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/trends.tex @@ -0,0 +1,47 @@ +\begin{tikzpicture}[ + arrow/.style = { + draw, + -latex, + }, + plain/.style = { + draw=none, + } +] + \coordinate(o) at (0,0); + \coordinate(y) at (0,4); + \coordinate(x) at (6,0); + + \coordinate(c1) at (0.5,0.5); + \coordinate(c2) at (2.5,2.5); + \coordinate(c3) at (3.5,2.5); + \coordinate(c4) at (5.5,0.5); + + \path[arrow] + (o) -- + node[plain, below, pos=0.9]{time} + (x); + \path[arrow] + (o) -- + node[plain, pos=0.2, left]{% + \begin{tabular}{c} + thin\\ + clients + \end{tabular} + } + node[plain, pos=0.8, left]{% + \begin{tabular}{c} + thick\\ + clients + \end{tabular} + } + (y); + + \path[arrow] + (c1) -- + node[plain, sloped, above]{faster computers} + (c2); + \path[arrow] + (c3) -- + node[plain, sloped, above]{faster network} + (c4); +\end{tikzpicture} diff --git a/slides/2019-it-intro-computer-systems/img/tv-controller.jpg b/slides/2019-it-intro-computer-systems/img/tv-controller.jpg Binary files differnew file mode 100644 index 0000000..5b6d02e --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/tv-controller.jpg diff --git a/slides/2019-it-intro-computer-systems/img/ty.pdf b/slides/2019-it-intro-computer-systems/img/ty.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/ty.pdf diff --git a/slides/2019-it-intro-computer-systems/img/user.pdf b/slides/2019-it-intro-computer-systems/img/user.pdf Binary files differnew file mode 100644 index 0000000..51ee41d --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/user.pdf diff --git a/slides/2019-it-intro-computer-systems/img/z3.jpg b/slides/2019-it-intro-computer-systems/img/z3.jpg Binary files differnew file mode 100644 index 0000000..be1f262 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/img/z3.jpg diff --git a/slides/2019-it-intro-computer-systems/main.tex b/slides/2019-it-intro-computer-systems/main.tex new file mode 100644 index 0000000..7f1f318 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/main.tex @@ -0,0 +1,26 @@ +\pdfminorversion=4 +\documentclass[aspectratio=169]{beamer} +%\documentclass[handout,aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + Computer Systems +} +%\subtitle{% +%} +\author{% + Rasmus Dahlberg +} +\institute{% + Karlstad University +} +\date{% + \today +} +\begin{document} + \input{src/titlepage} + \input{src/body} + \input{src/questions} +\end{document} diff --git a/slides/2019-it-intro-computer-systems/slides.pdf b/slides/2019-it-intro-computer-systems/slides.pdf Binary files differnew file mode 100644 index 0000000..cc9c299 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/slides.pdf diff --git a/slides/2019-it-intro-computer-systems/src/body.tex b/slides/2019-it-intro-computer-systems/src/body.tex new file mode 100644 index 0000000..2bdb372 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/src/body.tex @@ -0,0 +1,430 @@ +\begin{frame} + \frametitle{Recall computers (or, last lecture in TL;DR format)} + \begin{columns} + \begin{column}{0.79\textwidth} + \begin{itemize} + \item A digital computing device that stores and processes data, + typically in binary form, according to arithmetic and locical + instructions given to it in a variable program + \item Binary data is `easy' to store and process digitally + \item Examples that we can express data as we know it in binary + \begin{itemize} + \item Converting between base 10 and base 2 + \item ASCII + \item Unicode + \end{itemize} + \item Hardware that composes a basic computer + \begin{itemize} + \item Processor + \item Memory + \item I/O devices + \item ... + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.29\textwidth} + \centering\includegraphics[width=\textwidth]{img/binary} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Learning outcome based on syllabus} + \begin{itemize} + \item Describe the role of software in relation to the hardware + (ISGA01) + \item Describe the relation of the software to the hardware + (ISGA06) + \item Describe the role of software in relation to the hardware + (ISGA90) + \end{itemize} + \vfill\centering + \smartdiagramset{ + sequence item height=1.75cm, + sequence item width=2.5cm, + sequence item text width = 2.4cm, + } + \smartdiagram[sequence diagram]{% + What is a computer system?,% + Hardware software relation,% + Trends and related systems% + } +\end{frame} + +\begin{frame} + \frametitle{Q: What is a computer system? \titlefloatright{A: Hardware + software}} + \begin{itemize} + \item Ett datorsystem \"{a}r ett system av h\aa{}rdvara och mjukvara som + behandlar data p\aa{} ett meningsfullt s\"{a}tt\footnote{% + \burl{https://sv.wikipedia.org/wiki/Datorsystem} + } + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{description} + \item[\tno] mjukvara + \item[\tno] h\aa{}rdvara + \item[?] meningsfullt + \end{description} + \end{column} + \begin{column}{0.49\textwidth} + \begin{description} + \item[\tyes] programvara + \item[\tyes] maskinvara + \item[?] TBC + \end{description} + \end{column} + \end{columns} + \item Dator(er) med ansluten \textbf{maskinvara}, se dator. Ordet + anv\"{a}nds ibland synonymt med databehandlingssystem, vilket + d\"{a}rut\"{o}ver omfattar \textbf{programvara} samt eventuell + organisation f\"{o}r databehandling\footnote{% + \burl{https://www.ne.se/uppslagsverk/encyklopedi/l\%C3\%A5ng/datorsystem} + } + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Meaningful? Need combination of hardware, software, user, and + data\footnote{% + \tiny{Some define computer systems like this, see for example:} \burl{https://en.wikipedia.org/wiki/Category:Computer\_systems} + } + } + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item \textbf{Hardware} refers to physical components + \item \textbf{Software} refers to programs that instruct the hardware + what to do step-by-step + \item \textbf{Data} is supplied and interpreted by a \textbf{user} + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \vfill\centering + \input{img/computer-system} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Computer systems are layered to increase usability} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Users use input and output devices to interact with application + software (data exchange) + \item Application software relies on system software while providing + functionality + \item System software coordinates the hardware + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \centering\input{img/layered} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Users and application software exchange data via input and output + devices} + \begin{columns} + \begin{column}{0.33\textwidth} + \centering\includegraphics[height=0.25\textheight]{img/monitor} + \centering\includegraphics[height=0.25\textheight]{img/keyboard} + \centering\includegraphics[height=0.25\textheight]{img/mouse} + \centering\includegraphics[height=0.25\textheight]{img/headphones} + \end{column} + \begin{column}{0.33\textwidth} + \centering\includegraphics[height=0.25\textheight]{img/radio-tower}\\ + \centering\includegraphics[height=0.25\textheight]{img/ethernet}\\ + \centering\includegraphics[height=0.25\textheight]{img/hdd} + \end{column} + \begin{column}{0.33\textwidth} + \centering\includegraphics[height=0.25\textheight]{img/sensor} + \centering\includegraphics[height=0.25\textheight]{img/traffic-light}\\ + \vspace{12pt} + \centering\includegraphics[height=0.4\textheight]{img/kbuss} + \end{column} + \end{columns} +\end{frame} + +% more on what an application is next lecture +\begin{frame} + \frametitle{Application software helps a user perform a given task} + \centering\includegraphics[height=0.8\textheight]{img/apps2}\\ +\end{frame} + +\begin{frame} + \frametitle{System software provides a platform that application software + relies on} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering\includegraphics[height=0.35\textheight]{img/os} + \begin{itemize} + \item Operating system software + \begin{itemize} + \item Program execution + \item Interrupts + \item System calls + \item ... + \end{itemize} + \item Drivers + \begin{itemize} + \item Bridge between OS and hardware + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \centering\includegraphics[height=0.35\textheight]{img/driver} + \begin{itemize} + \item Firmware + \begin{itemize} + \item Persistently stored program for low-level hardware control + \item Found on most components + \item Recall BIOS on the motherboard + \end{itemize} + \item Window management software + \item ... + \end{itemize} + \vfill + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Actual hardware finally stores and processes data} + \centering + \begin{tikzpicture}[ + entity/.style = { + draw, + rectangle, + minimum width=3cm, + minimum height=1cm, + top color = lightGray, + bottom color = white, + }, + arrow/.style = { + draw, + }, + ] + \node[entity] (Memory) at (0,0) {Memory}; + \node[entity, right=of Memory] (Processor) {Processor}; + \node[entity, right=of Processor] (IO) {IO devices}; + + \path[draw, ultra thick] + ($ (Memory) + (0,-2.1) $) -- + node[label, below]{Internal communication and coordination via buses} + ($ (IO) + (0,-2.1) $); + + \path[arrow, latex-latex] ($ (Memory.south) + (0,-0.1) $) -- ($ (Memory) + (0,-2) $); + \path[arrow, latex-latex] ($ (Processor.south) + (0,-0.1) $) -- ($ (Processor) + (0,-2) $); + \path[arrow, latex-latex] ($ (IO.south) + (0,-0.1) $) -- ($ (IO) + (0,-2) $); + + \end{tikzpicture} +\end{frame} + +\begin{frame} + \frametitle{Doh! The more you know, the more you know you don't know} + \centering\input{img/know-it-all} +\end{frame} + +\begin{frame} + \frametitle{But we can still say something about the hardware-software + relation} + \centering + \begin{tabular}{ccc} + \textbf{Hardware} & \textbf{Software} & \textbf{Outcome} \\ + \toprule + \tno & \tno & - \\ + \tno & \tyes & useless \\ + \tyes & \tno & unusable \\ + \tyes & \tyes & usable \\ + \bottomrule + \end{tabular} + \pause + \vfill\alert{System software abstracts the hardware away, thereby making it + easier to use} +\end{frame} + +\begin{frame} + \frametitle{Example: what happens on a mouse click?} + \begin{columns} + \begin{column}{0.89\textwidth} + \begin{enumerate} + \item A user provides input data by clicking the mouse + \item The click creates contact with electrical components in the mouse + \item The mouse creates an interrupt signal on the bus: + `I have data to send' + \item The interrupt signal eventually gets CPU priority + \begin{itemize} + \item Stop current task + \item Load and execute driver routine + \item Clear interrupt siginal + \item Context switch back to previous task + \end{itemize} + \end{enumerate} + \end{column} + \begin{column}{0.09\textwidth} + \centering\includegraphics[width=\textwidth]{img/mouseclick} + \end{column} + \end{columns} + \pause + \vfill\alert{Similar: what happens when you press a button on your keyboard?} +\end{frame} + +\begin{frame} + \frametitle{Example: PlayStation 4 is a computer system} + \centering + \includegraphics[height=0.5\textheight]{img/group} + \\\Huge{Interactive demo + whiteboard} +\end{frame} + +\begin{frame} + \frametitle{Trends of computer systems} + \begin{columns} + \begin{column}{0.39\textwidth} + \begin{itemize} + \item Thick client + \item Thin client + \item Outsourced computing + \end{itemize} + \end{column} + \begin{column}{0.59\textwidth} + \centering\input{img/trends} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Major players that provide cloud services \titlefloatright{+ some + gossip!!}} + \includegraphics[height=0.2263\textheight]{img/mcloud} + \includegraphics[height=0.2263\textheight]{img/icloud} + \includegraphics[height=0.33\textheight]{img/aws} + \includegraphics[height=0.33\textheight]{img/gce} + \begin{columns} + \begin{column}{0.25\textwidth} + \begin{itemize} + \item Microsoft + \end{itemize} + \end{column} + \begin{column}{0.25\textwidth} + \begin{itemize} + \item Apple + \end{itemize} + \end{column} + \begin{column}{0.25\textwidth} + \begin{itemize} + \item Amazon + \end{itemize} + \end{column} + \begin{column}{0.25\textwidth} + \begin{itemize} + \item Google + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Trends of computer systems continued} + \begin{columns} + \begin{column}{0.39\textwidth} + Performance metrics: + \begin{itemize} + \item MIPS + \item MFLOPS + \item Bandwidth + \item Execution time + \item SPEC\footnotemark + \item ... + \end{itemize} + \end{column} + \begin{column}{0.59\textwidth} + \centering\input{img/performance} + \end{column} + \end{columns} + \vfill + \pause + \centering + \alert{Cause and effect?} + \pause + \alert{Hardware improves, software demands more...} + + \footnotetext[4]{% + \tiny{Details for those that are interested:} + \burl{https://www.spec.org/} + } +\end{frame} + +\begin{frame} + \frametitle{Systems that are closely related to computers? CS, IS, IT and ICT} + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Information System (IS): the study of complementary networks that + people and organizations use to collect, filter, process, create, and + distribute data + \item Computer System (CS): subset of IS + \item Information Technology (IT): CS + everything around it in an + enterprise + \item Information Technology and Communication (ICT): IT + telecom% + \footnotemark + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \centering\includegraphics[width=\textwidth]{img/ict} + \alert{Figure that depicts these relations?} + \end{column} + \end{columns} + \footnotetext[5]{\tiny{The transmission of data using different types of + techniques and mediums, e.g., Ethernet and WiFi.}} + \pause + \vfill\centering\alert{Be warned: these definitions are no exact science...} +\end{frame} + +\begin{frame} + \frametitle{Given the status quo of Internet...difference between IT and ICT?} + \begin{columns} + \begin{column}{0.59\textwidth} + % Only briefly, forward ref to telecom lecture + Internet is a network of networks: + \begin{itemize} + \item `Nuts and bolt' + \item Protocol stack + \end{itemize} + \only<2>{\vspace{18pt}\centering\alert{Name an IT system without + telecommunication?}} + \end{column} + \begin{column}{0.39\textwidth} + \centering\includegraphics[height=0.8\textheight]{img/internet} + \end{column} + \end{columns} +\end{frame} + +% Focus on the stuff related to this lecture, not networking +% + show in browser links where they can read more +\begin{frame} + \frametitle{Example: what happens when you enter google.com in your browser + software?} + \includegraphics[height=0.8\textheight]{img/google} +\end{frame} + +% backup slide if too fast +\begin{frame} + \frametitle{Computer systems: present and future?} + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Reality + \item Internet of things + \item Artificial intelligence + \item Anarchy + \item Monopolism + \item Opportunity contra risk + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \includegraphics[width=\textwidth]{img/reality} + \end{column} + \end{columns} +\end{frame} diff --git a/slides/2019-it-intro-computer-systems/src/preamble.tex b/slides/2019-it-intro-computer-systems/src/preamble.tex new file mode 100644 index 0000000..1ef1078 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/src/preamble.tex @@ -0,0 +1,73 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{graphicx} +\usepackage{color} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +\usepackage{floatrow} +%\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +%\setbeamertemplate{itemize item}[circle] +%\setbeamertemplate{itemize subitem}[default] +%\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\titlefloatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} diff --git a/slides/2019-it-intro-computer-systems/src/questions.tex b/slides/2019-it-intro-computer-systems/src/questions.tex new file mode 100644 index 0000000..85cb2f3 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/src/questions.tex @@ -0,0 +1,17 @@ +\begin{frame} + \frametitle{Any questions?} \label{frm:que} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qleft} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qright} + \end{column} + \end{columns} + + \centering + \vspace{-1cm} + \includegraphics[width=0.20\textwidth]{img/ty} +\end{frame} diff --git a/slides/2019-it-intro-computer-systems/src/titlepage.tex b/slides/2019-it-intro-computer-systems/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2019-it-intro-computer-systems/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2019-it-intro-scrum/.gitignore b/slides/2019-it-intro-scrum/.gitignore new file mode 100644 index 0000000..4a7f033 --- /dev/null +++ b/slides/2019-it-intro-scrum/.gitignore @@ -0,0 +1,12 @@ +*.aux +*.fdb_latexmk +*.fls +*.fls +*.log +*.nav +*.out +main.pdf +*.snm +*.toc +*.nav +*.snm diff --git a/slides/2019-it-intro-scrum/README b/slides/2019-it-intro-scrum/README new file mode 100644 index 0000000..211af0c --- /dev/null +++ b/slides/2019-it-intro-scrum/README @@ -0,0 +1 @@ +Lecture on scrum in an introduction to IT course at kau. diff --git a/slides/2019-it-intro-scrum/beamercolorthemergd.sty b/slides/2019-it-intro-scrum/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2019-it-intro-scrum/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2019-it-intro-scrum/beamerfontthemergd.sty b/slides/2019-it-intro-scrum/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2019-it-intro-scrum/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2019-it-intro-scrum/beamerinnerthemergd.sty b/slides/2019-it-intro-scrum/beamerinnerthemergd.sty new file mode 100644 index 0000000..0d49176 --- /dev/null +++ b/slides/2019-it-intro-scrum/beamerinnerthemergd.sty @@ -0,0 +1,43 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](Logo){\includegraphics[width=3cm]{img/logo}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add subtitle + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{subtitle}\insertsubtitle\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=12pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2019-it-intro-scrum/beamerouterthemergd.sty b/slides/2019-it-intro-scrum/beamerouterthemergd.sty new file mode 100644 index 0000000..ba757c6 --- /dev/null +++ b/slides/2019-it-intro-scrum/beamerouterthemergd.sty @@ -0,0 +1,66 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add mail + \begin{beamercolorbox}[ + wd=0.22\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \texttt{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add author + \begin{beamercolorbox}[ + wd=0.73\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + %\insertauthor + \inserttitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2019-it-intro-scrum/beamerthemergd.sty b/slides/2019-it-intro-scrum/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2019-it-intro-scrum/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2019-it-intro-scrum/handout.pdf b/slides/2019-it-intro-scrum/handout.pdf Binary files differnew file mode 100644 index 0000000..90cee2b --- /dev/null +++ b/slides/2019-it-intro-scrum/handout.pdf diff --git a/slides/2019-it-intro-scrum/img/agile-manifesto.png b/slides/2019-it-intro-scrum/img/agile-manifesto.png Binary files differnew file mode 100644 index 0000000..fab3c57 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/agile-manifesto.png diff --git a/slides/2019-it-intro-scrum/img/board.png b/slides/2019-it-intro-scrum/img/board.png Binary files differnew file mode 100644 index 0000000..a5c6386 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/board.png diff --git a/slides/2019-it-intro-scrum/img/burnout.jpg b/slides/2019-it-intro-scrum/img/burnout.jpg Binary files differnew file mode 100644 index 0000000..7ef2b29 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/burnout.jpg diff --git a/slides/2019-it-intro-scrum/img/cmp.png b/slides/2019-it-intro-scrum/img/cmp.png Binary files differnew file mode 100644 index 0000000..867c6a9 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/cmp.png diff --git a/slides/2019-it-intro-scrum/img/debt.jpg b/slides/2019-it-intro-scrum/img/debt.jpg Binary files differnew file mode 100644 index 0000000..99c7daa --- /dev/null +++ b/slides/2019-it-intro-scrum/img/debt.jpg diff --git a/slides/2019-it-intro-scrum/img/demo.png b/slides/2019-it-intro-scrum/img/demo.png Binary files differnew file mode 100644 index 0000000..03a10fc --- /dev/null +++ b/slides/2019-it-intro-scrum/img/demo.png diff --git a/slides/2019-it-intro-scrum/img/done.jpg b/slides/2019-it-intro-scrum/img/done.jpg Binary files differnew file mode 100644 index 0000000..9c10b79 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/done.jpg diff --git a/slides/2019-it-intro-scrum/img/esi.tex b/slides/2019-it-intro-scrum/img/esi.tex new file mode 100644 index 0000000..9ba5699 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/esi.tex @@ -0,0 +1,16 @@ +\begin{tikzpicture} + \path[draw=lightGray, thick, shading=axis, top color=lightGray, bottom color=white] + (0,0) -- + node[sloped, anchor=center, below]{% + Estimate + } + (3,0) -- + node[sloped, anchor=center, above]{% + Scope + } + (1.5, 2) -- + node[sloped, anchor=center, above]{% + Importance + } + (0, 0); +\end{tikzpicture} diff --git a/slides/2019-it-intro-scrum/img/henke.png b/slides/2019-it-intro-scrum/img/henke.png Binary files differnew file mode 100644 index 0000000..8b549d7 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/henke.png diff --git a/slides/2019-it-intro-scrum/img/hurry.jpg b/slides/2019-it-intro-scrum/img/hurry.jpg Binary files differnew file mode 100644 index 0000000..9d22f9a --- /dev/null +++ b/slides/2019-it-intro-scrum/img/hurry.jpg diff --git a/slides/2019-it-intro-scrum/img/iterative.png b/slides/2019-it-intro-scrum/img/iterative.png Binary files differnew file mode 100644 index 0000000..5458170 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/iterative.png diff --git a/slides/2019-it-intro-scrum/img/logo.png b/slides/2019-it-intro-scrum/img/logo.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/logo.png diff --git a/slides/2019-it-intro-scrum/img/manifesto.png b/slides/2019-it-intro-scrum/img/manifesto.png Binary files differnew file mode 100644 index 0000000..aca874b --- /dev/null +++ b/slides/2019-it-intro-scrum/img/manifesto.png diff --git a/slides/2019-it-intro-scrum/img/one-it.png b/slides/2019-it-intro-scrum/img/one-it.png Binary files differnew file mode 100644 index 0000000..1eb13d3 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/one-it.png diff --git a/slides/2019-it-intro-scrum/img/poker.png b/slides/2019-it-intro-scrum/img/poker.png Binary files differnew file mode 100644 index 0000000..af601eb --- /dev/null +++ b/slides/2019-it-intro-scrum/img/poker.png diff --git a/slides/2019-it-intro-scrum/img/qleft.pdf b/slides/2019-it-intro-scrum/img/qleft.pdf Binary files differnew file mode 100644 index 0000000..f35a078 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/qleft.pdf diff --git a/slides/2019-it-intro-scrum/img/qright.pdf b/slides/2019-it-intro-scrum/img/qright.pdf Binary files differnew file mode 100644 index 0000000..da2e8e3 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/qright.pdf diff --git a/slides/2019-it-intro-scrum/img/reality.jpg b/slides/2019-it-intro-scrum/img/reality.jpg Binary files differnew file mode 100644 index 0000000..81ed269 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/reality.jpg diff --git a/slides/2019-it-intro-scrum/img/retrospective.png b/slides/2019-it-intro-scrum/img/retrospective.png Binary files differnew file mode 100644 index 0000000..ef8afeb --- /dev/null +++ b/slides/2019-it-intro-scrum/img/retrospective.png diff --git a/slides/2019-it-intro-scrum/img/scrum-10m.png b/slides/2019-it-intro-scrum/img/scrum-10m.png Binary files differnew file mode 100644 index 0000000..fb97492 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/scrum-10m.png diff --git a/slides/2019-it-intro-scrum/img/scrum-1m.png b/slides/2019-it-intro-scrum/img/scrum-1m.png Binary files differnew file mode 100644 index 0000000..5f394ed --- /dev/null +++ b/slides/2019-it-intro-scrum/img/scrum-1m.png diff --git a/slides/2019-it-intro-scrum/img/scrum-2m.png b/slides/2019-it-intro-scrum/img/scrum-2m.png Binary files differnew file mode 100644 index 0000000..f7f469f --- /dev/null +++ b/slides/2019-it-intro-scrum/img/scrum-2m.png diff --git a/slides/2019-it-intro-scrum/img/scrum-and-xp.png b/slides/2019-it-intro-scrum/img/scrum-and-xp.png Binary files differnew file mode 100644 index 0000000..1208a53 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/scrum-and-xp.png diff --git a/slides/2019-it-intro-scrum/img/scrum-and-xp2.png b/slides/2019-it-intro-scrum/img/scrum-and-xp2.png Binary files differnew file mode 100644 index 0000000..4286a4b --- /dev/null +++ b/slides/2019-it-intro-scrum/img/scrum-and-xp2.png diff --git a/slides/2019-it-intro-scrum/img/scrum-guide.png b/slides/2019-it-intro-scrum/img/scrum-guide.png Binary files differnew file mode 100644 index 0000000..2872add --- /dev/null +++ b/slides/2019-it-intro-scrum/img/scrum-guide.png diff --git a/slides/2019-it-intro-scrum/img/scrum-overview.png b/slides/2019-it-intro-scrum/img/scrum-overview.png Binary files differnew file mode 100644 index 0000000..9cd195f --- /dev/null +++ b/slides/2019-it-intro-scrum/img/scrum-overview.png diff --git a/slides/2019-it-intro-scrum/img/scrum-whole.jpg b/slides/2019-it-intro-scrum/img/scrum-whole.jpg Binary files differnew file mode 100644 index 0000000..cbb5f13 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/scrum-whole.jpg diff --git a/slides/2019-it-intro-scrum/img/tia.png b/slides/2019-it-intro-scrum/img/tia.png Binary files differnew file mode 100644 index 0000000..e6db0c2 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/tia.png diff --git a/slides/2019-it-intro-scrum/img/timeline.png b/slides/2019-it-intro-scrum/img/timeline.png Binary files differnew file mode 100644 index 0000000..dc113a0 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/timeline.png diff --git a/slides/2019-it-intro-scrum/img/ty.pdf b/slides/2019-it-intro-scrum/img/ty.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/ty.pdf diff --git a/slides/2019-it-intro-scrum/img/works.png b/slides/2019-it-intro-scrum/img/works.png Binary files differnew file mode 100644 index 0000000..fd97362 --- /dev/null +++ b/slides/2019-it-intro-scrum/img/works.png diff --git a/slides/2019-it-intro-scrum/main.tex b/slides/2019-it-intro-scrum/main.tex new file mode 100644 index 0000000..8ea9910 --- /dev/null +++ b/slides/2019-it-intro-scrum/main.tex @@ -0,0 +1,27 @@ +\pdfminorversion=4 +\documentclass[aspectratio=169]{beamer} +%\documentclass[handout,aspectratio=169]{beamer} +\usetheme{rgd} +\usepackage[swedish]{babel} + +\input{src/preamble} + +\title{% + Software Development Part II---Scrum +} +%\subtitle{% +%} +\author{% + \textbf{Rasmus Dahlberg}, Eivind J.\ Nordby, Martin Blom, and Tobias Pulls +} +\institute{% + Karlstad University +} +\date{% + \today +} +\begin{document} + \input{src/titlepage} + \input{src/body} + \input{src/questions} +\end{document} diff --git a/slides/2019-it-intro-scrum/slides.pdf b/slides/2019-it-intro-scrum/slides.pdf Binary files differnew file mode 100644 index 0000000..a62c7ef --- /dev/null +++ b/slides/2019-it-intro-scrum/slides.pdf diff --git a/slides/2019-it-intro-scrum/src/body.tex b/slides/2019-it-intro-scrum/src/body.tex new file mode 100644 index 0000000..531a9d8 --- /dev/null +++ b/slides/2019-it-intro-scrum/src/body.tex @@ -0,0 +1,383 @@ +\begin{frame} + \frametitle{Learning outcome based on syllabus} + \begin{itemize} + \item Give an account of different ways to develop software (ISGA01) + \item Describe different ways of developing software (ISGA06) + \item Explain the development process of an information system (ISGA90) + \end{itemize} + \vfill\centering + \smartdiagram[sequence diagram]{% + Reality check,% + Waterfall method,% + Scrum method% + } +\end{frame} + +\begin{frame} + \frametitle{Reality check} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Three things we wish were true + \begin{itemize} + \item Customers know what they want + \item Developers know how to build it + \item Nothing changes at the course of a project + \end{itemize} + \end{itemize} + \begin{itemize} + \item Three things we have to live with + \begin{itemize} + \item Customers figure out what they want + \item Developers figure out how to build it + \item Many things change at the course of a project + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \includegraphics[width=\textwidth]{img/reality} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Timeline of different approaches towards product development} + \centering + \includegraphics[height=0.4\textheight]{img/timeline}\\ + \vfill\alert{Our scope: Agile and Scrum, briefly Waterfall and XP} +\end{frame} + +\begin{frame} + \frametitle{Monolithic vs Iterative and incremental} + \centering + \includegraphics[height=0.65\textheight]{img/iterative} + \vfill + \alert{Agile development is all about feedback cycles} +\end{frame} + +\begin{frame} + \frametitle{Each iteration is a mini project that involves all diciplines} + \centering + \includegraphics[height=0.7\textheight]{img/one-it}\\ + \alert{Note: not necessarily in this order!} +\end{frame} + +\begin{frame} + \frametitle{Agile vs Waterfall} + \centering + \includegraphics[height=0.70\textheight]{img/cmp} +\end{frame} + +\begin{frame} + \frametitle{Does it work? Results from a survey on agile software development} + \centering + \includegraphics[height=0.70\textheight]{img/works} +\end{frame} + +\begin{frame} + \frametitle{Scrum properties} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Emperical---progress based on real-world observations rather than + fictious plans + \item Identify problems early + \item Prioritize strictly + \item Plan for change and continuous improvement + \begin{itemize} + \item Short feedback loop + \item Ship working software frequently + \item ``Planning is needed, but always wrong'' + \end{itemize} + \item Cross-functional and self-organizing teams + \item Pull-scheduling + \item Timeboxing + \item Simple tools + \item ... + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \centering + \includegraphics[height=0.6\textheight]{img/tia} + \burl{https://www.scrum.org/resources/blog/three-pillars-empiricism-scrum} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{An overview of the Scrum process} + \begin{columns} + \begin{column}{0.69\textwidth} + \includegraphics[height=0.8\textheight]{img/scrum-overview} + \end{column} + \begin{column}{0.29\textwidth} + Roles: + \begin{itemize} + \item Product owner + \item Scrum master + \item Developer + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{A typical sprint} + \begin{itemize} + \item \textbf{Sprint planning} \titlefloatright{\textbf{Timeboxed}} + \begin{itemize} + \item Update and prioritize features in the product backlog% + \titlefloatright{4h} + \item Add top-priority features to sprint backlog and divide into + tasks\titlefloatright{4h} + \end{itemize} + \item \textbf{Sprint execution} \titlefloatright{2--4 weeks} + \begin{itemize} + \item Daily scrum---a short stand-up meeting \titlefloatright{15m} + \begin{itemize} + \item What did you do yesterday? + \item What will you do today? + \item Any problems? + \end{itemize} + \end{itemize} + \item \textbf{Sprint review} \titlefloatright{4h} + \begin{itemize} + \item Team holds a demo for product owner and stakeholders + \end{itemize} + \item \textbf{Sprint retrospective} \titlefloatright{2h} + \begin{itemize} + \item The good and the bad? + \item How can we improve as a team? + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Sprint planning---what should we work on the next couple of weeks?} + \begin{columns} + \begin{column}{0.69\textwidth} + \begin{itemize} + \item Dialog between product owner and development team + \begin{itemize} + \item PO: present\&adapt priority features in product backlog + \item Team: how much can be done + \begin{itemize} + \item Story points + \item Sprint velocity + \item Poker estimates are common + \end{itemize} + \end{itemize} + \item Concrete output of this meeting? + \begin{itemize} + \item A sprint backlog and definitions of `done' + \item A set of tasks for each feature in the sprint backlog + \item A sprint goal, a demo date, and how to demo + \item A time and place for daily scrum + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.29\textwidth} + \centering + \input{img/esi} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{...using cards!} + \centering + \includegraphics[height=0.8\textheight]{img/poker} +\end{frame} + +\begin{frame} + \frametitle{Daily scrum---a short stand-up meeting that repeats every day} + \begin{columns} + \begin{column}{0.39\textwidth} + \begin{itemize} + \item Purpose---keep \textbf{team members} up-to-date + \item What did you do yesterday? + \item What will you do today? + \item Any problems? + \end{itemize} + \end{column} + \begin{column}{0.59\textwidth} + \centering + \includegraphics[width=\textwidth]{img/board}\\ + A board is used to track progress + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Sprint review---show-case the latest prototype and start a dialog} + \begin{columns} + \begin{column}{0.49\textwidth} + \begin{itemize} + \item Date and time already defined---\textbf{unconditional} + \item All roles attend, including stakeholders if invited + \item A demo of the prototype shows that the sprint goal is achieved + \begin{itemize} + \item How to demo? Sprint planning... + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=\textwidth]{img/demo}\\ + \end{column} + \end{columns} + \pause + \vfill\centering\alert{Wait w000t: what if we are not done?}\\ + \pause + \alert{This is identified early on and solved accordingly!} +\end{frame} + +\begin{frame} + \frametitle{Sprint retrospective---ensure that the team improves internally} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item Product owner is excluded from this meeting + \item The goal is to improve the team productivity + \begin{itemize} + \item What did we do right? + \item What did we do wrong? + \item How can we improve? \textbf{Choose one!} + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.45\textwidth} + \centering + \includegraphics[width=\textwidth]{img/retrospective}\\ + Make lists and perhaps magnet vote + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{What does `done' really mean?} + \begin{columns} + \begin{column}{0.59\textwidth} + \begin{itemize} + \item \textbf{Can be delivered to the customer} + \begin{itemize} + \item A given feature is implemented + \item Code follows good engineering practises + \item Code is documented and refactored + \item ...or anything else defined at sprint planning + \end{itemize} + \item \textbf{If your estimates turn out to be wrong} + \begin{itemize} + \item Work harder, longer and/or smarter + \item Lower quality by skipping design, testing, integration and/or + documentation + \item Reduce and/or remove features + \item What are the pros and cons? + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.39\textwidth} + \centering + \includegraphics[width=\textwidth]{img/done} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Consequences of the `hurry-up' and `lowered-quality' approaches} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[height=0.4\textheight]{img/hurry} + \begin{itemize} + \item \textbf{Hurry-up}---work overtime, skip breaks, add more people, + ... + \begin{itemize} + \item Burnout + \item Errors + \item `More junk in short time' + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[height=0.4\textheight]{img/debt} + \begin{itemize} + \item \textbf{Lowered quality}---leads to technical debt and thus + reduced efficiency + \begin{itemize} + \item Harder to re-use code + \item Harder to add functionality + \item Harder to meet future goals + \end{itemize} + \end{itemize} + \end{column} + \end{columns} + \vfill\centering + \alert{In other words: involve product owner and go with option three} +\end{frame} + +\begin{frame} + \frametitle{From start to finnish---putting it all together} + \centering + \includegraphics[height=0.75\textheight]{img/scrum-whole} +\end{frame} + +\begin{frame} + \frametitle{Scrum and eXtreme Programming (XP)} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.9\textwidth]{img/scrum-and-xp} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.9\textwidth]{img/scrum-and-xp2} + \end{column} + \end{columns} + \begin{itemize} + \item Scrum can be viewed as a team-to-stakeholder interface + \item The team is self-organizing, but it \textbf{could} work using XP + practises + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Can't get enough? Review the concepts or dig into the details + (Optional)} + \begin{columns} + \begin{column}{0.33\textwidth} + \centering + \includegraphics[width=\textwidth]{img/scrum-1m} + \burl{https://www.youtube.com/watch?v=TRcReyRYIMg} + \end{column} + \begin{column}{0.33\textwidth} + \centering + \includegraphics[width=\textwidth]{img/scrum-2m} + \burl{https://www.youtube.com/watch?v=WxiuE-1ujCM} + \end{column} + \begin{column}{0.33\textwidth} + \centering + \includegraphics[width=\textwidth]{img/scrum-10m} + \burl{https://www.youtube.com/watch?v=XU0llRltyFM} + \end{column} + \end{columns} + \vfill + \begin{columns} + \begin{column}{0.33\textwidth} + \centering + \includegraphics[width=\textwidth]{img/agile-manifesto} + \burl{http://agilemanifesto.org/} + \end{column} + \begin{column}{0.33\textwidth} + \centering + \includegraphics[width=\textwidth]{img/scrum-guide} + \burl{https://www.scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-US.pdf} + \end{column} + \begin{column}{0.33\textwidth} + \centering + \includegraphics[width=\textwidth]{img/henke} + \burl{http://wwwis.win.tue.nl/2R690/doc/ScrumAndXpFromTheTrenchesonline07-31.pdf} + \end{column} + \end{columns} +\end{frame} diff --git a/slides/2019-it-intro-scrum/src/preamble.tex b/slides/2019-it-intro-scrum/src/preamble.tex new file mode 100644 index 0000000..1ef1078 --- /dev/null +++ b/slides/2019-it-intro-scrum/src/preamble.tex @@ -0,0 +1,73 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{graphicx} +\usepackage{color} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +\usepackage{floatrow} +%\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +%\setbeamertemplate{itemize item}[circle] +%\setbeamertemplate{itemize subitem}[default] +%\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\titlefloatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} diff --git a/slides/2019-it-intro-scrum/src/questions.tex b/slides/2019-it-intro-scrum/src/questions.tex new file mode 100644 index 0000000..85cb2f3 --- /dev/null +++ b/slides/2019-it-intro-scrum/src/questions.tex @@ -0,0 +1,17 @@ +\begin{frame} + \frametitle{Any questions?} \label{frm:que} + \begin{columns} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qleft} + \end{column} + \begin{column}{0.49\textwidth} + \centering + \includegraphics[width=0.75\textwidth]{img/qright} + \end{column} + \end{columns} + + \centering + \vspace{-1cm} + \includegraphics[width=0.20\textwidth]{img/ty} +\end{frame} diff --git a/slides/2019-it-intro-scrum/src/titlepage.tex b/slides/2019-it-intro-scrum/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2019-it-intro-scrum/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2019-side-channels/README b/slides/2019-side-channels/README new file mode 100644 index 0000000..c1ef746 --- /dev/null +++ b/slides/2019-side-channels/README @@ -0,0 +1 @@ +Guest lecture on side channels / timing attacks. diff --git a/slides/2019-side-channels/beamercolorthemergd.sty b/slides/2019-side-channels/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2019-side-channels/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2019-side-channels/beamerfontthemergd.sty b/slides/2019-side-channels/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2019-side-channels/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2019-side-channels/beamerinnerthemergd.sty b/slides/2019-side-channels/beamerinnerthemergd.sty new file mode 100644 index 0000000..4dfd6cf --- /dev/null +++ b/slides/2019-side-channels/beamerinnerthemergd.sty @@ -0,0 +1,49 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](Logo){\includegraphics[width=3cm]{img/logo}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add subtitle + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{subtitle}\insertsubtitle\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=12pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + % Add date + \node[ + text=fg, + text width=0.75\paperwidth, + below right= 0.25cm and 4.5cm of current page.north, + ](Date) {\today}; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2019-side-channels/beamerouterthemergd.sty b/slides/2019-side-channels/beamerouterthemergd.sty new file mode 100644 index 0000000..15501a8 --- /dev/null +++ b/slides/2019-side-channels/beamerouterthemergd.sty @@ -0,0 +1,65 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add mail + \begin{beamercolorbox}[ + wd=0.22\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \texttt{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add author + \begin{beamercolorbox}[ + wd=0.73\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + \inserttitle--- \insertsubtitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2019-side-channels/beamerthemergd.sty b/slides/2019-side-channels/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2019-side-channels/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2019-side-channels/img/attacker.jpg b/slides/2019-side-channels/img/attacker.jpg Binary files differnew file mode 100644 index 0000000..3a0adec --- /dev/null +++ b/slides/2019-side-channels/img/attacker.jpg diff --git a/slides/2019-side-channels/img/client.png b/slides/2019-side-channels/img/client.png Binary files differnew file mode 100644 index 0000000..f1ad88d --- /dev/null +++ b/slides/2019-side-channels/img/client.png diff --git a/slides/2019-side-channels/img/countermeasure.py b/slides/2019-side-channels/img/countermeasure.py new file mode 100755 index 0000000..dda0868 --- /dev/null +++ b/slides/2019-side-channels/img/countermeasure.py @@ -0,0 +1,18 @@ +#!/usr/bin/python + +def is_equal(s1, s2): + ''' + Returns true if the strings s1 and s2 encode the same information. + ''' + if len(s1) != len(s2): + return False + + result = 0 + for (x,y) in zip(s1,s2): + result |= ord(x) ^ ord(y) + + return result == 0 + +target, strs = "abc", [ "ab", "abc", "abcd", "bbc", "abe" ] +for s in strs: + print("{} == {} ? {}".format(target,s,is_equal(target,s))) diff --git a/slides/2019-side-channels/img/demo.png b/slides/2019-side-channels/img/demo.png Binary files differnew file mode 100644 index 0000000..509c9ad --- /dev/null +++ b/slides/2019-side-channels/img/demo.png diff --git a/slides/2019-side-channels/img/grandpa.png b/slides/2019-side-channels/img/grandpa.png Binary files differnew file mode 100644 index 0000000..1953027 --- /dev/null +++ b/slides/2019-side-channels/img/grandpa.png diff --git a/slides/2019-side-channels/img/isn b/slides/2019-side-channels/img/isn new file mode 100644 index 0000000..4e536b5 --- /dev/null +++ b/slides/2019-side-channels/img/isn @@ -0,0 +1,7 @@ +read(MEM[5]); +read(MEM[5]); +... +raise_exception(); +data = read(MEM[7]); +read(MEM[data]) +... diff --git a/slides/2019-side-channels/img/logo.png b/slides/2019-side-channels/img/logo.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2019-side-channels/img/logo.png diff --git a/slides/2019-side-channels/img/meltdown-dump.png b/slides/2019-side-channels/img/meltdown-dump.png Binary files differnew file mode 100644 index 0000000..6ecf2cf --- /dev/null +++ b/slides/2019-side-channels/img/meltdown-dump.png diff --git a/slides/2019-side-channels/img/meltdown-ff.png b/slides/2019-side-channels/img/meltdown-ff.png Binary files differnew file mode 100644 index 0000000..f097f49 --- /dev/null +++ b/slides/2019-side-channels/img/meltdown-ff.png diff --git a/slides/2019-side-channels/img/meltdown-insn.png b/slides/2019-side-channels/img/meltdown-insn.png Binary files differnew file mode 100644 index 0000000..6b3b686 --- /dev/null +++ b/slides/2019-side-channels/img/meltdown-insn.png diff --git a/slides/2019-side-channels/img/meltdown-isn b/slides/2019-side-channels/img/meltdown-isn new file mode 100644 index 0000000..19e9bd5 --- /dev/null +++ b/slides/2019-side-channels/img/meltdown-isn @@ -0,0 +1,3 @@ +data = read(MEM[addr]) +raise_exception(); +read(probe_array[data * 4096]) diff --git a/slides/2019-side-channels/img/meltdown-out-of-order.png b/slides/2019-side-channels/img/meltdown-out-of-order.png Binary files differnew file mode 100644 index 0000000..b941373 --- /dev/null +++ b/slides/2019-side-channels/img/meltdown-out-of-order.png diff --git a/slides/2019-side-channels/img/meltdown-pageload.png b/slides/2019-side-channels/img/meltdown-pageload.png Binary files differnew file mode 100644 index 0000000..1304f32 --- /dev/null +++ b/slides/2019-side-channels/img/meltdown-pageload.png diff --git a/slides/2019-side-channels/img/meltdown.png b/slides/2019-side-channels/img/meltdown.png Binary files differnew file mode 100644 index 0000000..476eada --- /dev/null +++ b/slides/2019-side-channels/img/meltdown.png diff --git a/slides/2019-side-channels/img/memlayout.png b/slides/2019-side-channels/img/memlayout.png Binary files differnew file mode 100644 index 0000000..779f137 --- /dev/null +++ b/slides/2019-side-channels/img/memlayout.png diff --git a/slides/2019-side-channels/img/pandora.jpg b/slides/2019-side-channels/img/pandora.jpg Binary files differnew file mode 100644 index 0000000..b8763ea --- /dev/null +++ b/slides/2019-side-channels/img/pandora.jpg diff --git a/slides/2019-side-channels/img/printersound.png b/slides/2019-side-channels/img/printersound.png Binary files differnew file mode 100644 index 0000000..99e253d --- /dev/null +++ b/slides/2019-side-channels/img/printersound.png diff --git a/slides/2019-side-channels/img/security-door-zoomin.png b/slides/2019-side-channels/img/security-door-zoomin.png Binary files differnew file mode 100644 index 0000000..200de7f --- /dev/null +++ b/slides/2019-side-channels/img/security-door-zoomin.png diff --git a/slides/2019-side-channels/img/security-door-zoomout.png b/slides/2019-side-channels/img/security-door-zoomout.png Binary files differnew file mode 100644 index 0000000..934e998 --- /dev/null +++ b/slides/2019-side-channels/img/security-door-zoomout.png diff --git a/slides/2019-side-channels/img/security-door.png b/slides/2019-side-channels/img/security-door.png Binary files differnew file mode 100644 index 0000000..0a38cec --- /dev/null +++ b/slides/2019-side-channels/img/security-door.png diff --git a/slides/2019-side-channels/img/server.png b/slides/2019-side-channels/img/server.png Binary files differnew file mode 100644 index 0000000..8ca8af3 --- /dev/null +++ b/slides/2019-side-channels/img/server.png diff --git a/slides/2019-side-channels/img/smartcard.png b/slides/2019-side-channels/img/smartcard.png Binary files differnew file mode 100644 index 0000000..d8306cd --- /dev/null +++ b/slides/2019-side-channels/img/smartcard.png diff --git a/slides/2019-side-channels/img/strcmp.py b/slides/2019-side-channels/img/strcmp.py new file mode 100755 index 0000000..89688fc --- /dev/null +++ b/slides/2019-side-channels/img/strcmp.py @@ -0,0 +1,18 @@ +#!/usr/bin/python + +def is_equal(s1, s2): + ''' + Returns true if the strings s1 and s2 encode the same information. + ''' + if len(s1) != len(s2): + return False + + for (x,y) in zip(s1,s2): + if x != y: + return False + + return True + +target, strs = "abc", [ "ab", "abc", "abcd", "bbc", "abe" ] +for s in strs: + print("{} == {} ? {}".format(target,s,is_equal(target,s))) diff --git a/slides/2019-side-channels/img/timeit.png b/slides/2019-side-channels/img/timeit.png Binary files differnew file mode 100644 index 0000000..0ee3c11 --- /dev/null +++ b/slides/2019-side-channels/img/timeit.png diff --git a/slides/2019-side-channels/img/ultrasound.png b/slides/2019-side-channels/img/ultrasound.png Binary files differnew file mode 100644 index 0000000..b0de69e --- /dev/null +++ b/slides/2019-side-channels/img/ultrasound.png diff --git a/slides/2019-side-channels/img/voip.png b/slides/2019-side-channels/img/voip.png Binary files differnew file mode 100644 index 0000000..1c0a912 --- /dev/null +++ b/slides/2019-side-channels/img/voip.png diff --git a/slides/2019-side-channels/main.tex b/slides/2019-side-channels/main.tex new file mode 100644 index 0000000..89521c9 --- /dev/null +++ b/slides/2019-side-channels/main.tex @@ -0,0 +1,26 @@ +\pdfminorversion=4 +%\documentclass[handout,aspectratio=169]{beamer} +\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + Side-channels that break security in practise +} +\subtitle{% +} +\author{% + Rasmus Dahlberg +} +\institute{% + Karlstad University +} +\date{% + \today +} + +\begin{document} + \input{src/titlepage} + \input{src/body} +\end{document} diff --git a/slides/2019-side-channels/slides.pdf b/slides/2019-side-channels/slides.pdf Binary files differnew file mode 100644 index 0000000..6009645 --- /dev/null +++ b/slides/2019-side-channels/slides.pdf diff --git a/slides/2019-side-channels/src/body.tex b/slides/2019-side-channels/src/body.tex new file mode 100644 index 0000000..a2ede47 --- /dev/null +++ b/slides/2019-side-channels/src/body.tex @@ -0,0 +1,536 @@ +\begin{frame} + \mktitle{Learning outcomes} + \begin{columns} + \begin{column}{0.75\textwidth} + \begin{itemize} + \item Understand the threat of side-channels + \item Get an intuition of timing attacks + \end{itemize} + \end{column} + \begin{column}{0.25\textwidth} + \centering + \includegraphics[width=.8\textwidth]{img/meltdown} + \end{column} + \end{columns} + \vfill + \alert{No in-depth programming and cryptographic details} +\end{frame} + +\begin{frame} + \mktitle{Setting and security} + \begin{tikzpicture} + \node[draw=none](server){ + \includegraphics[width=60pt]{img/server} + }; + \node[draw=none,left=100pt of server](client){ + \includegraphics[width=40pt]{img/client} + }; + \path[draw, latex-latex] (client) -- (server); + \end{tikzpicture} +\end{frame} + +\begin{frame} + \mktitle{Security on paper} + \includegraphics[height=.67\textheight]{img/security-door-zoomin} +\end{frame} + +\begin{frame} + \mktitle{Reality --- not a black box} + \includegraphics[height=.67\textheight]{img/security-door-zoomout} +\end{frame} + +\begin{frame} + \mktitle{Side channels --- Pandora's box} + \begin{columns} + \begin{column}{.5\textwidth} + \hfill + \includegraphics[height=.67\textheight]{img/pandora} + \end{column} + \begin{column}{.5\textwidth} + \begin{itemize} + \item Power consumption + \item EM radiation + \item Heat + \item Sound + \item Cache + \item Faults + \item Timing + \item Size + \item ... + % REMINDER@Pandora: ... -> e.g., disk access patterns + \end{itemize} + \end{column} + \end{columns} + % REMINDER@Pandora: sky is the limit, there are lots of things to measure +\end{frame} + +\begin{frame} + \mktitle{Printer sounds --- document content leaked} + \includegraphics[height=.67\textheight]{img/printersound} + \vfill\scriptsize{ + Backes \emph{et~al.}: + Acoustic Side-Channel Attacks on Printers, + In: USENIX Security + (2010) + } +\end{frame} + +\begin{frame} + \mktitle{Laptop sounds --- secret key leaked} + \includegraphics[width=.67\textwidth]{img/ultrasound} + \vfill\scriptsize{ + Genkin \emph{et~al.}: + RSA Key Extraction via Low-Bandwidth Acoustic Cryptanalysis, + In: Crypto + (2014) + } +\end{frame} + +\begin{frame} + \mktitle{Energy consumption --- secret key leaked} + \includegraphics[width=.67\textwidth]{img/smartcard} + \vfill\scriptsize{ + Messerges \emph{et~al.}: + Power Analysis Attacks of Modular Exponentiation in Smartcards, + In: CHES (1999) + } +\end{frame} + +\begin{frame} + \mktitle{Packet size --- encrypted content leaked} + \includegraphics[height=.67\textheight]{img/voip} + \vfill\scriptsize{ + White \emph{et~al.}: + Phonotactic Reconstruction of Encrypted VoIP Conversations: + Hookt on Fon-iks, + In: IEEE SP + (2011) + } +\end{frame} + +\begin{frame} + \mktitle{Response timing --- message forgery} + \begin{tikzpicture} + \node[draw=none](server){ + \includegraphics[width=60pt]{img/server} + }; + \node[draw=none,left=100pt of server](client){ + \includegraphics[width=40pt]{img/attacker} + }; + \path[draw, -latex] + (client.34) |- + node[draw=none,above,pos=.75]{\texttt{msg, tag}} + (server.155); + \path[draw, -latex] + (server.199) |- + node[draw=none,above,pos=.75]{\texttt{yes/no}} + (client.335); + \end{tikzpicture} + \vfill\scriptsize{ + Crosby \emph{et al.}: + Opportunities and Limits of Remote Timing Attacks, + In: TISSEC + (2009) + }\\ + \scriptsize{ + Hale: + A lesson in timing attacks, + URL: \url{https://codahale.com/a-lesson-in-timing-attacks/} + (2009) + } +\end{frame} + +\begin{frame} + \mktitle{Scope} + \begin{tikzpicture} + \node[draw,rectangle, + minimum width=.6\textwidth, + minimum height=.4\textheight, + fill=gray!33, + ](sc){}; + \node[draw=none,below=0pt of sc.150]{side-channels}; + \node[draw,circle, + minimum width=.15\textwidth, + fill=rgdGreen, + text=white, + ](t){\textbf{timing}}; + \end{tikzpicture} +\end{frame} + +\begin{frame} + \mktitle{Effort to crack this password?} + \begin{tikzpicture}[ + rgddBox/.style = { + draw = black, + minimum width = 20pt, + minimum height = 20pt, + fill = gray!33, + font = \bfseries, + } + ] + \def\rgddBoxData{{z},{f},{T},{B},{s},{v},{g},{O},{e},{t}} + \foreach[count=\i] \x in \rgddBoxData{ + \ifnum\i=1\relax + \node[rgddBox](p\i){\x}; + \else + \pgfmathparse{int(\i-1)} + \node[rgddBox,right=6pt of p\pgfmathresult](p\i){\x}; + \fi + \node[draw=none,text=darkRed,above=0pt of p\i]{\i}; + } + %\pause + \foreach[count=\i] \x in \rgddBoxData{ + \node[draw=none,text=darkGreen,below=0pt of p\i]{52}; + } + \end{tikzpicture} + \pause + \vfill + 144555105949057024 + \pause + \vfill + $52^{10}$ combinations and 100M queries/s $\rightarrow$ 46 years + %REMINDER@Password: exponential increase for each character + \pause + \\\includegraphics[height=.2\textheight]{img/grandpa} +\end{frame} + +\begin{frame} + \mktitle{Experiment --- are these strings equal?} + \pause + \texttt{0000000000000000} \floatright{\texttt{9389349108837912}}\\ + \pause + \texttt{0000439513027213} \floatright{\texttt{0000431513027213}}\\ + \pause + \texttt{7485820126271479} \floatright{\texttt{7485820126371479}}\\ +\end{frame} + +\begin{frame} + \mktitle{Comparing strings like a programmer} + \begin{tikzpicture}[ + rgddBox/.style = { + draw = black, + minimum width = 20pt, + minimum height = 20pt, + fill = gray!33, + font = \bfseries, + }, + rgddPopup/.style = { + draw=rgdGreen, + thick, + rectangle, + fill=rgdYellow, + minimum width = \textwidth, + minimum height = 40pt, + }, + ] + \def\rgddBoxData{{7},{4},{8},{5}} + \foreach[count=\i] \x in \rgddBoxData{ + \ifnum\i=1\relax + \node[rgddBox](p\i){\x}; + \else + \pgfmathparse{int(\i-1)} + \node[rgddBox,right=6pt of p\pgfmathresult](p\i){\x}; + \fi + } + + \def\rgddBoxData{{7},{4},{0},{2}} + \foreach[count=\i] \x in \rgddBoxData{ + \ifnum\i=1\relax + \node[rgddBox,right=60pt of p4](q\i){\x}; + \else + \pgfmathparse{int(\i-1)} + \node[rgddBox,right=6pt of q\pgfmathresult](q\i){\x}; + \fi + } + + \foreach \i in {1,...,3}{ + \only<\i>{\node[draw=none,below=6pt of p\i]{\lding};} + \only<\i>{\node[draw=none,below=6pt of q\i]{\lding};} + } + + \only<4>{ + \node[rgddPopup] at ($ (p4) !.5! (q4) $) {\Huge no need to continue}; + } + \end{tikzpicture} +\end{frame} + +%\begin{frame} +% \mktitle{Programming 101 --- string comparison} +% \lstinputlisting[style=CStyle,firstline=3,lastline=14]{img/strcmp.py} +%\end{frame} + +\begin{frame} + \mktitle{Timing --- an inutitive note} + \includegraphics[width=\textwidth]{img/timeit} +\end{frame} + +\begin{frame} + \mktitle{Effort to crack this password?} + \begin{tikzpicture}[ + rgddBox/.style = { + draw = black, + minimum width = 20pt, + minimum height = 20pt, + fill = gray!33, + font = \bfseries, + } + ] + \def\rgddBoxData{{z},{f},{T},{B},{s},{v},{g},{O},{e},{t}} + \foreach[count=\i] \x in \rgddBoxData{ + \ifnum\i=1\relax + \node[rgddBox](p\i){\x}; + \else + \pgfmathparse{int(\i-1)} + \node[rgddBox,right=6pt of p\pgfmathresult](p\i){\x}; + \fi + \node[draw=none,text=darkRed,above=0pt of p\i]{\i}; + } + \foreach[count=\i] \x in \rgddBoxData{ + \node[draw=none,text=darkGreen,below=0pt of p\i]{52}; + } + \end{tikzpicture} + \vfill + + \pause + \begin{tikzpicture}[ + rgddBox/.style = { + draw = black, + minimum width = 20pt, + minimum height = 20pt, + fill = gray!33, + font = \bfseries, + } + ] + \def\rgddBoxData{{a},{a},{a},{a},{a},{a},{a},{a},{a},{a}} + \foreach[count=\i] \x in \rgddBoxData{ + \ifnum\i=1\relax + \node[rgddBox](q\i){\x}; + \else + \pgfmathparse{int(\i-1)} + \node[rgddBox,right=6pt of q\pgfmathresult](q\i){\x}; + \fi + + } + + \def\rgddBoxData{{z},{f},{T},{B},{s},{v},{g},{O},{e},{t}} + \foreach[count=\i] \x in \rgddBoxData{ + \ifnum\i<5\pause\fi + \ifnum\i=1\relax + \node[rgddBox, text=darkOrange](q\i){\x}; + \else + \pgfmathparse{int(\i-1)} + \node[rgddBox, text=darkOrange, right=6pt of q\pgfmathresult](q\i){\x}; + \fi + } + \end{tikzpicture} + %$52*10$ tries $\rightarrow$ ``negl'' time + %REMINDER@Password: linear increase for each character +\end{frame} + +\begin{frame} + \mktitle{Demo --- Experimental setup} + + \begin{tikzpicture} + \node[draw=none](server){ + \includegraphics[width=60pt]{img/server} + }; + \node[draw=none,left=100pt of server](client){ + \includegraphics[width=40pt]{img/attacker} + }; + \path[draw, -latex] + (client.34) |- + node[draw=none,above,pos=.75]{\texttt{msg, tag}} + (server.155); + \path[draw, -latex] + (server.199) |- + node[draw=none,above,pos=.75]{\texttt{yes/no}} + (client.335); + \path[draw,-latex] + (server) edge[loop right] + node[draw=none,pos=.7,below]{ + \begin{tabular}{c} + byte-by-byte cmp\\ + with $\approx$ms sleep + \end{tabular} + } + (); + + \end{tikzpicture} + \vfill\url{https://github.com/rgdd/timing-server} +\end{frame} + +\begin{frame} + \mktitle{Can you recommend another demo? Asking for a friend} + \includegraphics[height=.67\textheight]{img/demo} + \url{https://www.youtube.com/watch?v=2-zQp26nbY8} +\end{frame} + +\begin{frame} + \mktitle{Countermeasure -- constant time compare} + \begin{tikzpicture}[ + rgddBox/.style = { + draw = black, + minimum width = 20pt, + minimum height = 20pt, + fill = gray!33, + font = \bfseries, + }, + rgddPopup/.style = { + draw=rgdGreen, + thick, + rectangle, + fill=rgdYellow, + minimum width = \textwidth, + minimum height = 40pt, + }, + ] + \def\rgddBoxData{{7},{4},{8},{5}} + \foreach[count=\i] \x in \rgddBoxData{ + \ifnum\i=1\relax + \node[rgddBox](p\i){\x}; + \else + \pgfmathparse{int(\i-1)} + \node[rgddBox,right=6pt of p\pgfmathresult](p\i){\x}; + \fi + } + + \def\rgddBoxData{{7},{4},{0},{2}} + \foreach[count=\i] \x in \rgddBoxData{ + \ifnum\i=1\relax + \node[rgddBox,right=60pt of p4](q\i){\x}; + \else + \pgfmathparse{int(\i-1)} + \node[rgddBox,right=6pt of q\pgfmathresult](q\i){\x}; + \fi + } + + \foreach \i in {1,...,4}{ + \only<\i>{\node[draw=none,below=6pt of p\i]{\lding};} + \only<\i>{\node[draw=none,below=6pt of q\i]{\lding};} + } + \end{tikzpicture} +\end{frame} + +%\begin{frame} +% \mktitle{Countermeasure --- constant time compare} +% \lstinputlisting[style=CStyle,firstline=3,lastline=14]{img/countermeasure.py} +%\end{frame} + +\begin{frame} + \mktitle{Lessons learned} + \centering + + \textbf{Adversarial input?} + Think twice before using standard equality operators + + \vfill + \textbf{Cryptography in code?} Stick to cryptographic libraries, hope for + the best +\end{frame} + +\begin{frame} + \mktitle{Meltdown} + \includegraphics[height=.67\textheight]{img/meltdown} + \vfill\scriptsize{ + Lipp \emph{et~al.}: + Meltdown, + In: CoRR abs/1801.01207 + (2018) + } +\end{frame} + +\begin{frame} + \mktitle{Preliminaries --- per-process virtual memory layout} + \includegraphics[width=.67\textwidth]{img/memlayout} + \vfill + \begin{tikzpicture} + \Tree [ + .{page table} [ + .{\textcolor{darkBlue}{address translation}} + ] [ + .{\textcolor{darkGreen}{privelege checks}} + ] + ] + \end{tikzpicture} +\end{frame} + +\begin{frame} + \mktitle{Preliminaries --- caching and out-of-order execution} + \begin{tikzpicture}[ + rgddBox/.style = { + draw = black, + minimum width = 20pt, + minimum height = 20pt, + fill = gray!33, + font = \bfseries, + } + ] + \def\rgddBoxData{{},{},{},{},{},{},{},{},{}} + \foreach[count=\i] \x in \rgddBoxData{ + \ifnum\i=1\relax + \node[rgddBox](p\i){\x}; + \else + \pgfmathparse{int(\i-1)} + \node[rgddBox,right=6pt of p\pgfmathresult](p\i){\x}; + \fi + \node[draw=none,text=darkRed,above=0pt of p\i]{\i}; + + } + + % First access + \node[draw=none,below=of p3,font=\rmfamily](call1){% + \texttt{access}($\mathsf{MEM}[5]$) + }; + \path[draw, -latex] + (call1) -- + node[draw=none,sloped,above,font=\scriptsize]{slow} + (p5.248); + + % Second access + \node[draw=none,below=of p7,font=\rmfamily](call2){% + \texttt{access}($\mathsf{MEM}[5]$) + }; + \path[draw, -latex] + (call2) -- + node[draw=none,sloped,above,font=\scriptsize]{fast} + (p5.292); + \end{tikzpicture} + + \pause + \begin{columns} + \begin{column}{.29\textwidth} + \lstinputlisting[style=CStyle]{img/isn} + \end{column} + + \begin{column}{.49\textwidth} + \includegraphics[width=\textwidth]{img/meltdown-out-of-order} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Ooops --- leaked privileged memory?} + \begin{columns} + \begin{column}{.45\textwidth} + \lstinputlisting[style=CStyle]{img/meltdown-isn} + \end{column} + \end{columns} + \pause + \vfill + \includegraphics[width=.67\textwidth]{img/meltdown-pageload} +\end{frame} + +\begin{frame} + \mktitle{Proof of concept} + \hfill + \includegraphics[height=.5\textheight]{img/meltdown-dump} + \hfill + \includegraphics[height=.5\textheight]{img/meltdown-ff} + \hfill +\end{frame} + +\begin{frame} + \vfill\centering\Large\textbf{ + That's it --- questions? + }\vfill +\end{frame} diff --git a/slides/2019-side-channels/src/preamble.tex b/slides/2019-side-channels/src/preamble.tex new file mode 100644 index 0000000..56ed3df --- /dev/null +++ b/slides/2019-side-channels/src/preamble.tex @@ -0,0 +1,114 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[utf8]{inputenc} +\usepackage[swedish]{babel} + +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{rotate} +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{wasysym} +\usepackage{graphicx} +\usepackage{color} +\usepackage{drawstack} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage{floatrow}% this one causes error on arch for some reason +\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, % Color links instead of boxes + urlcolor = darkBlue, % Color external hyper links + linkcolor = darkBlue, % Color internal links + citecolor = darkBlue, % Color citations +} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +\lstdefinestyle{CStyle}{ + backgroundcolor=\color{lightGray!25}, + commentstyle=\color{darkGreen}, + keywordstyle=\color{darkBlue}, + numberstyle=\tiny\color{darkRed}, + stringstyle=\color{darkPurple}, + basicstyle=\footnotesize, + breakatwhitespace=false, + breaklines=false, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + language=C, + morekeywords={size_t,def,in,zip,True,False,ord}, +} + +\setbeamertemplate{itemize item}[circle] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\floatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} + +\def\rding{\rotatebox[origin=c]{-91}{\ding{224}}} +\def\lding{\rotatebox[origin=c]{91}{\ding{224}}} + +% TODO: fix this properly... +\newcommand{\mktitle}[1]{\centering\textbf{\large#1}\vfill\normalsize} diff --git a/slides/2019-side-channels/src/titlepage.tex b/slides/2019-side-channels/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2019-side-channels/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2021-aha/README b/slides/2021-aha/README new file mode 100644 index 0000000..e8027a5 --- /dev/null +++ b/slides/2021-aha/README @@ -0,0 +1 @@ +An internal talk I did at Mullvad VPN. diff --git a/slides/2021-aha/beamercolorthemergd.sty b/slides/2021-aha/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2021-aha/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2021-aha/beamerfontthemergd.sty b/slides/2021-aha/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2021-aha/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2021-aha/beamerinnerthemergd.sty b/slides/2021-aha/beamerinnerthemergd.sty new file mode 100644 index 0000000..b96a415 --- /dev/null +++ b/slides/2021-aha/beamerinnerthemergd.sty @@ -0,0 +1,49 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoMul){\includegraphics[width=3.5cm]{img/mullvad}} + (current page.west) -- + (current page.north west); + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north east) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoKau){\includegraphics[width=3cm]{img/kau}} + (current page.east) -- + (current page.north east); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add date + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{date}\today\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2021-aha/beamerouterthemergd.sty b/slides/2021-aha/beamerouterthemergd.sty new file mode 100644 index 0000000..45ba820 --- /dev/null +++ b/slides/2021-aha/beamerouterthemergd.sty @@ -0,0 +1,71 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add metadata + \begin{beamercolorbox}[ + wd=0.50\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \href{https://rgdd.github.io}{rgdd.github.io} + $\cdots$ + \href{https://twitter.com/\_\_rgdd}{@\_\_rgdd} + $\cdots$ + \href{mailto:rasmus@mullvad.net}{rasmus@mullvad.net} + $\cdots$ + \href{mailto:rasmus.dahlberg@kau.se}{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add title + \begin{beamercolorbox}[ + wd=0.45\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + \inserttitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2021-aha/beamerthemergd.sty b/slides/2021-aha/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2021-aha/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2021-aha/handout.pdf b/slides/2021-aha/handout.pdf Binary files differnew file mode 100644 index 0000000..e210a10 --- /dev/null +++ b/slides/2021-aha/handout.pdf diff --git a/slides/2021-aha/img/after.tex b/slides/2021-aha/img/after.tex new file mode 100644 index 0000000..c2af725 --- /dev/null +++ b/slides/2021-aha/img/after.tex @@ -0,0 +1,70 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Publisher) at (0,0) { Publisher }; + \node[entity, fill=darkGreen, below=1.5cm of Publisher] (EndUser) {End-user}; + \node[entity, fill=darkOrange, left=1.5cm of Publisher] (Log) {Log}; + \node[entity, fill=darkRed, below=1.5cm of Log] (Witness) {Witness}; + + % Key setup + \path[path, dashed] ($ (EndUser) + (2,0) $) -- + node[relation, above] { Public keys } + (EndUser); + % Get data and signature + \path[path] (Publisher) -- + node[relation, right] { + \begin{tabular}{c} + Opaque data\\ + Signature\\ + Proofs of logging\\ + \end{tabular} + } + (EndUser); + % Verification + \path[path, rounded corners] + (EndUser.180) -| + ($ (EndUser) + (-1.25,-.75) $) + node[relation, below]{ + Verify + } -| + (EndUser.210); + + + % Cosigning + \path[path] (Witness) edge[bend right] + node[relation,right]{Cosignature} + (Log); + \path[path] (Log) edge[bend right] + node[relation,left]{Tree head} + (Witness); + \path[path, rounded corners] + (Witness.180) -| + ($ (Witness) + (-1.25,-.75) $) + node[relation, below]{ + Verify + } -| + (Witness.210); + + % Get proofs + \path[path] (Log) -- + node[relation,above]{Proofs of logging} + (Publisher); +\end{tikzpicture} diff --git a/slides/2021-aha/img/before.tex b/slides/2021-aha/img/before.tex new file mode 100644 index 0000000..f634ef4 --- /dev/null +++ b/slides/2021-aha/img/before.tex @@ -0,0 +1,46 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Publisher) at (0,0) { Publisher }; + \node[entity, fill=darkGreen, below=1.5cm of Publisher] (EndUser) {End-user}; + + % Key setup + \path[path, dashed] ($ (EndUser) + (2,0) $) -- + node[relation, above] { Public key } + (EndUser); + % Get data and signature + \path[path] (Publisher) -- + node[relation, right] { + \begin{tabular}{c} + Opaque data\\ + Signature\\ + \end{tabular} + } + (EndUser); + % Verification + \path[path, rounded corners] + (EndUser.180) -| + ($ (EndUser) + (-1.25,-.75) $) + node[relation, below]{ + Verify + } -| + (EndUser.210); +\end{tikzpicture} diff --git a/slides/2021-aha/img/beverwijk.jpg b/slides/2021-aha/img/beverwijk.jpg Binary files differnew file mode 100644 index 0000000..3ac9d1a --- /dev/null +++ b/slides/2021-aha/img/beverwijk.jpg diff --git a/slides/2021-aha/img/clean.jpg b/slides/2021-aha/img/clean.jpg Binary files differnew file mode 100644 index 0000000..2465e5e --- /dev/null +++ b/slides/2021-aha/img/clean.jpg diff --git a/slides/2021-aha/img/ct.tex b/slides/2021-aha/img/ct.tex new file mode 100644 index 0000000..9ae60c3 --- /dev/null +++ b/slides/2021-aha/img/ct.tex @@ -0,0 +1,69 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Website) at (0,0) { Website }; + \node[entity, fill=darkGreen, below=1.5cm of Website] (Browser) {Browser}; + \node[entity, fill=darkOrange, left=1.5cm of Website] (Log) {Log}; + \node[entity, fill=darkRed, below=1.5cm of Log] (Monitor) {Monitor}; + + % Get certificate and proofs of logging + \path[path] (Website) -- + node[relation, right] { + \begin{tabular}{c} + Certificate\\ + Proofs of logging\\ + \end{tabular} + } + (Browser); + % Verification + \path[path, rounded corners] + (Browser.180) -| + ($ (Browser) + (-1.25,-.75) $) + node[relation, below]{ + Verify + } -| + (Browser.210); + + % Monitoring + \path[path] (Monitor) edge[bend right] + node[relation,right]{} + (Log); + \path[path] (Log) edge[bend right] + node[relation,left]{} + (Monitor); + \path[path, rounded corners] + (Monitor.180) -| + ($ (Monitor) + (-1.25,-.75) $) + node[relation, below]{ + Mis-issuance? + } -| + (Monitor.210); + + % Get proofs + \path[path, dashed] (Log) -- + node[relation,above]{Proofs of logging} + (Website); + + % Add certificates to log + \path[path, dashed] ($ (Log) + (-2,0) $) -- + node[relation, above] { Certificates } + (Log); +\end{tikzpicture} diff --git a/slides/2021-aha/img/curl.jpg b/slides/2021-aha/img/curl.jpg Binary files differnew file mode 100644 index 0000000..51765e7 --- /dev/null +++ b/slides/2021-aha/img/curl.jpg diff --git a/slides/2021-aha/img/diginotar.jpg b/slides/2021-aha/img/diginotar.jpg Binary files differnew file mode 100644 index 0000000..c185e38 --- /dev/null +++ b/slides/2021-aha/img/diginotar.jpg diff --git a/slides/2021-aha/img/kau.png b/slides/2021-aha/img/kau.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2021-aha/img/kau.png diff --git a/slides/2021-aha/img/log-request.tex b/slides/2021-aha/img/log-request.tex new file mode 100644 index 0000000..08edf87 --- /dev/null +++ b/slides/2021-aha/img/log-request.tex @@ -0,0 +1,47 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Publisher) at (0,0) { Publisher }; + \node[entity, fill=darkGreen, below=1.5cm of Publisher] (DNS) {DNS}; + \node[entity, fill=darkOrange, left=1.5cm of Publisher] (Log) {Log}; + + % Setup DNS + \path[path, dashed] (Publisher) -- + node[relation, right] {TXT RR} + (DNS); + + \path[path] (Publisher) edge[bend right] + node[relation, above] { + Key-value pairs + } + (Log); + \path[path] (Log) edge[bend right] + node[relation,below] { + accept/reject + } + (Publisher); + + \path[path, rounded corners] (Log) |- + node[relation,below,pos=.75]{ + verify TXT RR + } + (DNS); +\end{tikzpicture} diff --git a/slides/2021-aha/img/mt.tex b/slides/2021-aha/img/mt.tex new file mode 100644 index 0000000..3deaf62 --- /dev/null +++ b/slides/2021-aha/img/mt.tex @@ -0,0 +1,19 @@ +\begin{tikzpicture}[ + -latex, +] + \Tree [ + .$\hash(h_{01}\concat h_{23})$ [ + .$h_{01}\coloneqq\hash(h_0\concat h_1)$ [ + .$h_0\coloneqq\hash(\mathsf{foo})$ + ] [ + .$h_1\coloneqq\hash(\mathsf{bar})$ + ] + ] [ + .$h_{23}\coloneqq\hash(h_2\concat h_3)$ [ + .$h_2\coloneqq\hash(\mathsf{baz})$ + ] [ + .$h_3\coloneqq\hash(\mathsf{qux})$ + ] + ] + ] +\end{tikzpicture} diff --git a/slides/2021-aha/img/mullvad.png b/slides/2021-aha/img/mullvad.png Binary files differnew file mode 100644 index 0000000..4574eb1 --- /dev/null +++ b/slides/2021-aha/img/mullvad.png diff --git a/slides/2021-aha/img/openbsd.pdf b/slides/2021-aha/img/openbsd.pdf Binary files differnew file mode 100644 index 0000000..53c6c98 --- /dev/null +++ b/slides/2021-aha/img/openbsd.pdf diff --git a/slides/2021-aha/img/rb.png b/slides/2021-aha/img/rb.png Binary files differnew file mode 100644 index 0000000..a0b30cb --- /dev/null +++ b/slides/2021-aha/img/rb.png diff --git a/slides/2021-aha/img/rgdd.jpg b/slides/2021-aha/img/rgdd.jpg Binary files differnew file mode 100644 index 0000000..597b406 --- /dev/null +++ b/slides/2021-aha/img/rgdd.jpg diff --git a/slides/2021-aha/img/thanks.pdf b/slides/2021-aha/img/thanks.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2021-aha/img/thanks.pdf diff --git a/slides/2021-aha/img/tree-leaf.trunnel b/slides/2021-aha/img/tree-leaf.trunnel new file mode 100644 index 0000000..c3806f3 --- /dev/null +++ b/slides/2021-aha/img/tree-leaf.trunnel @@ -0,0 +1,9 @@ +/* + * The logged Merkle tree leaf data + */ +struct tree_leaf { + u64 shard_hint; + u8 checksum[32]; + u8 signature[64]; + u8 key_hash[32]; +} diff --git a/slides/2021-aha/main.tex b/slides/2021-aha/main.tex new file mode 100644 index 0000000..2d8a8b6 --- /dev/null +++ b/slides/2021-aha/main.tex @@ -0,0 +1,21 @@ +\pdfminorversion=4 +%\documentclass[handout,aspectratio=169]{beamer} +\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + Transparent Logging---An introduction and ongoing work +} +\author{% + Rasmus Dahlberg +} +\date{% + \today +} + +\begin{document} + \input{src/titlepage} + \input{src/body} +\end{document} diff --git a/slides/2021-aha/slides.pdf b/slides/2021-aha/slides.pdf Binary files differnew file mode 100644 index 0000000..c3dc16b --- /dev/null +++ b/slides/2021-aha/slides.pdf diff --git a/slides/2021-aha/src/body.tex b/slides/2021-aha/src/body.tex new file mode 100644 index 0000000..0778fe7 --- /dev/null +++ b/slides/2021-aha/src/body.tex @@ -0,0 +1,465 @@ +% +% Title page +% - Hi everyone +% - Welcome to my talk <tile> +% - I'm Rasmus +% -- I work in the TCR group together with Fredrik and others +% -- I've been here since September, and it started out as an internship. Then +% we decided to prolong that into something more permanent. +% -- I am also aff. with Kau, where I do my PhD studies. +% -- Surprise surprise, my thesis is about transparent logs. +% + +\begin{frame} + \vfill + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{Outline} + \begin{enumerate} + \item Transparent Logging + \begin{itemize} + \item Why? % Let's talk DigiNotar + \item How? % Let's talk CT + \item What? % What should you make transparent + \end{itemize} + \item ``System Transparency Logging'' + \end{enumerate} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/rgdd} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \vfill + \begin{columns} + \begin{column}{0.45\textwidth} + \mktitle{Let's travel in space and time} + \begin{itemize} + \item June, 2011 + \item Netherlands, Beverwijk + \item DigiNotar + \end{itemize} + \end{column} + \begin{column}{0.55\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/beverwijk} + \burl{https://creativecommons.org/licenses/by-sa/3.0/} + % https://commons.wikimedia.org/wiki/File:Nzkanaal2.jpg + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + % + % To give you the backdrop. + % + % DigiNotar was a so-called certificate authority that issues web certs + % - If this means nothing to you, it is sort of like passports but for + % websites. In real life we have a trusted government body that is + % responsible of issuing our passports. We trust that a passport will not + % be issued for us unless we can prove that we are who we say we are. + % - In the digital world certificate authorities play this role but for + % websites. This way, you can be sure that you are really visiting + % mullvad.net, and not someone that is impersonating our domain. + % + % So, the expectation here is that you would only issue a certificate to the + % rightful domain owner. At minimum, this requires some identity checking. + % + % Let's get back to what happened then. + % + % It turns out that DigiNotar was hacked. They issued fraudulent + % certificates for Google, Facebook, Twitter, Mozilla, Tor, and many others. + % + % This was detected by DigiNotar a week after the incident. + % - They decided to be silent. + % + % The only reason why we detected this is because of a large scale attack + % in Iran, which targeted 300k gmail users. If the attacker had been more + % stealthy, we probably would not have detected the attack. + % + % Fortunately we did detect the attack. Soon thereafter, none of the major + % browser trusted DigiNotar anymore. In September, a bankruptcy was filed. + % + \vfill + \begin{columns} + \begin{column}{0.45\textwidth} + \mktitle{What happened?} + \begin{itemize} + \item DigiNotar issued web certificates + \item Did not live up to expectations + \item Then lied about it for weeks + \end{itemize} + \end{column} + \begin{column}{0.55\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/diginotar} + \burl{https://www.bbc.com/news/technology-14989334} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + % + % What to make of this then? + % + % First of all, DigiNotar was neither the first nor the last. Many + % certificate authorities messed up before them. Many certificate + % authorities messed up after them. + % + % It would be incredibly helpful if we could detect if a certificate + % authority makes mistakes. In the case of certificate management, + % detection really comes down to the ability of discovering which + % certificates have been issued for whom. + % + % From this intuition the idea of Certificate Transparency is simple. + % - Talk about figure. + % - Emphasize that the log is not a trusted party due to crypto magic. + % + \vfill + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{What to make of this} + \begin{itemize} + \item DigiNotar was neither first nor last\footnotemark + \item Detection of certificate mis-issuance? + \item Discoverability with transparent logs\footnotemark + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \input{img/ct} + \end{column} + \end{columns} + \vfill + \pause + \centering\alert{Chrome and Safari enforce Certificate Transparency} + + \footnotetext[1]{\burl{https://sslmate.com/certspotter/failures}} + \footnotetext[2]{\burl{https://certificate.transparency.dev/}} +\end{frame} + +\begin{frame} + % + % Okay, great that we have transparency for certificates. Does that mean + % are done? + % + % The short answer is no. We are definitely not done. There is still a lot + % of remaining work with Certificate Transparency. There is even more work + % left to do when we think about other use-cases of transparency logging. + % + % (Use do you get the same binaries as everyone else for example, leave the + % rest for them to think about if they want to) + % + \mktitle{Transparency logging is good for more than just certificates} + Source code \\ + Binaries \\ + Config files \\ + TPM quotes \\ + Media content \\ + Tax declarations \\ + Documents of ownership \\ + BGP announcements \\ + Tor's consensus \\ + ... \\ + \vfill + \pause + \alert{The log we are working on is helpful for all these use-cases!} +\end{frame} + +% +% https://curl.se/download.html +% +\begin{frame} + % + % 1. Introduce the setup. Daniel represents many software projects. + % 2. How would you know if your private key got compromised? + % + \mktitle{Example use-case\#1} + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{Meet Daniel} + \begin{itemize} + \item The author of \texttt{curl} + \item Digitally signs new releases + \item Long-term signing key-pair + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \includegraphics[height=.6\textheight]{img/curl} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +% +% https://arxiv.org/pdf/2104.06020.pdf, page 6 for the challenge. +% +\begin{frame} + % + % 1. What is R-B. + % 2. Challenge + % 3. How I think that challenge could be approached + % + \mktitle{Example use-case\#2} + \begin{columns} + \begin{column}{0.6\textwidth} + \mktitle{Meet the R-B project} + \begin{itemize} + \item Same input gives the same output + \item Consensus of ``valid'' checksum? + \end{itemize} + \end{column} + \begin{column}{0.4\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/rb} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Problem summary} + \vfill + \begin{columns} + \begin{column}{0.125\textwidth} + \end{column} + \begin{column}{0.75\textwidth} + \begin{enumerate} + \item Which signatures were produced by what private keys? + \item Consensus of checksums that should be considered valid? + \end{enumerate} + \end{column} + \begin{column}{0.125\textwidth} + \end{column} + \end{columns} + \vfill +\end{frame} + +\begin{frame} + % + % 1. Introduce the system. Think first two paragraphs in design.md + % + \mktitle{Our starting point} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Data publisher + \item End-user + \item Assumptions + \begin{itemize} + \item Public key can be located + \item Signed data can be located + \item End-user can install extra tooling + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \input{img/before} + \end{column} + \end{columns} + \vfill + \pause + \alert{The attacker can compromise the data publisher}\\ + \pause + \alert{The goal is to detect unwanted key-usage} +\end{frame} + +\begin{frame} + % + % 1. Our design is about transparency logs. So, I need to explain briefly + % what a transparency log is. + % 2. Append-only Merkle tree. You can think of the data as being stored in + % the leaves. Each leaf is hashed. Parents concatenate their children + % hashes to produces their own hash values. Repeat until single root hash. + % 3. The root hash is usually called a tree head. + % 4. Tree head interesting because it fixes the structure and the content of + % the tree. Add/remove/modify -> new tree head. + % 5. If the log signs the tree head, you can hold it accountable for its + % structure and content. + % 6. This is important because the attacker can control the log. + % 7. So we cannot trust that the log is append-only. We will need to verify + % that. To this end we have consistency proofs. The intuition is that you + % can force the log to reveal a number of cryptographic hashes. These + % hashes will prove that the tree head you see today is consistent with the + % tree head you saw yesterday. + % 8. You can also prove that something is in the log efficiently. This is + % called an inclusion proof. The intuition is that you reveal a number of + % hashes. If you can use them to reconstruct the root of a globally + % consistent tree head you can be sure that some data is in the log. + % 8. Global consistency (as opposed to just consistency) is what prevents + % the log from creating forks. I will return to this later on because it is + % an important part of our design. + % (9. Not having global consistency would be like having a blockchain + % without a consensus mechanism.) + % + \mktitle{An intuition of transparency log properties} + \input{img/mt} + \vfill + \begin{columns} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Tree head + \end{itemize} + \end{column} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Consistency proof + \end{itemize} + \end{column} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Inclusion proof + \end{itemize} + \end{column} + \end{columns} + \vfill + \pause + \alert{The attacker can control the log} +\end{frame} + +\begin{frame} + \mktitle{Preparing a logging request} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Select a shard hint and checksum + \item Sign using your private key + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \lstinputlisting[style=CStyle]{img/tree-leaf.trunnel} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Submitting a logging request} + \begin{columns} + \begin{column}{0.2\textwidth} + \underline{Key-value pairs:} + \begin{itemize} + \item Shard hint + \item Checksum + \item Signature + \item Public key + \item Domain hint + \end{itemize} + \end{column} + \begin{column}{0.8\textwidth} + \centering + \input{img/log-request} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Distributing proofs of public logging} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item End-user will not talk to the log + \item Proofs of logging + \begin{itemize} + \item Inclusion proof + \item Tree head + \end{itemize} + \item Witness cosigning + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \input{img/after} + \end{column} + \end{columns} + \pause + \alert{The attacker can control a threshold of witnesses} +\end{frame} + +\begin{frame} + \mktitle{Example use-case\#1} + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{Remember Daniel?} + \begin{itemize} + \item Sign a checksum of each \texttt{curl} release + \item Start logging every signed checksum + \item Monitor the log for your own leaves + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \includegraphics[height=.6\textheight]{img/curl} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Example use-case\#2} + \begin{columns} + \begin{column}{0.6\textwidth} + \mktitle{Remember the R-B project?} + \begin{itemize} + \item Sign the expected checksum of each build + \item A valid checksum is a logged checksum + \item Rebuilders validate logged checksums + \end{itemize} + \end{column} + \begin{column}{0.4\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/rb} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Summary and feature overview} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Signed checksums + \item Sharding + \item Preserved data flows + \item Anti-spam + \item Global consistency + \item Few simple parsers + \item No cryptographic agility + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \includegraphics[width=\columnwidth]{img/clean} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \vfill + \begin{columns} + \begin{column}{0.7\textwidth} + \mktitle{Current status} + \begin{itemize} + \item Version v0 README and documentation\footnotemark + \item A public instance of the log is up and running + \item At least one party is witnessing the log + \item Come say hello and contribute if you want! + \begin{itemize} + \item \texttt{irc/oftc \#siglog} + \item Matrix bridge\footnotemark + \item Open meetings every Tuesday, 1300 + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.3\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/thanks} + \end{column} + \end{columns} + \footnotetext[1]{\burl{https://github.com/system-transparency/stfe/}} + \footnotetext[2]{\burl{https://app.element.io/\#/room/\#siglog:matrix.org}} +\end{frame} diff --git a/slides/2021-aha/src/preamble.tex b/slides/2021-aha/src/preamble.tex new file mode 100644 index 0000000..4021351 --- /dev/null +++ b/slides/2021-aha/src/preamble.tex @@ -0,0 +1,113 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[utf8]{inputenc} + +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{rotate} +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{wasysym} +\usepackage{graphicx} +\usepackage{color} +\usepackage{drawstack} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage{floatrow}% this one causes error on arch for some reason +\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, % Color links instead of boxes + urlcolor = darkBlue, % Color external hyper links + linkcolor = darkBlue, % Color internal links + citecolor = darkBlue, % Color citations +} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +\lstdefinestyle{CStyle}{ + backgroundcolor=\color{lightGray!25}, + commentstyle=\color{darkGreen}, + keywordstyle=\color{darkBlue}, + numberstyle=\tiny\color{darkRed}, + stringstyle=\color{darkPurple}, + basicstyle=\footnotesize, + breakatwhitespace=false, + breaklines=false, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + language=C, + morekeywords={size_t,def,in,zip,True,False,ord,u8,u64}, +} + +\setbeamertemplate{itemize item}[circle] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\floatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} + +\def\rding{\rotatebox[origin=c]{-91}{\ding{224}}} +\def\lding{\rotatebox[origin=c]{91}{\ding{224}}} + +% TODO: fix this properly... +\newcommand{\mktitle}[1]{\centering\textbf{\large#1}\vfill\normalsize} diff --git a/slides/2021-aha/src/titlepage.tex b/slides/2021-aha/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2021-aha/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2021-padsec/README b/slides/2021-padsec/README new file mode 100644 index 0000000..9bb6769 --- /dev/null +++ b/slides/2021-padsec/README @@ -0,0 +1 @@ +My talk at the 1st padsec conference. diff --git a/slides/2021-padsec/beamercolorthemergd.sty b/slides/2021-padsec/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2021-padsec/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2021-padsec/beamerfontthemergd.sty b/slides/2021-padsec/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2021-padsec/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2021-padsec/beamerinnerthemergd.sty b/slides/2021-padsec/beamerinnerthemergd.sty new file mode 100644 index 0000000..b96a415 --- /dev/null +++ b/slides/2021-padsec/beamerinnerthemergd.sty @@ -0,0 +1,49 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoMul){\includegraphics[width=3.5cm]{img/mullvad}} + (current page.west) -- + (current page.north west); + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north east) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoKau){\includegraphics[width=3cm]{img/kau}} + (current page.east) -- + (current page.north east); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add date + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{date}\today\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2021-padsec/beamerouterthemergd.sty b/slides/2021-padsec/beamerouterthemergd.sty new file mode 100644 index 0000000..45ba820 --- /dev/null +++ b/slides/2021-padsec/beamerouterthemergd.sty @@ -0,0 +1,71 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add metadata + \begin{beamercolorbox}[ + wd=0.50\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \href{https://rgdd.github.io}{rgdd.github.io} + $\cdots$ + \href{https://twitter.com/\_\_rgdd}{@\_\_rgdd} + $\cdots$ + \href{mailto:rasmus@mullvad.net}{rasmus@mullvad.net} + $\cdots$ + \href{mailto:rasmus.dahlberg@kau.se}{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add title + \begin{beamercolorbox}[ + wd=0.45\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + \inserttitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2021-padsec/beamerthemergd.sty b/slides/2021-padsec/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2021-padsec/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2021-padsec/handout.pdf b/slides/2021-padsec/handout.pdf Binary files differnew file mode 100644 index 0000000..a262e86 --- /dev/null +++ b/slides/2021-padsec/handout.pdf diff --git a/slides/2021-padsec/img/after.tex b/slides/2021-padsec/img/after.tex new file mode 100644 index 0000000..c2af725 --- /dev/null +++ b/slides/2021-padsec/img/after.tex @@ -0,0 +1,70 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Publisher) at (0,0) { Publisher }; + \node[entity, fill=darkGreen, below=1.5cm of Publisher] (EndUser) {End-user}; + \node[entity, fill=darkOrange, left=1.5cm of Publisher] (Log) {Log}; + \node[entity, fill=darkRed, below=1.5cm of Log] (Witness) {Witness}; + + % Key setup + \path[path, dashed] ($ (EndUser) + (2,0) $) -- + node[relation, above] { Public keys } + (EndUser); + % Get data and signature + \path[path] (Publisher) -- + node[relation, right] { + \begin{tabular}{c} + Opaque data\\ + Signature\\ + Proofs of logging\\ + \end{tabular} + } + (EndUser); + % Verification + \path[path, rounded corners] + (EndUser.180) -| + ($ (EndUser) + (-1.25,-.75) $) + node[relation, below]{ + Verify + } -| + (EndUser.210); + + + % Cosigning + \path[path] (Witness) edge[bend right] + node[relation,right]{Cosignature} + (Log); + \path[path] (Log) edge[bend right] + node[relation,left]{Tree head} + (Witness); + \path[path, rounded corners] + (Witness.180) -| + ($ (Witness) + (-1.25,-.75) $) + node[relation, below]{ + Verify + } -| + (Witness.210); + + % Get proofs + \path[path] (Log) -- + node[relation,above]{Proofs of logging} + (Publisher); +\end{tikzpicture} diff --git a/slides/2021-padsec/img/before.tex b/slides/2021-padsec/img/before.tex new file mode 100644 index 0000000..f634ef4 --- /dev/null +++ b/slides/2021-padsec/img/before.tex @@ -0,0 +1,46 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Publisher) at (0,0) { Publisher }; + \node[entity, fill=darkGreen, below=1.5cm of Publisher] (EndUser) {End-user}; + + % Key setup + \path[path, dashed] ($ (EndUser) + (2,0) $) -- + node[relation, above] { Public key } + (EndUser); + % Get data and signature + \path[path] (Publisher) -- + node[relation, right] { + \begin{tabular}{c} + Opaque data\\ + Signature\\ + \end{tabular} + } + (EndUser); + % Verification + \path[path, rounded corners] + (EndUser.180) -| + ($ (EndUser) + (-1.25,-.75) $) + node[relation, below]{ + Verify + } -| + (EndUser.210); +\end{tikzpicture} diff --git a/slides/2021-padsec/img/clean.jpg b/slides/2021-padsec/img/clean.jpg Binary files differnew file mode 100644 index 0000000..2465e5e --- /dev/null +++ b/slides/2021-padsec/img/clean.jpg diff --git a/slides/2021-padsec/img/curl.jpg b/slides/2021-padsec/img/curl.jpg Binary files differnew file mode 100644 index 0000000..51765e7 --- /dev/null +++ b/slides/2021-padsec/img/curl.jpg diff --git a/slides/2021-padsec/img/kau.png b/slides/2021-padsec/img/kau.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2021-padsec/img/kau.png diff --git a/slides/2021-padsec/img/log-request.tex b/slides/2021-padsec/img/log-request.tex new file mode 100644 index 0000000..08edf87 --- /dev/null +++ b/slides/2021-padsec/img/log-request.tex @@ -0,0 +1,47 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Publisher) at (0,0) { Publisher }; + \node[entity, fill=darkGreen, below=1.5cm of Publisher] (DNS) {DNS}; + \node[entity, fill=darkOrange, left=1.5cm of Publisher] (Log) {Log}; + + % Setup DNS + \path[path, dashed] (Publisher) -- + node[relation, right] {TXT RR} + (DNS); + + \path[path] (Publisher) edge[bend right] + node[relation, above] { + Key-value pairs + } + (Log); + \path[path] (Log) edge[bend right] + node[relation,below] { + accept/reject + } + (Publisher); + + \path[path, rounded corners] (Log) |- + node[relation,below,pos=.75]{ + verify TXT RR + } + (DNS); +\end{tikzpicture} diff --git a/slides/2021-padsec/img/mt.tex b/slides/2021-padsec/img/mt.tex new file mode 100644 index 0000000..3deaf62 --- /dev/null +++ b/slides/2021-padsec/img/mt.tex @@ -0,0 +1,19 @@ +\begin{tikzpicture}[ + -latex, +] + \Tree [ + .$\hash(h_{01}\concat h_{23})$ [ + .$h_{01}\coloneqq\hash(h_0\concat h_1)$ [ + .$h_0\coloneqq\hash(\mathsf{foo})$ + ] [ + .$h_1\coloneqq\hash(\mathsf{bar})$ + ] + ] [ + .$h_{23}\coloneqq\hash(h_2\concat h_3)$ [ + .$h_2\coloneqq\hash(\mathsf{baz})$ + ] [ + .$h_3\coloneqq\hash(\mathsf{qux})$ + ] + ] + ] +\end{tikzpicture} diff --git a/slides/2021-padsec/img/mullvad.png b/slides/2021-padsec/img/mullvad.png Binary files differnew file mode 100644 index 0000000..4574eb1 --- /dev/null +++ b/slides/2021-padsec/img/mullvad.png diff --git a/slides/2021-padsec/img/openbsd.pdf b/slides/2021-padsec/img/openbsd.pdf Binary files differnew file mode 100644 index 0000000..53c6c98 --- /dev/null +++ b/slides/2021-padsec/img/openbsd.pdf diff --git a/slides/2021-padsec/img/rb.png b/slides/2021-padsec/img/rb.png Binary files differnew file mode 100644 index 0000000..a0b30cb --- /dev/null +++ b/slides/2021-padsec/img/rb.png diff --git a/slides/2021-padsec/img/rgdd.jpg b/slides/2021-padsec/img/rgdd.jpg Binary files differnew file mode 100644 index 0000000..597b406 --- /dev/null +++ b/slides/2021-padsec/img/rgdd.jpg diff --git a/slides/2021-padsec/img/thanks.pdf b/slides/2021-padsec/img/thanks.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2021-padsec/img/thanks.pdf diff --git a/slides/2021-padsec/img/tree-leaf.trunnel b/slides/2021-padsec/img/tree-leaf.trunnel new file mode 100644 index 0000000..c3806f3 --- /dev/null +++ b/slides/2021-padsec/img/tree-leaf.trunnel @@ -0,0 +1,9 @@ +/* + * The logged Merkle tree leaf data + */ +struct tree_leaf { + u64 shard_hint; + u8 checksum[32]; + u8 signature[64]; + u8 key_hash[32]; +} diff --git a/slides/2021-padsec/main.tex b/slides/2021-padsec/main.tex new file mode 100644 index 0000000..2c617fa --- /dev/null +++ b/slides/2021-padsec/main.tex @@ -0,0 +1,21 @@ +\pdfminorversion=4 +%\documentclass[handout,aspectratio=169]{beamer} +\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + An Introduction to System Transparency Logging +} +\author{% + Rasmus Dahlberg +} +\date{% + \today +} + +\begin{document} + \input{src/titlepage} + \input{src/body} +\end{document} diff --git a/slides/2021-padsec/slides.pdf b/slides/2021-padsec/slides.pdf Binary files differnew file mode 100644 index 0000000..9e9872d --- /dev/null +++ b/slides/2021-padsec/slides.pdf diff --git a/slides/2021-padsec/src/body.tex b/slides/2021-padsec/src/body.tex new file mode 100644 index 0000000..f748c79 --- /dev/null +++ b/slides/2021-padsec/src/body.tex @@ -0,0 +1,366 @@ +\begin{frame} + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{Outline} + \begin{enumerate} + \item Explore the problem area + \item A bird's view of the design + \item Revisit the problem area + \item How to get involved + \end{enumerate} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/rgdd} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +% +% https://curl.se/download.html +% +\begin{frame} + % + % 1. Introduce the setup. Daniel represents many software projects. + % 2. How would you know if your private key got compromised? + % + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{Meet Daniel, the author of \texttt{curl}} + \begin{itemize} + \item Digital signing using \texttt{gpg} + \item Long-term RSA public key + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \includegraphics[height=.75\textheight]{img/curl} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +%% +%% signify: https://www.openbsd.org/papers/bsdcan-signify.html +%% +%% Locate next public key from the current OpenBSD, version 69. +%% 1. Download from mirror: https://cdn.openbsd.org/pub/OpenBSD/6.9/ +%% 2. Unpack src.tar.gz +%% 3. See etc/signify/openbsd-70-base.pub +%% +%\begin{frame} +% % +% % 1. Introduce the setup. A newer type of tooling than gpg. Sort of built- +% % in revocation by "ignoring the problem until it goes away". +% % 2. However, you would still like to know if you have a problem or not. +% % +% \vfill +% \begin{columns} +% \begin{column}{0.5\textwidth} +% \mktitle{Meet Puffy, the OpenBSD cartoon} +% \begin{itemize} +% \item Digital signing using \texttt{signify} +% \item Basically an interface to use Ed25519 +% \item Public keys are rotated every release +% \end{itemize} +% \end{column} +% \begin{column}{0.5\textwidth} +% \centering +% \includegraphics[width=\columnwidth]{img/openbsd} +% \burl{https://www.openbsd.org/art4.html} +% \end{column} +% \end{columns} +%\end{frame} + +% +% https://arxiv.org/pdf/2104.06020.pdf, page 6 for the challenge. +% +\begin{frame} + % + % 1. What is R-B. + % 2. Challenge + % 3. How I think that challenge could be approached + % + \vfill + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{Meet the R-B project} + \begin{itemize} + \item Same input gives the same output + \item Consensus of ``valid'' checksum? + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/rb} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Problem summary} + \vfill + \begin{columns} + \begin{column}{0.125\textwidth} + \end{column} + \begin{column}{0.75\textwidth} + \begin{enumerate} + \item What signatures were produced by a given private key? + \item Consensus of checksums that should be considered valid? + \end{enumerate} + \end{column} + \begin{column}{0.125\textwidth} + \end{column} + \end{columns} + \vfill +\end{frame} + +\begin{frame} + % + % 1. Introduce the system. Think first two paragraphs in design.md + % + \mktitle{Our starting point} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Data publisher + \item End-user + \item Assumptions + \begin{itemize} + \item Public key can be located + \item Signed data can be located + \item End-user can install extra tooling + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \input{img/before} + \end{column} + \end{columns} + \vfill + \pause + \alert{The attacker can compromise the data publisher}\\ + \pause + \alert{The goal is to detect unwanted key-usage} +\end{frame} + +\begin{frame} + % + % 1. Our design is about transparency logs. So, I need to explain briefly + % what a transparency log is. + % 2. Append-only Merkle tree. You can think of the data as being stored in + % the leaves. Each leaf is hashed. Parents concatenate their children + % hashes to produces their own hash values. Repeat until single root hash. + % 3. The root hash is usually called a tree head. + % 4. Tree head interesting because it fixes the structure and the content of + % the tree. Add/remove/modify -> new tree head. + % 5. If the log signs the tree head, you can hold it accountable for its + % structure and content. + % 6. This is important because the attacker can control the log. + % 7. So we cannot trust that the log is append-only. We will need to verify + % that. To this end we have consistency proofs. The intuition is that you + % can force the log to reveal a number of cryptographic hashes. These + % hashes will prove that the tree head you see today is consistent with the + % tree head you saw yesterday. + % 8. You can also prove that something is in the log efficiently. This is + % called an inclusion proof. The intuition is that you reveal a number of + % hashes. If you can use them to reconstruct the root of a globally + % consistent tree head you can be sure that some data is in the log. + % 8. Global consistency (as opposed to just consistency) is what prevents + % the log from creating forks. I will return to this later on because it is + % an important part of our design. + % (9. Not having global consistency would be like having a blockchain + % without a consensus mechanism.) + % + \mktitle{A quick step back---Transparency log crash course} + \input{img/mt} + \vfill + \begin{columns} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Tree head + \end{itemize} + \end{column} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Consistency proof + \end{itemize} + \end{column} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Inclusion proof + \end{itemize} + \end{column} + \end{columns} + \vfill + \pause + \alert{The attacker can control the log} +\end{frame} + +\begin{frame} + \mktitle{Preparing a logging request} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Select a shard hint and checksum + \item Sign using your private key + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \lstinputlisting[style=CStyle]{img/tree-leaf.trunnel} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Submitting a logging request} + \begin{columns} + \begin{column}{0.2\textwidth} + \underline{Key-value pairs:} + \begin{itemize} + \item Shard hint + \item Checksum + \item Signature + \item Public key + \item Domain hint + \end{itemize} + \end{column} + \begin{column}{0.8\textwidth} + \centering + \input{img/log-request} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Distributing proofs of public logging} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item End-user will not talk to the log + \item Proofs of logging + \begin{itemize} + \item Inclusion proof + \item Tree head + \end{itemize} + \item Witness cosigning + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \input{img/after} + \end{column} + \end{columns} + \pause + \alert{The attacker can control a threshold of witnesses} +\end{frame} + +\begin{frame} + \mktitle{Summary and additional details} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Signed checksums + \item Sharding + \item Preserved data flows + \item Anti-spam + \item Global consistency + \item Few simple parsers + \item No cryptographic agility + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \includegraphics[width=\columnwidth]{img/clean} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{Remember Daniel?} + \begin{itemize} + \item (Cross-)sign with Ed25519 + \item Backwards compatible verification? + \begin{enumerate} + \item Verify RSA \texttt{gpg} signature + \item Verify the rest with tlog tooling + \end{enumerate} + \item Monitor the log for your own leaves + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \includegraphics[height=.75\textheight]{img/curl} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +%\begin{frame} +% \vfill +% \begin{columns} +% \begin{column}{0.5\textwidth} +% \mktitle{Remember Puffy?} +% \begin{itemize} +% \item No extra key-pair +% \item Cross-sign for backwards compatibility +% \item Possible end-user verification +% \begin{enumerate} +% \item Verify \texttt{signify} signature +% \item Verify the rest with tlog tooling +% \end{enumerate} +% \end{itemize} +% \end{column} +% \begin{column}{0.5\textwidth} +% \centering +% \includegraphics[width=\columnwidth]{img/openbsd} +% \burl{https://www.openbsd.org/art4.html} +% \end{column} +% \end{columns} +%\end{frame} + +\begin{frame} + \vfill + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{Remember the R-B project?} + \begin{itemize} + \item Sign and log the expected checksums + \item Valid checksum is a logged checksum + \item Rebuilders monitor the log + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/rb} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \vfill + \begin{columns} + \begin{column}{0.7\textwidth} + \mktitle{Get involved} + \begin{itemize} + \item Feedback on our v0 design\footnotemark and API\footnotemark? + \item Is this a service that you would use? Why (not)? + \item Want to run an experimental log or witness? + \item Implementation and tooling is still early-days + \item Reach out via slack\footnotemark, GitHub, or DM + \end{itemize} + \end{column} + \begin{column}{0.3\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/thanks} + \end{column} + \end{columns} + \footnotetext[1]{\burl{https://github.com/system-transparency/stfe/blob/design/doc/design.md}} + \footnotetext[2]{\burl{https://github.com/system-transparency/stfe/blob/design/doc/api.md}} + \footnotetext[3]{\burl{https://communityinviter.com/apps/system-transparency/join}} +\end{frame} diff --git a/slides/2021-padsec/src/preamble.tex b/slides/2021-padsec/src/preamble.tex new file mode 100644 index 0000000..4021351 --- /dev/null +++ b/slides/2021-padsec/src/preamble.tex @@ -0,0 +1,113 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[utf8]{inputenc} + +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{rotate} +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{wasysym} +\usepackage{graphicx} +\usepackage{color} +\usepackage{drawstack} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage{floatrow}% this one causes error on arch for some reason +\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, % Color links instead of boxes + urlcolor = darkBlue, % Color external hyper links + linkcolor = darkBlue, % Color internal links + citecolor = darkBlue, % Color citations +} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +\lstdefinestyle{CStyle}{ + backgroundcolor=\color{lightGray!25}, + commentstyle=\color{darkGreen}, + keywordstyle=\color{darkBlue}, + numberstyle=\tiny\color{darkRed}, + stringstyle=\color{darkPurple}, + basicstyle=\footnotesize, + breakatwhitespace=false, + breaklines=false, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + language=C, + morekeywords={size_t,def,in,zip,True,False,ord,u8,u64}, +} + +\setbeamertemplate{itemize item}[circle] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\floatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} + +\def\rding{\rotatebox[origin=c]{-91}{\ding{224}}} +\def\lding{\rotatebox[origin=c]{91}{\ding{224}}} + +% TODO: fix this properly... +\newcommand{\mktitle}[1]{\centering\textbf{\large#1}\vfill\normalsize} diff --git a/slides/2021-padsec/src/titlepage.tex b/slides/2021-padsec/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2021-padsec/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2021-pets/.gitignore b/slides/2021-pets/.gitignore new file mode 100644 index 0000000..d1e39cc --- /dev/null +++ b/slides/2021-pets/.gitignore @@ -0,0 +1,9 @@ +main.aux +main.fdb_latexmk +main.fls +main.log +main.nav +main.out +main.pdf +main.snm +main.toc diff --git a/slides/2021-pets/README b/slides/2021-pets/README new file mode 100644 index 0000000..8b89967 --- /dev/null +++ b/slides/2021-pets/README @@ -0,0 +1,3 @@ +My (transcribed) PETS 2021 talk. + +Edit 2024-10-15: seems like there's some nit compiling now. diff --git a/slides/2021-pets/beamercolorthemergd.sty b/slides/2021-pets/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2021-pets/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2021-pets/beamerfontthemergd.sty b/slides/2021-pets/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2021-pets/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2021-pets/beamerinnerthemergd.sty b/slides/2021-pets/beamerinnerthemergd.sty new file mode 100644 index 0000000..1c50b47 --- /dev/null +++ b/slides/2021-pets/beamerinnerthemergd.sty @@ -0,0 +1,43 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoMul){\includegraphics[width=3.5cm]{img/kau}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add date + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{date}\insertdate\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2021-pets/beamerouterthemergd.sty b/slides/2021-pets/beamerouterthemergd.sty new file mode 100644 index 0000000..456290a --- /dev/null +++ b/slides/2021-pets/beamerouterthemergd.sty @@ -0,0 +1,69 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add metadata + \begin{beamercolorbox}[ + wd=0.50\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \href{https://rgdd.github.io}{rgdd.github.io} + $\;\;\;\;\;\;\;\;\cdots\;\;\;\;\;\;\;\;$ + \href{https://twitter.com/\_\_rgdd}{@\_\_rgdd} + $\;\;\;\;\;\;\;\cdots\;\;\;\;\;\;\;$ + \href{mailto:rasmus.dahlberg@kau.se}{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add title + \begin{beamercolorbox}[ + wd=0.45\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + \insertsubtitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2021-pets/beamerthemergd.sty b/slides/2021-pets/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2021-pets/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2021-pets/handout.pdf b/slides/2021-pets/handout.pdf Binary files differnew file mode 100644 index 0000000..211f95a --- /dev/null +++ b/slides/2021-pets/handout.pdf diff --git a/slides/2021-pets/img/beverwijk.jpg b/slides/2021-pets/img/beverwijk.jpg Binary files differnew file mode 100644 index 0000000..3ac9d1a --- /dev/null +++ b/slides/2021-pets/img/beverwijk.jpg diff --git a/slides/2021-pets/img/chrome.png b/slides/2021-pets/img/chrome.png Binary files differnew file mode 100644 index 0000000..b874d44 --- /dev/null +++ b/slides/2021-pets/img/chrome.png diff --git a/slides/2021-pets/img/ct.tex b/slides/2021-pets/img/ct.tex new file mode 100644 index 0000000..ae1213c --- /dev/null +++ b/slides/2021-pets/img/ct.tex @@ -0,0 +1,72 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Log) at (0,0) { Log }; + \node[entity, fill=darkGreen, below=1.5cm of Log] (Browser) {Browser}; + \node[entity, fill=darkOrange, left=1.5cm of Log] (CA) {CA}; + \node[entity, fill=darkRed, below=1.5cm of CA] (Website) {Website}; + + % Logging + \path[path] (CA) edge[bend left] + node[relation,right,below]{Certificate} + (Log); + \path[path] (Log) edge[bend left] + node[relation,left,above]{Proofs} + (CA); + + % Distribution + \path[path] (CA) -- + node[relation, below, sloped]{% + \begin{tabular}{c} + Certificate\\ + Proofs \\ + \end{tabular} + } + (Website); + + + % Serve + \path[path] (Website) -- + node[relation, below] { + \begin{tabular}{c} + Certificate\\ + Proofs \\ + \end{tabular} + } + (Browser); + + % Monitor + \path[path, dashed] (Website.15) -- + node[relation]{% + \includegraphics[width=.8cm]{img/magnify} + } + (Log.290); + + % Verify + \path[path, rounded corners] + (Browser.0) -| + ($ (Browser) + (1.25,.75) $) + node[relation, above]{ + Verify + } -| + (Browser.30); + +\end{tikzpicture} diff --git a/slides/2021-pets/img/design-full.pdf b/slides/2021-pets/img/design-full.pdf Binary files differnew file mode 100644 index 0000000..5602116 --- /dev/null +++ b/slides/2021-pets/img/design-full.pdf diff --git a/slides/2021-pets/img/design-incremental.pdf b/slides/2021-pets/img/design-incremental.pdf Binary files differnew file mode 100644 index 0000000..7c7160d --- /dev/null +++ b/slides/2021-pets/img/design-incremental.pdf diff --git a/slides/2021-pets/img/diginotar.jpg b/slides/2021-pets/img/diginotar.jpg Binary files differnew file mode 100644 index 0000000..c185e38 --- /dev/null +++ b/slides/2021-pets/img/diginotar.jpg diff --git a/slides/2021-pets/img/kau.png b/slides/2021-pets/img/kau.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2021-pets/img/kau.png diff --git a/slides/2021-pets/img/magnify.png b/slides/2021-pets/img/magnify.png Binary files differnew file mode 100644 index 0000000..9b8ec7d --- /dev/null +++ b/slides/2021-pets/img/magnify.png diff --git a/slides/2021-pets/img/mullvad.png b/slides/2021-pets/img/mullvad.png Binary files differnew file mode 100644 index 0000000..4574eb1 --- /dev/null +++ b/slides/2021-pets/img/mullvad.png diff --git a/slides/2021-pets/img/phase-1.png b/slides/2021-pets/img/phase-1.png Binary files differnew file mode 100644 index 0000000..6d90fa0 --- /dev/null +++ b/slides/2021-pets/img/phase-1.png diff --git a/slides/2021-pets/img/phase-2.png b/slides/2021-pets/img/phase-2.png Binary files differnew file mode 100644 index 0000000..0638293 --- /dev/null +++ b/slides/2021-pets/img/phase-2.png diff --git a/slides/2021-pets/img/phase-3-4.png b/slides/2021-pets/img/phase-3-4.png Binary files differnew file mode 100644 index 0000000..f7fd529 --- /dev/null +++ b/slides/2021-pets/img/phase-3-4.png diff --git a/slides/2021-pets/img/safari.png b/slides/2021-pets/img/safari.png Binary files differnew file mode 100644 index 0000000..0fb75ec --- /dev/null +++ b/slides/2021-pets/img/safari.png diff --git a/slides/2021-pets/img/tb.png b/slides/2021-pets/img/tb.png Binary files differnew file mode 100644 index 0000000..3fd6852 --- /dev/null +++ b/slides/2021-pets/img/tb.png diff --git a/slides/2021-pets/img/thanks.pdf b/slides/2021-pets/img/thanks.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2021-pets/img/thanks.pdf diff --git a/slides/2021-pets/main.tex b/slides/2021-pets/main.tex new file mode 100644 index 0000000..861b8ed --- /dev/null +++ b/slides/2021-pets/main.tex @@ -0,0 +1,27 @@ +\pdfminorversion=4 +%\documentclass[handout,aspectratio=169]{beamer} +\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{%full version that is shown on the front page + Privacy-Preserving \& Incrementally-Deployable Support for Certificate + Transparency in Tor +} +\subtitle{%short version that is shown in the footer on each slide + Certificate Transparency in Tor +} +\author{% + \textbf{Rasmus Dahlberg}, Tobias Pulls, Tom Ritter, and Paul Syverson +} +\date{% + July 15, 2021 +} + +\begin{document} + \input{src/titlepage} + \input{src/start} + \input{src/body} + \input{src/end} +\end{document} diff --git a/slides/2021-pets/slides.pdf b/slides/2021-pets/slides.pdf Binary files differnew file mode 100644 index 0000000..39a9e6b --- /dev/null +++ b/slides/2021-pets/slides.pdf diff --git a/slides/2021-pets/src/body.tex b/slides/2021-pets/src/body.tex new file mode 100644 index 0000000..8d38999 --- /dev/null +++ b/slides/2021-pets/src/body.tex @@ -0,0 +1,413 @@ +\begin{frame} + % + % The problem that we are trying to take on in this paper is adding support + % for CT in Tor Browser. In other words, right now CT is not enforced at + % all and that is something we would like to change. + % + % The reason why we would like to change that is - first of all - we don't + % want users of Tor Browser to be subject to DigiNotar style attacks. This + % is in fact easier against Tor Browser because you can position + % yourself in the network by volunteering to run Tor relays. This type of + % attacker has been observed several times in Tor - for example by + % using self-signed certificates or simply targeting HTTP traffic. Now that + % encryption on the web matured and continues to mature, you kind of need a + % mis-issued certificate to pull of these attacks. So, this is probably a + % good enough argument already to add CT in Tor Browser. + % + % The second threat that is very important for Tor is that an attacker may + % rely on interception to de-anonymize a subset of users. For context, + % recall that Tor is a low-latency anonymity network that routes your + % traffic through a guard relay, a middle relay, and an exit relay. At + % each hop a layer of encryption is pealed off, such that the guard only + % learns the sender's identity and the exit only learns the visited website. + % + % If the attacker can intercept the encrypted traffic at the exit - using a + % mis-issued certificate - it would be trivial to de-anonymize a user that + % logs in to a service. + % + % We have also observed cases in the past where attackers break Tor's + % anonymity by serving zero-day exploits to the browser. A pre-requisite to + % serve such an exploit is the ability to make it load. Again, because the + % web is mostly encrypted these days, a mis-issued certificate can help to + % make the loading procedure happen. + % + % So, in terms of threat modelling we assume a powerful attacker that has + % access to a browser zero-day exploit. The attacker also has the usual Tor + % capabilities like controlling and denying service to a fraction of relays, + % and in addition to that the attacker has access to a Certificate Authority + % that can mis-issue certificates on request. + % + % Our design further permits the attacker to control enough CT logs, so that + % you can trivially bypass today's definition of CT compliance. + % + % This is actually one of the reasons why we started looking into Tor in + % the first place. If a major problem with full decentralized verification + % is privacy, then we might have better luck in Tor's more private setting. + % + \mktitle{Problem statement} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Tor Browser does not enforce CT + \item Guard against prominent threats + \begin{itemize} + \item DigiNotar style attacks + \item Interception to deanonymize + \end{itemize} + \item Aim higher than CT compliance + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering\includegraphics[width=.5\columnwidth]{img/tb} + \end{column} + \end{columns} + \vfill + \pause + \centering\alert{% + Attacker with browser exploit, CA, CT logs, and usual Tor capabilities + } +\end{frame} + +\begin{frame} + % + % What we are proposing is a gradual roll-out plan. + % + % The first step is to catch up with today's CT compliant browsers. Pairs + % of logs are trusted blindly because there is no follow-up verification + % of the log's SCTs. Recall from earlier that SCTs are promises of public + % logging. In an ideal world, these promises are also verified by someone. + % + % Is this first step suboptimal? + % - Yes. + % Is it a significant improvement when compared to what we had before? + % - Also yes. + % + % How to do this is not really a research problem to be honest. It is, + % however, a reasonable starting point that we know doesn't break the web. + % The reason why we know that is because other browsers already do it. + % I like to think of this first increment as ruling out many weaker + % attackers that may control certificate authorities but not enough CT logs. + % + % Next, we propose some incremental steps to get started with the + % decentralized verification that will reduce trust in the log ecosystem. + % I will get back to this later, because it is more intuitive to introduce + % the full design that places no blind trust in the log ecosystem. + % + % In terms of trust assumptions we go from + % pairs of logs that are trusted blindly, + % to some log that is trusted blindly, + % to no log that is trusted blindly. + % + \vfill + \mktitle{Gradual roll-out plan} + \begin{enumerate} + \item Catch up with CT compliant browsers + \floatright{\emph{pairs of logs} are trusted blindly} + \item Steps towards decentralized verification + \floatright{\emph{some log} is trusted blindly} + \item Fully decentralized verification + \floatright{\emph{no log} is trusted blindly} + \end{enumerate} + \vfill +\end{frame} + +\begin{frame} + % + % Okay. What I'm hoping to do for the remainder of this presentation is to + % give you an intuition of + % a) how we arrived at the full design that is now in front of us, and + % b) what complexities can we get rid of to roll it out gradually + % + % To help us think and reason about the design we divided it into phases. + % + % Phase 1 takes place before phase 2. + % Phase 2 takes place before phase 3. + % And so forth. + % + % For security, it should be difficult for the attacker to reliably + % interfere without detection in any phase. Misbehavior of Certificate + % Authorities and/or CT logs are detected after the final phase played out. + % + % Examples of misbehavior include creating a mis-issued certificate or not + % making it available to the public after promising to do so. + % + % Let's look at each phase separately. + % + \mktitle{Overview of the full design} + \centering\includegraphics[height=.5\textheight]{img/design-full} + \vfill + \pause + \alert{Security? Difficult to interfere without detection in any phase} +\end{frame} + +\begin{frame} + % + % The first phase happens in Tor Browser. + % A so-called SFO, which is really just a certificate chain and its + % associated SCTs, is presented to Tor Browser during a website visit. + % If this SFO is CT compliant, we accept the connection to avoid any + % blocking and degraded user experience. + % + % Now we want to do better than just trusting the logs' promises of public + % logging. This means that we will need to audit encountered SFOs by + % interacting with the logs. + % + % The simplest thing that comes to mind is to fetch an inclusion proof from + % a log. This interaction is privacy invasive with a regular browser, but + % less so with Tor Browser because of its anonymity properties. + % + % An immediate problem, however, is that Tor Browser has a disk avoidance + % criteria. This means that no browsing related activity can be persisted + % after closing Tor Browser. This includes encountered SFOs that have yet + % to be audited. In practise, it takes up to 24 hours before a certificate + % is logged. This follows from a so-called Maximum Merge Delay. + % + % In other words, we will have to wait at least 24 hours before a newly + % issued certificate can be audited. Tor Browser has likely been shutdown + % by then, which means that the SFO will be deleted and thus not audited. + % + % A second problem is that the attacker controls the log, and in our threat + % model the attacker also has a zero-day exploit against the browser. The + % attacker could trivially delay the log's response while taking control of + % the browser to disable the auditing mechanism all together. + % + % So, what we need is to get the encountered SFO away from Tor Browser as + % soon as possible so that _someone_ can audit it. A straw man design would + % be to send all SFOs to a centralized third-party that is trusted. + % However, that party would get a considerable aggregation of browsing + % history. Such population data is valuable and better not collected. + % + % Another problem is that a centralized solution does not scale with the + % network. What we do instead is to utilize Tor's existing relays to help + % with CT auditing. Such Certificate Transparency Relays are called CTRs in + % our design. Relays may be assigned the CTR flag similar to how a Tor + % relay may be assigned the HSDir flag if some conditions are met. + % + % To reduce overhead, only a sample of SFOs are submitted to randomly + % selected CTRs. The probability of detection can therefore not be larger + % than the probability that an encountered SFO is submitted for auditing. + % + % Note that it is important that the attacker cannot infer which CTR + % received an SFO because Tor's threat model includes DoS attacks on + % individual CTRs. If you can take the right CTR offline, the submitted + % SFO would not be audited and any misbehavior would thus not be detected. + % + % We discuss how the attacker can try to infer this in the paper using their + % zero-day exploit. It boils down to winning a race against us submitting + % the SFO on a one-time Tor circuit that was prepared ahead-of-time. + % + \mktitle{Submission phase} + \centering\includegraphics[width=.75\textwidth]{img/phase-1} + \vfill + \begin{columns} + \begin{column}{.1\textwidth} + \end{column} + \begin{column}{.4\textwidth} + \textbf{Straw man proposals} + \begin{itemize} + \item Fetch an inclusion proof + \item Rely on a centralized party + \end{itemize} + \end{column} + \begin{column}{.1\textwidth} + \end{column} + \begin{column}{.4\textwidth} + \textbf{What we do instead} + \begin{itemize} + \item Use Tor relays, ``CTRs'' + \item Probabilistic submit + \end{itemize} + \end{column} + \end{columns} + \vfill + \pause + \centering\alert{It must be difficult to infer which CTR received an SFO} +\end{frame} + +\begin{frame} + % + % Okay. + % + % A CTR received a submitted SFO. Now what? + % + % The simplest thing would be to challenge the log to prove inclusion if + % the SFO's Maximum Merge Delay elapsed, and otherwise wait until it does. + % + % The problem with contacting the log immediately is that it leaks a lot of + % valuable information to the attacker. For example, it is deterministic + % when the CTR will do its auditing. That helps with interference planning. + % + % It also leaks real-time browsing patterns which are helpful for traffic + % analysis against Tor. Since we will anyway need to buffer newly issued + % SFOs until the Maximum Merge Delay elapsed, it is not an added complexity + % to always buffer SFOs for a random amount of time to reduce this leakage. + % + % Leakage to CT logs are also reduced because CTRs cache audited SFOs. + % + % To summarize the basics of the buffer phase then. + % + % You receive an SFO. If you have not seen it before, you buffer the SFO + % until the log's Maximum Merge Delay elapsed. You also add a random + % auditing delay to obfuscate real-time browsing patterns. + % + % Phase 3 starts when it is time to do the auditing. + % + % The attacker's best bet to interfere in phase 2 is to do a so-called + % network-wide flush. Please refer to our paper for more details. The + % TL;DR is that we cannot prevent such interference, but it is trivially + % detected and draws unwanted attention if CTRs publish relevant metrics. + % + \mktitle{Buffering phase} + \begin{columns} + \begin{column}{.5\textwidth} + \begin{itemize} + \item Buffer until logging is required + \item Add a random delay to leak less + \item Cache audited SFOs to leak less + \end{itemize} + \end{column} + \begin{column}{.5\textwidth} + \centering + \includegraphics[width=.5\columnwidth]{img/phase-2} + \end{column} + \end{columns} + \vfill + \pause + \centering\alert{% + The attacker's best bet to interfere is trivially detectable + } +\end{frame} + +\begin{frame} + % + % After an SFO's buffering phase is over, the CTR will challenge a log to + % prove inclusion. This inclusion proof will reference the first signed + % tree head in Tor's consensus that should have merged it by now. + % + % If you are familiar with gossip, notice that the difficulty of presenting + % an undetected split-view here is as difficult as breaking Tor's consensus + % mechanism. Other user agents than Tor Browser can benefit from this. + % + % Anyhow, an important detail that we discuss in the paper is that the + % attacker (who controls the log) can likely infer which CTR queried for + % inclusion. Surprisingly, perhaps, it may even be so despite using Tor. + % + % It is problematic if the attacker can infer the CTR's identity. Then you + % basically do a DoS on that relay and the mis-issued SFO goes unnoticed. + % + % To err on the safe side, we decided to assume that the attacker can in + % fact identify which CTR queried for inclusion. In other words, once a + % mis-issued SFO has been queried for, the querying CTR becomes unavailable. + % + % To prepare against this threat each CTR collaborates with another CTR. + % That other CTR is called a watchdog in our design. Before doing an + % inclusion query, the CTR sends the SFO upfront to a watchdog. If the + % query succeeded the watchdog receives an acknowledgment. If there is no + % timely acknowledgment, it is the watchdog's responsibility to report that + % SFO to a trusted auditor that will investigate the issue further. + % + % The reason why it is not the watchdog that does the final investigation is + % because the average Tor relay operator cannot be expected to do so. Tor + % relays are also designed not to write data to disk unless debugging is + % enabled. Such disk writes would increase the risk of unwanted search, + % seizure, and forensic analysis of the operator's physical servers. + % + % Now you might feel like you got the run around. We started by saying that + % we cannot have a centralized third-party auditor. Yet, in the end it is a + % centralized third-party auditor that investigates potential issues. + % + % What's different here is that the number of SFOs that reach these auditors + % are reduced in numbers. Under normal circumstances, an auditor should not + % receive any report at all. If some log suffers from bad availability, the + % number of reports are also limited in our design because CTRs back-off + % immediately after a failed query. What we trust these auditors with is a + % tiny subset of SFOs that need further investigation. + % + % These auditors also do not have to scale with the network because the + % expected number of reports is very small. + % + \begin{columns} + \begin{column}{.6\textwidth} + \mktitle{Audit and report phases} + \begin{itemize} + \item Fetch inclusion proof against a specific STH + \item Rely on Tor's consensus to agree on STHs + \item Watchdog CTRs do the reporting if needed + \begin{itemize} + \item Protects against CTR identification + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{.4\textwidth} + \includegraphics[width=\columnwidth]{img/phase-3-4} + \end{column} + \end{columns} + \vfill + \pause + \centering\alert{Why not just send to a trusted auditor immediately?} +\end{frame} + +\begin{frame} + % + % Let's put it all together. + % + % For each certificate validation in Tor Browser, we basically flip a coin + % if it should be submitted to a random CTR for auditing. We made it as + % difficult as possible for the attacker to identify this CTR. + % + % CTRs buffer incoming SFOs until they can be audited. To reduce leakage + % to the logs, random delays are added and audited SFOs are cached. + % + % SFOs are audited against signed tree heads in Tor's consensus. This makes + % it as difficult to fork the log as it is to forge a valid Tor consensus. + % Other ecosystems can benefit from this and not just Tor. + % + % While an SFO is audited we erred on the safe side and assumed that the + % attacker can infer from the inclusion query which CTR holds evidence of + % Certificate Authority + % and/or log misbehavior. This means that the holding CTR can be knocked + % offline shortly thereafter. To guard against this threat, a watchdog + % receives the SFO upfront. If there is no timely acknowledgment, a report + % is sent to a trusted auditor that investigates the issue further. + % + % Such reporting should be rare, even if a log becomes unavailable our + % design ensures that a limited amount of SFOs leak to these auditors. + % + % Although these auditors don't have to scale with the network anymore, it + % requires both new software and operations to be deployed. The overall + % complexity in phase two, three, and four, is also quite a leap from just + % basic CT compliance. Therefore, we proposed a simplified version that + % can be deployed incrementally. + % + \mktitle{Putting it all together} + \centering\includegraphics[height=.5\textheight]{img/design-full} + \vfill + \pause + \alert{This is quite a leap from CT compliance} +\end{frame} + +\begin{frame} + % + % Phase 1 is identical in our incremental design. The main difference is + % that no inclusion proofs will be fetched. Instead, CTRs are going to + % cross-log certificates and possibly entire SFOs if CT logs allow it. + % + % You can think of this as using the log ecosystem against the attacker. CT + % logs are basically repurposed as CT auditors. A cross-logged certificate + % becomes public so that Certificate Authority misbehavior can be detected + % by anyone that inspects the logs. + % + % Of course, this assumes that at least some log is honest. + % + % We can also detect log misbehavior if CT logs allowed logging of SCTs, not + % just certificates. That, however, requires an extended CT log API. + % + % Personally, I think that would be a valuable addition to the log ecosystem + % because it provides a well-defined place to do casual SFO reporting. + % + \mktitle{Incremental design} + \centering\includegraphics[height=.33\textheight]{img/design-incremental} + \vfill + \pause + \alert{Use the log ecosystem against the attacker}\\ +\end{frame} diff --git a/slides/2021-pets/src/end.tex b/slides/2021-pets/src/end.tex new file mode 100644 index 0000000..56beaf3 --- /dev/null +++ b/slides/2021-pets/src/end.tex @@ -0,0 +1,34 @@ +\begin{frame} + % + % As a take away I hope that you are convinced that Tor Browser would + % benefit from CT. + % - This was the first part of the presentation. + % + % CT would also benefit from more auditing, which we can do here in a secure + % and privacy-preserving manner because of and how we use Tor. + % - This was the second part of the presentation. + % + % Although not presented here, we show in our paper that the resulting + % system is also performant based on estimations from two public data sets. + % + % An important insight from our work is that pushing the auditing logic + % away from Tor Browser is important to defend against relevant threats. + % The simple approach of "just fetching an inclusion proof" does not work. + % + % That's it. Thanks! + \vfill + \begin{columns} + \begin{column}{0.6\textwidth} + \mktitle{Take away} + \begin{itemize} + \item Tor Browser would benefit from CT + \item CT would benefit from more auditing + \item Delegated auditing is key in our setting + \end{itemize} + \end{column} + \begin{column}{0.4\textwidth} + \centering + \includegraphics[width=.8\columnwidth]{img/thanks} + \end{column} + \end{columns} +\end{frame} diff --git a/slides/2021-pets/src/preamble.tex b/slides/2021-pets/src/preamble.tex new file mode 100644 index 0000000..403d146 --- /dev/null +++ b/slides/2021-pets/src/preamble.tex @@ -0,0 +1,112 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[utf8]{inputenc} + +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{rotate} +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{wasysym} +\usepackage{graphicx} +\usepackage{color} +\usepackage{drawstack} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage{floatrow}% this one causes error on arch for some reason +\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, % Color links instead of boxes + urlcolor = darkBlue, % Color external hyper links + linkcolor = darkBlue, % Color internal links + citecolor = darkBlue, % Color citations +} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +\lstdefinestyle{CStyle}{ + backgroundcolor=\color{lightGray!25}, + commentstyle=\color{darkGreen}, + keywordstyle=\color{darkBlue}, + numberstyle=\tiny\color{darkRed}, + stringstyle=\color{darkPurple}, + basicstyle=\footnotesize, + breakatwhitespace=false, + breaklines=false, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + language=C, + morekeywords={size_t,def,in,zip,True,False,ord,u8,u64}, +} + +\setbeamertemplate{itemize item}[circle] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\floatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} + +\def\rding{\rotatebox[origin=c]{-91}{\ding{224}}} +\def\lding{\rotatebox[origin=c]{91}{\ding{224}}} + +% TODO: fix this properly... +\newcommand{\mktitle}[1]{\centering\textbf{\large#1}\vfill\normalsize} diff --git a/slides/2021-pets/src/start.tex b/slides/2021-pets/src/start.tex new file mode 100644 index 0000000..00226e2 --- /dev/null +++ b/slides/2021-pets/src/start.tex @@ -0,0 +1,189 @@ +% +% Title page +% +% Hi everyone. Welcome to our talk "privacy-preserving and incrementally +% deployable support for Certificate Transparency in Tor". I'm Rasmus, a PhD +% student at Karlstad University. This is joint work together with +% Tobias Pulls from Karlstad University, +% Tom Ritter from Mozilla, and +% Paul Syverson from the US Naval Research Laboratory. +% + +\begin{frame} + % + % To get started I would like to remind us of the past. + % + % The year is 2011. Summer just arrived, and we are located in the northern + % parts of Netherlands. The offices of DigiNotar appear to be operating as + % usual. Had we been there at the time, we probably wouldn't have thought + % they'd be out of business in September. + % + \vfill + \begin{columns} + \begin{column}{0.45\textwidth} + \mktitle{A flash-back into the past} + \begin{itemize} + \item June, 2011 + \item Netherlands, Beverwijk + \item DigiNotar + \end{itemize} + \end{column} + \begin{column}{0.55\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/beverwijk} + \burl{https://creativecommons.org/licenses/by-sa/3.0/} + % https://commons.wikimedia.org/wiki/File:Nzkanaal2.jpg + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + % + % What happened? + % + % Let me give you the backdrop. + % + % DigiNotar was a so-called certificate authority that issued certificates + % for the web. Your browser uses these certificates to verify that you are + % really visiting the website that you intended to and not some attacker. + % + % Sounds great! What's the catch? + % Well. + % You have to trust that no Certificate Authority is going to mess up the + % certificate issuance process. Any failure in this process may result in a + % mis-issued certificate, which in turn may result in insecure connections. + % + % Okay. So, + % I think most of you know what happened. DigiNotar was hacked. They + % mis-issued certificates for Google, Mozilla, Tor, and many others. + % + % This was actually detected by DigiNotar. + % In response, they decided to be silent and cover it up. + % + % The main reason why we, the public, detected that DigiNotar was no longer + % operating in good faith is because of a large scale attack in Iran. Some + % of the mis-issued certificates were used to intercept network traffic of + % 300k gmail users. Perhaps we were actually lucky to detect the attack at + % all. If the attacker had been more stealthy, DigiNotar might still have + % been in operation today. That is a scary though. Can we do better? + % + % Fortunately, the answer is yes. We can do better. The overall ecosystem + % improved significantly since 2011. This talk covers one such improvement: + % - Certificate Transparency + % + \vfill + \begin{columns} + \begin{column}{0.45\textwidth} + \mktitle{What happened?} + \begin{itemize} + \item DigiNotar issued web certificates + \item Did not live up to expectations + \item Then tried to cover it up\footnotemark + \end{itemize} + \end{column} + \begin{column}{0.55\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/diginotar} + \burl{https://www.bbc.com/news/technology-14989334} + \end{column} + \end{columns} + \vfill + \pause + \centering\alert{A stealthy attacker might have gotten away with it!} + \footnotetext[1]{% + \tiny{ + FoxIT. + Black Tulip: Report of the investigation into the DigiNotar Certificate + Authority breach. + Page 3. + } + } +\end{frame} + +\begin{frame} + % + % Just to make sure that we are on the same page. + % + % A large scale attack should not be necessary to detect if a trusted party + % like DigiNotar misbehaves. And it is not like we are only talking about a + % single isolated incident. The real problem is that we have hundreds of + % Certificate Authorities that claim to issue certificates only to the + % rightful domain owners. Every now and then, someone gets it wrong. What + % we are left with is an incident that endangers our digital safety, + % sometimes even our physical safety depending on the real-world context. + % + % What Certificate Transparency brings to the table is the ability to detect + % mis-issued certificates. The basic idea is that every issued certificate + % must be disclosed in a public log that anyone can inspect. + % + % Usually, Certificate authorities are the ones doing the logging. Websites + % then serve the issued certificate together with some proofs of logging. + % The browser verifies these proofs before accepting the certificate as + % valid. + % + % This is actually great, because now a website can look for certificates + % that match their domain name in the log. If something shows up that they + % did not ask for - well - now they are aware of that. They probably + % wouldn't have been without the log. In response, you might question the + % certificate authority, initiate a revocation process, and so forth. + % + \vfill + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{Larger problem and solution?} + \begin{itemize} + \item Digitar was not a one-time incident\footnotemark + \item Many other parties can get it wrong + \item Add visibility into issued certificates\footnotemark + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \input{img/ct} + \end{column} + \end{columns} + \footnotetext[2]{\burl{https://sslmate.com/certspotter/failures}} + \footnotetext[3]{\burl{https://certificate.transparency.dev/}} +\end{frame} + +\begin{frame} + % + % Certificate Transparency, or CT for short, has been - and is still being - + % gradually rolled-out by Google and others. For example, every certificate + % must be CT compliant to validate in Google Chrome and Apple's Safari. + % + % CT compliance basically means that at least two logs must have "promised" + % to make that certificate available to the public. Such a promise is + % usually called an SCT and it is hard-coded into the issued certificate. + % + % Browsers currently use SCTs as proofs of logging. It is possible to + % verify that these promises are in fact true. That is an important part to + % ensure that blind trust is not shifted from Certificate Authorities to CT + % logs. However, such verification is challenging because of the added + % complexity and possible privacy concerns. + % + % For example, to verify that a certificate is in fact included in a log, + % you need to interact with the log ecosystem. Such interactions leak + % a user's browsing patterns to the logs and that is kind of problematic. + % + \mktitle{Certificate Transparency (CT) compliance\footnotemark} + \begin{columns} + \begin{column}{0.25\textwidth} + \end{column} + \begin{column}{0.25\textwidth} + \centering\includegraphics[width=.67\columnwidth]{img/chrome} + \end{column} + \begin{column}{0.25\textwidth} + \centering\includegraphics[width=.7\columnwidth]{img/safari} + \end{column} + \begin{column}{0.25\textwidth} + \end{column} + \end{columns} + \vfill + ``Two logs promised that they will make the certificate public'' + + \footnotetext[4]{% + \burl{https://github.com/chromium/ct-policy/blob/master/ct_policy.md} + \& + \burl{https://support.apple.com/en-us/HT205280}% + } +\end{frame} diff --git a/slides/2021-pets/src/titlepage.tex b/slides/2021-pets/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2021-pets/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2021-surprise/.gitignore b/slides/2021-surprise/.gitignore new file mode 100644 index 0000000..d1e39cc --- /dev/null +++ b/slides/2021-surprise/.gitignore @@ -0,0 +1,9 @@ +main.aux +main.fdb_latexmk +main.fls +main.log +main.nav +main.out +main.pdf +main.snm +main.toc diff --git a/slides/2021-surprise/README b/slides/2021-surprise/README new file mode 100644 index 0000000..a7c8b5b --- /dev/null +++ b/slides/2021-surprise/README @@ -0,0 +1,3 @@ +(Transcribed) lightning-talk on what our CT in Tor work was about. Target +audience was funders/partners in the SURPRISE project. Not presented by me, +slides and hints was for Simone who attended the meeting. diff --git a/slides/2021-surprise/beamercolorthemergd.sty b/slides/2021-surprise/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2021-surprise/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2021-surprise/beamerfontthemergd.sty b/slides/2021-surprise/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2021-surprise/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2021-surprise/beamerinnerthemergd.sty b/slides/2021-surprise/beamerinnerthemergd.sty new file mode 100644 index 0000000..1c50b47 --- /dev/null +++ b/slides/2021-surprise/beamerinnerthemergd.sty @@ -0,0 +1,43 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoMul){\includegraphics[width=3.5cm]{img/kau}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add date + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{date}\insertdate\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2021-surprise/beamerouterthemergd.sty b/slides/2021-surprise/beamerouterthemergd.sty new file mode 100644 index 0000000..456290a --- /dev/null +++ b/slides/2021-surprise/beamerouterthemergd.sty @@ -0,0 +1,69 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add metadata + \begin{beamercolorbox}[ + wd=0.50\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \href{https://rgdd.github.io}{rgdd.github.io} + $\;\;\;\;\;\;\;\;\cdots\;\;\;\;\;\;\;\;$ + \href{https://twitter.com/\_\_rgdd}{@\_\_rgdd} + $\;\;\;\;\;\;\;\cdots\;\;\;\;\;\;\;$ + \href{mailto:rasmus.dahlberg@kau.se}{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add title + \begin{beamercolorbox}[ + wd=0.45\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + \insertsubtitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2021-surprise/beamerthemergd.sty b/slides/2021-surprise/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2021-surprise/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2021-surprise/handout.pdf b/slides/2021-surprise/handout.pdf Binary files differnew file mode 100644 index 0000000..df4657a --- /dev/null +++ b/slides/2021-surprise/handout.pdf diff --git a/slides/2021-surprise/img/kau.png b/slides/2021-surprise/img/kau.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2021-surprise/img/kau.png diff --git a/slides/2021-surprise/img/tb.png b/slides/2021-surprise/img/tb.png Binary files differnew file mode 100644 index 0000000..3fd6852 --- /dev/null +++ b/slides/2021-surprise/img/tb.png diff --git a/slides/2021-surprise/main.tex b/slides/2021-surprise/main.tex new file mode 100644 index 0000000..dc4e82c --- /dev/null +++ b/slides/2021-surprise/main.tex @@ -0,0 +1,27 @@ +\pdfminorversion=4 +\documentclass[handout,aspectratio=169]{beamer} +%\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{%full version that is shown on the front page + Privacy-Preserving \& Incrementally-Deployable Support for Certificate + Transparency in Tor +} +\subtitle{%short version that is shown in the footer on each slide + Certificate Transparency in Tor +} +\author{% + Rasmus Dahlberg, Tobias Pulls, Tom Ritter, and Paul Syverson +} +\date{% + July 15, 2021 +} + +\begin{document} + \input{src/titlepage} + \input{src/start} + \input{src/body} + \input{src/end} +\end{document} diff --git a/slides/2021-surprise/src/body.tex b/slides/2021-surprise/src/body.tex new file mode 100644 index 0000000..9b336e5 --- /dev/null +++ b/slides/2021-surprise/src/body.tex @@ -0,0 +1,50 @@ +\begin{frame} + % + % To explain the paper's contribution we can simply break down the title: + % privacy-preserving and incrementally deployable support for Certificate + % Transparency in Tor. + % + % To make a long story short, Tor Browser does not support Certificate + % Transparency. The reason why you want to do that is because it makes it + % possible to detect if visited websites are being impersonated or not. + % + % For example, an attacker may want to impersonate a website to steal a + % user's credit card number. It is also helpful to de-anonymize a Tor user. + % + % So, our work focus on adding support for Certificate Transparency in Tor + % Browser. We do that while focusing on two key properties. + % + % The proposed solution should be _privacy-preserving_. We achieve this + % because of and how we use Tor. + % + % The proposed solution should also be incrementally-deployable, and in the + % end have a stronger threat model than current Certificate Transparency + % deployments in Chrome and Safari that trust so-called CT logs blindly. + % + % In more detail, our incrementally-deployable design goes from: + % pairs of CT logs that are trusted blindly, to + % at least one CT log is trusted blindly, to + % no CT log that is trusted blindly. + % + % It is fair to say that we have a strong threat model where the attacker + % even has a zero-day exploit against Tor Browser. In spite of this very + % strong threat model, the involved performance overhead is modest. + % + % For more detail, please refer to our paper and/or watch the presentation. + % + \mktitle{Breaking down the title} + \begin{columns} + \begin{column}{0.55\textwidth} + \begin{itemize} + \item Support Certificate Transparency in Tor + \item Privacy-Preserving + \item Incrementally-deployable + \end{itemize} + \end{column} + \begin{column}{0.45\textwidth} + \centering\includegraphics[width=.5\columnwidth]{img/tb} + \end{column} + \end{columns} + \footnotetext[1]{\tiny{Paper: \url{https://petsymposium.org/2021/files/papers/issue2/popets-2021-0024.pdf}}} + \footnotetext[2]{\tiny{Presentation: \url{https://www.youtube.com/watch?v=f7yDJOd6g3U}}} +\end{frame} diff --git a/slides/2021-surprise/src/preamble.tex b/slides/2021-surprise/src/preamble.tex new file mode 100644 index 0000000..4021351 --- /dev/null +++ b/slides/2021-surprise/src/preamble.tex @@ -0,0 +1,113 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[utf8]{inputenc} + +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{rotate} +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{wasysym} +\usepackage{graphicx} +\usepackage{color} +\usepackage{drawstack} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage{floatrow}% this one causes error on arch for some reason +\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, % Color links instead of boxes + urlcolor = darkBlue, % Color external hyper links + linkcolor = darkBlue, % Color internal links + citecolor = darkBlue, % Color citations +} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +\lstdefinestyle{CStyle}{ + backgroundcolor=\color{lightGray!25}, + commentstyle=\color{darkGreen}, + keywordstyle=\color{darkBlue}, + numberstyle=\tiny\color{darkRed}, + stringstyle=\color{darkPurple}, + basicstyle=\footnotesize, + breakatwhitespace=false, + breaklines=false, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + language=C, + morekeywords={size_t,def,in,zip,True,False,ord,u8,u64}, +} + +\setbeamertemplate{itemize item}[circle] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\floatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} + +\def\rding{\rotatebox[origin=c]{-91}{\ding{224}}} +\def\lding{\rotatebox[origin=c]{91}{\ding{224}}} + +% TODO: fix this properly... +\newcommand{\mktitle}[1]{\centering\textbf{\large#1}\vfill\normalsize} diff --git a/slides/2021-surprise/src/titlepage.tex b/slides/2021-surprise/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2021-surprise/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2021-swits/README b/slides/2021-swits/README new file mode 100644 index 0000000..07de40e --- /dev/null +++ b/slides/2021-swits/README @@ -0,0 +1,2 @@ +My talk at SWITS, a conference for (mostly) academics in Sweden that are working +on privacy and security. diff --git a/slides/2021-swits/beamercolorthemergd.sty b/slides/2021-swits/beamercolorthemergd.sty new file mode 100644 index 0000000..74ced1c --- /dev/null +++ b/slides/2021-swits/beamercolorthemergd.sty @@ -0,0 +1,24 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\mode<all> diff --git a/slides/2021-swits/beamerfontthemergd.sty b/slides/2021-swits/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2021-swits/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2021-swits/beamerinnerthemergd.sty b/slides/2021-swits/beamerinnerthemergd.sty new file mode 100644 index 0000000..b96a415 --- /dev/null +++ b/slides/2021-swits/beamerinnerthemergd.sty @@ -0,0 +1,49 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoMul){\includegraphics[width=3.5cm]{img/mullvad}} + (current page.west) -- + (current page.north west); + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north east) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoKau){\includegraphics[width=3cm]{img/kau}} + (current page.east) -- + (current page.north east); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add date + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{date}\today\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2021-swits/beamerouterthemergd.sty b/slides/2021-swits/beamerouterthemergd.sty new file mode 100644 index 0000000..45ba820 --- /dev/null +++ b/slides/2021-swits/beamerouterthemergd.sty @@ -0,0 +1,71 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add metadata + \begin{beamercolorbox}[ + wd=0.50\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \href{https://rgdd.github.io}{rgdd.github.io} + $\cdots$ + \href{https://twitter.com/\_\_rgdd}{@\_\_rgdd} + $\cdots$ + \href{mailto:rasmus@mullvad.net}{rasmus@mullvad.net} + $\cdots$ + \href{mailto:rasmus.dahlberg@kau.se}{rasmus.dahlberg@kau.se} + \end{beamercolorbox}% + % Add title + \begin{beamercolorbox}[ + wd=0.45\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + \inserttitle + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2021-swits/beamerthemergd.sty b/slides/2021-swits/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2021-swits/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2021-swits/handout.pdf b/slides/2021-swits/handout.pdf Binary files differnew file mode 100644 index 0000000..93ac3ca --- /dev/null +++ b/slides/2021-swits/handout.pdf diff --git a/slides/2021-swits/img/after.tex b/slides/2021-swits/img/after.tex new file mode 100644 index 0000000..c2af725 --- /dev/null +++ b/slides/2021-swits/img/after.tex @@ -0,0 +1,70 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Publisher) at (0,0) { Publisher }; + \node[entity, fill=darkGreen, below=1.5cm of Publisher] (EndUser) {End-user}; + \node[entity, fill=darkOrange, left=1.5cm of Publisher] (Log) {Log}; + \node[entity, fill=darkRed, below=1.5cm of Log] (Witness) {Witness}; + + % Key setup + \path[path, dashed] ($ (EndUser) + (2,0) $) -- + node[relation, above] { Public keys } + (EndUser); + % Get data and signature + \path[path] (Publisher) -- + node[relation, right] { + \begin{tabular}{c} + Opaque data\\ + Signature\\ + Proofs of logging\\ + \end{tabular} + } + (EndUser); + % Verification + \path[path, rounded corners] + (EndUser.180) -| + ($ (EndUser) + (-1.25,-.75) $) + node[relation, below]{ + Verify + } -| + (EndUser.210); + + + % Cosigning + \path[path] (Witness) edge[bend right] + node[relation,right]{Cosignature} + (Log); + \path[path] (Log) edge[bend right] + node[relation,left]{Tree head} + (Witness); + \path[path, rounded corners] + (Witness.180) -| + ($ (Witness) + (-1.25,-.75) $) + node[relation, below]{ + Verify + } -| + (Witness.210); + + % Get proofs + \path[path] (Log) -- + node[relation,above]{Proofs of logging} + (Publisher); +\end{tikzpicture} diff --git a/slides/2021-swits/img/before.tex b/slides/2021-swits/img/before.tex new file mode 100644 index 0000000..f634ef4 --- /dev/null +++ b/slides/2021-swits/img/before.tex @@ -0,0 +1,46 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Publisher) at (0,0) { Publisher }; + \node[entity, fill=darkGreen, below=1.5cm of Publisher] (EndUser) {End-user}; + + % Key setup + \path[path, dashed] ($ (EndUser) + (2,0) $) -- + node[relation, above] { Public key } + (EndUser); + % Get data and signature + \path[path] (Publisher) -- + node[relation, right] { + \begin{tabular}{c} + Opaque data\\ + Signature\\ + \end{tabular} + } + (EndUser); + % Verification + \path[path, rounded corners] + (EndUser.180) -| + ($ (EndUser) + (-1.25,-.75) $) + node[relation, below]{ + Verify + } -| + (EndUser.210); +\end{tikzpicture} diff --git a/slides/2021-swits/img/clean.jpg b/slides/2021-swits/img/clean.jpg Binary files differnew file mode 100644 index 0000000..2465e5e --- /dev/null +++ b/slides/2021-swits/img/clean.jpg diff --git a/slides/2021-swits/img/kau.png b/slides/2021-swits/img/kau.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2021-swits/img/kau.png diff --git a/slides/2021-swits/img/log-request.tex b/slides/2021-swits/img/log-request.tex new file mode 100644 index 0000000..08edf87 --- /dev/null +++ b/slides/2021-swits/img/log-request.tex @@ -0,0 +1,47 @@ +\begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + }, +] + \node[entity, fill=darkBlue] (Publisher) at (0,0) { Publisher }; + \node[entity, fill=darkGreen, below=1.5cm of Publisher] (DNS) {DNS}; + \node[entity, fill=darkOrange, left=1.5cm of Publisher] (Log) {Log}; + + % Setup DNS + \path[path, dashed] (Publisher) -- + node[relation, right] {TXT RR} + (DNS); + + \path[path] (Publisher) edge[bend right] + node[relation, above] { + Key-value pairs + } + (Log); + \path[path] (Log) edge[bend right] + node[relation,below] { + accept/reject + } + (Publisher); + + \path[path, rounded corners] (Log) |- + node[relation,below,pos=.75]{ + verify TXT RR + } + (DNS); +\end{tikzpicture} diff --git a/slides/2021-swits/img/mt.tex b/slides/2021-swits/img/mt.tex new file mode 100644 index 0000000..3deaf62 --- /dev/null +++ b/slides/2021-swits/img/mt.tex @@ -0,0 +1,19 @@ +\begin{tikzpicture}[ + -latex, +] + \Tree [ + .$\hash(h_{01}\concat h_{23})$ [ + .$h_{01}\coloneqq\hash(h_0\concat h_1)$ [ + .$h_0\coloneqq\hash(\mathsf{foo})$ + ] [ + .$h_1\coloneqq\hash(\mathsf{bar})$ + ] + ] [ + .$h_{23}\coloneqq\hash(h_2\concat h_3)$ [ + .$h_2\coloneqq\hash(\mathsf{baz})$ + ] [ + .$h_3\coloneqq\hash(\mathsf{qux})$ + ] + ] + ] +\end{tikzpicture} diff --git a/slides/2021-swits/img/mullvad.png b/slides/2021-swits/img/mullvad.png Binary files differnew file mode 100644 index 0000000..4574eb1 --- /dev/null +++ b/slides/2021-swits/img/mullvad.png diff --git a/slides/2021-swits/img/rgdd.jpg b/slides/2021-swits/img/rgdd.jpg Binary files differnew file mode 100644 index 0000000..597b406 --- /dev/null +++ b/slides/2021-swits/img/rgdd.jpg diff --git a/slides/2021-swits/img/thanks.pdf b/slides/2021-swits/img/thanks.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2021-swits/img/thanks.pdf diff --git a/slides/2021-swits/img/tree-leaf.trunnel b/slides/2021-swits/img/tree-leaf.trunnel new file mode 100644 index 0000000..c3806f3 --- /dev/null +++ b/slides/2021-swits/img/tree-leaf.trunnel @@ -0,0 +1,9 @@ +/* + * The logged Merkle tree leaf data + */ +struct tree_leaf { + u64 shard_hint; + u8 checksum[32]; + u8 signature[64]; + u8 key_hash[32]; +} diff --git a/slides/2021-swits/main.tex b/slides/2021-swits/main.tex new file mode 100644 index 0000000..2c617fa --- /dev/null +++ b/slides/2021-swits/main.tex @@ -0,0 +1,21 @@ +\pdfminorversion=4 +%\documentclass[handout,aspectratio=169]{beamer} +\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + An Introduction to System Transparency Logging +} +\author{% + Rasmus Dahlberg +} +\date{% + \today +} + +\begin{document} + \input{src/titlepage} + \input{src/body} +\end{document} diff --git a/slides/2021-swits/slides.pdf b/slides/2021-swits/slides.pdf Binary files differnew file mode 100644 index 0000000..b568efd --- /dev/null +++ b/slides/2021-swits/slides.pdf diff --git a/slides/2021-swits/src/body.tex b/slides/2021-swits/src/body.tex new file mode 100644 index 0000000..8a5f9f5 --- /dev/null +++ b/slides/2021-swits/src/body.tex @@ -0,0 +1,202 @@ +\begin{frame} + \begin{columns} + \begin{column}{0.5\textwidth} + \mktitle{Outline} + \begin{enumerate} + \item Setting and problem + \item Design overview + \item How to get involved + \end{enumerate} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/rgdd} + \burl{https://creativecommons.org/licenses/by-sa/4.0/} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + % + % 1. Introduce the system. Think first two paragraphs in design.md + % + \mktitle{Our starting point} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Data publisher + \item End-user + \item Assumptions + \begin{itemize} + \item Public key can be located + \item Signed data can be located + \item End-user can install extra tooling + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \input{img/before} + \end{column} + \end{columns} + \vfill + \pause + \alert{The attacker can compromise the data publisher}\\ + \pause + \alert{The goal is to detect unwanted key-usage} +\end{frame} + +\begin{frame} + % + % 1. Our design is about transparency logs. So, I need to explain briefly + % what a transparency log is. + % 2. Append-only Merkle tree. You can think of the data as being stored in + % the leaves. Each leaf is hashed. Parents concatenate their children + % hashes to produces their own hash values. Repeat until single root hash. + % 3. The root hash is usually called a tree head. + % 4. Tree head interesting because it fixes the structure and the content of + % the tree. Add/remove/modify -> new tree head. + % 5. If the log signs the tree head, you can hold it accountable for its + % structure and content. + % 6. This is important because the attacker can control the log. + % 7. So we cannot trust that the log is append-only. We will need to verify + % that. To this end we have consistency proofs. The intuition is that you + % can force the log to reveal a number of cryptographic hashes. These + % hashes will prove that the tree head you see today is consistent with the + % tree head you saw yesterday. + % 8. You can also prove that something is in the log efficiently. This is + % called an inclusion proof. The intuition is that you reveal a number of + % hashes. If you can use them to reconstruct the root of a globally + % consistent tree head you can be sure that some data is in the log. + % 8. Global consistency (as opposed to just consistency) is what prevents + % the log from creating forks. I will return to this later on because it is + % an important part of our design. + % (9. Not having global consistency would be like having a blockchain + % without a consensus mechanism.) + % + \mktitle{A quick step back---Transparency log crash course} + \input{img/mt} + \vfill + \begin{columns} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Tree head + \end{itemize} + \end{column} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Consistency proof + \end{itemize} + \end{column} + \begin{column}{0.33\textwidth} + \begin{itemize} + \item Inclusion proof + \end{itemize} + \end{column} + \end{columns} + \vfill + \pause + \alert{The attacker can control the log} +\end{frame} + +\begin{frame} + \mktitle{Preparing a logging request} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Select a shard hint and checksum + \item Sign using your private key + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \lstinputlisting[style=CStyle]{img/tree-leaf.trunnel} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Submitting a logging request} + \begin{columns} + \begin{column}{0.2\textwidth} + \underline{Key-value pairs:} + \begin{itemize} + \item Shard hint + \item Checksum + \item Signature + \item Public key + \item Domain hint + \end{itemize} + \end{column} + \begin{column}{0.8\textwidth} + \centering + \input{img/log-request} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Distributing proofs of public logging} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item End-user will not talk to the log + \item Proofs of logging + \begin{itemize} + \item Inclusion proof + \item Tree head + \end{itemize} + \item Witness cosigning + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \centering + \input{img/after} + \end{column} + \end{columns} + \pause + \alert{The attacker can control a threshold of witnesses} +\end{frame} + +\begin{frame} + \mktitle{Summary and additional details} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Signed checksums + \item Sharding + \item Preserved data flows + \item Anti-spam + \item Global consistency + \item Few simple parsers + \item No cryptographic agility + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \includegraphics[width=\columnwidth]{img/clean} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \vfill + \begin{columns} + \begin{column}{0.7\textwidth} + \mktitle{Get involved} + \begin{itemize} + \item Feedback on our v0 design\footnotemark and API\footnotemark? + \item Is this a service that you would use? Why (not)? + \item Want to run an experimental log or witness? + \item Implementation and tooling is still early-days + \item Reach out via slack\footnotemark, IRC\footnotemark, GitHub, or DM + \end{itemize} + \end{column} + \begin{column}{0.3\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/thanks} + \end{column} + \end{columns} + \footnotetext[1]{\burl{https://github.com/system-transparency/stfe/blob/design/doc/design.md}} + \footnotetext[2]{\burl{https://github.com/system-transparency/stfe/blob/design/doc/api.md}} + \footnotetext[3]{\burl{https://communityinviter.com/apps/system-transparency/join}} + \footnotetext[4]{\tiny{\texttt{irc/oftc \#siglog}}} +\end{frame} diff --git a/slides/2021-swits/src/preamble.tex b/slides/2021-swits/src/preamble.tex new file mode 100644 index 0000000..4021351 --- /dev/null +++ b/slides/2021-swits/src/preamble.tex @@ -0,0 +1,113 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[utf8]{inputenc} + +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{rotate} +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{wasysym} +\usepackage{graphicx} +\usepackage{color} +\usepackage{drawstack} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage{floatrow}% this one causes error on arch for some reason +\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, % Color links instead of boxes + urlcolor = darkBlue, % Color external hyper links + linkcolor = darkBlue, % Color internal links + citecolor = darkBlue, % Color citations +} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +\lstdefinestyle{CStyle}{ + backgroundcolor=\color{lightGray!25}, + commentstyle=\color{darkGreen}, + keywordstyle=\color{darkBlue}, + numberstyle=\tiny\color{darkRed}, + stringstyle=\color{darkPurple}, + basicstyle=\footnotesize, + breakatwhitespace=false, + breaklines=false, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + language=C, + morekeywords={size_t,def,in,zip,True,False,ord,u8,u64}, +} + +\setbeamertemplate{itemize item}[circle] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\floatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} + +\def\rding{\rotatebox[origin=c]{-91}{\ding{224}}} +\def\lding{\rotatebox[origin=c]{91}{\ding{224}}} + +% TODO: fix this properly... +\newcommand{\mktitle}[1]{\centering\textbf{\large#1}\vfill\normalsize} diff --git a/slides/2021-swits/src/titlepage.tex b/slides/2021-swits/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2021-swits/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2022-ct-days/README b/slides/2022-ct-days/README new file mode 100644 index 0000000..caf1151 --- /dev/null +++ b/slides/2022-ct-days/README @@ -0,0 +1 @@ +My 2x talks in a 45m slot at CT days. diff --git a/slides/2022-ct-days/beamercolorthemergd.sty b/slides/2022-ct-days/beamercolorthemergd.sty new file mode 100644 index 0000000..1bce7c7 --- /dev/null +++ b/slides/2022-ct-days/beamercolorthemergd.sty @@ -0,0 +1,27 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +\definecolor{rgddBackgroundColor}{RGB}{251,251,251} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} +\setbeamercolor*{background canvas}{bg=rgddBackgroundColor} + +\mode<all> diff --git a/slides/2022-ct-days/beamerfontthemergd.sty b/slides/2022-ct-days/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2022-ct-days/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2022-ct-days/beamerinnerthemergd.sty b/slides/2022-ct-days/beamerinnerthemergd.sty new file mode 100644 index 0000000..b96a415 --- /dev/null +++ b/slides/2022-ct-days/beamerinnerthemergd.sty @@ -0,0 +1,49 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + % Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoMul){\includegraphics[width=3.5cm]{img/mullvad}} + (current page.west) -- + (current page.north west); + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north east) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoKau){\includegraphics[width=3cm]{img/kau}} + (current page.east) -- + (current page.north east); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add date + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{date}\today\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2022-ct-days/beamerouterthemergd.sty b/slides/2022-ct-days/beamerouterthemergd.sty new file mode 100644 index 0000000..4087139 --- /dev/null +++ b/slides/2022-ct-days/beamerouterthemergd.sty @@ -0,0 +1,68 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add metadata + \begin{beamercolorbox}[ + wd=0.20\paperwidth, + ht=2ex, + dp=0.5ex, + left, + ]{trailer} + \hfill + \href{https://www.rgdd.se}{www.rgdd.se} + \hfill + \end{beamercolorbox}% + % Add title + \begin{beamercolorbox}[ + wd=0.6\paperwidth, + ht=2ex, + dp=0.5ex, + left, + ]{header} + \hfill + \inserttitle + \hfill + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.20\paperwidth, + ht=2ex, + dp=0.5ex, + left, + ]{trailer} + \hfill + \insertframenumber/\inserttotalframenumber + \hfill + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2022-ct-days/beamerthemergd.sty b/slides/2022-ct-days/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2022-ct-days/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2022-ct-days/handout.pdf b/slides/2022-ct-days/handout.pdf Binary files differnew file mode 100644 index 0000000..955a0a8 --- /dev/null +++ b/slides/2022-ct-days/handout.pdf diff --git a/slides/2022-ct-days/img/benlaurie/2017.png b/slides/2022-ct-days/img/benlaurie/2017.png Binary files differnew file mode 100644 index 0000000..46004d1 --- /dev/null +++ b/slides/2022-ct-days/img/benlaurie/2017.png diff --git a/slides/2022-ct-days/img/benlaurie/2018.png b/slides/2022-ct-days/img/benlaurie/2018.png Binary files differnew file mode 100644 index 0000000..d39670d --- /dev/null +++ b/slides/2022-ct-days/img/benlaurie/2018.png diff --git a/slides/2022-ct-days/img/benlaurie/2019.png b/slides/2022-ct-days/img/benlaurie/2019.png Binary files differnew file mode 100644 index 0000000..da1883e --- /dev/null +++ b/slides/2022-ct-days/img/benlaurie/2019.png diff --git a/slides/2022-ct-days/img/benlaurie/2020.png b/slides/2022-ct-days/img/benlaurie/2020.png Binary files differnew file mode 100644 index 0000000..5e17209 --- /dev/null +++ b/slides/2022-ct-days/img/benlaurie/2020.png diff --git a/slides/2022-ct-days/img/benlaurie/2021.png b/slides/2022-ct-days/img/benlaurie/2021.png Binary files differnew file mode 100644 index 0000000..14c56af --- /dev/null +++ b/slides/2022-ct-days/img/benlaurie/2021.png diff --git a/slides/2022-ct-days/img/ctor/blog.png b/slides/2022-ct-days/img/ctor/blog.png Binary files differnew file mode 100644 index 0000000..1064170 --- /dev/null +++ b/slides/2022-ct-days/img/ctor/blog.png diff --git a/slides/2022-ct-days/img/ctor/full.pdf b/slides/2022-ct-days/img/ctor/full.pdf Binary files differnew file mode 100644 index 0000000..5c6c801 --- /dev/null +++ b/slides/2022-ct-days/img/ctor/full.pdf diff --git a/slides/2022-ct-days/img/ctor/incremental.pdf b/slides/2022-ct-days/img/ctor/incremental.pdf Binary files differnew file mode 100644 index 0000000..7c7160d --- /dev/null +++ b/slides/2022-ct-days/img/ctor/incremental.pdf diff --git a/slides/2022-ct-days/img/ctor/paper.png b/slides/2022-ct-days/img/ctor/paper.png Binary files differnew file mode 100644 index 0000000..6ecd8c8 --- /dev/null +++ b/slides/2022-ct-days/img/ctor/paper.png diff --git a/slides/2022-ct-days/img/ctor/phase-1.pdf b/slides/2022-ct-days/img/ctor/phase-1.pdf Binary files differnew file mode 100644 index 0000000..f37895e --- /dev/null +++ b/slides/2022-ct-days/img/ctor/phase-1.pdf diff --git a/slides/2022-ct-days/img/ctor/phase-2.png b/slides/2022-ct-days/img/ctor/phase-2.png Binary files differnew file mode 100644 index 0000000..0638293 --- /dev/null +++ b/slides/2022-ct-days/img/ctor/phase-2.png diff --git a/slides/2022-ct-days/img/ctor/phase-3.pdf b/slides/2022-ct-days/img/ctor/phase-3.pdf Binary files differnew file mode 100644 index 0000000..9260ce1 --- /dev/null +++ b/slides/2022-ct-days/img/ctor/phase-3.pdf diff --git a/slides/2022-ct-days/img/ctor/phase-4.pdf b/slides/2022-ct-days/img/ctor/phase-4.pdf Binary files differnew file mode 100644 index 0000000..10f1f2d --- /dev/null +++ b/slides/2022-ct-days/img/ctor/phase-4.pdf diff --git a/slides/2022-ct-days/img/ctor/tb-to-auditor.pdf b/slides/2022-ct-days/img/ctor/tb-to-auditor.pdf Binary files differnew file mode 100644 index 0000000..c68ca73 --- /dev/null +++ b/slides/2022-ct-days/img/ctor/tb-to-auditor.pdf diff --git a/slides/2022-ct-days/img/ctor/tb-to-log.pdf b/slides/2022-ct-days/img/ctor/tb-to-log.pdf Binary files differnew file mode 100644 index 0000000..d4b2047 --- /dev/null +++ b/slides/2022-ct-days/img/ctor/tb-to-log.pdf diff --git a/slides/2022-ct-days/img/kau.png b/slides/2022-ct-days/img/kau.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2022-ct-days/img/kau.png diff --git a/slides/2022-ct-days/img/mullvad.png b/slides/2022-ct-days/img/mullvad.png Binary files differnew file mode 100644 index 0000000..4574eb1 --- /dev/null +++ b/slides/2022-ct-days/img/mullvad.png diff --git a/slides/2022-ct-days/img/sigsum/foundation.png b/slides/2022-ct-days/img/sigsum/foundation.png Binary files differnew file mode 100644 index 0000000..695bac0 --- /dev/null +++ b/slides/2022-ct-days/img/sigsum/foundation.png diff --git a/slides/2022-ct-days/img/sigsum/history.png b/slides/2022-ct-days/img/sigsum/history.png Binary files differnew file mode 100644 index 0000000..748451e --- /dev/null +++ b/slides/2022-ct-days/img/sigsum/history.png diff --git a/slides/2022-ct-days/img/sigsum/sshsig b/slides/2022-ct-days/img/sigsum/sshsig new file mode 100644 index 0000000..f8abbb2 --- /dev/null +++ b/slides/2022-ct-days/img/sigsum/sshsig @@ -0,0 +1,7 @@ +#define MAGIC_PREAMBLE "SSHSIG" + +byte[6] MAGIC_PREAMBLE +string namespace +string reserved +string hash_algorithm +string H(message) diff --git a/slides/2022-ct-days/img/sigsum/sshvalues b/slides/2022-ct-days/img/sigsum/sshvalues new file mode 100644 index 0000000..6abfe96 --- /dev/null +++ b/slides/2022-ct-days/img/sigsum/sshvalues @@ -0,0 +1,7 @@ +Values used by Sigsum (only Ed25519) + + +"tree_leaf:v0:<shard_hint>@sigsum.org" +"" +"sha256" +message = H(data) diff --git a/slides/2022-ct-days/img/thanks.pdf b/slides/2022-ct-days/img/thanks.pdf Binary files differnew file mode 100644 index 0000000..9ad4dc8 --- /dev/null +++ b/slides/2022-ct-days/img/thanks.pdf diff --git a/slides/2022-ct-days/img/tor/overview.pdf b/slides/2022-ct-days/img/tor/overview.pdf Binary files differnew file mode 100644 index 0000000..5b80ca5 --- /dev/null +++ b/slides/2022-ct-days/img/tor/overview.pdf diff --git a/slides/2022-ct-days/img/tor/tb.png b/slides/2022-ct-days/img/tor/tb.png Binary files differnew file mode 100644 index 0000000..3fd6852 --- /dev/null +++ b/slides/2022-ct-days/img/tor/tb.png diff --git a/slides/2022-ct-days/main.tex b/slides/2022-ct-days/main.tex new file mode 100644 index 0000000..33b7497 --- /dev/null +++ b/slides/2022-ct-days/main.tex @@ -0,0 +1,20 @@ +\pdfminorversion=4 +%\documentclass[handout,aspectratio=169]{beamer} +\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{% + Certificate Transparency in Tor and Sigsum Logging +} +\author{% + Rasmus Dahlberg +} + +\begin{document} + \input{src/titlepage} + \input{src/outline} + \input{src/ctor} + \input{src/sigsum} +\end{document} diff --git a/slides/2022-ct-days/slides.pdf b/slides/2022-ct-days/slides.pdf Binary files differnew file mode 100644 index 0000000..dbdd266 --- /dev/null +++ b/slides/2022-ct-days/slides.pdf diff --git a/slides/2022-ct-days/src/ctor.tex b/slides/2022-ct-days/src/ctor.tex new file mode 100644 index 0000000..f7ed6c3 --- /dev/null +++ b/slides/2022-ct-days/src/ctor.tex @@ -0,0 +1,222 @@ +\begin{frame} + \mktitle{Tor crash course} + \centering\includegraphics[width=.8\textwidth]{img/tor/overview} + \footnotetext[1]{\tiny{Credit: figure created by Tobias Pulls}} + \footnotetext[2]{\tiny{Design: \burl{https://murdoch.is/papers/tor14design.pdf}}} +\end{frame} + +\begin{frame} + \mktitle{Tor Browser} + \begin{columns} + \begin{column}{0.6\textwidth} + \begin{itemize} + \item Firefox derivative + \item Route all traffic through Tor + \item Prevent user activity on one site from + being linked to activity on another + \item \alert<2->{Do not write any state to disk} + \item ... + \end{itemize} + \end{column} + \begin{column}{0.4\textwidth} + \includegraphics[width=.67\columnwidth]{img/tor/tb} + \end{column} + \end{columns} + \footnotetext[1]{\tiny{Credit: Tom Ritter, see \burl{https://ritter.vg/p/tor-v1.6.pdf}}} + \footnotetext[2]{\tiny{Design: \burl{https://2019.www.torproject.org/projects/torbrowser/design/}}} +\end{frame} + +\begin{frame} + \centering + \includegraphics[width=.75\textwidth]{img/ctor/paper} + \vfill + \includegraphics[width=.75\textwidth]{img/ctor/blog} +\end{frame} + +\begin{frame} + \mktitle{Problem statement} + \begin{columns} + \begin{column}{0.6\textwidth} + \begin{itemize} + \item Tor Browser does not enforce CT + \item Guard against prominent threats + \begin{itemize} + \item DigiNotar style attacks + \item Interception to deanonymize + \end{itemize} + \item Go beyond ``just CT compliance'' + \end{itemize} + \end{column} + \begin{column}{0.4\textwidth} + \centering + \includegraphics[width=.67\columnwidth]{img/tor/tb} + \end{column} + \end{columns} + \vfill\pause + \alert{Attacker in Tor's threat model + controls a CA and two CT logs} +\end{frame} + +\begin{frame} + \mktitle{Incremental deployment} + \begin{enumerate} + \item Catch up with CT compliant browsers + \floatright{\emph{pairs of logs} are trusted blindly} + \item Steps towards decentralized verification + \floatright{\emph{some log} is trusted blindly} + \item Fully decentralized verification + \floatright{\emph{no log} is trusted blindly} + \end{enumerate} +\end{frame} + +\begin{frame} + \mktitle{Full design} + \centering\includegraphics[height=.5\textheight]{img/ctor/full} + \vfill + \pause + \alert{Security? Difficult to interfere without detection in any phase} +\end{frame} + +\begin{frame} + \mktitle{Why not just...?} + \begin{columns} + \begin{column}{.5\textwidth}\centering + \includegraphics[width=.9\columnwidth]{img/ctor/tb-to-log}\\\vspace{.25cm} + Fetch an inclusion proof + \end{column} + \begin{column}{.5\textwidth}\centering + \includegraphics[width=.77\columnwidth]{img/ctor/tb-to-auditor}\\\vspace{.25cm} + Rely on a centralized party + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Phase 1: Submission} + \centering\includegraphics[width=.75\textwidth]{img/ctor/phase-1} + \vfill + \begin{columns} + \begin{column}{.2\textwidth}\centering + \end{column} + \begin{column}{.3\textwidth}\centering + \alert{1.} Probabilistic submit + \end{column} + \begin{column}{.3\textwidth}\centering + \alert{2.} Random CTR + \end{column} + \begin{column}{.2\textwidth}\centering + \end{column} + \end{columns} + \pause + + \vfill + \alert{Best attack: quickly take control over Tor Browser} +\end{frame} + +\begin{frame} + \mktitle{Phase 2: Buffering} + \begin{columns} + \begin{column}{.5\textwidth} + \begin{enumerate} + \item Buffer until logging is required + \item Add a random delay to leak less + \item Cache audited SFOs to leak less + \end{enumerate} + \end{column} + \begin{column}{.5\textwidth} + \centering + \includegraphics[width=.45\columnwidth]{img/ctor/phase-2} + \end{column} + \end{columns} + \pause + + \vfill\centering + \alert{Best attack: network-wide flush} +\end{frame} + +\begin{frame} + \mktitle{Phase 3: Auditing} + \begin{columns} + \begin{column}{.4\textwidth} + \begin{enumerate} + \item Fetch inclusion proof + \item STH from Tor's consensus + \item Collaborate with a watchdog + \begin{itemize} + \item CTR identification + \item ``Tagging'' + \end{itemize} + \end{enumerate} + \end{column} + \begin{column}{.6\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/ctor/phase-3} + \end{column} + \end{columns} + \pause + + \vfill\centering + \alert{Best attack: quickly take control over CTR} +\end{frame} + +\begin{frame} + \mktitle{Phase 4: Reporting} + \centering\includegraphics[width=.4\textwidth]{img/ctor/phase-4} + \vfill + \alert{1.} Report SFO on timeout + \pause + + \vfill + \alert{Best attack: n/a} +\end{frame} + +\begin{frame} + \vfill + \mktitle{This is quite the leap from ``just CT compliance''} +\end{frame} + +\begin{frame} + \mktitle{Incremental design} + \centering\includegraphics[height=.33\textheight]{img/ctor/incremental} + \vfill + \pause + + \alert{Use the log ecosystem against the attacker}\\ +\end{frame} + +\begin{frame} + \vfill + \begin{columns} + \begin{column}{.41\textwidth} + \mktitle{Conclusion} + \begin{itemize} + \item Tor's setting is quite different + \item Delegated audiding is key here + \item Roadmap from start to finnish + \end{itemize} + \end{column} + \begin{column}{.25\textwidth} + \mktitle{Resources} + \begin{itemize} + \item PETS paper\footnotemark[1] + \item PETS talk\footnotemark[2] + \item Tor blog post\footnotemark[3] + \end{itemize} + \end{column} + \begin{column}{.35\textwidth} + \mktitle{Next steps} + \begin{itemize} + \item Torspec proposal(s) + \item Browser implementation + \item Relay implementation + \end{itemize} + \end{column} + \end{columns} + \footnotetext[1]{\burl{https://petsymposium.org/2021/files/papers/issue2/popets-2021-0024.pdf}} + \footnotetext[2]{\burl{https://www.youtube.com/watch?v=f7yDJOd6g3U}} + \footnotetext[3]{\burl{https://blog.torproject.org/tor-certificate-transparency/}} +\end{frame} + +\begin{frame} + \vfill + \mktitle{Halftime} +\end{frame} diff --git a/slides/2022-ct-days/src/outline.tex b/slides/2022-ct-days/src/outline.tex new file mode 100644 index 0000000..f04f431 --- /dev/null +++ b/slides/2022-ct-days/src/outline.tex @@ -0,0 +1,4 @@ +\begin{frame} + \vfill + \mktitle{CT in Tor \alert{$\cdots$} Halftime \alert{$\cdots$} Sigsum Logging} +\end{frame} diff --git a/slides/2022-ct-days/src/preamble.tex b/slides/2022-ct-days/src/preamble.tex new file mode 100644 index 0000000..86ae650 --- /dev/null +++ b/slides/2022-ct-days/src/preamble.tex @@ -0,0 +1,114 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[utf8]{inputenc} + +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{rotate} +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{wasysym} +\usepackage{graphicx} +\usepackage{color} +\usepackage{drawstack} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage{floatrow}% this one causes error on arch for some reason +\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, % Color links instead of boxes + urlcolor = darkBlue, % Color external hyper links + linkcolor = darkBlue, % Color internal links + citecolor = darkBlue, % Color citations +} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +\lstdefinestyle{CStyle}{ + backgroundcolor=\color{lightGray!25}, + commentstyle=\color{darkGreen}, + keywordstyle=\color{darkBlue}, + numberstyle=\tiny\color{darkRed}, + stringstyle=\color{darkPurple}, + %basicstyle=\footnotesize, + basicstyle=\scriptsize, + breakatwhitespace=false, + breaklines=false, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + language=C, + morekeywords={size_t,def,in,zip,True,False,ord,u8,u64}, +} + +\setbeamertemplate{itemize item}[circle] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\floatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} + +\def\rding{\rotatebox[origin=c]{-91}{\ding{224}}} +\def\lding{\rotatebox[origin=c]{91}{\ding{224}}} + +% TODO: fix this properly... +\newcommand{\mktitle}[1]{\centering\textbf{\large#1}\vfill\normalsize} diff --git a/slides/2022-ct-days/src/sigsum.tex b/slides/2022-ct-days/src/sigsum.tex new file mode 100644 index 0000000..02b5bd2 --- /dev/null +++ b/slides/2022-ct-days/src/sigsum.tex @@ -0,0 +1,675 @@ +\begin{frame} + \mktitle{Tweets you can probably relate to} + \pause + \begin{columns} + \begin{column}{0.5\textwidth} + \includegraphics[width=\columnwidth]{img/benlaurie/2017}\\\pause + \includegraphics[width=\columnwidth]{img/benlaurie/2018}\\\pause + \includegraphics[width=\columnwidth]{img/benlaurie/2019}\\\pause + \includegraphics[width=\columnwidth]{img/benlaurie/2020}\\\pause + \end{column} + \begin{column}{0.5\textwidth} + \centering + \alert{2022?}\\ + More initatives than can\\ + be counted on two hands\\ + \pause + + \vspace{.25cm} + \burl{https://binary.transparency.dev}\\ + ... + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \vfill + \mktitle{Common denominator?} + Certificates\\ + Executable binaries\\ + Source code\\ + TPM quotes\\ + Onion address rulesets\\ + Official documents\\ + ...\\ +\end{frame} + +\begin{frame} + \vfill + \mktitle{Where is the low-hanging fruit?} +\end{frame} + +\begin{frame} + \begin{columns} + \begin{column}{.4\textwidth} + \mktitle{Meet the Sigsum project} + \begin{itemize} + \item FOSS + \item Signed checksums + \item Enforcement of logging + \item Minimal building block + \item ``Transparent key-usage'' + \end{itemize} + \end{column} + \begin{column}{.5\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/sigsum/history} + \burl{https://git.sigsum.org/sigsum/tree/doc/history.md} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Use-case - Signature Transparency} + ``Oh, a new signature was created. That's weird. I'm at the gym.'' +\end{frame} + +\begin{frame} + \mktitle{Use-case - Binary Transparency} + + ``Oh, that's the key binaries are signed with''\\ + ``By policy binaries are located at releases.example.com/\$CHECKSUM'' + +\end{frame} + +\begin{frame} + \vfill + \mktitle{s/binary/something else/} +\end{frame} + +\begin{frame} + \mktitle{Many answers and trade-offs} + \vfill + \begin{columns} + \begin{column}{.3\textwidth} + \begin{itemize} + \item Purpose of logging + \item What is (not) logged + \item Auditing, SCTs + \end{itemize} + \end{column} + \begin{column}{.25\textwidth} + \begin{itemize} + \item Gossip + \item Anti-poison + \item Anti-spam + \end{itemize} + \end{column} + \begin{column}{.25\textwidth} + \begin{itemize} + \item Sharding + \item Privacy + \item Simple API + \end{itemize} + \end{column} + \end{columns} + \vfill + \alert{Accept latency, no rich metadata, no complicated protocols and parsers} +\end{frame} + +\begin{frame} + \mktitle{System overview} + \begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + system/.style = { + draw = gray, + thick, + rectangle, + fill = white, + minimum width = 1cm, + font = \fontsize{8}{8}\selectfont, + text = black, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + rounded corners, + }, + ] + %%% + % Signing + %%% + \node[entity, fill=darkBlue] (Signer) at (0,0) { Signer }; + \path[path, dashed] ($ (Signer) + (0,1) $) -- + node[relation, right] { + \begin{tabular}{c} + priv\\ + data\\ + \end{tabular} + } + (Signer); + \pause + + %%% + % Distribution + %%% + \node[entity, fill=darkPurple] (End-user) at (2.5,-3) {End-user}; + \path[path, dashed] ($ (End-user) + (0,-1) $) -- + node[relation, right] { + \begin{tabular}{c} + policy\\ + pub + \end{tabular} + } + (End-user); + \path[path] (Signer) -| node[relation,above]{data, signature} (End-user); + \node[system, above=1cm of End-user] (Distribution) {Distribution}; + \pause + + %%% + % Introduce the log + %%% + \node[entity, fill=darkGreen, left=3.25cm of Distribution] (Log) {Log}; + \pause + + %%% + % Setup DNS + %%% + \node[system, below=1cm of Signer] (DNS) {DNS}; + \path[path, dashed] (Signer) -- node[relation,right]{\hash(pub)} (DNS); + \pause + + + %%% + % Add leaf + %%% + \path[path] (Signer) -| node[relation,above]{add leaf} (Log); + \path[path] (DNS) -- node[relation,above]{\hash(pub)} (Log); + \pause + + %%% + % Witnessing + %%% + \node[entity, fill=darkRed, below=1cm of Log] (Witness) {Witness}; + \path[path] (Witness) -- node[relation,left]{cosign} (Log); + \pause + + %%% + % Collect proof + %%% + \path[path] (Log) -- node[relation,above,sloped]{proof} (Signer); + \node[relation,above=0.25cm of Distribution.40]{proof}; + \pause + + %%% + % Setup monitor + %%% + \node[entity, fill=darkOrange, below=.75cm of DNS] (Monitor) {Monitor}; + \path[path, dashed] ($ (Monitor) + (0,-1) $) -- + node[relation, right] { + \begin{tabular}{c} + policy\\ + pub + \end{tabular} + } + (Monitor); + \pause + + %%% + % Inspect the log + %%% + \path[path] (Log) -- node[relation,below,sloped,pos=.40]{leaves, proof} (Monitor); + \pause + + %%% + % Also get the data + %%% + \path[path] (Distribution) -- node[relation,above,sloped]{data} (Monitor); + \end{tikzpicture} +\end{frame} + +\begin{frame} + \vfill + \mktitle{A step-by-step breakdown} +\end{frame} + +\begin{frame} + \mktitle{Signing} + \centering + + \begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + system/.style = { + draw = gray, + thick, + rectangle, + fill = white, + minimum width = 1cm, + font = \fontsize{8}{8}\selectfont, + text = black, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + rounded corners, + }, + ] + %%% + % Signing + %%% + \node[entity, fill=darkBlue] (Signer) at (0,0) { Signer }; + \path[path, dashed] ($ (Signer) + (0,1) $) -- + node[relation, right] { + \begin{tabular}{c} + priv\\ + data\\ + \end{tabular} + } + (Signer); + \end{tikzpicture} + \vfill + \pause + + \begin{columns} + \begin{column}{.5\textwidth}\centering + \lstinputlisting[style=CStyle]{img/sigsum/sshsig} + \burl{https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.sshsig\#L81} + \end{column} + \pause + \begin{column}{.5\textwidth}\centering + \lstinputlisting[style=CStyle]{img/sigsum/sshvalues} + \burl{https://git.sigsum.org/sigsum/tree/doc/proposals/2021-11-ssh-signature-format.md} + \end{column} + \end{columns} + \vfill + + \pause + \begin{columns} + \begin{column}{.33\textwidth}\centering + \texttt{ssh-keygen -Y} + \end{column} + \begin{column}{.33\textwidth}\centering + \texttt{signify} + \end{column} + \begin{column}{.33\textwidth}\centering + \texttt{minisign} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \vfill + \mktitle{Why not support more signing formats and tools?} +\end{frame} + +\begin{frame} + \mktitle{Submission} + \begin{columns} + \begin{column}{0.4\textwidth} + \alert{HTTP POST ASCII} + \begin{itemize} + \item Shard hint + \begin{itemize} + \item $\in [\mathsf{shard\_start}, \mathsf{now}()]$ + \end{itemize} + \item Message + \item Signature + \item Public key + \item Domain hint + \begin{itemize} + \item \texttt{\_sigsum\_v0.*} $\rightarrow\hash(\mathsf{pub})$ + \end{itemize} + \end{itemize} + \end{column} + \uncover<2>{% + \begin{column}{.27\textwidth} + \alert{Stored leaf (136 bytes)} + \begin{itemize} + \item Shard hint + \item Checksum + \item Signature + \item Key hash + \end{itemize} + \vspace{1.4cm} + \end{column} + } + \begin{column}{.33\textwidth}\centering + \vspace{-3cm} + \hspace{-1cm} + \begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + system/.style = { + draw = gray, + thick, + rectangle, + fill = white, + minimum width = 1cm, + font = \fontsize{8}{8}\selectfont, + text = black, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + rounded corners, + }, + ] + %%% + % Signing + %%% + \node[entity, fill=darkBlue] (Signer) at (0,0) { Signer }; + \path[path, dashed] ($ (Signer) + (0,1) $) -- + node[relation, right] { + \begin{tabular}{c} + priv\\ + data\\ + \end{tabular} + } + (Signer); + + %%% + % Setup DNS + %%% + \node[system, below=1cm of Signer] (DNS) {DNS}; + \path[path, dashed] (Signer) -- node[relation,right]{\hash(pub)} (DNS); + + %%% + % Introduce the log + %%% + \node[entity, fill=darkGreen, left=1cm of DNS] (Log) {Log}; + + %%% + % Add leaf + %%% + \path[path] (Signer) -| node[relation,above]{add leaf} (Log); + \path[path] (DNS) -- node[relation,above]{\hash(pub)} (Log); + \end{tikzpicture} + \end{column} + \end{columns} +\end{frame} + +\begin{frame} + \mktitle{Bundling \uncover<2->{and Distribution}} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item Signer must \textbf{wait} for witnessing\footnotemark[1] + \begin{itemize} + \item Append-only + \item Freshness + \item Some simplifications + \end{itemize} + \item Proof of logging + \begin{itemize} + \item Cosigned tree head + \item Inclusion proof + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{.5\textwidth}\centering + \begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + system/.style = { + draw = gray, + thick, + rectangle, + fill = white, + minimum width = 1cm, + font = \fontsize{8}{8}\selectfont, + text = black, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + rounded corners, + }, + ] + %%% + % Setup entities + %%% + \node[entity, fill=darkBlue] (Signer) at (0,0) { Signer }; + \node[draw=none, below=1cm of Signer] (DNS) {}; + \node[entity, fill=darkGreen, left=1cm of DNS] (Log) {Log}; + + %%% + % Witnessing + %%% + \node[entity, fill=darkRed, below=1cm of Log] (Witness) {Witness}; + \path[path] (Witness) -- node[relation,left]{cosign} (Log); + + %%% + % Get proof + %%% + \path[path] (Log) -- node[relation,above,sloped]{proof} (Signer); + + \uncover<2->{ + %%% + % Distribution + %%% + \node[entity, fill=darkPurple] (End-user) at (2.5,-3) {End-user}; + \path[path] (Signer) -| node[relation,above]{data, signature} (End-user); + \node[system, above=1cm of End-user] (Distribution) {Distribution}; + \node[relation,above=0.25cm of Distribution.40]{proof}; + } + \end{tikzpicture} + \end{column} + \end{columns} + \footnotetext[1]{\tiny{Originally proposed by Syta et al.: \burl{https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7546521}}} + + \vfill +\end{frame} + +\begin{frame} + \vfill + \centering + \begin{columns} + \begin{column}{.33\textwidth} + Example policy + \begin{itemize} + \item Known logs + \item Known witnesses + \item M-of-N (co)signatures + \end{itemize} + \end{column} + \begin{column}{.67\textwidth} + \mktitle{Verification} + \vspace{.5cm} + \begin{tikzpicture}[ + -latex, + entity/.style = { + draw = gray!30, + thick, + rounded rectangle, + fill = white, + minimum width = 2cm, + font = \fontsize{8}{8}\selectfont, + text = white, + }, + system/.style = { + draw = gray, + thick, + rectangle, + fill = white, + minimum width = 1cm, + font = \fontsize{8}{8}\selectfont, + text = black, + }, + relation/.style = { + draw = none, + font = \fontsize{6}{6}\selectfont, + }, + path/.style = { + draw, + thick, + -latex, + rounded corners, + }, + ] + %%% + % Distribution + %%% + \node[entity, fill=darkPurple] (End-user) at (2.5,-3) {End-user}; + \path[path, dashed] ($ (End-user) + (0,-1) $) -- + node[relation, right] { + \begin{tabular}{c} + policy\\ + pub + \end{tabular} + } + (End-user); + \path[path] (Distribution) -- node[relation,right]{ + \begin{tabular}{c} + data\\ + signature\\ + proof\\ + \end{tabular}} + (End-user); + \node[system, above=1cm of End-user] (Distribution) {Distribution}; + + %%% + % Introduce the log + %%% + \node[entity, fill=darkGreen, left=3.25cm of Distribution] (Log) {Log}; + + %%% + % Setup DNS + %%% + \node[draw=none] (DNS) at ($ (Log) !.5! (Distribution) $) {}; + + %%% + % Witnessing + %%% + \node[entity, fill=darkRed, below=1cm of Log] (Witness) {Witness}; + \path[path] (Witness) -- node[relation,left]{cosign} (Log); + + %%% + % Setup monitor + %%% + \node[entity, fill=darkOrange, below=.75cm of DNS] (Monitor) {Monitor}; + \path[path, dashed] ($ (Monitor) + (0,-1) $) -- + node[relation, right] { + \begin{tabular}{c} + policy\\ + pub + \end{tabular} + } + (Monitor); + + %%% + % Inspect the log + %%% + \path[path] (Log) -- node[relation,above,sloped,pos=.60]{leaves, proof} (Monitor); + + %%% + % Also get the data + %%% + \path[path] (Distribution) -- node[relation,above,sloped]{data} (Monitor); + \end{tikzpicture} + \end{column} + \end{columns} + + \vfill + \alert{No reactive gossip/audit, offline verification by end-users (!)} +\end{frame} + +\begin{frame} + \vfill + \begin{columns} + \begin{column}{.5\textwidth} + \mktitle{Current status} + \begin{itemize} + \item Solid foundation, hopefully(!) + \item V0 design\footnotemark[1] and API\footnotemark[2] is pretty stable + \item Public prototypes, log and witness + \item Tooling? Kind of ``pipe into \texttt{curl}'' + \item \url{https://git.sigsum.org} + \end{itemize} + \end{column} + \begin{column}{.5\textwidth} + \centering + \includegraphics[width=\columnwidth]{img/sigsum/foundation} + \burl{https://bygg.se/valj-ratt-husgrund-till-din-villa/} + \end{column} + \end{columns} + \footnotetext[1]{\burl{https://git.sigsum.org/sigsum/tree/doc/design.md}} + \footnotetext[2]{\burl{https://git.sigsum.org/sigsum/tree/doc/api.md}} + + \pause + \vfill + \centering + \alert{Next steps: more feedback, tooling, mature code, SLA for a v0 log, eventually v1 spec} +\end{frame} + +\begin{frame} + \vfill + \begin{columns} + \begin{column}{.1\textwidth} + \end{column} + \begin{column}{.4\textwidth} + \mktitle{Take away} + \begin{itemize} + \item Minimal building block + \item Log a signed checksum + \item Offline end-user verification + \item Many potential use-cases + \item Reach out to get involved\footnotemark[1] + \end{itemize} + \end{column} + \begin{column}{.4\textwidth} + \includegraphics[width=\columnwidth]{img/thanks} + \end{column} + \begin{column}{.1\textwidth} + \end{column} + \end{columns} + \footnotetext[1]{\tiny{irc, matrix, email list, etc., are linked from \burl{https://www.sigsum.org}}} +\end{frame} + +\begin{frame} + \vfill + \mktitle{Q/A} +\end{frame} diff --git a/slides/2022-ct-days/src/titlepage.tex b/slides/2022-ct-days/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2022-ct-days/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} diff --git a/slides/2022-kll/.gitignore b/slides/2022-kll/.gitignore new file mode 100644 index 0000000..d1e39cc --- /dev/null +++ b/slides/2022-kll/.gitignore @@ -0,0 +1,9 @@ +main.aux +main.fdb_latexmk +main.fls +main.log +main.nav +main.out +main.pdf +main.snm +main.toc diff --git a/slides/2022-kll/README b/slides/2022-kll/README new file mode 100644 index 0000000..ddf4d57 --- /dev/null +++ b/slides/2022-kll/README @@ -0,0 +1,4 @@ +My presentation of how I would have done a 2h lecture on PKI. Part of a +teaching course at Kau. + +Edit 2024-10-15: seems like there's some nit compiling now. diff --git a/slides/2022-kll/beamercolorthemergd.sty b/slides/2022-kll/beamercolorthemergd.sty new file mode 100644 index 0000000..e5d40d8 --- /dev/null +++ b/slides/2022-kll/beamercolorthemergd.sty @@ -0,0 +1,28 @@ +\mode<presentation> + +%%% +% Color definitions +%%% +\RequirePackage{xcolor} +\definecolor{rgdGreen}{RGB}{33,114,106} +\definecolor{rgdYellow}{RGB}{255,210,4} +\definecolor{rgdOrange}{RGB}{232,114,12} +\colorlet{rgdGray}{gray!33} +\colorlet{rgdBlack}{black} + +\definecolor{sigsumWhite}{HTML}{FAF9F5} + +%%% +% Beamer colors +%%% +\setbeamercolor*{titlepage}{fg=rgdBlack} +\setbeamercolor*{author}{fg=rgdGreen} +\setbeamercolor*{date}{fg=black} +\setbeamercolor*{header}{bg=rgdYellow,fg=black} +\setbeamercolor*{trailer}{bg=rgdGray,fg=black} +\setbeamercolor*{item}{fg=rgdGreen} +\setbeamercolor*{alerted text}{fg=rgdGreen} + +\setbeamercolor*{background canvas}{bg=sigsumWhite} + +\mode<all> diff --git a/slides/2022-kll/beamerfontthemergd.sty b/slides/2022-kll/beamerfontthemergd.sty new file mode 100644 index 0000000..a6d212c --- /dev/null +++ b/slides/2022-kll/beamerfontthemergd.sty @@ -0,0 +1,9 @@ +\mode<presentation> + +\setbeamerfont{title}{size=\large,shape=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,shape=\bfseries} +\setbeamerfont{frametitle}{size=\large,shape=\bfseries} +\setbeamerfont{institute}{size=\small} +\setbeamerfont{date}{size=\small} + +\mode<all> diff --git a/slides/2022-kll/beamerinnerthemergd.sty b/slides/2022-kll/beamerinnerthemergd.sty new file mode 100644 index 0000000..1c50b47 --- /dev/null +++ b/slides/2022-kll/beamerinnerthemergd.sty @@ -0,0 +1,43 @@ +\mode<presentation> + +%%% +% Title page +%%% +\defbeamertemplate*{title page}{rgd}[1][]{ + \begin{tikzpicture}[remember picture, overlay] + \usebeamercolor{titlepage} + Add top-left triangle with university logo + \filldraw[draw=rgdGray,fill=rgdGray] + (current page.north west) -- + (current page.north) -- + node[draw=none,pos=0.5](LogoMul){\includegraphics[width=3.5cm]{img/kau}} + (current page.west) -- + (current page.north west); + % Add title + \node[ + text=fg, + text width=0.75\paperwidth, + ] (Title) at ([shift={(0,-0.5cm)}]current page){% + \centering\usebeamerfont{title}\inserttitle\\% + }; + % Add date + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Title, + ] (Subtitle) {% + \centering\usebeamerfont{date}\insertdate\\% + }; + % Add authors + \usebeamercolor{author} + \node[ + text=fg, + text width=0.75\paperwidth, + below=0pt of Subtitle, + ] (Author) {% + \centering\usebeamerfont{author}\insertauthor\\% + }; + \end{tikzpicture} +} + +\mode<all> diff --git a/slides/2022-kll/beamerouterthemergd.sty b/slides/2022-kll/beamerouterthemergd.sty new file mode 100644 index 0000000..2b4ef3f --- /dev/null +++ b/slides/2022-kll/beamerouterthemergd.sty @@ -0,0 +1,65 @@ +\mode<presentation> + +%%% +% Frame header +%%% +\defbeamertemplate*{frametitle}{corporate}[1][]{% + \nointerlineskip + % Add frame title + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=3ex, + dp=1.5ex, + left, + leftskip=2ex + ]{header} + \insertframetitle + \end{beamercolorbox} + % Add line after header + \nointerlineskip + \begin{beamercolorbox}[ + wd=\paperwidth, + ht=0.25ex + ]{trailer} + \end{beamercolorbox}% +} + +%%% +% Frame trailer +%%% +\defbeamertemplate*{footline}{corporate}{% + \hbox{% + % Add metadata + \begin{beamercolorbox}[ + wd=0.50\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{trailer} + \hfill\url{www.rgdd.se}\hfill + \end{beamercolorbox}% + % Add title + \begin{beamercolorbox}[ + wd=0.45\paperwidth, + ht=2ex, + dp=0.5ex, + left, + leftskip=2ex + ]{header} + \hfill\insertsubtitle\hfill + \end{beamercolorbox}% + % Add page counter + \begin{beamercolorbox}[ + wd=0.05\paperwidth, + ht=2ex, + dp=0.5ex, + right, + rightskip=1ex + ]{header} + \insertframenumber/\inserttotalframenumber + \end{beamercolorbox}% + } +} + +\mode<all> diff --git a/slides/2022-kll/beamerthemergd.sty b/slides/2022-kll/beamerthemergd.sty new file mode 100644 index 0000000..022ef2c --- /dev/null +++ b/slides/2022-kll/beamerthemergd.sty @@ -0,0 +1,23 @@ +\mode<presentation> + +%%% +% Load beamer settings +%%% +\usecolortheme{rgd} +\usefonttheme{rgd} +\useinnertheme{rgd} +\useoutertheme{rgd} + +%%% +% Disable navigation tools on slides +%%% +\setbeamertemplate{navigation symbols}{} + +%%% +% Object styles +%%% +\setbeamertemplate{itemize item}[square] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{sections/subsections in toc}[square] + +\mode<all> diff --git a/slides/2022-kll/img/cas.pdf b/slides/2022-kll/img/cas.pdf Binary files differnew file mode 100644 index 0000000..81c98d8 --- /dev/null +++ b/slides/2022-kll/img/cas.pdf diff --git a/slides/2022-kll/img/cas.svg b/slides/2022-kll/img/cas.svg new file mode 100644 index 0000000..ae6cf6d --- /dev/null +++ b/slides/2022-kll/img/cas.svg @@ -0,0 +1,450 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="205.88545mm" + height="102.1619mm" + viewBox="0 0 205.88545 102.1619" + version="1.1" + id="svg5" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="cas.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="0.91841985" + inkscape:cx="424.64239" + inkscape:cy="143.1807" + inkscape:window-width="925" + inkscape:window-height="1000" + inkscape:window-x="965" + inkscape:window-y="50" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <path + id="A" + d="M 44.5,20 H 24 v 8.5 H 35.8 C 34.7,33.9 30.1,37 24,37 16.8,37 11,31.2 11,24 c 0,-7.2 5.8,-13 13,-13 3.1,0 5.9,1.1 8.1,2.9 L 38.5,7.5 C 34.6,4.1 29.6,2 24,2 11.8,2 2,11.8 2,24 c 0,12.2 9.8,22 22,22 11,0 21,-8 21,-22 0,-1.3 -0.2,-2.7 -0.5,-4 z" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(12.654772,-45.037459)"> + <g + id="亚洲诚信logo" + style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1" + transform="matrix(0.3911101,0,0,0.3911101,-12.557867,85.010276)"> + <g + id="XMLID_191_" + fill-rule="nonzero"> + <path + d="m 37.908,37.98 c 0.432,-0.468 0.756,-0.864 0.936,-1.62 1.008,-5.112 1.548,-10.584 1.548,-15.984 0,-5.436 -0.54,-10.728 -1.548,-15.84 C 38.7,3.816 38.34,3.24 37.872,2.736 37.404,2.34 36.972,2.016 36.252,1.872 31.104,0.864 25.812,0.324 20.34,0.324 14.904,0.324 9.576,0.864 4.428,1.872 3.708,2.016 3.204,2.448 2.736,2.844 2.34,3.312 1.944,3.78 1.8,4.536 0.792,9.684 0.252,14.976 0.252,20.412 c 0,5.436 0.54,10.764 1.548,15.876 0.144,0.72 0.468,1.224 0.936,1.764 0.432,0.396 0.936,0.72 1.692,0.864 5.148,1.008 10.44,1.548 15.876,1.548 5.436,0 10.764,-0.54 15.912,-1.548 0.756,-0.18 1.26,-0.468 1.692,-0.936 z" + id="XMLID_201_" + fill="#c6272a" /> + <g + id="XMLID_192_" + transform="translate(5.4,5.4)" + fill="#ffffff"> + <path + d="m 9.684,15.552 v 0 h 1.08 15.228 c 0.396,0 0.684,-0.36 0.648,-0.72 -0.036,-0.54 -0.108,-1.368 -0.108,-1.944 0,-0.36 -0.324,-0.648 -0.684,-0.648 H 17.856 9.684 c -0.396,0 -0.576,0.36 -0.576,0.54 0,0.252 -0.072,2.052 -0.072,2.052 0,0.432 0.396,0.72 0.648,0.72 z" + id="XMLID_200_" /> + <path + d="M 29.7,28.584 C 28.728,25.956 27.612,22.536 27,17.892 26.964,17.604 26.676,17.28 26.316,17.28 L 9.684,17.244 c -0.54,0 -0.864,0.468 -0.864,0.756 -0.108,1.836 -0.828,6.48 -1.224,8.316 -0.144,0.576 0.324,1.08 0.864,1.08 h 12.924 c 0.576,0 0.864,-0.576 0.792,-0.936 l -0.252,-1.512 c -0.108,-0.54 -0.54,-0.936 -1.116,-0.936 H 13.14 c -0.504,0 -0.792,-0.468 -0.756,-0.792 0,0 0.252,-2.232 0.252,-2.304 0.036,-0.288 0.288,-0.648 0.72,-0.648 h 8.64 c 0.36,0 0.792,0.252 0.828,0.756 0.324,2.664 0.9,5.868 1.512,7.848 0.144,0.54 0.576,0.684 0.9,0.684 h 3.672 c 0.576,0.072 0.972,-0.504 0.792,-0.972 z" + id="XMLID_199_" /> + <path + d="M 25.92,7.272 H 9.504 c -0.252,0 -0.432,0.216 -0.432,0.432 0.036,0.756 0.072,2.304 0.072,2.448 0,0.216 0.18,0.396 0.432,0.396 h 11.808 4.644 c 0.288,0 0.504,-0.252 0.504,-0.504 0,-0.54 0.036,-1.512 0.072,-2.16 C 26.568,7.524 26.172,7.272 25.92,7.272 Z" + id="XMLID_198_" /> + <path + d="M 7.524,8.964 C 7.524,8.136 7.452,7.272 7.416,6.444 7.38,6.048 7.128,2.484 6.876,1.08 6.804,0.684 6.408,0.36 6.084,0.36 H 1.368 v 0 C 0.9,0.36 0.828,0.432 0.648,0.612 0.504,0.756 0.504,1.044 0.576,1.512 L 0.9,3.6 c 0.072,0.432 0.396,0.684 0.756,0.684 h 0.72 c 0.504,0 0.756,0.396 0.756,0.72 0,1.008 0,2.088 -0.036,3.204 0,0.36 -0.036,0.756 -0.036,1.116 C 3.024,10.08 2.844,12.528 2.844,12.96 2.7,15.372 2.268,18.072 2.196,18.828 1.692,22.5 0.972,25.992 0.252,28.764 c -0.108,0.54 0.36,0.864 0.684,0.864 H 4.32 c 0.144,0 0.828,-0.108 1.008,-0.828 1.008,-3.744 1.656,-7.704 2.016,-11.628 0,0 0.036,-0.576 0.072,-0.828 C 7.488,15.588 7.524,14.868 7.56,14.112 7.596,13.608 7.596,13.14 7.632,12.636 7.668,11.88 7.668,11.088 7.668,10.332 7.524,9.864 7.524,9.432 7.524,8.964 Z" + id="XMLID_197_" /> + <path + d="m 8.928,5.112 c 0,0.18 0.216,0.432 0.504,0.432 h 16.344 c 0.648,0 1.008,-0.54 1.008,-0.936 C 26.856,3.528 26.928,2.088 27,1.116 27.036,0.648 26.64,0.324 26.244,0.324 v 0 h -3.636 c -0.324,0 -0.54,0.288 -0.54,0.468 L 21.96,1.836 c 0,0.216 -0.18,0.396 -0.432,0.396 H 9.36 C 8.928,2.232 8.64,2.628 8.676,2.988 8.784,3.636 8.892,4.5 8.928,5.112 Z" + id="XMLID_194_" /> + </g> + </g> + <g + id="XMLID_115_" + transform="translate(47.88,2.16)" + fill="#000000" + fill-rule="nonzero"> + <path + d="m 10.404,10.764 h 3.852 V 5.112 h -3.852 v -2.7 H 14.76 V 1.08 H 0.756 v 1.296 h 4.32 v 2.7 h -3.78 v 5.652 h 3.78 v 3.168 H 0.324 v 1.296 h 14.904 v -1.296 h -4.86 V 10.764 Z M 2.592,9.504 V 6.372 h 3.78 v -3.96 h 2.7 v 3.96 H 12.96 V 9.504 H 9.108 v 4.428 h -2.7 V 9.504 Z" + id="XMLID_144_" /> + <g + id="XMLID_136_" + transform="translate(61.2)"> + <rect + id="XMLID_143_" + x="5.3639998" + y="7.4520001" + width="9.0360003" + height="1.224" /> + <path + d="m 5.508,16.02 h 1.296 v -0.972 h 6.12 V 16.02 H 14.22 V 10.044 H 5.508 Z m 7.452,-4.752 v 2.556 H 6.84 v -2.556 z" + id="XMLID_140_" /> + <path + d="M 10.26,2.268 10.728,2.016 10.692,1.944 C 10.332,1.296 9.972,0.684 9.612,0.108 L 9.576,0.072 8.46,0.684 8.496,0.756 c 0.324,0.504 0.612,1.008 0.9,1.512 h -4.86 v 1.26 H 15.3 v -1.26 z" + id="XMLID_139_" /> + <path + d="M 4.824,0.504 3.528,0.108 3.492,0.18 C 2.736,2.952 1.62,5.544 0.18,7.848 L 0.144,7.884 V 7.92 c 0.18,0.396 0.324,0.828 0.504,1.296 L 0.684,9.324 0.756,9.216 C 1.224,8.568 1.656,7.848 2.088,7.092 v 8.928 h 1.26 V 4.536 C 3.852,3.348 4.32,2.016 4.788,0.576 Z" + id="XMLID_138_" /> + <rect + id="XMLID_137_" + x="5.3639998" + y="4.8600001" + width="9.0360003" + height="1.224" /> + </g> + <g + id="XMLID_126_" + transform="translate(40.68)"> + <path + d="M 14.04,2.808 14.076,2.88 14.904,1.908 14.868,1.872 C 14.22,1.224 13.644,0.684 13.104,0.252 l -0.036,-0.036 -0.72,0.864 0.036,0.036 c 0.612,0.54 1.188,1.116 1.656,1.692 z" + id="XMLID_135_" /> + <path + d="M 14.472,11.484 14.4,11.448 v 0.108 c -0.072,1.044 -0.144,1.8 -0.216,2.232 -0.036,0.18 -0.144,0.36 -0.252,0.396 -0.108,0.036 -0.324,-0.072 -0.684,-0.684 -0.18,-0.288 -0.36,-0.792 -0.504,-1.476 0.936,-1.476 1.764,-3.24 2.448,-5.22 L 15.228,6.732 14.04,6.12 14.004,6.192 C 13.572,7.668 13.068,9 12.456,10.152 12.24,6.876 12.132,4.896 12.096,4.32 h 3.348 V 3.024 H 12.06 C 12.024,2.052 12.024,1.08 12.024,0.216 V 0.144 H 10.8 v 0.072 c 0.036,0.936 0.036,1.872 0.072,2.808 h -4.68 v 5.868 c 0,2.304 -0.36,4.104 -1.044,5.364 V 9.864 H 0.972 v 5.832 H 2.088 V 14.724 H 4.86 C 4.788,14.832 4.716,14.94 4.644,15.012 l -0.036,0.072 0.036,0.036 c 0.288,0.252 0.576,0.54 0.828,0.9 l 0.036,0.072 0.036,-0.072 c 0.72,-1.008 1.224,-2.268 1.512,-3.744 v 0.036 c 0.072,0.252 0.144,0.612 0.252,1.224 v 0.072 h 0.036 c 0.18,0 0.432,0 0.864,0 0.576,0 1.044,-0.144 1.332,-0.468 0.324,-0.324 0.504,-0.864 0.504,-1.548 0.036,-1.044 0.072,-2.628 0.108,-4.896 V 6.624 H 7.308 V 4.32 h 3.528 c 0.18,3.528 0.36,6.012 0.612,7.452 -0.792,1.152 -1.764,2.16 -2.844,2.988 l -0.072,0.036 0.072,0.072 c 0.288,0.324 0.54,0.648 0.756,0.936 l 0.036,0.072 0.072,-0.036 c 0.828,-0.684 1.62,-1.512 2.34,-2.448 0.108,0.36 0.216,0.612 0.36,0.792 0.54,1.044 1.188,1.584 1.944,1.62 0.576,-0.072 0.972,-0.576 1.152,-1.476 0.072,-0.324 0.144,-1.044 0.288,-2.34 V 11.916 H 15.516 C 15.192,11.808 14.868,11.664 14.472,11.484 Z M 3.996,11.052 v 2.484 H 2.088 v -2.484 z m 3.096,1.188 c 0.18,-0.9 0.252,-1.872 0.252,-2.952 V 7.884 h 1.692 c 0,1.044 -0.036,2.196 -0.072,3.42 0,0.36 -0.072,0.648 -0.252,0.828 -0.144,0.144 -0.324,0.216 -0.576,0.18 -0.216,0 -0.54,-0.036 -0.972,-0.072 z" + id="XMLID_130_" /> + <rect + id="XMLID_129_" + x="0.86400002" + y="4.8959999" + width="4.3920002" + height="1.188" /> + <rect + id="XMLID_128_" + x="0.86400002" + y="7.3800001" + width="4.3920002" + height="1.188" /> + <path + d="M 5.868,2.412 H 3.42 L 3.996,2.088 3.96,2.016 C 3.636,1.404 3.276,0.756 2.844,0.072 L 2.808,0.036 1.62,0.684 1.656,0.756 c 0.324,0.576 0.648,1.152 0.9,1.692 H 0.288 v 1.188 h 5.58 z" + id="XMLID_127_" /> + </g> + <g + id="XMLID_116_" + transform="translate(20.52,0.36)"> + <path + d="M 2.412,7.236 2.448,7.164 C 2.556,7.02 2.7,6.876 2.844,6.66 2.952,6.516 3.096,6.336 3.24,6.156 L 3.276,6.084 3.24,6.048 C 2.484,5.364 1.656,4.716 0.828,4.104 L 0.792,4.068 0,5.04 0.072,5.076 C 0.828,5.688 1.584,6.408 2.34,7.128 Z" + id="XMLID_125_" /> + <path + d="M 3.132,9.216 3.06,9.18 C 2.664,9.036 2.304,8.892 1.908,8.712 L 1.836,8.676 v 0.072 c -0.36,2.052 -0.864,4.104 -1.44,6.156 l -0.036,0.072 1.368,0.468 v -0.072 c 0.468,-2.124 0.9,-4.212 1.368,-6.12 z" + id="XMLID_124_" /> + <path + d="m 5.832,5.256 c 0,2.556 -0.18,4.428 -0.54,5.58 -0.396,1.332 -1.152,2.556 -2.232,3.636 l -0.036,0.036 0.036,0.036 c 0.288,0.324 0.576,0.648 0.864,1.008 l 0.036,0.072 0.036,-0.036 c 1.26,-1.296 2.088,-2.7 2.484,-4.104 0.396,-1.26 0.612,-3.384 0.576,-6.3 V 0.108 h -1.26 v 5.148 z" + id="XMLID_123_" /> + <path + d="M 8.208,4.464 8.172,4.392 7.164,4.752 7.2,4.824 C 7.596,5.976 7.92,7.2 8.208,8.424 V 8.496 L 9.324,8.136 9.288,8.064 C 9,6.732 8.604,5.544 8.208,4.464 Z" + id="XMLID_122_" /> + <path + d="M 3.06,3.348 3.096,3.384 3.276,3.168 C 3.492,2.916 3.744,2.664 3.996,2.34 L 4.032,2.304 3.996,2.268 C 3.204,1.512 2.376,0.756 1.548,0.072 L 1.512,0.036 0.684,0.972 0.72,1.008 c 0.612,0.576 1.404,1.332 2.34,2.34 z" + id="XMLID_121_" /> + <rect + id="XMLID_120_" + x="9.5760002" + y="0.68400002" + width="1.26" + height="13.824" /> + <path + d="M 3.168,8.352 3.24,8.388 C 3.6,8.496 3.924,8.64 4.248,8.784 L 4.32,8.82 4.356,8.748 C 4.752,7.596 5.148,6.264 5.544,4.752 V 4.68 L 4.392,4.32 V 4.392 C 4.104,5.76 3.744,7.056 3.24,8.28 Z" + id="XMLID_119_" /> + <rect + id="XMLID_118_" + x="13.176" + y="0.108" + width="1.26" + height="15.336" /> + <path + d="M 11.88,4.572 11.844,4.5 10.836,4.86 10.872,4.932 c 0.36,1.152 0.684,2.376 0.972,3.6 V 8.604 L 12.96,8.208 12.924,8.136 C 12.6,6.876 12.24,5.688 11.88,4.572 Z" + id="XMLID_117_" /> + </g> + </g> + <path + d="m 177.012,33.732 v -3.348 c 0,0 0,0 0,0 0,-0.216 0,-2.052 0,-2.772 0.144,-4.176 -6.336,-2.628 -8.388,-1.548 v -3.852 c 3.024,-0.9 8.712,-1.548 11.304,0.648 1.08,0.9 1.584,2.268 1.584,4.14 v 10.908 c -4.464,-2.7 -9.072,2.844 -12.78,-0.972 -0.9,-0.936 -1.368,-2.16 -1.368,-3.6 0,-1.188 0.216,-2.124 0.684,-2.88 0.468,-0.756 1.116,-1.332 1.98,-1.764 0.828,-0.432 1.872,-0.72 3.132,-0.9 0.792,-0.108 1.62,-0.216 2.448,-0.288 v 3.06 c -0.18,0.036 -0.396,0.036 -0.612,0.072 -0.72,0.108 -1.26,0.216 -1.62,0.36 -0.468,0.144 -0.792,0.396 -1.044,0.72 -0.252,0.324 -0.36,0.72 -0.36,1.224 0,0.324 0.036,0.612 0.072,0.828 0.036,0.216 0.18,0.396 0.36,0.612 0.18,0.18 0.432,0.324 0.684,0.432 0.252,0.108 0.684,0.144 1.26,0.144 0.432,0 0.9,-0.108 1.368,-0.324 0.54,-0.252 0.936,-0.54 1.296,-0.9 z" + id="XMLID_112_" + fill="#c6272a" /> + <polygon + id="XMLID_108_" + fill="#c6272a" + points="160.704,38.34 160.704,21.384 165.24,21.384 165.24,38.34 " /> + <path + d="m 111.06,32.832 c 0,1.656 -0.648,2.988 -1.98,3.996 -1.296,1.008 -3.096,1.512 -5.364,1.512 -1.26,0 -2.412,-0.144 -3.42,-0.396 -1.044,-0.252 -1.836,-0.576 -2.484,-0.9 v -4.212 c 1.908,1.044 3.78,2.088 5.976,2.088 0.9,0 1.548,-0.108 1.98,-0.324 0.648,-0.36 0.936,-1.368 0.252,-1.836 -0.252,-0.18 -0.72,-0.36 -1.44,-0.504 -0.324,-0.072 -0.792,-0.18 -1.368,-0.288 -0.576,-0.108 -1.116,-0.216 -1.584,-0.36 -1.296,-0.396 -2.232,-0.972 -2.88,-1.764 -0.612,-0.792 -0.936,-1.8 -0.936,-2.988 0,-1.548 0.648,-2.808 1.944,-3.852 1.296,-1.008 3.06,-1.548 5.292,-1.548 1.044,0 2.088,0.108 3.024,0.36 0.972,0.252 1.728,0.504 2.268,0.792 v 4.032 c -1.152,-1.044 -3.78,-1.764 -5.292,-1.764 -0.72,0 -1.332,0.108 -1.836,0.36 -0.72,0.324 -1.08,1.26 -0.396,1.836 0.216,0.216 0.756,0.396 1.584,0.612 0.468,0.108 0.972,0.216 1.476,0.324 0.54,0.108 1.08,0.216 1.62,0.36 1.188,0.36 2.088,0.9 2.628,1.656 0.648,0.72 0.936,1.656 0.936,2.808 z" + id="XMLID_107_" + fill="#000000" + fill-rule="nonzero" /> + <path + d="m 95.688,37.764 c -4.212,-2.016 -10.044,2.34 -12.96,-1.08 -0.864,-1.008 -1.26,-2.52 -1.26,-4.5 V 21.744 H 86.04 V 29.7 c 0,0.792 0.036,1.476 0.072,2.016 0.036,0.54 0.144,0.972 0.324,1.332 0.144,0.36 0.396,0.612 0.72,0.756 0.324,0.18 0.792,0.252 1.368,0.252 0.396,0 0.828,-0.072 1.296,-0.252 0.468,-0.144 0.936,-0.396 1.368,-0.72 V 21.708 h 4.536 v 16.056 z" + id="XMLID_106_" + fill="#000000" + fill-rule="nonzero" /> + <polygon + id="XMLID_105_" + fill="#000000" + fill-rule="nonzero" + points="57.744,25.704 57.744,38.16 52.884,38.16 52.884,25.704 48.204,25.704 48.204,21.6 62.388,21.6 62.388,25.704 " /> + <polygon + id="XMLID_104_" + fill="#000000" + fill-rule="nonzero" + points="122.076,25.704 122.076,38.16 117.252,38.16 117.252,25.704 112.572,25.704 112.572,21.6 126.756,21.6 126.756,25.704 " /> + <path + d="m 74.52,26.712 c 0,-0.396 -0.108,-0.756 -0.288,-1.044 -0.18,-0.288 -0.504,-0.504 -0.936,-0.684 -0.324,-0.108 -0.684,-0.18 -1.08,-0.216 -0.432,-0.036 -0.9,-0.036 -1.44,-0.036 H 69.12 v 4.392 h 1.404 c 0.72,0 1.368,-0.036 1.836,-0.108 0.504,-0.072 0.9,-0.216 1.26,-0.432 0.324,-0.216 0.54,-0.468 0.72,-0.756 0.108,-0.288 0.18,-0.648 0.18,-1.116 z m 7.2,11.34 H 76.104 L 71.244,32.04 H 69.12 v 6.012 H 64.548 V 21.708 h 7.704 c 1.044,0 1.98,0.036 2.736,0.18 0.756,0.108 1.476,0.36 2.124,0.72 0.684,0.36 1.188,0.828 1.584,1.44 0.396,0.576 0.576,1.332 0.576,2.196 0,1.224 -0.324,2.196 -0.9,2.952 -0.612,0.756 -1.476,1.404 -2.628,1.908 z" + id="XMLID_101_" + fill="#000000" + fill-rule="nonzero" /> + <path + d="m 158.58,32.832 c 0,1.656 -0.648,2.988 -1.98,3.996 -1.296,1.008 -3.096,1.512 -5.4,1.512 -1.26,0 -2.412,-0.144 -3.42,-0.396 -1.044,-0.252 -1.836,-0.576 -2.484,-0.9 v -4.212 c 1.908,1.044 3.78,2.088 5.976,2.088 0.9,0 1.548,-0.108 1.98,-0.324 0.648,-0.36 0.936,-1.368 0.252,-1.836 -0.252,-0.18 -0.72,-0.36 -1.44,-0.504 -0.324,-0.072 -0.792,-0.18 -1.368,-0.288 -0.576,-0.108 -1.116,-0.216 -1.584,-0.36 -1.296,-0.396 -2.232,-0.972 -2.844,-1.764 -0.612,-0.792 -0.936,-1.8 -0.936,-2.988 0,-1.548 0.648,-2.808 1.944,-3.852 1.296,-1.008 3.06,-1.548 5.292,-1.548 1.044,0 2.088,0.108 3.024,0.36 0.972,0.252 1.728,0.504 2.268,0.792 v 4.032 c -1.152,-1.044 -3.78,-1.764 -5.292,-1.764 -0.72,0 -1.332,0.108 -1.836,0.36 -0.72,0.324 -1.08,1.26 -0.396,1.836 0.216,0.216 0.756,0.396 1.584,0.612 0.468,0.108 0.972,0.216 1.512,0.324 0.54,0.108 1.08,0.216 1.62,0.36 1.188,0.36 2.088,0.9 2.628,1.656 0.612,0.72 0.9,1.656 0.9,2.808 z" + id="XMLID_97_" + fill="#c6272a" /> + <g + id="XMLID_90_" + transform="translate(124.56,14.76)" + fill="#c6272a" + fill-rule="nonzero"> + <path + d="M 21.06,1.908 20.124,0.252 9.036,14.472 7.992,13.896 C 8.496,12.24 9.072,10.332 9.864,7.776 L 10.944,11.34 14.292,7.128 12.744,2.34 H 7.164 L 4.104,11.7 2.592,10.836 0.468,13.068 2.016,12.924 9,20.952 12.24,15.84 c 0.504,1.692 1.764,5.688 2.412,7.74 h 5.004 L 15.48,10.728 Z" + id="XMLID_94_" /> + <path + d="m 0.216,23.58 h 4.86 C 5.616,21.744 6.084,20.304 6.48,18.972 L 3.024,14.94 Z" + id="XMLID_91_" /> + </g> + <g + id="XMLID_81_" + transform="translate(127.08,2.52)" + fill="#000000" + fill-rule="nonzero"> + <path + d="m 3.024,6.012 c -1.476,0 -2.7,-1.26 -2.7,-2.844 0,-1.584 1.224,-2.844 2.7,-2.844 1.476,0 2.7,1.26 2.7,2.844 0,1.584 -1.224,2.844 -2.7,2.844 z m 0,-5.508 c -1.404,0 -2.52,1.188 -2.52,2.664 0,1.476 1.152,2.664 2.52,2.664 1.404,0 2.52,-1.188 2.52,-2.664 0,-1.476 -1.116,-2.664 -2.52,-2.664 z" + id="XMLID_86_" /> + <g + id="XMLID_82_" + transform="translate(1.8,1.44)"> + <path + d="M 0.288,0.072 C 0.504,0.036 0.792,0 1.08,0 1.512,0 1.8,0.072 2.016,0.288 2.16,0.432 2.268,0.648 2.268,0.936 2.268,1.368 2.016,1.656 1.656,1.8 v 0 C 1.908,1.872 2.052,2.124 2.124,2.484 2.232,2.952 2.304,3.276 2.376,3.42 H 1.944 C 1.908,3.312 1.836,3.024 1.728,2.628 1.62,2.16 1.476,1.98 1.08,1.98 H 0.684 V 3.42 H 0.288 Z M 0.684,1.62 h 0.432 c 0.432,0 0.72,-0.252 0.72,-0.648 C 1.836,0.54 1.548,0.36 1.116,0.36 0.936,0.36 0.792,0.396 0.72,0.396 V 1.62 Z" + id="XMLID_83_" /> + </g> + </g> + </g> + <g + id="g1280" + transform="matrix(0.04659433,0,0,0.0429214,66.670686,87.146808)"> + <g + id="g1258"> + <path + class="st0" + d="m 2083.3,123.5 c 0,-10.6 2.6,-20.5 7.8,-29.6 5.2,-9.1 12.4,-16.3 21.6,-21.5 9.2,-5.2 19.1,-7.9 29.8,-7.9 10.7,0 20.6,2.6 29.7,7.9 9.2,5.2 16.3,12.4 21.5,21.5 5.2,9.1 7.8,19 7.8,29.6 0,10.4 -2.5,20.1 -7.5,29.1 -5,9.1 -12.1,16.3 -21.3,21.8 -9.2,5.5 -19.3,8.3 -30.3,8.3 -10.9,0 -21,-2.7 -30.2,-8.2 -9.2,-5.4 -16.3,-12.7 -21.4,-21.8 -4.9,-8.9 -7.5,-18.7 -7.5,-29.2 z m 9.6,0 c 0,9 2.2,17.4 6.7,25.1 4.4,7.7 10.5,13.7 18.1,18.1 7.6,4.4 15.9,6.5 24.8,6.5 8.9,0 17.2,-2.2 24.9,-6.7 7.7,-4.5 13.7,-10.5 18,-18.1 4.4,-7.6 6.5,-16 6.5,-25 0,-9 -2.2,-17.3 -6.5,-24.9 -4.4,-7.6 -10.4,-13.6 -18,-18 -7.6,-4.4 -16,-6.6 -24.9,-6.6 -8.9,0 -17.2,2.2 -24.8,6.5 -7.7,4.3 -13.7,10.4 -18.1,18 -4.5,7.8 -6.7,16.1 -6.7,25.1 z m 37.3,5.9 v 26.7 h -11.7 v -67 h 23 c 8.5,0 15.1,1.7 19.8,5.2 4.7,3.4 7,8.5 7,15 0,6.5 -3.6,11.4 -10.7,14.8 6.8,2.6 10.2,8 10.2,16.1 v 4.8 c 0,4.5 0.5,7.8 1.4,9.8 v 1.3 h -12.1 c -0.8,-1.9 -1.2,-5.3 -1.2,-10.1 0,-4.9 -0.1,-7.8 -0.2,-8.6 -0.9,-5.1 -4.5,-7.7 -10.9,-7.9 h -14.6 z m 0,-10.1 h 13 c 4,-0.1 7.2,-1 9.7,-2.8 2.4,-1.7 3.7,-4 3.7,-6.8 0,-3.8 -1.1,-6.5 -3.2,-8.1 -2.2,-1.6 -6,-2.4 -11.6,-2.4 h -11.5 z" + id="path1256" /> + </g> + <g + id="g1278"> + <g + id="g1264"> + <path + class="st1" + d="m 365.2,83.8 c 5.7,-8.5 0.5,-19.3 -9.4,-19.3 H 266 226 196.6 c -33.5,0 -60.2,8.9 -79.9,26.7 -19.7,17.7 -31,43.1 -34,76.3 v 0 l -7.6,86.8 v 0 c -2.8,33.2 4.1,58.6 20.7,76.3 16.7,17.8 41.8,26.7 75.3,26.7 h 36.4 v -0.2 c 7.2,-1 11.1,-5.4 11.8,-13.1 l 3.7,-42.6 c 0.7,-7.7 -5,-14 -12.8,-14 H 190 c -13.1,0 -22.3,-2.9 -27.6,-8.6 -5.2,-5.7 -7.2,-15.4 -6.1,-29 l 6.8,-77.8 c 1.2,-13.6 4.9,-23.2 11.1,-28.9 6.2,-5.7 15.9,-8.6 29.1,-8.6 h 16.6 26.6 64.2 c 12.7,0 25,-6.7 32.3,-17.7 z" + id="path1260" /> + <path + class="st1" + d="m 59.3,454.3 c -5.7,8.5 -0.5,19.3 9.4,19.3 h 92.1 40 29.4 c 33.5,0 60.2,-8.9 79.9,-26.7 19.7,-17.7 31,-43.1 34,-76.3 v 0 l 7.6,-86.8 v 0 c 2.8,-33.2 -4.1,-58.6 -20.7,-76.3 -16.7,-17.8 -41.8,-26.7 -75.3,-26.7 h -36.4 v 0.2 c -7.2,1 -11.1,5.4 -11.8,13.1 l -3.7,42.6 c -0.7,7.7 5,14 12.8,14 H 237 c 13.1,0 22.3,2.9 27.6,8.6 5.2,5.7 7.2,15.4 6.1,28.9 l -6.8,77.8 c -1.2,13.6 -4.9,23.2 -11.1,28.9 -6.2,5.7 -15.9,8.6 -29.1,8.6 H 207 180.4 113.9 c -12.7,0 -25,6.7 -32.3,17.7 z" + id="path1262" /> + </g> + <path + class="st0" + d="M 607,473.6 H 399 c -8.9,0 -13,-4.4 -12.2,-13.4 L 420.3,77.9 c 0.8,-8.9 5.6,-13.4 14.5,-13.4 h 208 c 8.5,0 12.3,4.4 11.6,13.4 l -3.8,43.3 c -0.8,8.9 -5.4,13.4 -13.9,13.4 h -133 c -5.1,0 -7.8,2.3 -8.2,7 l -7.2,82.7 c -0.4,4.7 1.9,7 7,7 h 108.8 c 8.9,0 13,4.5 12.2,13.4 l -3.8,43.3 c -0.8,8.9 -5.6,13.4 -14.5,13.4 H 489.2 c -5.1,0 -7.8,2.3 -8.2,7 l -7.7,88.4 c -0.4,4.7 1.9,7 7,7 h 132.9 c 8.5,0 12.3,4.5 11.6,13.4 l -3.8,43.3 c -0.9,8.6 -5.5,13.1 -14,13.1" + id="path1266" /> + <path + class="st0" + d="m 831.4,473.6 h -69.3 c -33.5,0 -58.6,-8.9 -75.3,-26.7 -16.7,-17.8 -23.6,-43.5 -20.6,-77 l 17.6,-201.7 c 2.9,-33.5 14.3,-59.2 34.1,-77 19.8,-17.8 46.4,-26.7 79.9,-26.7 h 69.3 c 33.1,0 58.1,9 74.9,27 16.9,18 23.9,43.6 21,76.6 l -2.6,29.9 c -0.8,9.3 -5.9,14 -15.2,14 h -53.4 c -8.9,0 -13,-4.7 -12.1,-14 l 2.3,-26.1 c 1.2,-13.6 -0.8,-23.2 -6.1,-28.9 -5.2,-5.7 -14.6,-8.6 -28.2,-8.6 h -43.3 c -13.1,0 -22.8,2.9 -29.1,8.6 -6.2,5.7 -9.9,15.4 -11.1,28.9 l -17,194 c -1.2,13.6 0.8,23.2 6.1,28.9 5.2,5.7 14.4,8.6 27.6,8.6 h 43.3 c 13.6,0 23.5,-2.9 29.7,-8.6 6.2,-5.7 9.9,-15.4 11.1,-28.9 l 2.3,-26.1 c 0.8,-9.3 5.7,-14 14.6,-14 h 53.4 c 9.3,0 13.6,4.7 12.8,14 l -2.6,29.9 c -2.9,33.1 -14.4,58.6 -34.4,76.6 -20.1,18.3 -46.6,27.3 -79.7,27.3" + id="path1268" /> + <path + class="st0" + d="m 1127,473.6 h -53.4 c -9.3,0 -13.6,-4.4 -12.8,-13.4 l 27.9,-318.7 c 0.4,-4.7 -1.7,-7 -6.4,-7 h -72.5 c -8.9,0 -13,-4.4 -12.2,-13.4 l 3.8,-43.3 c 0.8,-8.9 5.6,-13.4 14.5,-13.4 h 240.4 c 8.9,0 13,4.4 12.2,13.4 l -3.8,43.3 c -0.8,8.9 -5.6,13.4 -14.5,13.4 h -72.5 c -5.1,0 -7.8,2.3 -8.2,7 l -27.9,318.7 c -0.9,8.9 -5.7,13.4 -14.6,13.4" + id="path1270" /> + <path + class="st0" + d="M 1390.5,77.9 1357,460.2 c -0.8,8.9 -5.6,13.4 -14.5,13.4 h -54.1 c -8.9,0 -13,-4.5 -12.2,-13.4 l 33.5,-382.3 c 0.8,-8.9 5.6,-13.4 14.5,-13.4 h 54.1 c 8.9,0 13,4.5 12.2,13.4" + id="path1272" /> + <path + class="st0" + d="m 1857.4,403.6 h 45.2 c 13.6,0 23.5,-2.9 29.7,-8.6 6.2,-5.7 9.9,-15.4 11.1,-28.9 l 17,-194 c 1.2,-13.6 -0.8,-23.2 -6.1,-28.9 -5.2,-5.7 -14.6,-8.6 -28.2,-8.6 h -45.2 c -13.6,0 -23.4,2.9 -29.4,8.6 -6,5.7 -9.6,15.4 -10.8,28.9 l -17,194 c -1.2,13.6 0.7,23.2 5.7,28.9 5.2,5.7 14.4,8.6 28,8.6 m 52.4,70 h -71.2 c -33.5,0 -58.6,-8.9 -75.3,-26.7 -16.7,-17.8 -23.6,-43.5 -20.6,-77 l 17.6,-201.7 c 2.9,-33.5 14.3,-59.2 34.1,-77 19.8,-17.8 46.4,-26.7 79.9,-26.7 h 71.2 c 33.5,0 58.6,8.9 75.3,26.7 16.7,17.8 23.6,43.5 20.6,77 l -17.6,201.7 c -2.9,33.5 -14.3,59.2 -34.1,77 -19.7,17.8 -46.4,26.7 -79.9,26.7" + id="path1274" /> + <path + class="st0" + d="m 1639.5,201.3 h 54.1 c 8.9,0 13.8,-4.7 14.6,-14 l 1.7,-19.1 c 2.9,-33.1 -4,-58.6 -20.6,-76.7 -16.7,-18 -41.5,-27 -74.6,-27 h -67.4 c -33.5,0 -60.2,8.9 -79.9,26.7 -19.8,17.8 -31.2,43.5 -34.1,77 l -17.6,201.7 c -2.9,33.5 3.9,59.2 20.6,77 16.7,17.8 41.8,26.7 75.3,26.7 h 67.4 c 33.1,0 59.5,-9 79.3,-27 19.8,-18 31.2,-43.6 34.1,-76.7 l 9.3,-106.2 c 0.9,-9.8 -3.6,-14.6 -13.4,-14.6 H 1577 1562.4 c -9.9,0 -17,10.7 -12.8,19.3 l 16.4,33 c 5.4,10.9 16.6,17.7 29.2,17.7 h 13.8 c 4.7,0 6.8,2.3 6.4,7 l -3.5,40.1 c -1.2,13.6 -4.8,23.2 -10.8,29 -6,5.7 -15.8,8.6 -29.4,8.6 h -41.4 c -13.1,0 -22.3,-2.9 -27.6,-8.6 -5.2,-5.7 -7.2,-15.4 -6.1,-29 l 17,-194 c 1.2,-13.6 4.9,-23.2 11.1,-28.9 6.2,-5.7 15.9,-8.6 29.1,-8.6 h 41.4 c 13.6,0 22.9,2.9 27.9,8.6 5,5.7 6.9,15.4 5.7,28.9 l -1.3,15.3 c -1,9.1 3.1,13.8 12,13.8" + id="path1276" /> + </g> + </g> + <g + id="g1328" + transform="matrix(0.25213151,0,0,0.25213151,74.189354,178.83106)"> + <title + id="title1301">Layer 1</title> + <g + id="svg_1" + transform="matrix(1.7900119,0,0,1.7900119,-180.60361,-303.37574)"> + <g + id="svg_2"> + <g + id="svg_3"> + <path + id="svg_4" + d="M 76.621002,68.878998 V 37.472 h 7.629997 v 24.796997 h 12.153999 v 6.609001 H 76.621001 v 9.99e-4 z" + fill="#2c3c69" /> + <path + id="svg_5" + d="m 121.547,58.098999 c 0,0.295998 0,0.592003 0,0.888 0,0.295997 -0.015,0.576004 -0.044,0.843002 H 105.49 c 0.059,0.620995 0.244,1.182999 0.555,1.685997 0.311,0.502998 0.71,0.938004 1.197,1.308998 0.488,0.370003 1.035,0.658005 1.642,0.864006 0.605,0.208 1.234,0.310997 1.885,0.310997 1.153,0 2.13,-0.213997 2.928,-0.642998 0.799,-0.429001 1.449,-0.983002 1.952,-1.664001 l 5.05699,3.194 c -1.03498,1.507996 -2.40199,2.668999 -4.10299,3.482002 -1.701,0.811996 -3.676,1.219994 -5.922,1.219994 -1.657,0 -3.224,-0.259995 -4.702,-0.775993 -1.479,-0.518005 -2.772,-1.271004 -3.882,-2.263 -1.108,-0.990005 -1.981,-2.210007 -2.616996,-3.659004 -0.635994,-1.448997 -0.953003,-3.104996 -0.953003,-4.969002 0,-1.802994 0.309998,-3.437996 0.931,-4.900997 0.620999,-1.463001 1.463999,-2.706001 2.528999,-3.726002 1.064,-1.021 2.32,-1.811996 3.771,-2.373997 1.448,-0.561001 3.016,-0.843002 4.701,-0.843002 1.626,0 3.12,0.274002 4.48,0.820999 1.36,0.546997 2.528,1.338001 3.505,2.373001 0.976,1.035 1.73599,2.292 2.284,3.771 0.546,1.478001 0.819,3.165001 0.819,5.056 z m -6.698,-2.794998 c 0,-1.153 -0.362,-2.144001 -1.087,-2.972 -0.725,-0.827 -1.812,-1.242001 -3.26,-1.242001 -0.71,0 -1.36,0.111 -1.952,0.333 -0.59199,0.222 -1.108,0.525002 -1.553,0.909 -0.443,0.384998 -0.798,0.835999 -1.064,1.354 -0.266,0.517998 -0.414,1.057999 -0.443,1.618 h 9.359 z" + fill="#2c3c69" /> + <path + id="svg_6" + d="m 133.168,52.200001 v 8.461002 c 0,1.038994 0.2,1.816994 0.60001,2.337997 0.39799,0.519997 1.11499,0.778 2.151,0.778 0.35399,0 0.73098,-0.028 1.13099,-0.089 0.39901,-0.05901 0.73101,-0.147003 0.998,-0.266006 l 0.089,5.323006 c -0.50299,0.176994 -1.13899,0.332001 -1.90699,0.465996 -0.76999,0.133003 -1.538,0.199005 -2.307,0.199005 -1.479,0 -2.722,-0.186005 -3.727,-0.556007 C 129.19,68.484002 128.384,67.949998 127.77901,67.252 127.172,66.556001 126.73599,65.725999 126.47,64.762002 126.203,63.799005 126.071,62.724 126.071,61.538003 v -9.338001 h -3.549 v -5.412003 h 3.504 v -5.810997 h 7.142 v 5.810997 h 5.19 v 5.412003 h -5.19 z" + fill="#2c3c69" /> + <path + id="svg_7" + d="m 161.91299,53.307999 c -0.59201,-0.560997 -1.28601,-1.034 -2.085,-1.418999 -0.79801,-0.383999 -1.64099,-0.577 -2.528,-0.577 -0.681,0 -1.30899,0.133999 -1.885,0.398998 -0.57699,0.267002 -0.865,0.726002 -0.865,1.375 0,0.621002 0.317,1.064003 0.953,1.331001 0.636,0.266998 1.664,0.562 3.08299,0.887001 0.82801,0.177998 1.664,0.43 2.50701,0.754997 0.843,0.324997 1.604,0.754005 2.28399,1.286003 0.68001,0.531998 1.22701,1.182999 1.64202,1.951996 0.41299,0.769005 0.62098,1.686005 0.62098,2.75 0,1.391006 -0.28099,2.565002 -0.84298,3.526001 -0.56201,0.960999 -1.29401,1.737 -2.19602,2.329002 -0.902,0.592002 -1.91499,1.019997 -3.03799,1.286003 -1.12399,0.266998 -2.248,0.398994 -3.371,0.398994 -1.80499,0 -3.571,-0.287994 -5.302,-0.864998 C 149.161,68.146002 147.719,67.294996 146.566,66.170995 l 4.08099,-4.303001 c 0.649,0.710007 1.448,1.302002 2.395,1.774002 0.946,0.473999 1.952,0.709999 3.017,0.709999 0.592,0 1.176,-0.140999 1.752,-0.421997 0.577,-0.279999 0.86501,-0.776001 0.86501,-1.485001 0,-0.681 -0.35401,-1.182999 -1.06401,-1.509003 -0.71,-0.324997 -1.818,-0.664993 -3.327,-1.020996 -0.769,-0.177002 -1.53799,-0.413002 -2.30699,-0.709 -0.77001,-0.295998 -1.457,-0.694 -2.06202,-1.197998 -0.60598,-0.502007 -1.10199,-1.123001 -1.48599,-1.863007 -0.384,-0.737995 -0.576,-1.625996 -0.576,-2.660995 0,-1.331001 0.28,-2.462002 0.843,-3.394001 0.562,-0.931999 1.286,-1.692001 2.174,-2.284 0.88701,-0.591999 1.87001,-1.027 2.949,-1.308998 1.079,-0.281998 2.151,-0.422001 3.217,-0.422001 1.655,0 3.274,0.259998 4.856,0.776001 1.582,0.517998 2.921,1.293999 4.015,2.328999 l -3.995,4.127998 z" + fill="#2c3c69" /> + <path + id="svg_8" + d="M 179.56799,68.878998 V 37.472 h 21.114 v 6.388 h -13.795 v 5.944 h 13.041 v 6.077 h -13.041 v 6.521 h 14.594 v 6.476997 z" + fill="#2c3c69" /> + <path + id="svg_9" + d="M 220.675,68.878998 V 56.813004 c 0,-0.621002 -0.053,-1.212002 -0.155,-1.774002 -0.104,-0.562 -0.274,-1.057003 -0.511,-1.486 -0.237,-0.428001 -0.569,-0.769001 -0.998,-1.021 -0.429,-0.25 -0.96899,-0.377003 -1.619,-0.377003 -0.65001,0 -1.22,0.127003 -1.70799,0.377003 -0.487,0.251999 -0.89501,0.599998 -1.22001,1.042999 -0.32499,0.443001 -0.569,0.953999 -0.731,1.529999 -0.16299,0.577 -0.244,1.175999 -0.244,1.797001 v 11.976997 h -7.319 v -22.091 h 7.05301 v 3.061001 h 0.089 c 0.26699,-0.473 0.613,-0.938 1.043,-1.396 0.428,-0.459 0.932,-0.850998 1.50801,-1.175999 0.57699,-0.325001 1.20498,-0.591999 1.88598,-0.799 0.68001,-0.206001 1.40401,-0.311001 2.17301,-0.311001 1.479,0 2.735,0.266998 3.77099,0.799 1.036,0.532002 1.87001,1.220001 2.50701,2.062 0.636,0.842999 1.09401,1.812 1.375,2.904999 0.28,1.095001 0.421,2.189003 0.421,3.283001 v 13.661999 h -7.321 v 9.99e-4 z" + fill="#2c3c69" /> + <path + id="svg_10" + d="m 246.71301,53.929001 c -0.41501,-0.532001 -0.977,-0.959999 -1.686,-1.285999 -0.70999,-0.325001 -1.43601,-0.488003 -2.174,-0.488003 -0.77,0 -1.464,0.155003 -2.085,0.466 -0.62101,0.310997 -1.153,0.726002 -1.59701,1.242001 -0.44299,0.518002 -0.79199,1.117001 -1.04299,1.797001 -0.251,0.681004 -0.377,1.404003 -0.377,2.174 0,0.768997 0.11799,1.493004 0.35499,2.173004 0.23601,0.681 0.58301,1.279999 1.04201,1.796997 0.45799,0.517998 1.005,0.924995 1.642,1.220001 0.636,0.295998 1.35299,0.443001 2.151,0.443001 0.73801,0 1.47099,-0.139999 2.19501,-0.421005 0.72401,-0.281006 1.30899,-0.687996 1.75198,-1.220001 l 4.03702,4.924004 c -0.91703,0.887001 -2.10102,1.582001 -3.54901,2.084999 -1.44899,0.501999 -2.987,0.753998 -4.61299,0.753998 -1.74501,0 -3.37401,-0.266998 -4.88701,-0.798996 -1.512,-0.531998 -2.82601,-1.308998 -3.941,-2.329002 -1.11599,-1.019997 -1.99299,-2.253998 -2.63299,-3.702995 -0.64,-1.448997 -0.959,-3.090004 -0.959,-4.924004 0,-1.804001 0.31898,-3.431 0.959,-4.880001 0.64,-1.447998 1.51699,-2.683998 2.63299,-3.703999 1.11499,-1.021 2.43,-1.804001 3.941,-2.351002 1.513,-0.546997 3.127,-0.820999 4.843,-0.820999 0.798,0 1.589,0.074 2.373,0.223 0.783,0.147003 1.53699,0.348 2.26199,0.599003 0.72501,0.251003 1.39002,0.562 1.996,0.931999 0.60599,0.369999 1.13202,0.776001 1.57502,1.219997 l -4.21201,4.877003 z" + fill="#2c3c69" /> + <path + id="svg_11" + d="m 268.03201,52.776001 c -0.32599,-0.089 -0.64401,-0.146999 -0.95401,-0.177002 -0.30999,-0.03 -0.61398,-0.045 -0.90899,-0.045 -0.97599,0 -1.797,0.177998 -2.46201,0.530998 -0.66498,0.354 -1.19699,0.781002 -1.59698,1.283001 -0.39902,0.500999 -0.68802,1.047001 -0.86503,1.636997 -0.177,0.589996 -0.26599,1.105003 -0.26599,1.548004 v 11.324997 h -7.27499 V 46.813999 h 7.009 v 3.194 h 0.089 c 0.56201,-1.132 1.35901,-2.055 2.396,-2.77 1.03402,-0.715 2.23202,-1.071999 3.59302,-1.071999 0.29498,0 0.58398,0.016 0.86499,0.045 0.27999,0.029 0.51001,0.074 0.68801,0.133003 z" + fill="#2c3c69" /> + <path + id="svg_12" + d="m 285.12201,72.206001 c -0.44299,1.153 -0.939,2.181 -1.48599,3.083 -0.547,0.901001 -1.19702,1.669998 -1.95102,2.306999 -0.754,0.636002 -1.642,1.114998 -2.66199,1.441002 -1.01999,0.324997 -2.22601,0.487999 -3.61499,0.487999 -0.681,0 -1.38299,-0.045 -2.10602,-0.134003 -0.72598,-0.089 -1.354,-0.207001 -1.88598,-0.353996 L 272.215,72.916 c 0.354,0.116997 0.746,0.213997 1.17602,0.288002 0.42798,0.073 0.81998,0.110001 1.17499,0.110001 1.12399,0 1.93701,-0.259003 2.44,-0.776001 0.50199,-0.518005 0.931,-1.249001 1.28601,-2.195 l 0.70999,-1.818001 -9.22699,-21.736 h 8.073 l 4.92398,14.195 h 0.133 l 4.392,-14.195 h 7.71802 z" + fill="#2c3c69" /> + <path + id="svg_13" + d="m 321.496,57.745003 c 0,1.537994 -0.237,3.016998 -0.70999,4.435997 -0.474,1.419998 -1.16101,2.668999 -2.06201,3.748001 -0.90201,1.080002 -2.004,1.945 -3.30499,2.596001 -1.30201,0.649002 -2.78,0.975998 -4.43702,0.975998 -1.35998,0 -2.64599,-0.273003 -3.85901,-0.82 -1.21301,-0.546997 -2.15799,-1.293999 -2.83898,-2.239998 h -0.088 v 13.085999 h -7.27502 V 46.787999 H 303.841 V 49.494 h 0.133 c 0.681,-0.887001 1.61899,-1.662998 2.81698,-2.328999 C 307.98801,46.5 309.39999,46.167 311.02701,46.167 c 1.59698,0 3.04498,0.311001 4.34698,0.931999 1.301,0.621002 2.40201,1.464001 3.305,2.528 0.90298,1.063999 1.59701,2.299999 2.08502,3.704002 0.488,1.404999 0.73199,2.876999 0.73199,4.414002 z m -7.05301,0 c 0,-0.709999 -0.11001,-1.403999 -0.332,-2.085003 -0.22201,-0.68 -0.548,-1.278999 -0.97699,-1.797001 -0.42901,-0.516998 -0.96902,-0.938 -1.61902,-1.264 -0.64999,-0.326 -1.40399,-0.487999 -2.26199,-0.487999 -0.828,0 -1.56799,0.162998 -2.21799,0.487999 -0.651,0.325001 -1.20602,0.754002 -1.664,1.285999 -0.45901,0.532001 -0.81302,1.139 -1.06402,1.818001 -0.25199,0.681004 -0.37699,1.375004 -0.37699,2.085003 0,0.709999 0.125,1.404999 0.37699,2.084999 0.251,0.681 0.60501,1.285995 1.06402,1.818001 0.45798,0.531998 1.013,0.961998 1.664,1.286995 0.64899,0.325005 1.38999,0.487 2.21799,0.487 0.85699,0 1.61099,-0.161995 2.26199,-0.487 0.651,-0.325005 1.19001,-0.754997 1.61902,-1.286995 0.42902,-0.531998 0.75498,-1.146004 0.97699,-1.841003 0.22101,-0.693001 0.332,-1.394997 0.332,-2.104996 z" + fill="#2c3c69" /> + <path + id="svg_14" + d="m 333.11801,52.200001 v 8.461002 c 0,1.038994 0.20001,1.816994 0.60001,2.337997 0.39798,0.519997 1.11499,0.778 2.151,0.778 0.354,0 0.73099,-0.028 1.13098,-0.089 0.39902,-0.05901 0.73102,-0.147003 0.99802,-0.266006 l 0.089,5.323006 c -0.50299,0.176994 -1.139,0.332001 -1.90698,0.465996 -0.77002,0.133003 -1.53802,0.199005 -2.307,0.199005 -1.47901,0 -2.72202,-0.186005 -3.72702,-0.556007 -1.00599,-0.369995 -1.81199,-0.903999 -2.417,-1.601997 -0.60699,-0.695999 -1.043,-1.526001 -1.30899,-2.489998 C 326.15302,63.799005 326.021,62.724 326.021,61.538003 v -9.338001 h -3.54898 v -5.412003 h 3.50399 v -5.810997 h 7.142 v 5.810997 h 5.19 v 5.412003 h -5.19 z" + fill="#2c3c69" /> + </g> + </g> + <path + id="svg_15" + d="m 145.00999,36.869999 c -2.18299,0 -3.89199,1.573002 -3.89199,3.582001 0,2.116001 1.43899,3.536999 3.582,3.536999 0.183,0 0.35599,-0.017 0.51899,-0.05 -0.343,1.566002 -1.852,2.690002 -3.27799,2.915001 l -0.29001,0.046 v 3.376999 l 0.376,-0.036 c 1.73,-0.165001 3.439,-0.951 4.691,-2.157001 1.632,-1.572998 2.49501,-3.843998 2.49501,-6.568001 0,-2.691998 -1.76799,-4.646 -4.20301,-4.646 z" + fill="#2c3c69" /> + </g> + <g + id="svg_16" + transform="matrix(1.7900119,0,0,1.7900119,-180.60361,-303.37574)"> + <path + id="svg_17" + d="m 46.488998,37.568001 h -8.039997 v -4.128002 c 0,-3.296997 -2.683002,-5.979 -5.98,-5.979 -3.297001,0 -5.979,2.683002 -5.979,5.979 v 4.128002 H 18.45 v -4.128002 c 0,-7.73 6.288998,-14.019999 14.02,-14.019999 7.731002,0 14.02,6.289 14.02,14.019999 v 4.128002 z" + fill="#f9a11d" /> + </g> + <path + id="svg_18" + d="M -91.582741,-236.12857 H -153.3829 c -2.63848,0 -4.79723,2.15875 -4.79723,4.79723 v 45.71691 c 0,2.63847 2.15875,4.79723 4.79723,4.79723 h 61.800159 c 2.638483,0 4.797232,-2.15876 4.797232,-4.79723 v -45.71691 c 0,-2.63848 -2.158749,-4.79723 -4.797232,-4.79723 z m -27.768449,30.01671 v 6.19522 c 0,1.72916 -1.40337,3.13074 -3.13073,3.13074 -1.72737,0 -3.13073,-1.40337 -3.13073,-3.13074 v -6.19343 c -1.92606,-1.0937 -3.2274,-3.15758 -3.2274,-5.53114 0,-3.512 2.84791,-6.35812 6.35813,-6.35812 3.512,0 6.35812,2.84791 6.35812,6.35812 0,2.37177 -1.30134,4.43566 -3.22739,5.52935 z" + fill="#2c3c69" + style="stroke-width:1.79001" /> + <path + id="svg_19" + d="m -159.64794,-242.94494 h -14.91259 c -2.4183,0 -4.37837,-1.96006 -4.37837,-4.37837 0,-2.41831 1.96007,-4.37837 4.37837,-4.37837 h 14.91259 c 2.41831,0 4.37837,1.96007 4.37837,4.37837 0,2.4183 -1.96185,4.37837 -4.37837,4.37837 z" + fill="#f9a11d" + style="stroke-width:1.79001" /> + <path + id="svg_20" + d="m -149.14415,-266.40304 c -0.97735,0 -1.96364,-0.32578 -2.7781,-0.99704 l -11.79617,-9.70007 c -1.86699,-1.53584 -2.13728,-4.29424 -0.59966,-6.16301 1.53583,-1.86699 4.29424,-2.13728 6.16301,-0.60145 l 11.79618,9.70008 c 1.86698,1.53583 2.13728,4.29424 0.59965,6.16301 -0.86457,1.05432 -2.11937,1.59848 -3.38491,1.59848 z" + fill="#f9a11d" + style="stroke-width:1.79001" /> + <path + id="svg_21" + d="m -122.48371,-276.71351 c -2.41831,0 -4.37837,-1.96007 -4.37837,-4.37837 v -15.03073 c 0,-2.41831 1.96006,-4.37837 4.37837,-4.37837 2.41831,0 4.37837,1.96006 4.37837,4.37837 v 15.03073 c 0,2.4183 -1.96007,4.37837 -4.37837,4.37837 z" + fill="#f9a11d" + style="stroke-width:1.79001" /> + <g + id="svg_22" + transform="matrix(1.7900119,0,0,1.7900119,-180.60361,-303.37574)"> + <g + id="svg_23"> + <path + id="svg_24" + d="M 47.362999,20.655001 C 46.655998,20.655001 45.956001,20.351 45.472,19.761999 44.613998,18.719 44.764,17.177 45.806999,16.319 l 6.59,-5.419001 c 1.044003,-0.858 2.585003,-0.706999 3.442997,0.336 0.858002,1.042999 0.708,2.584999 -0.334999,3.443001 l -6.589996,5.418999 C 48.459999,20.472999 47.91,20.655 47.362999,20.655001 Z" + fill="#f9a11d" /> + </g> + </g> + <path + id="svg_25" + d="m -70.405097,-242.94494 h -15.054009 c -2.41831,0 -4.378368,-1.96006 -4.378368,-4.37837 0,-2.41831 1.960058,-4.37837 4.378368,-4.37837 h 15.054009 c 2.4183,0 4.37837,1.96007 4.37837,4.37837 0,2.4183 -1.96007,4.37837 -4.37837,4.37837 z" + fill="#f9a11d" + style="stroke-width:1.79001" /> + </g> + <g + id="g1410" + transform="matrix(0.76524556,0,0,0.76524556,21.500704,57.255253)"> + <path + d="M 134.4,18.2 V 10 h -2.3 V 7.3 h 2.4 V 2.2 h 3.3 v 5.1 h 4.3 V 10 h -4.3 v 7.8 c 0,0.7 0.1,1.3 0.3,1.8 0.2,0.5 0.4,0.9 0.7,1.2 0.3,0.3 0.6,0.5 0.9,0.7 0.4,0.2 0.7,0.3 1,0.3 0.3,0 0.6,0.1 0.9,0.1 l 0.8,-0.1 v 3 c -0.3,0 -0.7,0.1 -1.2,0.1 -0.6,0 -1.1,0 -1.6,-0.1 -0.5,-0.1 -1.1,-0.2 -1.7,-0.5 -0.7,-0.3 -1.2,-0.6 -1.7,-1.1 -0.5,-0.5 -0.9,-1.1 -1.2,-1.9 -0.4,-1 -0.6,-1.9 -0.6,-3.1 z m -14.1,6.5 V 7 h 3.3 v 3.1 l -0.1,1.3 h 0.1 c 0.4,-1.3 1.1,-2.5 2.1,-3.3 1,-0.9 2.1,-1.3 3.5,-1.3 l 0.9,0.1 v 3.3 c -0.3,-0.1 -0.6,-0.1 -1,-0.1 -1.1,0 -2.1,0.4 -3,1.1 -0.9,0.7 -1.6,1.8 -2,3 -0.3,0.9 -0.4,2 -0.4,3.2 v 7.2 z m -18.9,-8.8 c 0,-2.8 0.8,-5 2.5,-6.7 1.7,-1.7 3.8,-2.5 6.3,-2.5 2.4,0 4.3,0.8 5.6,2.3 1.3,1.6 2,3.5 2,5.9 l -0.1,1.5 h -12.9 c 0.1,1.9 0.7,3.3 1.9,4.3 1.2,1 2.6,1.5 4.2,1.5 0.9,0 1.8,-0.2 2.7,-0.5 0.9,-0.3 1.5,-0.7 1.9,-1 l 0.6,-0.5 1.4,2.5 c -0.2,0.2 -0.5,0.4 -0.8,0.7 -0.4,0.3 -1.2,0.7 -2.3,1.1 -1.2,0.5 -2.4,0.7 -3.7,0.7 -2.7,0 -5,-0.9 -6.7,-2.6 -1.7,-1.9 -2.6,-4.1 -2.6,-6.7 z m 3.6,-2.1 h 9.4 c 0,-1.5 -0.5,-2.6 -1.3,-3.3 -0.8,-0.8 -1.8,-1.2 -3,-1.2 -1.3,0 -2.5,0.4 -3.4,1.2 -0.9,0.8 -1.4,1.9 -1.7,3.3 z m -20.5,2.1 c 0,-2.6 0.9,-4.8 2.7,-6.6 1.8,-1.8 4,-2.7 6.8,-2.7 1.3,0 2.5,0.2 3.6,0.6 1.1,0.4 1.9,0.9 2.4,1.3 l 0.7,0.6 -1.6,2.4 -0.6,-0.6 C 98.2,10.7 97.7,10.4 96.8,10 96,9.6 95.1,9.4 94.2,9.4 c -1.8,0 -3.2,0.6 -4.4,1.8 -1.2,1.2 -1.7,2.7 -1.7,4.5 0,1.8 0.6,3.3 1.8,4.5 1.2,1.2 2.7,1.8 4.5,1.8 1,0 1.9,-0.2 2.8,-0.6 0.9,-0.4 1.6,-0.8 2,-1.2 l 0.6,-0.6 1.4,2.5 -0.3,0.3 c -0.1,0.1 -0.4,0.4 -0.9,0.7 -0.4,0.3 -0.9,0.6 -1.4,0.9 -0.5,0.2 -1.2,0.5 -2,0.7 -0.8,0.2 -1.6,0.3 -2.5,0.3 -2.8,0 -5,-0.9 -6.8,-2.6 -1.9,-1.7 -2.8,-3.9 -2.8,-6.5 z M 78.6,3.5 V 0 H 82 v 3.5 z m 0.1,21.2 V 7 h 3.4 V 24.7 Z M 62,27.9 c 1.5,0.8 3.1,1.2 4.8,1.2 1.7,0 3,-0.4 4,-1.2 1,-0.8 1.5,-2.1 1.5,-3.8 v -1.3 -1.1 h -0.1 c -1.1,1.8 -2.8,2.8 -5.2,2.8 -2.4,0 -4.3,-0.9 -5.7,-2.6 -1.4,-1.7 -2.1,-3.9 -2.1,-6.5 0,-2.6 0.7,-4.7 2.1,-6.4 1.4,-1.6 3.3,-2.5 5.7,-2.5 0.8,0 1.5,0.1 2.2,0.3 0.7,0.2 1.2,0.4 1.6,0.7 0.4,0.3 0.7,0.5 1,0.8 0.3,0.3 0.5,0.5 0.6,0.7 l 0.2,0.2 h 0.1 V 8.6 7 h 3.2 v 16.9 c 0,1.4 -0.3,2.6 -0.7,3.7 -0.5,1.1 -1.2,1.9 -2,2.5 -1,0.7 -2,1.2 -3,1.5 -1,0.3 -2.1,0.5 -3.3,0.5 -2.1,0 -4.1,-0.5 -6,-1.5 z m 5.8,-6.4 c 1.4,0 2.5,-0.5 3.4,-1.4 0.9,-1 1.3,-2.5 1.3,-4.6 0,-4 -1.7,-5.9 -5,-5.9 -1.5,0 -2.7,0.5 -3.5,1.6 -0.8,1 -1.3,2.5 -1.3,4.3 0,1.9 0.5,3.4 1.4,4.5 0.9,1 2.2,1.5 3.7,1.5 z M 53.4,3.5 V 0 h 3.4 v 3.5 z m 0.1,21.2 V 7 h 3.4 V 24.7 Z M 33.8,15.9 c 0,-2.8 0.7,-5 2.2,-6.7 1.5,-1.7 3.4,-2.5 5.8,-2.5 0.8,0 1.5,0.1 2.1,0.3 0.7,0.2 1.2,0.4 1.6,0.7 0.4,0.3 0.7,0.6 1,0.8 0.3,0.3 0.5,0.5 0.6,0.7 l 0.1,0.3 h 0.1 C 47.3,9.2 47.2,8.8 47.2,8.3 V 0.1 h 3.4 V 24.7 H 47.4 V 23 21.8 h -0.1 c 0,0.1 -0.1,0.2 -0.2,0.3 -0.1,0.1 -0.3,0.4 -0.6,0.8 -0.3,0.4 -0.7,0.7 -1.1,1 -0.4,0.3 -1,0.6 -1.7,0.8 C 43,24.9 42.2,25 41.4,25 39,25 37.1,24.2 35.7,22.5 34.5,20.9 33.8,18.6 33.8,15.9 Z m 3.4,0 c 0,1.9 0.5,3.4 1.4,4.6 0.9,1.2 2.1,1.7 3.6,1.7 1.4,0 2.7,-0.5 3.6,-1.6 1,-1.1 1.5,-2.6 1.5,-4.8 0,-1.7 -0.4,-3.2 -1.3,-4.4 -0.9,-1.2 -2.1,-1.9 -3.7,-1.9 -1.4,0 -2.7,0.6 -3.6,1.7 -1,1.2 -1.5,2.7 -1.5,4.7 z" + style="fill:#1974bb" + id="path1395" /> + <path + class="st0" + d="m 31.21,18.4 c -0.5,-5.8 -4.5,-9.7 -7.6,-13.9 1.3,-1.9 4.2,-1.3 6.3,-0.9 -2.7,-1.9 -5.9,-3 -9.3,-3.3 C 14.11,0.2 8.91,4 4.11,8.2 1.21,7.3 3.21,4.2 3.21,2 c -2.5,3.4 -3.3,7.2 -3.2,11.1 0.1,3.5 1.6,6.9 3.6,10 l 4.2,4.8 c -1.4,2.3 -4.2,1.3 -6.3,0.9 3.4,2.5 7.2,3.3 11.1,3.2 3.5,-0.1 6.9,-1.6 9.9,-3.6 l 4.8,-4.2 c 1.4,1.6 1.7,4.3 0.9,6.3 2.4,-3.4 3.3,-7.6 3,-12.1 z m -4.6,0.2 c -1.2,1.5 -2.7,3.3 -2.7,3.3 -1.5,1.7 -2.8,2.5 -3.4,3 -2,1.5 -4.5,2.4 -7,2.5 h -0.6 l -2.9,-2.9 c -0.9,-1.1 -1.7,-1.6 -2.9,-3.3 -1.5,-2.1 -2.4,-4.5 -2.5,-7 v -0.8 -0.1 l 2.8,-2.5 c 3.3,-2.9 6.9,-5.5 11.4,-5.5 h 0.2 l 2.2,2.9 c 2.1,2.9 4.9,5.7 5.3,9.7 0,0 0.1,0.6 0.1,0.7 z" + style="fill:#1974bb" + id="path1397" /> + <path + d="M 144.9,5.4 V 1.6 h 1.2 c 0.3,0 0.6,0 0.7,0.1 0.2,0.1 0.4,0.2 0.5,0.4 0.1,0.2 0.2,0.4 0.2,0.7 0,0.2 -0.1,0.5 -0.2,0.6 -0.1,0.2 -0.3,0.3 -0.5,0.4 0,0 0.1,0.1 0.1,0.2 l 0.8,1.5 h -0.6 L 146.3,4 h -0.8 v 1.5 h -0.6 z m 0.6,-2 h 0.8 c 0.2,0 0.4,-0.1 0.5,-0.2 C 146.9,3.1 147,2.9 147,2.7 147,2.4 146.9,2.2 146.7,2.1 146.6,2 146.4,2 146.2,2 h -0.6 z M 146.1,0 c -1.9,0 -3.5,1.5 -3.5,3.5 0,1.9 1.5,3.5 3.5,3.5 1.9,0 3.5,-1.6 3.5,-3.5 C 149.6,1.6 148,0 146.1,0 m 0,6.3 c -1.5,0 -2.8,-1.2 -2.8,-2.8 0,-1.5 1.2,-2.8 2.8,-2.8 1.5,0 2.8,1.2 2.8,2.8 0,1.5 -1.2,2.8 -2.8,2.8" + style="fill:#1974bb" + id="path1399" /> + </g> + <g + style="fill:none" + id="g1819" + transform="matrix(0.44271548,0,0,0.44271548,144.46137,60.977189)"> + <path + d="m 47.7711,29.7111 c 0,5.2792 -4.0692,9.1694 -9.0631,9.1694 -4.9938,0 -9.063,-3.8902 -9.063,-9.1694 0,-5.3164 4.0692,-9.1694 9.063,-9.1694 4.9939,0 9.0631,3.853 9.0631,9.1694 z m -3.9674,0 c 0,-3.299 -2.3584,-5.5562 -5.0957,-5.5562 -2.7372,0 -5.0956,2.2572 -5.0956,5.5562 0,3.2659 2.3584,5.5562 5.0956,5.5562 2.7373,0 5.0957,-2.2944 5.0957,-5.5562 z" + fill="#ea4335" + id="path1795" /> + <path + d="m 67.3228,29.7111 c 0,5.2792 -4.0692,9.1694 -9.063,9.1694 -4.9939,0 -9.0631,-3.8902 -9.0631,-9.1694 0,-5.3123 4.0692,-9.1694 9.0631,-9.1694 4.9938,0 9.063,3.853 9.063,9.1694 z m -3.9674,0 c 0,-3.299 -2.3584,-5.5562 -5.0956,-5.5562 -2.7373,0 -5.0957,2.2572 -5.0957,5.5562 0,3.2659 2.3584,5.5562 5.0957,5.5562 2.7372,0 5.0956,-2.2944 5.0956,-5.5562 z" + fill="#fbbc05" + id="path1797" /> + <path + d="m 86.0599,21.0957 v 16.4619 c 0,6.7716 -3.9348,9.5373 -8.5865,9.5373 -4.3788,0 -7.0142,-2.9724 -8.0081,-5.4032 l 3.4542,-1.4594 c 0.615,1.4924 2.1222,3.2535 4.5498,3.2535 2.9776,0 4.8228,-1.8644 4.8228,-5.3743 v -1.3187 h -0.1385 c -0.888,1.112 -2.5988,2.0835 -4.7576,2.0835 -4.5173,0 -8.6557,-3.9935 -8.6557,-9.1321 0,-5.1759 4.1384,-9.2025 8.6557,-9.2025 2.1548,0 3.8656,0.9716 4.7576,2.0505 h 0.1385 v -1.4924 h 3.7678 z m -3.4868,8.6485 c 0,-3.2287 -2.1221,-5.5893 -4.8227,-5.5893 -2.7373,0 -5.0305,2.3606 -5.0305,5.5893 0,3.1956 2.2932,5.5231 5.0305,5.5231 2.7006,0 4.8227,-2.3275 4.8227,-5.5231 z" + fill="#4285f4" + id="path1799" /> + <path + d="M 92.2716,11.447 V 38.3184 H 88.402 V 11.447 Z" + fill="#34a853" + id="path1801" /> + <path + d="m 107.351,32.7291 3.079,2.0836 c -0.994,1.4924 -3.389,4.0638 -7.527,4.0638 -5.1325,0 -8.9654,-4.0266 -8.9654,-9.1694 0,-5.4529 3.8655,-9.1694 8.5214,-9.1694 4.688,0 6.981,3.7868 7.731,5.8332 l 0.411,1.0418 -12.0769,5.0766 c 0.9246,1.8397 2.3629,2.7781 4.3789,2.7781 2.02,0 3.421,-1.0087 4.448,-2.5383 z m -9.4787,-3.299 8.0737,-3.4023 c -0.444,-1.1452 -1.78,-1.943 -3.353,-1.943 -2.016,0 -4.8225,1.8065 -4.7207,5.3453 z" + fill="#ea4335" + id="path1803" /> + <path + d="m 14.9975,27.3259 v -3.8902 h 12.9164 c 0.1262,0.678 0.1914,1.48 0.1914,2.3482 0,2.9186 -0.7861,6.5277 -3.3197,9.0991 -2.4643,2.6044 -5.613,3.9935 -9.784,3.9935 -7.73109,0 -14.232038,-6.3913 -14.232038,-14.2378 0,-7.8464 6.500948,-14.2377 14.232038,-14.2377 4.2769,0 7.3237,1.7032 9.6129,3.9232 l -2.7046,2.7451 c -1.6416,-1.5627 -3.8656,-2.7781 -6.9124,-2.7781 -5.64555,0 -10.06098,4.6177 -10.06098,10.3475 0,5.7299 4.41543,10.3476 10.06098,10.3476 3.6619,0 5.7474,-1.4924 7.0834,-2.8484 1.0835,-1.0996 1.7964,-2.6706 2.0774,-4.8162 z" + fill="#4285f4" + id="path1805" /> + </g> + </g> + <style + type="text/css" + id="style1254"> + .st0{fill:#091B2A;} + .st1{fill:#00AF73;} +</style> +</svg> diff --git a/slides/2022-kll/img/cas/digicert.svg b/slides/2022-kll/img/cas/digicert.svg new file mode 100644 index 0000000..32744c3 --- /dev/null +++ b/slides/2022-kll/img/cas/digicert.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="1024" height="230" version="1.1" viewBox="-.963 -.963 151.5 34.03" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> +<title>DigiCert logo</title> +<desc>A certificate authority that issue TLS certificates</desc> + <metadata> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title/> + </cc:Work> + </rdf:RDF> + </metadata> + <path d="m134.4 18.2v-8.2h-2.3v-2.7h2.4v-5.1h3.3v5.1h4.3v2.7h-4.3v7.8c0 0.7 0.1 1.3 0.3 1.8s0.4 0.9 0.7 1.2 0.6 0.5 0.9 0.7c0.4 0.2 0.7 0.3 1 0.3s0.6 0.1 0.9 0.1l0.8-0.1v3c-0.3 0-0.7 0.1-1.2 0.1-0.6 0-1.1 0-1.6-0.1s-1.1-0.2-1.7-0.5c-0.7-0.3-1.2-0.6-1.7-1.1s-0.9-1.1-1.2-1.9c-0.4-1-0.6-1.9-0.6-3.1zm-14.1 6.5v-17.7h3.3v3.1l-0.1 1.3h0.1c0.4-1.3 1.1-2.5 2.1-3.3 1-0.9 2.1-1.3 3.5-1.3l0.9 0.1v3.3c-0.3-0.1-0.6-0.1-1-0.1-1.1 0-2.1 0.4-3 1.1s-1.6 1.8-2 3c-0.3 0.9-0.4 2-0.4 3.2v7.2l-3.4 0.1zm-18.9-8.8c0-2.8 0.8-5 2.5-6.7s3.8-2.5 6.3-2.5c2.4 0 4.3 0.8 5.6 2.3 1.3 1.6 2 3.5 2 5.9l-0.1 1.5h-12.9c0.1 1.9 0.7 3.3 1.9 4.3s2.6 1.5 4.2 1.5c0.9 0 1.8-0.2 2.7-0.5s1.5-0.7 1.9-1l0.6-0.5 1.4 2.5c-0.2 0.2-0.5 0.4-0.8 0.7-0.4 0.3-1.2 0.7-2.3 1.1-1.2 0.5-2.4 0.7-3.7 0.7-2.7 0-5-0.9-6.7-2.6-1.7-1.9-2.6-4.1-2.6-6.7zm3.6-2.1h9.4c0-1.5-0.5-2.6-1.3-3.3-0.8-0.8-1.8-1.2-3-1.2-1.3 0-2.5 0.4-3.4 1.2s-1.4 1.9-1.7 3.3zm-20.5 2.1c0-2.6 0.9-4.8 2.7-6.6s4-2.7 6.8-2.7c1.3 0 2.5 0.2 3.6 0.6s1.9 0.9 2.4 1.3l0.7 0.6-1.6 2.4-0.6-0.6c-0.3-0.2-0.8-0.5-1.7-0.9-0.8-0.4-1.7-0.6-2.6-0.6-1.8 0-3.2 0.6-4.4 1.8s-1.7 2.7-1.7 4.5 0.6 3.3 1.8 4.5 2.7 1.8 4.5 1.8c1 0 1.9-0.2 2.8-0.6s1.6-0.8 2-1.2l0.6-0.6 1.4 2.5-0.3 0.3c-0.1 0.1-0.4 0.4-0.9 0.7-0.4 0.3-0.9 0.6-1.4 0.9-0.5 0.2-1.2 0.5-2 0.7s-1.6 0.3-2.5 0.3c-2.8 0-5-0.9-6.8-2.6-1.9-1.7-2.8-3.9-2.8-6.5zm-5.9-12.4v-3.5h3.4v3.5h-3.4zm0.1 21.2v-17.7h3.4v17.7h-3.4zm-16.7 3.2c1.5 0.8 3.1 1.2 4.8 1.2s3-0.4 4-1.2 1.5-2.1 1.5-3.8v-1.3-1.1h-0.1c-1.1 1.8-2.8 2.8-5.2 2.8s-4.3-0.9-5.7-2.6-2.1-3.9-2.1-6.5 0.7-4.7 2.1-6.4c1.4-1.6 3.3-2.5 5.7-2.5 0.8 0 1.5 0.1 2.2 0.3s1.2 0.4 1.6 0.7 0.7 0.5 1 0.8 0.5 0.5 0.6 0.7l0.2 0.2h0.1v-0.6-1.6h3.2v16.9c0 1.4-0.3 2.6-0.7 3.7-0.5 1.1-1.2 1.9-2 2.5-1 0.7-2 1.2-3 1.5s-2.1 0.5-3.3 0.5c-2.1 0-4.1-0.5-6-1.5l1.1-2.7zm5.8-6.4c1.4 0 2.5-0.5 3.4-1.4 0.9-1 1.3-2.5 1.3-4.6 0-4-1.7-5.9-5-5.9-1.5 0-2.7 0.5-3.5 1.6-0.8 1-1.3 2.5-1.3 4.3 0 1.9 0.5 3.4 1.4 4.5 0.9 1 2.2 1.5 3.7 1.5zm-14.4-18v-3.5h3.4v3.5h-3.4zm0.1 21.2v-17.7h3.4v17.7h-3.4zm-19.7-8.8c0-2.8 0.7-5 2.2-6.7s3.4-2.5 5.8-2.5c0.8 0 1.5 0.1 2.1 0.3 0.7 0.2 1.2 0.4 1.6 0.7s0.7 0.6 1 0.8c0.3 0.3 0.5 0.5 0.6 0.7l0.1 0.3h0.1c0-0.3-0.1-0.7-0.1-1.2v-8.2h3.4v24.6h-3.2v-1.7-1.2h-0.1c0 0.1-0.1 0.2-0.2 0.3s-0.3 0.4-0.6 0.8-0.7 0.7-1.1 1-1 0.6-1.7 0.8-1.5 0.3-2.3 0.3c-2.4 0-4.3-0.8-5.7-2.5-1.2-1.6-1.9-3.9-1.9-6.6zm3.4 0c0 1.9 0.5 3.4 1.4 4.6s2.1 1.7 3.6 1.7c1.4 0 2.7-0.5 3.6-1.6 1-1.1 1.5-2.6 1.5-4.8 0-1.7-0.4-3.2-1.3-4.4s-2.1-1.9-3.7-1.9c-1.4 0-2.7 0.6-3.6 1.7-1 1.2-1.5 2.7-1.5 4.7z" style="fill:#1974bb"/> + <path class="st0" d="m31.21 18.4c-0.5-5.8-4.5-9.7-7.6-13.9 1.3-1.9 4.2-1.3 6.3-0.9-2.7-1.9-5.9-3-9.3-3.3-6.5-0.1-11.7 3.7-16.5 7.9-2.9-0.9-0.9-4-0.9-6.2-2.5 3.4-3.3 7.2-3.2 11.1 0.1 3.5 1.6 6.9 3.6 10l4.2 4.8c-1.4 2.3-4.2 1.3-6.3 0.9 3.4 2.5 7.2 3.3 11.1 3.2 3.5-0.1 6.9-1.6 9.9-3.6l4.8-4.2c1.4 1.6 1.7 4.3 0.9 6.3 2.4-3.4 3.3-7.6 3-12.1zm-4.6 0.2c-1.2 1.5-2.7 3.3-2.7 3.3-1.5 1.7-2.8 2.5-3.4 3-2 1.5-4.5 2.4-7 2.5h-0.6l-2.9-2.9c-0.9-1.1-1.7-1.6-2.9-3.3-1.5-2.1-2.4-4.5-2.5-7v-0.8-0.1l2.8-2.5c3.3-2.9 6.9-5.5 11.4-5.5h0.2l2.2 2.9c2.1 2.9 4.9 5.7 5.3 9.7 0 0 0.1 0.6 0.1 0.7z" style="fill:#1974bb"/> + <path d="m144.9 5.4v-3.8h1.2c0.3 0 0.6 0 0.7 0.1 0.2 0.1 0.4 0.2 0.5 0.4s0.2 0.4 0.2 0.7c0 0.2-0.1 0.5-0.2 0.6-0.1 0.2-0.3 0.3-0.5 0.4 0 0 0.1 0.1 0.1 0.2l0.8 1.5h-0.6l-0.8-1.5h-0.8v1.5h-0.6v-0.1zm0.6-2h0.8c0.2 0 0.4-0.1 0.5-0.2s0.2-0.3 0.2-0.5c0-0.3-0.1-0.5-0.3-0.6-0.1-0.1-0.3-0.1-0.5-0.1h-0.6l-0.1 1.4zm0.6-3.4c-1.9 0-3.5 1.5-3.5 3.5 0 1.9 1.5 3.5 3.5 3.5 1.9 0 3.5-1.6 3.5-3.5s-1.6-3.5-3.5-3.5m0 6.3c-1.5 0-2.8-1.2-2.8-2.8 0-1.5 1.2-2.8 2.8-2.8 1.5 0 2.8 1.2 2.8 2.8 0 1.5-1.2 2.8-2.8 2.8" style="fill:#1974bb"/> +</svg> diff --git a/slides/2022-kll/img/cas/google.svg b/slides/2022-kll/img/cas/google.svg new file mode 100644 index 0000000..00fc2b3 --- /dev/null +++ b/slides/2022-kll/img/cas/google.svg @@ -0,0 +1,8 @@ +<svg width="111" height="55" viewBox="0 0 111 55" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M47.7711 29.7111C47.7711 34.9903 43.7019 38.8805 38.708 38.8805C33.7142 38.8805 29.645 34.9903 29.645 29.7111C29.645 24.3947 33.7142 20.5417 38.708 20.5417C43.7019 20.5417 47.7711 24.3947 47.7711 29.7111ZM43.8037 29.7111C43.8037 26.4121 41.4453 24.1549 38.708 24.1549C35.9708 24.1549 33.6124 26.4121 33.6124 29.7111C33.6124 32.977 35.9708 35.2673 38.708 35.2673C41.4453 35.2673 43.8037 32.9729 43.8037 29.7111Z" fill="#EA4335"/> +<path d="M67.3228 29.7111C67.3228 34.9903 63.2536 38.8805 58.2598 38.8805C53.2659 38.8805 49.1967 34.9903 49.1967 29.7111C49.1967 24.3988 53.2659 20.5417 58.2598 20.5417C63.2536 20.5417 67.3228 24.3947 67.3228 29.7111ZM63.3554 29.7111C63.3554 26.4121 60.997 24.1549 58.2598 24.1549C55.5225 24.1549 53.1641 26.4121 53.1641 29.7111C53.1641 32.977 55.5225 35.2673 58.2598 35.2673C60.997 35.2673 63.3554 32.9729 63.3554 29.7111Z" fill="#FBBC05"/> +<path d="M86.0599 21.0957V37.5576C86.0599 44.3292 82.1251 47.0949 77.4734 47.0949C73.0946 47.0949 70.4592 44.1225 69.4653 41.6917L72.9195 40.2323C73.5345 41.7247 75.0417 43.4858 77.4693 43.4858C80.4469 43.4858 82.2921 41.6214 82.2921 38.1115V36.7928H82.1536C81.2656 37.9048 79.5548 38.8763 77.396 38.8763C72.8787 38.8763 68.7403 34.8828 68.7403 29.7442C68.7403 24.5683 72.8787 20.5417 77.396 20.5417C79.5508 20.5417 81.2616 21.5133 82.1536 22.5922H82.2921V21.0998H86.0599V21.0957ZM82.5731 29.7442C82.5731 26.5155 80.451 24.1549 77.7504 24.1549C75.0131 24.1549 72.7199 26.5155 72.7199 29.7442C72.7199 32.9398 75.0131 35.2673 77.7504 35.2673C80.451 35.2673 82.5731 32.9398 82.5731 29.7442Z" fill="#4285F4"/> +<path d="M92.2716 11.447V38.3184H88.402V11.447H92.2716Z" fill="#34A853"/> +<path d="M107.351 32.7291L110.43 34.8127C109.436 36.3051 107.041 38.8765 102.903 38.8765C97.7705 38.8765 93.9376 34.8499 93.9376 29.7071C93.9376 24.2542 97.8031 20.5377 102.459 20.5377C107.147 20.5377 109.44 24.3245 110.19 26.3709L110.601 27.4127L98.5241 32.4893C99.4487 34.329 100.887 35.2674 102.903 35.2674C104.923 35.2674 106.324 34.2587 107.351 32.7291ZM97.8723 29.4301L105.946 26.0278C105.502 24.8826 104.166 24.0848 102.593 24.0848C100.577 24.0848 97.7705 25.8913 97.8723 29.4301V29.4301Z" fill="#EA4335"/> +<path d="M14.9975 27.3259V23.4357H27.9139C28.0401 24.1137 28.1053 24.9157 28.1053 25.7839C28.1053 28.7025 27.3192 32.3116 24.7856 34.883C22.3213 37.4874 19.1726 38.8765 15.0016 38.8765C7.27051 38.8765 0.769562 32.4852 0.769562 24.6387C0.769562 16.7923 7.27051 10.401 15.0016 10.401C19.2785 10.401 22.3253 12.1042 24.6145 14.3242L21.9099 17.0693C20.2683 15.5066 18.0443 14.2912 14.9975 14.2912C9.35195 14.2912 4.93652 18.9089 4.93652 24.6387C4.93652 30.3686 9.35195 34.9863 14.9975 34.9863C18.6594 34.9863 20.7449 33.4939 22.0809 32.1379C23.1644 31.0383 23.8773 29.4673 24.1583 27.3217L14.9975 27.3259V27.3259Z" fill="#4285F4"/> +</svg> diff --git a/slides/2022-kll/img/cas/le.svg b/slides/2022-kll/img/cas/le.svg new file mode 100644 index 0000000..8542216 --- /dev/null +++ b/slides/2022-kll/img/cas/le.svg @@ -0,0 +1,38 @@ +<?xml version="1.0"?>
+<svg width="339" height="81" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+
+ <g>
+ <title>Layer 1</title>
+ <g id="svg_1">
+ <g id="svg_2">
+ <g id="svg_3">
+ <path id="svg_4" d="m76.621002,68.878998l0,-31.406998l7.629997,0l0,24.796997l12.153999,0l0,6.609001l-19.783997,0l0,0.000999z" fill="#2C3C69"/>
+ <path id="svg_5" d="m121.546997,58.098999c0,0.295998 0,0.592003 0,0.888s-0.014999,0.576004 -0.043991,0.843002l-16.013008,0c0.059006,0.620995 0.244003,1.182999 0.555,1.685997s0.709999,0.938004 1.196999,1.308998c0.488007,0.370003 1.035004,0.658005 1.642006,0.864006c0.604996,0.208 1.233994,0.310997 1.884995,0.310997c1.153,0 2.130005,-0.213997 2.928001,-0.642998c0.799004,-0.429001 1.449005,-0.983002 1.952003,-1.664001l5.056992,3.194c-1.034988,1.507996 -2.401993,2.668999 -4.102997,3.482002c-1.700996,0.811996 -3.675995,1.219994 -5.921997,1.219994c-1.656998,0 -3.223999,-0.259995 -4.702003,-0.775993c-1.478996,-0.518005 -2.771996,-1.271004 -3.881996,-2.263c-1.108002,-0.990005 -1.981003,-2.210007 -2.616997,-3.659004s-0.953003,-3.104996 -0.953003,-4.969002c0,-1.802994 0.309998,-3.437996 0.931,-4.900997s1.463997,-2.706001 2.528999,-3.726002c1.064003,-1.021 2.32,-1.811996 3.771004,-2.373997c1.447998,-0.561001 3.015999,-0.843002 4.700996,-0.843002c1.625999,0 3.120003,0.274002 4.480003,0.820999s2.528,1.338001 3.504997,2.373001c0.975998,1.035 1.735992,2.292 2.283997,3.771c0.546005,1.478001 0.819,3.165001 0.819,5.056zm-6.697998,-2.794998c0,-1.153 -0.362,-2.144001 -1.086998,-2.972c-0.724998,-0.827 -1.812004,-1.242001 -3.260002,-1.242001c-0.709999,0 -1.360001,0.111 -1.951996,0.333s-1.108002,0.525002 -1.553001,0.909c-0.443001,0.384998 -0.798004,0.835999 -1.064003,1.354c-0.265999,0.517998 -0.414001,1.057999 -0.443001,1.618l9.359001,0z" fill="#2C3C69"/>
+ <path id="svg_6" d="m133.167999,52.200001l0,8.461002c0,1.038994 0.199997,1.816994 0.600006,2.337997c0.397995,0.519997 1.11499,0.778 2.151001,0.778c0.353989,0 0.730988,-0.028 1.130997,-0.088997c0.399002,-0.059006 0.731003,-0.147003 0.998001,-0.266006l0.088989,5.323006c-0.502991,0.176994 -1.138992,0.332001 -1.906998,0.465996c-0.769989,0.133003 -1.537994,0.199005 -2.306992,0.199005c-1.479004,0 -2.722,-0.186005 -3.727005,-0.556007c-1.005997,-0.369995 -1.811996,-0.903999 -2.416992,-1.601997c-0.60701,-0.695999 -1.043015,-1.526001 -1.309006,-2.489998c-0.266998,-0.962997 -0.399002,-2.038002 -0.399002,-3.223999l0,-9.338001l-3.548996,0l0,-5.412003l3.503998,0l0,-5.810997l7.141998,0l0,5.810997l5.190002,0l0,5.412003l-5.190002,0z" fill="#2C3C69"/>
+ <path id="svg_7" d="m161.912994,53.307999c-0.59201,-0.560997 -1.286011,-1.034 -2.085007,-1.418999c-0.798004,-0.383999 -1.640991,-0.577 -2.528,-0.577c-0.681,0 -1.30899,0.133999 -1.884995,0.398998c-0.576996,0.267002 -0.865005,0.726002 -0.865005,1.375c0,0.621002 0.317001,1.064003 0.953003,1.331001s1.664001,0.562 3.082993,0.887001c0.828003,0.177998 1.664001,0.43 2.507004,0.754997s1.604004,0.754005 2.283997,1.286003c0.680008,0.531998 1.227005,1.182999 1.642014,1.951996c0.412994,0.769005 0.620987,1.686005 0.620987,2.75c0,1.391006 -0.280991,2.565002 -0.842987,3.526001c-0.562012,0.960999 -1.294006,1.737 -2.196014,2.329002s-1.914993,1.019997 -3.037994,1.286003c-1.123993,0.266998 -2.248001,0.398994 -3.371002,0.398994c-1.804993,0 -3.570999,-0.287994 -5.302002,-0.864998c-1.728989,-0.575996 -3.17099,-1.427002 -4.32399,-2.551003l4.080994,-4.303001c0.649002,0.710007 1.447998,1.302002 2.395004,1.774002c0.945999,0.473999 1.951996,0.709999 3.016998,0.709999c0.591995,0 1.175995,-0.140999 1.751999,-0.421997c0.576996,-0.279999 0.865005,-0.776001 0.865005,-1.485001c0,-0.681 -0.354004,-1.182999 -1.064011,-1.509003c-0.709991,-0.324997 -1.817993,-0.664993 -3.326996,-1.020996c-0.768997,-0.177002 -1.537994,-0.413002 -2.306992,-0.709c-0.770004,-0.295998 -1.457001,-0.694 -2.062012,-1.197998c-0.605988,-0.502007 -1.10199,-1.123001 -1.485992,-1.863007c-0.384003,-0.737995 -0.576004,-1.625996 -0.576004,-2.660995c0,-1.331001 0.279999,-2.462002 0.843002,-3.394001c0.561996,-0.931999 1.285995,-1.692001 2.173996,-2.284c0.887009,-0.591999 1.87001,-1.027 2.949005,-1.308998s2.151001,-0.422001 3.216995,-0.422001c1.654999,0 3.274002,0.259998 4.856003,0.776001c1.582001,0.517998 2.921005,1.293999 4.014999,2.328999l-3.994995,4.127998z" fill="#2C3C69"/>
+ <path id="svg_8" d="m179.567993,68.878998l0,-31.406998l21.113998,0l0,6.388l-13.794998,0l0,5.944l13.041,0l0,6.077l-13.041,0l0,6.521l14.593994,0l0,6.476997l-21.912994,0z" fill="#2C3C69"/>
+ <path id="svg_9" d="m220.675003,68.878998l0,-12.065994c0,-0.621002 -0.053009,-1.212002 -0.154999,-1.774002c-0.104004,-0.562 -0.274002,-1.057003 -0.511002,-1.486c-0.237,-0.428001 -0.569,-0.769001 -0.998001,-1.021c-0.429001,-0.25 -0.968994,-0.377003 -1.619003,-0.377003s-1.220001,0.127003 -1.707993,0.377003c-0.487,0.251999 -0.895004,0.599998 -1.220001,1.042999s-0.569,0.953999 -0.731003,1.529999c-0.162994,0.577 -0.244003,1.175999 -0.244003,1.797001l0,11.976997l-7.319,0l0,-22.091l7.053009,0l0,3.061001l0.088989,0c0.266998,-0.473 0.613007,-0.938 1.042999,-1.396c0.428009,-0.459 0.932007,-0.850998 1.508011,-1.175999c0.576996,-0.325001 1.204987,-0.591999 1.885986,-0.799c0.680008,-0.206001 1.404007,-0.311001 2.173004,-0.311001c1.479004,0 2.735001,0.266998 3.770996,0.799s1.87001,1.220001 2.507004,2.062c0.636002,0.842999 1.094009,1.812 1.375,2.904999c0.279999,1.095001 0.421005,2.189003 0.421005,3.283001l0,13.661999l-7.320999,0l0,0.000999z" fill="#2C3C69"/>
+ <path id="svg_10" d="m246.713013,53.929001c-0.415009,-0.532001 -0.977005,-0.959999 -1.686005,-1.285999c-0.709991,-0.325001 -1.436005,-0.488003 -2.173996,-0.488003c-0.770004,0 -1.464005,0.155003 -2.085007,0.466s-1.153,0.726002 -1.597,1.242001c-0.442993,0.518002 -0.791992,1.117001 -1.042999,1.797001c-0.250992,0.681004 -0.376999,1.404003 -0.376999,2.174c0,0.768997 0.117996,1.493004 0.354996,2.173004c0.236008,0.681 0.583008,1.279999 1.042007,1.796997c0.457993,0.517998 1.005005,0.924995 1.641998,1.220001c0.636002,0.295998 1.352997,0.443001 2.151001,0.443001c0.738007,0 1.470993,-0.139999 2.195007,-0.421005s1.30899,-0.687996 1.751984,-1.220001l4.037018,4.924004c-0.917023,0.887001 -2.101013,1.582001 -3.549011,2.084999c-1.44899,0.501999 -2.987,0.753998 -4.612991,0.753998c-1.74501,0 -3.374008,-0.266998 -4.887009,-0.798996c-1.511993,-0.531998 -2.826004,-1.308998 -3.940994,-2.329002c-1.115997,-1.019997 -1.992996,-2.253998 -2.632996,-3.702995s-0.959,-3.090004 -0.959,-4.924004c0,-1.804001 0.318985,-3.431 0.959,-4.880001c0.639999,-1.447998 1.516998,-2.683998 2.632996,-3.703999c1.11499,-1.021 2.429993,-1.804001 3.940994,-2.351002c1.513,-0.546997 3.126999,-0.820999 4.843002,-0.820999c0.798004,0 1.589005,0.074001 2.373001,0.223c0.783005,0.147003 1.536987,0.348 2.261993,0.599003s1.390015,0.562 1.996002,0.931999s1.132019,0.776001 1.575012,1.219997l-4.212006,4.877003z" fill="#2C3C69"/>
+ <path id="svg_11" d="m268.032013,52.776001c-0.325989,-0.089001 -0.644012,-0.146999 -0.95401,-0.177002s-0.613983,-0.044998 -0.908997,-0.044998c-0.975983,0 -1.796997,0.177998 -2.462006,0.530998c-0.664978,0.354 -1.196991,0.781002 -1.596985,1.283001c-0.399017,0.500999 -0.688019,1.047001 -0.865021,1.636997s-0.265991,1.105003 -0.265991,1.548004l0,11.324997l-7.274994,0l0,-22.063999l7.009003,0l0,3.194l0.088989,0c0.562012,-1.132 1.359009,-2.055 2.395996,-2.77c1.034027,-0.715 2.232025,-1.071999 3.593018,-1.071999c0.294983,0 0.583984,0.015999 0.86499,0.044998c0.279999,0.029003 0.51001,0.074001 0.688019,0.133003l-0.312012,6.431999z" fill="#2C3C69"/>
+ <path id="svg_12" d="m285.122009,72.206001c-0.442993,1.153 -0.938995,2.181 -1.485992,3.083c-0.546997,0.901001 -1.197021,1.669998 -1.951019,2.306999c-0.753998,0.636002 -1.641998,1.114998 -2.661987,1.441002c-1.019989,0.324997 -2.226013,0.487999 -3.61499,0.487999c-0.681,0 -1.382996,-0.044998 -2.106018,-0.134003c-0.725983,-0.088997 -1.354004,-0.207001 -1.885986,-0.353996l0.798981,-6.121002c0.354004,0.116997 0.746002,0.213997 1.176025,0.288002c0.427979,0.072998 0.819977,0.110001 1.174988,0.110001c1.123993,0 1.937012,-0.259003 2.440002,-0.776001c0.501984,-0.518005 0.931,-1.249001 1.286011,-2.195l0.709991,-1.818001l-9.22699,-21.736l8.072998,0l4.923981,14.195l0.132996,0l4.391998,-14.195l7.718018,0l-9.893005,25.417z" fill="#2C3C69"/>
+ <path id="svg_13" d="m321.496002,57.745003c0,1.537994 -0.237,3.016998 -0.709991,4.435997c-0.473999,1.419998 -1.161011,2.668999 -2.062012,3.748001c-0.902008,1.080002 -2.003998,1.945 -3.304993,2.596001c-1.302002,0.649002 -2.779999,0.975998 -4.437012,0.975998c-1.359985,0 -2.645996,-0.273003 -3.859009,-0.82s-2.15799,-1.293999 -2.838989,-2.239998l-0.087982,0l0,13.085999l-7.275024,0l0,-32.739002l6.920013,0l0,2.706001l0.132996,0c0.681,-0.887001 1.618988,-1.662998 2.816986,-2.328999c1.197021,-0.665001 2.609009,-0.998001 4.236023,-0.998001c1.596985,0 3.044983,0.311001 4.346985,0.931999c1.300995,0.621002 2.402008,1.464001 3.304993,2.528s1.597015,2.299999 2.085022,3.704002c0.488007,1.404999 0.731995,2.876999 0.731995,4.414001zm-7.053009,0c0,-0.709999 -0.110016,-1.403999 -0.332001,-2.085003c-0.222015,-0.68 -0.548004,-1.278999 -0.97699,-1.797001c-0.429016,-0.516998 -0.969025,-0.938 -1.619019,-1.264s-1.403992,-0.487999 -2.261993,-0.487999c-0.828003,0 -1.567993,0.162998 -2.217987,0.487999c-0.651001,0.325001 -1.206024,0.754002 -1.664001,1.285999c-0.459015,0.532001 -0.813019,1.139 -1.064026,1.818001c-0.251984,0.681004 -0.376984,1.375004 -0.376984,2.085003s0.125,1.404999 0.376984,2.084999c0.251007,0.681 0.605011,1.285995 1.064026,1.818001c0.457977,0.531998 1.013,0.961998 1.664001,1.286995c0.648987,0.325005 1.389984,0.487 2.217987,0.487c0.856995,0 1.610992,-0.161995 2.261993,-0.487s1.190002,-0.754997 1.619019,-1.286995s0.754974,-1.146004 0.97699,-1.841003c0.221008,-0.693001 0.332001,-1.394997 0.332001,-2.104996z" fill="#2C3C69"/>
+ <path id="svg_14" d="m333.118011,52.200001l0,8.461002c0,1.038994 0.200012,1.816994 0.600006,2.337997c0.39798,0.519997 1.11499,0.778 2.151001,0.778c0.354004,0 0.730988,-0.028 1.130981,-0.088997c0.399017,-0.059006 0.731018,-0.147003 0.998016,-0.266006l0.088989,5.323006c-0.502991,0.176994 -1.139008,0.332001 -1.906982,0.465996c-0.77002,0.133003 -1.538025,0.199005 -2.307007,0.199005c-1.479004,0 -2.722015,-0.186005 -3.72702,-0.556007c-1.005981,-0.369995 -1.811981,-0.903999 -2.416992,-1.601997c-0.606995,-0.695999 -1.042999,-1.526001 -1.30899,-2.489998c-0.266998,-0.962997 -0.399017,-2.038002 -0.399017,-3.223999l0,-9.338001l-3.548981,0l0,-5.412003l3.503998,0l0,-5.810997l7.141998,0l0,5.810997l5.190002,0l0,5.412003l-5.190002,0z" fill="#2C3C69"/>
+ </g>
+ </g>
+ <path id="svg_15" d="m145.009995,36.869999c-2.182999,0 -3.891998,1.573002 -3.891998,3.582001c0,2.116001 1.438995,3.536999 3.582001,3.536999c0.182999,0 0.355988,-0.016998 0.518997,-0.049999c-0.343002,1.566002 -1.852005,2.690002 -3.278,2.915001l-0.290009,0.046001l0,3.376999l0.376007,-0.035999c1.729996,-0.165001 3.438995,-0.951 4.690994,-2.157001c1.632004,-1.572998 2.49501,-3.843998 2.49501,-6.568001c0,-2.691998 -1.76799,-4.646 -4.203003,-4.646z" fill="#2C3C69"/>
+ </g>
+ <g id="svg_16">
+ <path id="svg_17" d="m46.488998,37.568001l-8.039997,0l0,-4.128002c0,-3.296997 -2.683002,-5.979 -5.98,-5.979c-3.297001,0 -5.979,2.683002 -5.979,5.979l0,4.128002l-8.040001,0l0,-4.128002c0,-7.73 6.288998,-14.019999 14.02,-14.019999s14.02,6.289 14.02,14.019999l0,4.128002l-0.001003,0z" fill="#F9A11D"/>
+ </g>
+ <path id="svg_18" d="m49.731998,37.568001l-34.524998,0c-1.474001,0 -2.68,1.205997 -2.68,2.68l0,25.540001c0,1.473999 1.205999,2.68 2.68,2.68l34.524998,0c1.474003,0 2.68,-1.206001 2.68,-2.68l0,-25.540001c0,-1.474003 -1.205997,-2.68 -2.68,-2.68zm-15.512997,16.769001l0,3.460995c0,0.966003 -0.784,1.749001 -1.749001,1.749001s-1.749001,-0.783997 -1.749001,-1.749001l0,-3.459995c-1.076,-0.611 -1.803001,-1.764 -1.803001,-3.09c0,-1.962002 1.591,-3.552002 3.552002,-3.552002c1.961998,0 3.551998,1.591 3.551998,3.552002c0,1.325001 -0.727001,2.478001 -1.802998,3.089001z" fill="#2C3C69"/>
+ <path id="svg_19" d="m11.707001,33.759998l-8.331,0c-1.351001,0 -2.446,-1.094997 -2.446,-2.445999s1.094999,-2.445999 2.446,-2.445999l8.331,0c1.351,0 2.445999,1.095001 2.445999,2.445999s-1.096001,2.445999 -2.445999,2.445999z" fill="#F9A11D"/>
+ <path id="svg_20" d="m17.575001,20.655001c-0.546001,0 -1.097,-0.182001 -1.552,-0.557001l-6.59,-5.418999c-1.043001,-0.858002 -1.194,-2.399 -0.335001,-3.443001c0.858,-1.042999 2.399,-1.194 3.443001,-0.336l6.59,5.419001c1.042999,0.858 1.194,2.399 0.334999,3.442999c-0.483,0.589001 -1.184,0.893002 -1.890999,0.893002z" fill="#F9A11D"/>
+ <path id="svg_21" d="m32.469002,14.895c-1.351002,0 -2.446003,-1.095001 -2.446003,-2.446001l0,-8.396999c0,-1.351 1.095001,-2.446 2.446003,-2.446s2.445999,1.095 2.445999,2.446l0,8.396999c0,1.351 -1.095001,2.446001 -2.445999,2.446001z" fill="#F9A11D"/>
+ <g id="svg_22">
+ <g id="svg_23">
+ <path id="svg_24" d="m47.362999,20.655001c-0.707001,0 -1.406998,-0.304001 -1.890999,-0.893002c-0.858002,-1.042999 -0.708,-2.584999 0.334999,-3.442999l6.59,-5.419001c1.044003,-0.858 2.585003,-0.706999 3.442997,0.336c0.858002,1.042999 0.708,2.584999 -0.334999,3.443001l-6.589996,5.418999c-0.455002,0.375 -1.005001,0.557001 -1.552002,0.557001z" fill="#F9A11D"/>
+ </g>
+ </g>
+ <path id="svg_25" d="m61.563004,33.759998l-8.410004,0c-1.351002,0 -2.445999,-1.094997 -2.445999,-2.445999s1.094997,-2.445999 2.445999,-2.445999l8.410004,0c1.350998,0 2.445999,1.095001 2.445999,2.445999s-1.095001,2.445999 -2.445999,2.445999z" fill="#F9A11D"/>
+ </g>
+</svg>
\ No newline at end of file diff --git a/slides/2022-kll/img/cas/sectigo.svg b/slides/2022-kll/img/cas/sectigo.svg new file mode 100644 index 0000000..6bce9b8 --- /dev/null +++ b/slides/2022-kll/img/cas/sectigo.svg @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 2258.5 538.1" style="enable-background:new 0 0 2258.5 538.1;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#091B2A;} + .st1{fill:#00AF73;} +</style> +<g> + <g> + <path class="st0" d="M2083.3,123.5c0-10.6,2.6-20.5,7.8-29.6s12.4-16.3,21.6-21.5c9.2-5.2,19.1-7.9,29.8-7.9s20.6,2.6,29.7,7.9 c9.2,5.2,16.3,12.4,21.5,21.5s7.8,19,7.8,29.6c0,10.4-2.5,20.1-7.5,29.1c-5,9.1-12.1,16.3-21.3,21.8s-19.3,8.3-30.3,8.3 c-10.9,0-21-2.7-30.2-8.2c-9.2-5.4-16.3-12.7-21.4-21.8C2085.9,143.8,2083.3,134,2083.3,123.5z M2092.9,123.5 c0,9,2.2,17.4,6.7,25.1c4.4,7.7,10.5,13.7,18.1,18.1c7.6,4.4,15.9,6.5,24.8,6.5c8.9,0,17.2-2.2,24.9-6.7s13.7-10.5,18-18.1 c4.4-7.6,6.5-16,6.5-25s-2.2-17.3-6.5-24.9c-4.4-7.6-10.4-13.6-18-18s-16-6.6-24.9-6.6s-17.2,2.2-24.8,6.5 c-7.7,4.3-13.7,10.4-18.1,18C2095.1,106.2,2092.9,114.5,2092.9,123.5z M2130.2,129.4v26.7h-11.7v-67h23c8.5,0,15.1,1.7,19.8,5.2 c4.7,3.4,7,8.5,7,15s-3.6,11.4-10.7,14.8c6.8,2.6,10.2,8,10.2,16.1v4.8c0,4.5,0.5,7.8,1.4,9.8v1.3h-12.1 c-0.8-1.9-1.2-5.3-1.2-10.1c0-4.9-0.1-7.8-0.2-8.6c-0.9-5.1-4.5-7.7-10.9-7.9h-14.6V129.4z M2130.2,119.3h13c4-0.1,7.2-1,9.7-2.8 c2.4-1.7,3.7-4,3.7-6.8c0-3.8-1.1-6.5-3.2-8.1c-2.2-1.6-6-2.4-11.6-2.4h-11.5L2130.2,119.3L2130.2,119.3z"></path> + </g> + <g> + <g> + <path class="st1" d="M365.2,83.8c5.7-8.5,0.5-19.3-9.4-19.3H266h-40h-29.4c-33.5,0-60.2,8.9-79.9,26.7 c-19.7,17.7-31,43.1-34,76.3l0,0l-7.6,86.8l0,0c-2.8,33.2,4.1,58.6,20.7,76.3c16.7,17.8,41.8,26.7,75.3,26.7h36.4v-0.2 c7.2-1,11.1-5.4,11.8-13.1l3.7-42.6c0.7-7.7-5-14-12.8-14H190c-13.1,0-22.3-2.9-27.6-8.6c-5.2-5.7-7.2-15.4-6.1-29l6.8-77.8 c1.2-13.6,4.9-23.2,11.1-28.9c6.2-5.7,15.9-8.6,29.1-8.6h16.6h26.6h64.2c12.7,0,25-6.7,32.3-17.7L365.2,83.8z"></path> + <path class="st1" d="M59.3,454.3c-5.7,8.5-0.5,19.3,9.4,19.3h92.1h40h29.4c33.5,0,60.2-8.9,79.9-26.7c19.7-17.7,31-43.1,34-76.3 l0,0l7.6-86.8l0,0c2.8-33.2-4.1-58.6-20.7-76.3c-16.7-17.8-41.8-26.7-75.3-26.7h-36.4v0.2c-7.2,1-11.1,5.4-11.8,13.1l-3.7,42.6 c-0.7,7.7,5,14,12.8,14H237c13.1,0,22.3,2.9,27.6,8.6c5.2,5.7,7.2,15.4,6.1,28.9l-6.8,77.8c-1.2,13.6-4.9,23.2-11.1,28.9 c-6.2,5.7-15.9,8.6-29.1,8.6H207h-26.6h-66.5c-12.7,0-25,6.7-32.3,17.7L59.3,454.3z"></path> + </g> + <path class="st0" d="M607,473.6H399c-8.9,0-13-4.4-12.2-13.4l33.5-382.3c0.8-8.9,5.6-13.4,14.5-13.4h208c8.5,0,12.3,4.4,11.6,13.4 l-3.8,43.3c-0.8,8.9-5.4,13.4-13.9,13.4h-133c-5.1,0-7.8,2.3-8.2,7l-7.2,82.7c-0.4,4.7,1.9,7,7,7h108.8c8.9,0,13,4.5,12.2,13.4 l-3.8,43.3c-0.8,8.9-5.6,13.4-14.5,13.4H489.2c-5.1,0-7.8,2.3-8.2,7l-7.7,88.4c-0.4,4.7,1.9,7,7,7h132.9c8.5,0,12.3,4.5,11.6,13.4 l-3.8,43.3C620.1,469.1,615.5,473.6,607,473.6"></path> + <path class="st0" d="M831.4,473.6h-69.3c-33.5,0-58.6-8.9-75.3-26.7c-16.7-17.8-23.6-43.5-20.6-77l17.6-201.7 c2.9-33.5,14.3-59.2,34.1-77s46.4-26.7,79.9-26.7h69.3c33.1,0,58.1,9,74.9,27c16.9,18,23.9,43.6,21,76.6l-2.6,29.9 c-0.8,9.3-5.9,14-15.2,14h-53.4c-8.9,0-13-4.7-12.1-14l2.3-26.1c1.2-13.6-0.8-23.2-6.1-28.9c-5.2-5.7-14.6-8.6-28.2-8.6h-43.3 c-13.1,0-22.8,2.9-29.1,8.6c-6.2,5.7-9.9,15.4-11.1,28.9l-17,194c-1.2,13.6,0.8,23.2,6.1,28.9c5.2,5.7,14.4,8.6,27.6,8.6h43.3 c13.6,0,23.5-2.9,29.7-8.6s9.9-15.4,11.1-28.9l2.3-26.1c0.8-9.3,5.7-14,14.6-14h53.4c9.3,0,13.6,4.7,12.8,14l-2.6,29.9 c-2.9,33.1-14.4,58.6-34.4,76.6C891,464.6,864.5,473.6,831.4,473.6"></path> + <path class="st0" d="M1127,473.6h-53.4c-9.3,0-13.6-4.4-12.8-13.4l27.9-318.7c0.4-4.7-1.7-7-6.4-7h-72.5c-8.9,0-13-4.4-12.2-13.4 l3.8-43.3c0.8-8.9,5.6-13.4,14.5-13.4h240.4c8.9,0,13,4.4,12.2,13.4l-3.8,43.3c-0.8,8.9-5.6,13.4-14.5,13.4h-72.5 c-5.1,0-7.8,2.3-8.2,7l-27.9,318.7C1140.7,469.1,1135.9,473.6,1127,473.6"></path> + <path class="st0" d="M1390.5,77.9L1357,460.2c-0.8,8.9-5.6,13.4-14.5,13.4h-54.1c-8.9,0-13-4.5-12.2-13.4l33.5-382.3 c0.8-8.9,5.6-13.4,14.5-13.4h54.1C1387.2,64.5,1391.3,69,1390.5,77.9"></path> + <path class="st0" d="M1857.4,403.6h45.2c13.6,0,23.5-2.9,29.7-8.6s9.9-15.4,11.1-28.9l17-194c1.2-13.6-0.8-23.2-6.1-28.9 c-5.2-5.7-14.6-8.6-28.2-8.6h-45.2c-13.6,0-23.4,2.9-29.4,8.6c-6,5.7-9.6,15.4-10.8,28.9l-17,194c-1.2,13.6,0.7,23.2,5.7,28.9 C1834.6,400.7,1843.8,403.6,1857.4,403.6 M1909.8,473.6h-71.2c-33.5,0-58.6-8.9-75.3-26.7c-16.7-17.8-23.6-43.5-20.6-77 l17.6-201.7c2.9-33.5,14.3-59.2,34.1-77c19.8-17.8,46.4-26.7,79.9-26.7h71.2c33.5,0,58.6,8.9,75.3,26.7 c16.7,17.8,23.6,43.5,20.6,77l-17.6,201.7c-2.9,33.5-14.3,59.2-34.1,77C1970,464.7,1943.3,473.6,1909.8,473.6"></path> + <path class="st0" d="M1639.5,201.3h54.1c8.9,0,13.8-4.7,14.6-14l1.7-19.1c2.9-33.1-4-58.6-20.6-76.7c-16.7-18-41.5-27-74.6-27 h-67.4c-33.5,0-60.2,8.9-79.9,26.7c-19.8,17.8-31.2,43.5-34.1,77l-17.6,201.7c-2.9,33.5,3.9,59.2,20.6,77s41.8,26.7,75.3,26.7 h67.4c33.1,0,59.5-9,79.3-27s31.2-43.6,34.1-76.7l9.3-106.2c0.9-9.8-3.6-14.6-13.4-14.6H1577h-14.6c-9.9,0-17,10.7-12.8,19.3 l16.4,33c5.4,10.9,16.6,17.7,29.2,17.7h13.8c4.7,0,6.8,2.3,6.4,7l-3.5,40.1c-1.2,13.6-4.8,23.2-10.8,29c-6,5.7-15.8,8.6-29.4,8.6 h-41.4c-13.1,0-22.3-2.9-27.6-8.6c-5.2-5.7-7.2-15.4-6.1-29l17-194c1.2-13.6,4.9-23.2,11.1-28.9s15.9-8.6,29.1-8.6h41.4 c13.6,0,22.9,2.9,27.9,8.6c5,5.7,6.9,15.4,5.7,28.9l-1.3,15.3C1626.5,196.6,1630.6,201.3,1639.5,201.3"></path> + </g> +</g> +</svg> diff --git a/slides/2022-kll/img/cas/trustasia.svg b/slides/2022-kll/img/cas/trustasia.svg new file mode 100644 index 0000000..e44fbe2 --- /dev/null +++ b/slides/2022-kll/img/cas/trustasia.svg @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="182px" height="41px" viewBox="0 0 182 41" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <title>亚洲诚信logo</title> + <g id="页é¢-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="CA-ç–略信æ¯-英文" transform="translate(-360.000000, -25.000000)"> + <g id="Nav"> + <g id="亚洲诚信logo" transform="translate(360.000000, 25.000000)"> + <g id="XMLID_191_" fill-rule="nonzero"> + <path d="M37.908,37.98 C38.34,37.512 38.664,37.116 38.844,36.36 C39.852,31.248 40.392,25.776 40.392,20.376 C40.392,14.94 39.852,9.648 38.844,4.536 C38.7,3.816 38.34,3.24 37.872,2.736 C37.404,2.34 36.972,2.016 36.252,1.872 C31.104,0.864 25.812,0.324 20.34,0.324 C14.904,0.324 9.576,0.864 4.428,1.872 C3.708,2.016 3.204,2.448 2.736,2.844 C2.34,3.312 1.944,3.78 1.8,4.536 C0.792,9.684 0.252,14.976 0.252,20.412 C0.252,25.848 0.792,31.176 1.8,36.288 C1.944,37.008 2.268,37.512 2.736,38.052 C3.168,38.448 3.672,38.772 4.428,38.916 C9.576,39.924 14.868,40.464 20.304,40.464 C25.74,40.464 31.068,39.924 36.216,38.916 C36.972,38.736 37.476,38.448 37.908,37.98 Z" id="XMLID_201_" fill="#C6272A"></path> + <g id="XMLID_192_" transform="translate(5.400000, 5.400000)" fill="#FFFFFF"> + <path d="M9.684,15.552 L9.684,15.552 L10.764,15.552 L25.992,15.552 C26.388,15.552 26.676,15.192 26.64,14.832 C26.604,14.292 26.532,13.464 26.532,12.888 C26.532,12.528 26.208,12.24 25.848,12.24 L17.856,12.24 L9.684,12.24 C9.288,12.24 9.108,12.6 9.108,12.78 C9.108,13.032 9.036,14.832 9.036,14.832 C9.036,15.264 9.432,15.552 9.684,15.552 Z" id="XMLID_200_"></path> + <path d="M29.7,28.584 C28.728,25.956 27.612,22.536 27,17.892 C26.964,17.604 26.676,17.28 26.316,17.28 L9.684,17.244 C9.144,17.244 8.82,17.712 8.82,18 C8.712,19.836 7.992,24.48 7.596,26.316 C7.452,26.892 7.92,27.396 8.46,27.396 L21.384,27.396 C21.96,27.396 22.248,26.82 22.176,26.46 L21.924,24.948 C21.816,24.408 21.384,24.012 20.808,24.012 L13.14,24.012 C12.636,24.012 12.348,23.544 12.384,23.22 C12.384,23.22 12.636,20.988 12.636,20.916 C12.672,20.628 12.924,20.268 13.356,20.268 L21.996,20.268 C22.356,20.268 22.788,20.52 22.824,21.024 C23.148,23.688 23.724,26.892 24.336,28.872 C24.48,29.412 24.912,29.556 25.236,29.556 L28.908,29.556 C29.484,29.628 29.88,29.052 29.7,28.584 Z" id="XMLID_199_"></path> + <path d="M25.92,7.272 L9.504,7.272 C9.252,7.272 9.072,7.488 9.072,7.704 C9.108,8.46 9.144,10.008 9.144,10.152 C9.144,10.368 9.324,10.548 9.576,10.548 L21.384,10.548 L26.028,10.548 C26.316,10.548 26.532,10.296 26.532,10.044 C26.532,9.504 26.568,8.532 26.604,7.884 C26.568,7.524 26.172,7.272 25.92,7.272 Z" id="XMLID_198_"></path> + <path d="M7.524,8.964 C7.524,8.136 7.452,7.272 7.416,6.444 C7.38,6.048 7.128,2.484 6.876,1.08 C6.804,0.684 6.408,0.36 6.084,0.36 L1.368,0.36 L1.368,0.36 C0.9,0.36 0.828,0.432 0.648,0.612 C0.504,0.756 0.504,1.044 0.576,1.512 L0.9,3.6 C0.972,4.032 1.296,4.284 1.656,4.284 L2.376,4.284 C2.88,4.284 3.132,4.68 3.132,5.004 C3.132,6.012 3.132,7.092 3.096,8.208 C3.096,8.568 3.06,8.964 3.06,9.324 C3.024,10.08 2.844,12.528 2.844,12.96 C2.7,15.372 2.268,18.072 2.196,18.828 C1.692,22.5 0.972,25.992 0.252,28.764 C0.144,29.304 0.612,29.628 0.936,29.628 L4.32,29.628 C4.464,29.628 5.148,29.52 5.328,28.8 C6.336,25.056 6.984,21.096 7.344,17.172 C7.344,17.172 7.38,16.596 7.416,16.344 C7.488,15.588 7.524,14.868 7.56,14.112 C7.596,13.608 7.596,13.14 7.632,12.636 C7.668,11.88 7.668,11.088 7.668,10.332 C7.524,9.864 7.524,9.432 7.524,8.964 Z" id="XMLID_197_"></path> + <path d="M8.928,5.112 C8.928,5.292 9.144,5.544 9.432,5.544 L25.776,5.544 C26.424,5.544 26.784,5.004 26.784,4.608 C26.856,3.528 26.928,2.088 27,1.116 C27.036,0.648 26.64,0.324 26.244,0.324 L26.244,0.324 L22.608,0.324 C22.284,0.324 22.068,0.612 22.068,0.792 L21.96,1.836 C21.96,2.052 21.78,2.232 21.528,2.232 L9.36,2.232 C8.928,2.232 8.64,2.628 8.676,2.988 C8.784,3.636 8.892,4.5 8.928,5.112 Z" id="XMLID_194_"></path> + </g> + </g> + <g id="XMLID_115_" transform="translate(47.880000, 2.160000)" fill="#000000" fill-rule="nonzero"> + <path d="M10.404,10.764 L14.256,10.764 L14.256,5.112 L10.404,5.112 L10.404,2.412 L14.76,2.412 L14.76,1.08 L0.756,1.08 L0.756,2.376 L5.076,2.376 L5.076,5.076 L1.296,5.076 L1.296,10.728 L5.076,10.728 L5.076,13.896 L0.324,13.896 L0.324,15.192 L15.228,15.192 L15.228,13.896 L10.368,13.896 L10.368,10.764 L10.404,10.764 Z M2.592,9.504 L2.592,6.372 L6.372,6.372 L6.372,2.412 L9.072,2.412 L9.072,6.372 L12.96,6.372 L12.96,9.504 L9.108,9.504 L9.108,13.932 L6.408,13.932 L6.408,9.504 L2.592,9.504 Z" id="XMLID_144_"></path> + <g id="XMLID_136_" transform="translate(61.200000, 0.000000)"> + <rect id="XMLID_143_" x="5.364" y="7.452" width="9.036" height="1.224"></rect> + <path d="M5.508,16.02 L6.804,16.02 L6.804,15.048 L12.924,15.048 L12.924,16.02 L14.22,16.02 L14.22,10.044 L5.508,10.044 L5.508,16.02 L5.508,16.02 Z M12.96,11.268 L12.96,13.824 L6.84,13.824 L6.84,11.268 L12.96,11.268 Z" id="XMLID_140_"></path> + <path d="M10.26,2.268 L10.728,2.016 L10.692,1.944 C10.332,1.296 9.972,0.684 9.612,0.108 L9.576,0.072 L8.46,0.684 L8.496,0.756 C8.82,1.26 9.108,1.764 9.396,2.268 L4.536,2.268 L4.536,3.528 L15.3,3.528 L15.3,2.268 L10.26,2.268 Z" id="XMLID_139_"></path> + <path d="M4.824,0.504 L3.528,0.108 L3.492,0.18 C2.736,2.952 1.62,5.544 0.18,7.848 L0.144,7.884 L0.144,7.92 C0.324,8.316 0.468,8.748 0.648,9.216 L0.684,9.324 L0.756,9.216 C1.224,8.568 1.656,7.848 2.088,7.092 L2.088,16.02 L3.348,16.02 L3.348,4.536 C3.852,3.348 4.32,2.016 4.788,0.576 L4.824,0.504 Z" id="XMLID_138_"></path> + <rect id="XMLID_137_" x="5.364" y="4.86" width="9.036" height="1.224"></rect> + </g> + <g id="XMLID_126_" transform="translate(40.680000, 0.000000)"> + <path d="M14.04,2.808 L14.076,2.88 L14.904,1.908 L14.868,1.872 C14.22,1.224 13.644,0.684 13.104,0.252 L13.068,0.216 L12.348,1.08 L12.384,1.116 C12.996,1.656 13.572,2.232 14.04,2.808 Z" id="XMLID_135_"></path> + <path d="M14.472,11.484 L14.4,11.448 L14.4,11.556 C14.328,12.6 14.256,13.356 14.184,13.788 C14.148,13.968 14.04,14.148 13.932,14.184 C13.824,14.22 13.608,14.112 13.248,13.5 C13.068,13.212 12.888,12.708 12.744,12.024 C13.68,10.548 14.508,8.784 15.192,6.804 L15.228,6.732 L14.04,6.12 L14.004,6.192 C13.572,7.668 13.068,9 12.456,10.152 C12.24,6.876 12.132,4.896 12.096,4.32 L15.444,4.32 L15.444,3.024 L12.06,3.024 C12.024,2.052 12.024,1.08 12.024,0.216 L12.024,0.144 L10.8,0.144 L10.8,0.216 C10.836,1.152 10.836,2.088 10.872,3.024 L6.192,3.024 L6.192,8.892 C6.192,11.196 5.832,12.996 5.148,14.256 L5.148,9.864 L0.972,9.864 L0.972,15.696 L2.088,15.696 L2.088,14.724 L4.86,14.724 C4.788,14.832 4.716,14.94 4.644,15.012 L4.608,15.084 L4.644,15.12 C4.932,15.372 5.22,15.66 5.472,16.02 L5.508,16.092 L5.544,16.02 C6.264,15.012 6.768,13.752 7.056,12.276 L7.056,12.312 C7.128,12.564 7.2,12.924 7.308,13.536 L7.308,13.608 L7.344,13.608 C7.524,13.608 7.776,13.608 8.208,13.608 C8.784,13.608 9.252,13.464 9.54,13.14 C9.864,12.816 10.044,12.276 10.044,11.592 C10.08,10.548 10.116,8.964 10.152,6.696 L10.152,6.624 L7.308,6.624 L7.308,4.32 L10.836,4.32 C11.016,7.848 11.196,10.332 11.448,11.772 C10.656,12.924 9.684,13.932 8.604,14.76 L8.532,14.796 L8.604,14.868 C8.892,15.192 9.144,15.516 9.36,15.804 L9.396,15.876 L9.468,15.84 C10.296,15.156 11.088,14.328 11.808,13.392 C11.916,13.752 12.024,14.004 12.168,14.184 C12.708,15.228 13.356,15.768 14.112,15.804 C14.688,15.732 15.084,15.228 15.264,14.328 C15.336,14.004 15.408,13.284 15.552,11.988 L15.552,11.916 L15.516,11.916 C15.192,11.808 14.868,11.664 14.472,11.484 Z M3.996,11.052 L3.996,13.536 L2.088,13.536 L2.088,11.052 L3.996,11.052 Z M7.092,12.24 C7.272,11.34 7.344,10.368 7.344,9.288 L7.344,7.884 L9.036,7.884 C9.036,8.928 9,10.08 8.964,11.304 C8.964,11.664 8.892,11.952 8.712,12.132 C8.568,12.276 8.388,12.348 8.136,12.312 C7.92,12.312 7.596,12.276 7.164,12.24 L7.092,12.24 Z" id="XMLID_130_"></path> + <rect id="XMLID_129_" x="0.864" y="4.896" width="4.392" height="1.188"></rect> + <rect id="XMLID_128_" x="0.864" y="7.38" width="4.392" height="1.188"></rect> + <path d="M5.868,2.412 L3.42,2.412 L3.996,2.088 L3.96,2.016 C3.636,1.404 3.276,0.756 2.844,0.072 L2.808,0.036 L1.62,0.684 L1.656,0.756 C1.98,1.332 2.304,1.908 2.556,2.448 L0.288,2.448 L0.288,3.636 L5.868,3.636 L5.868,2.412 L5.868,2.412 Z" id="XMLID_127_"></path> + </g> + <g id="XMLID_116_" transform="translate(20.520000, 0.360000)"> + <path d="M2.412,7.236 L2.448,7.164 C2.556,7.02 2.7,6.876 2.844,6.66 C2.952,6.516 3.096,6.336 3.24,6.156 L3.276,6.084 L3.24,6.048 C2.484,5.364 1.656,4.716 0.828,4.104 L0.792,4.068 L0,5.04 L0.072,5.076 C0.828,5.688 1.584,6.408 2.34,7.128 L2.412,7.236 Z" id="XMLID_125_"></path> + <path d="M3.132,9.216 L3.06,9.18 C2.664,9.036 2.304,8.892 1.908,8.712 L1.836,8.676 L1.836,8.748 C1.476,10.8 0.972,12.852 0.396,14.904 L0.36,14.976 L1.728,15.444 L1.728,15.372 C2.196,13.248 2.628,11.16 3.096,9.252 L3.132,9.216 Z" id="XMLID_124_"></path> + <path d="M5.832,5.256 C5.832,7.812 5.652,9.684 5.292,10.836 C4.896,12.168 4.14,13.392 3.06,14.472 L3.024,14.508 L3.06,14.544 C3.348,14.868 3.636,15.192 3.924,15.552 L3.96,15.624 L3.996,15.588 C5.256,14.292 6.084,12.888 6.48,11.484 C6.876,10.224 7.092,8.1 7.056,5.184 L7.056,0.108 L5.796,0.108 L5.796,5.256 L5.832,5.256 Z" id="XMLID_123_"></path> + <path d="M8.208,4.464 L8.172,4.392 L7.164,4.752 L7.2,4.824 C7.596,5.976 7.92,7.2 8.208,8.424 L8.208,8.496 L9.324,8.136 L9.288,8.064 C9,6.732 8.604,5.544 8.208,4.464 Z" id="XMLID_122_"></path> + <path d="M3.06,3.348 L3.096,3.384 L3.276,3.168 C3.492,2.916 3.744,2.664 3.996,2.34 L4.032,2.304 L3.996,2.268 C3.204,1.512 2.376,0.756 1.548,0.072 L1.512,0.036 L0.684,0.972 L0.72,1.008 C1.332,1.584 2.124,2.34 3.06,3.348 Z" id="XMLID_121_"></path> + <rect id="XMLID_120_" x="9.576" y="0.684" width="1.26" height="13.824"></rect> + <path d="M3.168,8.352 L3.24,8.388 C3.6,8.496 3.924,8.64 4.248,8.784 L4.32,8.82 L4.356,8.748 C4.752,7.596 5.148,6.264 5.544,4.752 L5.544,4.68 L4.392,4.32 L4.392,4.392 C4.104,5.76 3.744,7.056 3.24,8.28 L3.168,8.352 Z" id="XMLID_119_"></path> + <rect id="XMLID_118_" x="13.176" y="0.108" width="1.26" height="15.336"></rect> + <path d="M11.88,4.572 L11.844,4.5 L10.836,4.86 L10.872,4.932 C11.232,6.084 11.556,7.308 11.844,8.532 L11.844,8.604 L12.96,8.208 L12.924,8.136 C12.6,6.876 12.24,5.688 11.88,4.572 Z" id="XMLID_117_"></path> + </g> + </g> + <path d="M177.012,33.732 L177.012,30.384 C177.012,30.384 177.012,30.384 177.012,30.384 C177.012,30.168 177.012,28.332 177.012,27.612 C177.156,23.436 170.676,24.984 168.624,26.064 L168.624,22.212 C171.648,21.312 177.336,20.664 179.928,22.86 C181.008,23.76 181.512,25.128 181.512,27 L181.512,37.908 C177.048,35.208 172.44,40.752 168.732,36.936 C167.832,36 167.364,34.776 167.364,33.336 C167.364,32.148 167.58,31.212 168.048,30.456 C168.516,29.7 169.164,29.124 170.028,28.692 C170.856,28.26 171.9,27.972 173.16,27.792 C173.952,27.684 174.78,27.576 175.608,27.504 L175.608,30.564 C175.428,30.6 175.212,30.6 174.996,30.636 C174.276,30.744 173.736,30.852 173.376,30.996 C172.908,31.14 172.584,31.392 172.332,31.716 C172.08,32.04 171.972,32.436 171.972,32.94 C171.972,33.264 172.008,33.552 172.044,33.768 C172.08,33.984 172.224,34.164 172.404,34.38 C172.584,34.56 172.836,34.704 173.088,34.812 C173.34,34.92 173.772,34.956 174.348,34.956 C174.78,34.956 175.248,34.848 175.716,34.632 C176.256,34.38 176.652,34.092 177.012,33.732 L177.012,33.732 Z" id="XMLID_112_" fill="#C6272A"></path> + <polygon id="XMLID_108_" fill="#C6272A" points="165.24 38.34 160.704 38.34 160.704 21.384 165.24 21.384"></polygon> + <path d="M111.06,32.832 C111.06,34.488 110.412,35.82 109.08,36.828 C107.784,37.836 105.984,38.34 103.716,38.34 C102.456,38.34 101.304,38.196 100.296,37.944 C99.252,37.692 98.46,37.368 97.812,37.044 L97.812,32.832 C99.72,33.876 101.592,34.92 103.788,34.92 C104.688,34.92 105.336,34.812 105.768,34.596 C106.416,34.236 106.704,33.228 106.02,32.76 C105.768,32.58 105.3,32.4 104.58,32.256 C104.256,32.184 103.788,32.076 103.212,31.968 C102.636,31.86 102.096,31.752 101.628,31.608 C100.332,31.212 99.396,30.636 98.748,29.844 C98.136,29.052 97.812,28.044 97.812,26.856 C97.812,25.308 98.46,24.048 99.756,23.004 C101.052,21.996 102.816,21.456 105.048,21.456 C106.092,21.456 107.136,21.564 108.072,21.816 C109.044,22.068 109.8,22.32 110.34,22.608 L110.34,26.64 C109.188,25.596 106.56,24.876 105.048,24.876 C104.328,24.876 103.716,24.984 103.212,25.236 C102.492,25.56 102.132,26.496 102.816,27.072 C103.032,27.288 103.572,27.468 104.4,27.684 C104.868,27.792 105.372,27.9 105.876,28.008 C106.416,28.116 106.956,28.224 107.496,28.368 C108.684,28.728 109.584,29.268 110.124,30.024 C110.772,30.744 111.06,31.68 111.06,32.832 L111.06,32.832 Z" id="XMLID_107_" fill="#000000" fill-rule="nonzero"></path> + <path d="M95.688,37.764 C91.476,35.748 85.644,40.104 82.728,36.684 C81.864,35.676 81.468,34.164 81.468,32.184 L81.468,21.744 L86.04,21.744 L86.04,29.7 C86.04,30.492 86.076,31.176 86.112,31.716 C86.148,32.256 86.256,32.688 86.436,33.048 C86.58,33.408 86.832,33.66 87.156,33.804 C87.48,33.984 87.948,34.056 88.524,34.056 C88.92,34.056 89.352,33.984 89.82,33.804 C90.288,33.66 90.756,33.408 91.188,33.084 L91.188,21.708 L95.724,21.708 L95.724,37.764 L95.688,37.764 Z" id="XMLID_106_" fill="#000000" fill-rule="nonzero"></path> + <polygon id="XMLID_105_" fill="#000000" fill-rule="nonzero" points="62.388 25.704 57.744 25.704 57.744 38.16 52.884 38.16 52.884 25.704 48.204 25.704 48.204 21.6 62.388 21.6"></polygon> + <polygon id="XMLID_104_" fill="#000000" fill-rule="nonzero" points="126.756 25.704 122.076 25.704 122.076 38.16 117.252 38.16 117.252 25.704 112.572 25.704 112.572 21.6 126.756 21.6"></polygon> + <path d="M74.52,26.712 C74.52,26.316 74.412,25.956 74.232,25.668 C74.052,25.38 73.728,25.164 73.296,24.984 C72.972,24.876 72.612,24.804 72.216,24.768 C71.784,24.732 71.316,24.732 70.776,24.732 L69.12,24.732 L69.12,29.124 L70.524,29.124 C71.244,29.124 71.892,29.088 72.36,29.016 C72.864,28.944 73.26,28.8 73.62,28.584 C73.944,28.368 74.16,28.116 74.34,27.828 C74.448,27.54 74.52,27.18 74.52,26.712 L74.52,26.712 Z M81.72,38.052 L76.104,38.052 L71.244,32.04 L69.12,32.04 L69.12,38.052 L64.548,38.052 L64.548,21.708 L72.252,21.708 C73.296,21.708 74.232,21.744 74.988,21.888 C75.744,21.996 76.464,22.248 77.112,22.608 C77.796,22.968 78.3,23.436 78.696,24.048 C79.092,24.624 79.272,25.38 79.272,26.244 C79.272,27.468 78.948,28.44 78.372,29.196 C77.76,29.952 76.896,30.6 75.744,31.104 L81.72,38.052 L81.72,38.052 Z" id="XMLID_101_" fill="#000000" fill-rule="nonzero"></path> + <path d="M158.58,32.832 C158.58,34.488 157.932,35.82 156.6,36.828 C155.304,37.836 153.504,38.34 151.2,38.34 C149.94,38.34 148.788,38.196 147.78,37.944 C146.736,37.692 145.944,37.368 145.296,37.044 L145.296,32.832 C147.204,33.876 149.076,34.92 151.272,34.92 C152.172,34.92 152.82,34.812 153.252,34.596 C153.9,34.236 154.188,33.228 153.504,32.76 C153.252,32.58 152.784,32.4 152.064,32.256 C151.74,32.184 151.272,32.076 150.696,31.968 C150.12,31.86 149.58,31.752 149.112,31.608 C147.816,31.212 146.88,30.636 146.268,29.844 C145.656,29.052 145.332,28.044 145.332,26.856 C145.332,25.308 145.98,24.048 147.276,23.004 C148.572,21.996 150.336,21.456 152.568,21.456 C153.612,21.456 154.656,21.564 155.592,21.816 C156.564,22.068 157.32,22.32 157.86,22.608 L157.86,26.64 C156.708,25.596 154.08,24.876 152.568,24.876 C151.848,24.876 151.236,24.984 150.732,25.236 C150.012,25.56 149.652,26.496 150.336,27.072 C150.552,27.288 151.092,27.468 151.92,27.684 C152.388,27.792 152.892,27.9 153.432,28.008 C153.972,28.116 154.512,28.224 155.052,28.368 C156.24,28.728 157.14,29.268 157.68,30.024 C158.292,30.744 158.58,31.68 158.58,32.832 L158.58,32.832 Z" id="XMLID_97_" fill="#C6272A"></path> + <g id="XMLID_90_" transform="translate(124.560000, 14.760000)" fill="#C6272A" fill-rule="nonzero"> + <path d="M21.06,1.908 L20.124,0.252 L9.036,14.472 L7.992,13.896 C8.496,12.24 9.072,10.332 9.864,7.776 L10.944,11.34 L14.292,7.128 L12.744,2.34 L7.164,2.34 L4.104,11.7 L2.592,10.836 L0.468,13.068 L2.016,12.924 L9,20.952 L12.24,15.84 C12.744,17.532 14.004,21.528 14.652,23.58 L19.656,23.58 L15.48,10.728 L21.06,1.908 Z" id="XMLID_94_"></path> + <path d="M0.216,23.58 L5.076,23.58 C5.616,21.744 6.084,20.304 6.48,18.972 L3.024,14.94 L0.216,23.58 Z" id="XMLID_91_"></path> + </g> + <g id="XMLID_81_" transform="translate(127.080000, 2.520000)" fill="#000000" fill-rule="nonzero"> + <path d="M3.024,6.012 C1.548,6.012 0.324,4.752 0.324,3.168 C0.324,1.584 1.548,0.324 3.024,0.324 C4.5,0.324 5.724,1.584 5.724,3.168 C5.724,4.752 4.5,6.012 3.024,6.012 Z M3.024,0.504 C1.62,0.504 0.504,1.692 0.504,3.168 C0.504,4.644 1.656,5.832 3.024,5.832 C4.428,5.832 5.544,4.644 5.544,3.168 C5.544,1.692 4.428,0.504 3.024,0.504 Z" id="XMLID_86_"></path> + <g id="XMLID_82_" transform="translate(1.800000, 1.440000)"> + <path d="M0.288,0.072 C0.504,0.036 0.792,0 1.08,0 C1.512,0 1.8,0.072 2.016,0.288 C2.16,0.432 2.268,0.648 2.268,0.936 C2.268,1.368 2.016,1.656 1.656,1.8 L1.656,1.8 C1.908,1.872 2.052,2.124 2.124,2.484 C2.232,2.952 2.304,3.276 2.376,3.42 L1.944,3.42 C1.908,3.312 1.836,3.024 1.728,2.628 C1.62,2.16 1.476,1.98 1.08,1.98 L0.684,1.98 L0.684,3.42 L0.288,3.42 L0.288,0.072 L0.288,0.072 Z M0.684,1.62 L1.116,1.62 C1.548,1.62 1.836,1.368 1.836,0.972 C1.836,0.54 1.548,0.36 1.116,0.36 C0.936,0.36 0.792,0.396 0.72,0.396 L0.72,1.62 L0.684,1.62 Z" id="XMLID_83_"></path> + </g> + </g> + </g> + </g> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/slides/2022-kll/img/certificate.pdf b/slides/2022-kll/img/certificate.pdf Binary files differnew file mode 100644 index 0000000..8352ac0 --- /dev/null +++ b/slides/2022-kll/img/certificate.pdf diff --git a/slides/2022-kll/img/certificate.svg b/slides/2022-kll/img/certificate.svg new file mode 100644 index 0000000..cb220eb --- /dev/null +++ b/slides/2022-kll/img/certificate.svg @@ -0,0 +1,291 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="205.88545mm" + height="102.1619mm" + viewBox="0 0 205.88545 102.1619" + version="1.1" + id="svg5" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="certificate.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="0.77593294" + inkscape:cx="200.40392" + inkscape:cy="249.37722" + inkscape:window-width="1870" + inkscape:window-height="1000" + inkscape:window-x="20" + inkscape:window-y="50" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <linearGradient + id="A"> + <stop + id="L" + stop-color="#fff" + stop-opacity="0.8" /> + <stop + id="M" + offset="1" + stop-color="#fff" + stop-opacity="0" /> + </linearGradient> + <linearGradient + id="B"> + <stop + id="N" + stop-color="#eeeeec" /> + <stop + id="O" + offset="1" + stop-color="#d3d7cf" /> + </linearGradient> + <linearGradient + id="C"> + <stop + id="P" + stop-color="#2e3436" /> + <stop + id="Q" + offset="1" + stop-color="#2e3436" + stop-opacity="0" /> + </linearGradient> + <radialGradient + cx="25.712" + cy="48.735001" + r="21.856001" + id="D" + xlink:href="#C" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.09243698,0,44.229759)" /> + <radialGradient + cx="13.559" + cy="12.06" + r="16.219" + id="E" + xlink:href="#B" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.6174379,2.5604989,-3.7886681,0.9135993,49.367351,-37.86865)" /> + <linearGradient + y1="2.438" + x2="0" + y2="43.34" + id="F" + xlink:href="#A" + gradientUnits="userSpaceOnUse" /> + <radialGradient + cx="34.130001" + cy="8.6090002" + r="3.03" + id="G" + xlink:href="#B" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.9999999,2.0717464e-7,-2.1678585e-7,2.0927836,-34.124995,-9.2675658)" /> + <linearGradient + x1="34.130001" + y1="8.75" + x2="36.533001" + y2="6.3629999" + id="H" + xlink:href="#A" + gradientUnits="userSpaceOnUse" /> + <filter + x="-0.16043671" + y="-0.15096443" + width="1.3208734" + height="1.3019289" + color-interpolation-filters="sRGB" + id="I"> + <feGaussianBlur + stdDeviation="0.5327" + id="R" /> + </filter> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g10" + transform="matrix(3.9032433,0,0,-3.9032433,3.1351536,71.780445)"> + <g + id="g12"> + <path + id="path14" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="m 38.453,8.304 c 0.961,-0.293 2.496,-0.668 4.602,-1.121 0.879,-0.184 1.48,-0.371 1.8,-0.559 0.532,-0.398 0.985,-0.68 1.36,-0.84 1.226,-0.613 2.48,-1.066 3.758,-1.359 V 4.105 C 49.602,3.972 49.082,3.905 48.414,3.905 48.176,3.933 48,3.944 47.895,3.944 47.547,3.917 47.309,3.894 47.176,3.866 c -0.188,0 -0.375,0.039 -0.563,0.117 -0.183,0.11 -0.32,0.176 -0.398,0.2 -0.453,0.187 -0.84,0.308 -1.16,0.359 -0.16,0.027 -0.375,0.109 -0.641,0.242 -0.293,0.051 -0.531,0.106 -0.719,0.16 l -4.562,0.922 c -0.559,0.078 -0.867,0.157 -0.918,0.239 0,0.027 0.039,0.093 0.121,0.199 0.078,0.133 0.133,0.226 0.156,0.281 0.082,0.082 0.055,0.148 -0.078,0.199 0,0.028 -0.082,0.067 -0.242,0.121 -0.106,0.078 -0.32,0.278 -0.641,0.598 -0.586,0.59 -1.09,1.055 -1.519,1.402 0.562,-0.132 1.375,-0.336 2.441,-0.601 z" + inkscape:connector-curvature="0" /> + + <path + id="path16" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="m 29.973,8.304 c 0.882,-0.668 1.48,-1.039 1.8,-1.121 -0.105,-0.106 -0.347,-0.145 -0.718,-0.118 -0.106,0.028 -0.36,0.067 -0.762,0.118 -0.266,0.054 -1,0.121 -2.199,0.203 L 27.414,7.343 C 27.199,7.37 26.801,7.464 26.215,7.624 L 24.734,8.183 C 24.039,8.37 23.52,8.53 23.176,8.667 L 22.492,8.944 C 22.227,9.265 22,9.464 21.812,9.546 v 0.039 l 0.364,0.082 c 0.476,-0.082 1.066,-0.109 1.758,-0.082 0.375,0.027 0.828,0.016 1.359,-0.039 0.32,-0.027 0.789,-0.066 1.402,-0.121 0.266,0 0.68,-0.078 1.239,-0.238 l 0.441,-0.043 c 0.187,-0.024 0.32,-0.067 0.398,-0.118 0.11,-0.027 0.188,-0.093 0.243,-0.199 0.16,-0.164 0.476,-0.336 0.957,-0.523 z" + inkscape:connector-curvature="0" /> + + <path + id="path18" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="m 31.613,8.823 c -0.347,0.215 -0.547,0.336 -0.597,0.36 l -2.321,1.082 3.399,0.281 0.242,-0.84 c 0.105,-0.32 0.156,-0.668 0.156,-1.043 -0.211,-0.078 -0.504,-0.027 -0.879,0.16 z" + inkscape:connector-curvature="0" /> + + <path + id="path20" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="m 35.934,5.624 c 0.718,0 1.32,-0.117 1.8,-0.359 0.559,-0.266 0.852,-0.399 0.879,-0.399 l 0.442,-0.48 c 0,-0.028 0.082,-0.133 0.238,-0.321 0.133,-0.16 0.269,-0.265 0.402,-0.32 0.051,-0.051 0.211,-0.094 0.481,-0.121 l 0.558,-0.156 c -0.586,-0.082 -1,-0.137 -1.242,-0.16 h -1 c -0.476,0 -0.785,0.011 -0.918,0.039 -0.48,-0.082 -0.746,-0.11 -0.801,-0.082 -0.183,0.027 -0.371,0.082 -0.558,0.16 -0.266,0.109 -0.426,0.176 -0.481,0.199 -0.507,0.082 -0.867,0.149 -1.082,0.203 -0.425,0.078 -0.718,0.211 -0.879,0.399 -0.16,0.16 -0.546,0.375 -1.16,0.64 -0.746,0.321 -1.187,0.52 -1.32,0.602 -0.156,0.211 -0.293,0.316 -0.398,0.316 0.082,0.028 0.242,0.028 0.48,0 1.039,-0.051 1.801,-0.078 2.281,-0.078 0.266,0.027 0.653,0.012 1.16,-0.039 0.532,-0.031 0.907,-0.043 1.118,-0.043 z" + inkscape:connector-curvature="0" /> + + <path + id="path22" + style="fill:#000000;fill-opacity:0.2392;fill-rule:evenodd" + d="M 28.016,2.304 C 27.613,2.276 27.176,2.265 26.695,2.265 l -0.16,0.121 c -0.242,0.105 -0.414,0.172 -0.519,0.199 -0.137,0.051 -0.188,0.172 -0.161,0.359 -0.027,0.055 -0.043,0.106 -0.043,0.161 0.055,0.105 0.094,0.187 0.122,0.238 0,0.16 -0.028,0.254 -0.082,0.281 -0.239,0.133 -0.411,0.227 -0.516,0.281 -0.137,0.188 -0.309,0.321 -0.524,0.399 -0.585,0.32 -1.066,0.547 -1.437,0.679 -0.32,0.137 -0.801,0.348 -1.441,0.641 -1.2,0.535 -2.079,0.949 -2.641,1.242 -0.613,0.266 -1.438,0.719 -2.481,1.36 -0.21,0.16 -0.292,0.293 -0.238,0.398 0.028,0.055 0.039,0.094 0.039,0.121 l -0.277,0.281 -0.641,0.438 -0.16,0.043 C 15.855,9.48 16.176,9.413 16.492,9.304 L 22.535,6.706 C 26.828,4.917 29.547,3.878 30.695,3.585 32.188,3.077 32.227,2.718 30.812,2.507 30.309,2.452 29.375,2.386 28.016,2.304 Z" + inkscape:connector-curvature="0" /> + + <path + id="path24" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="M 43.574,3.905 C 43.094,3.773 42.773,3.69 42.613,3.663 42.348,3.612 42.094,3.597 41.855,3.624 l -0.839,0.281 c -0.801,0.188 -1.094,0.438 -0.883,0.758 0.242,0.082 0.48,0.11 0.722,0.082 0.266,0 0.481,-0.015 0.637,-0.039 z" + inkscape:connector-curvature="0" /> + + <path + id="path26" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="m 11.094,7.784 -0.918,0.801 1.84,-0.359 c 0.293,-0.055 0.957,-0.215 2,-0.481 l 0.16,-0.16 C 14.309,7.48 14.469,7.358 14.652,7.226 h 0.203 C 14.934,7.171 14.973,7.132 14.973,7.105 L 14.574,7.026 C 14.336,6.999 14.199,6.96 14.176,6.905 l 0.476,-0.398 c 0.297,-0.188 0.457,-0.297 0.481,-0.32 l 0.359,-0.282 c -0.664,0.16 -1.183,0.239 -1.558,0.239 l -0.321,0.082 c -0.32,0.082 -0.664,0.148 -1.039,0.199 -0.133,0.027 -0.215,0.082 -0.238,0.16 v 0.16 l -0.121,0.16 -0.403,0.16 c -0.16,0.106 -0.398,0.344 -0.718,0.719 z" + inkscape:connector-curvature="0" /> + + <path + id="path28" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="m 13.293,9.144 -0.277,0.32 2.117,0.121 -0.117,-0.762 c -0.082,-0.238 -0.082,-0.371 0,-0.398 -0.055,-0.055 -0.137,-0.055 -0.243,0 -0.48,0.082 -0.8,0.148 -0.961,0.199 -0.132,0.027 -0.238,0.094 -0.32,0.199 -0.078,0.16 -0.144,0.27 -0.199,0.321 z" + inkscape:connector-curvature="0" /> + + <path + id="path30" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="M 2.652,9.144 3.215,9.183 4.695,7.503 4.812,7.304 C 4.895,7.253 4.988,7.21 5.094,7.183 L 6.574,6.226 C 6.414,6.253 6.242,6.319 6.055,6.425 L 5.652,6.706 3.613,7.624 C 3.508,7.679 3.121,7.784 2.453,7.944 L 2.215,8.105 C 1.547,8.745 1.293,9.144 1.453,9.304 1.641,9.437 2.039,9.386 2.652,9.144 Z" + inkscape:connector-curvature="0" /> + + <path + id="path32" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="m 12.215,5.866 0.359,-0.043 1,-0.558 C 13.547,5.237 13.453,5.159 13.293,5.023 13.27,4.972 13.215,4.944 13.133,4.944 L 12.934,4.983 12.336,4.944 c -0.242,-0.027 -0.43,-0.011 -0.563,0.039 -0.078,0.055 -0.16,0.122 -0.238,0.2 -0.133,0.136 -0.199,0.226 -0.199,0.281 -0.508,0.215 -0.828,0.402 -0.961,0.562 l 0.398,0.039 0.442,0.161 z" + inkscape:connector-curvature="0" /> + + <path + id="path34" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="m 12.293,4.784 1.082,-0.078 c 0.051,0 0.145,-0.027 0.277,-0.082 0.137,-0.027 0.231,-0.027 0.282,0 L 13.812,4.542 c -0.05,-0.023 -0.238,-0.078 -0.558,-0.16 -0.051,-0.024 -0.106,-0.024 -0.16,0 -0.078,-0.024 -0.199,0 -0.36,0.082 -0.398,0.055 -0.546,0.16 -0.441,0.32 z" + inkscape:connector-curvature="0" /> + + <path + id="path36" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="M 10.973,3.823 9.734,4.425 11.613,4.065 C 12.176,3.933 12.547,3.839 12.734,3.784 L 13.855,3.503 C 13.773,3.398 13.961,3.237 14.414,3.023 14.652,2.944 14.879,2.89 15.094,2.866 15.441,2.757 15.961,2.612 16.652,2.425 H 16.336 C 16.176,2.452 16.039,2.437 15.934,2.382 L 15.773,2.226 C 15.695,2.171 15.652,2.132 15.652,2.105 c -0.05,0 -0.105,0.011 -0.16,0.039 L 13.773,2.503 C 13.641,2.53 13.559,2.569 13.535,2.624 l -1.48,0.641 C 11.707,3.503 11.348,3.69 10.973,3.823 Z" + inkscape:connector-curvature="0" /> + + <path + id="path38" + style="fill:#000000;fill-opacity:0.1098;fill-rule:evenodd" + d="M 28.016,2.304 28.133,2.265 27.613,2.226 C 27.188,2.198 24.293,2.038 18.934,1.745 l -1.039,0.758 c -0.161,0.105 -0.266,0.199 -0.321,0.281 -0.16,0.106 -0.238,0.215 -0.238,0.321 l 0.039,0.398 0.199,0.562 c 0,0.024 -0.066,0.157 -0.199,0.399 L 16.934,4.905 C 16.828,4.956 16.773,4.995 16.773,5.023 16.906,4.995 17.094,4.917 17.336,4.784 17.734,4.675 18.309,4.542 19.055,4.382 19.906,4.198 21.148,3.901 22.773,3.503 23.199,3.425 23.812,3.331 24.613,3.226 25.066,3.144 25.48,3.05 25.855,2.944 25.828,2.757 25.879,2.636 26.016,2.585 26.121,2.558 26.293,2.491 26.535,2.386 l 0.16,-0.121 c 0.481,0 0.918,0.011 1.321,0.039 z" + inkscape:connector-curvature="0" /> + + <path + id="path40" + style="fill:#d4d3cc;fill-rule:evenodd" + d="m 31.293,9.944 0.242,0.039 C 32.441,9.69 33.48,9.304 34.652,8.823 35.27,8.558 36.203,8.144 37.453,7.585 l -1.68,-0.32 c -1.519,0.695 -3.265,1.574 -5.238,2.64 z m 8.68,-1.961 C 39.547,7.96 39.094,7.894 38.613,7.784 c -1.199,0.559 -2.105,0.961 -2.718,1.199 -1.122,0.508 -2.094,0.911 -2.918,1.2 0.851,0.082 1.371,0.082 1.558,0 z m -3.797,-2.078 1.078,0.16 c 1.707,-0.75 3.601,-1.468 5.68,-2.16 L 40.816,3.706 c -0.64,0.32 -2.187,1.051 -4.64,2.199 z M 36.973,3.386 36.336,3.304 36.215,3.386 c -1.414,0.293 -3.254,0.918 -5.52,1.879 l 1.719,0.16 z m -3.957,3.359 -1.641,-0.32 c -1.336,0.586 -2.348,1.027 -3.039,1.32 -1.176,0.531 -2.281,1.094 -3.32,1.68 l 1.597,0.121 C 27.359,9.198 28.375,8.718 29.652,8.105 30.879,7.546 32,7.093 33.016,6.745 Z m 8.398,0 1.199,0.199 c 2.375,-0.879 4.282,-1.48 5.723,-1.8 1.09,-0.321 1.117,-0.586 0.078,-0.801 -1.012,0.43 -3.348,1.226 -7,2.402 z m -3.121,-0.562 1.922,0.32 c 0.531,-0.184 1.734,-0.57 3.597,-1.16 1.442,-0.449 2.59,-0.84 3.442,-1.16 -1.625,-0.078 -2.68,-0.145 -3.16,-0.2 -2.239,0.801 -4.172,1.536 -5.801,2.2 z m -4.879,-0.637 1.801,0.199 c 2.051,-0.906 3.586,-1.613 4.597,-2.121 l -1.878,-0.16 c -1.918,0.906 -3.426,1.601 -4.52,2.082 z m -11.238,3.637 1.797,0.121 c 0.75,-0.348 1.761,-0.852 3.043,-1.52 1.117,-0.613 2.25,-1.105 3.398,-1.48 L 28.652,6.183 c -1.117,0.429 -2.25,0.91 -3.398,1.441 -1.281,0.668 -2.305,1.188 -3.078,1.559 z" + inkscape:connector-curvature="0" /> + + <path + id="path42" + style="fill:#fff7cf;fill-rule:evenodd" + d="M 51.492,4.464 C 51.414,4.304 50.906,4.144 49.977,3.983 48.988,3.878 47.613,3.784 45.855,3.702 45.004,3.597 43.27,3.425 40.656,3.183 39.055,3.062 37.828,2.968 36.977,2.905 36.516,2.94 36.035,3.034 35.535,3.183 35.27,3.237 34.84,3.409 34.254,3.702 c -0.984,0.43 -1.746,0.75 -2.281,0.961 -1.332,0.348 -2.293,0.613 -2.879,0.801 -0.828,0.293 -1.68,0.641 -2.559,1.039 -2.883,0.934 -5.16,1.906 -6.84,2.922 l -0.121,0.039 h -0.16 c 0.535,0.082 2.895,0.309 7.078,0.68 2.11,0.187 4.149,0.359 6.121,0.519 0.535,0.082 1.028,0.133 1.481,0.16 0.718,0.055 1.254,0.028 1.601,-0.078 l 2.297,-0.922 3.621,-1.48 C 41.68,8.315 41.746,8.288 41.812,8.265 41.887,8.23 41.961,8.194 42.035,8.163 42.395,8.019 42.75,7.878 43.094,7.745 l 3.16,-1.242 c 1.867,-0.668 3.254,-1.121 4.16,-1.359 0.746,-0.239 1.106,-0.465 1.078,-0.68 z m -11.519,3.519 -5.438,2.2 c -0.187,0.082 -0.707,0.082 -1.562,0 0.828,-0.289 1.8,-0.692 2.922,-1.2 0.613,-0.238 1.519,-0.64 2.718,-1.199 0.481,0.11 0.934,0.176 1.36,0.199 z m -8.68,1.961 -0.758,-0.039 c 1.973,-1.066 3.719,-1.949 5.238,-2.64 l 1.68,0.32 C 36.203,8.144 35.27,8.558 34.652,8.823 33.48,9.304 32.441,9.69 31.535,9.983 Z m 5.68,-6.558 -4.559,2.039 -1.719,-0.16 c 2.266,-0.961 4.106,-1.586 5.52,-1.883 l 0.121,-0.078 z m -0.797,2.519 c 2.449,-1.148 4,-1.882 4.636,-2.199 l 2.122,0.199 c -2.082,0.692 -3.973,1.414 -5.68,2.16 z M 20.734,7.983 c 2.293,-0.906 6.387,-2.492 12.282,-4.757 0.16,0 0.277,-0.028 0.359,-0.082 0.078,-0.133 0.027,-0.25 -0.16,-0.36 C 33.16,2.733 33.055,2.69 32.895,2.667 32.84,2.64 32.789,2.612 32.734,2.585 32.68,2.48 32.547,2.398 32.336,2.343 32.043,2.265 31.695,2.198 31.293,2.144 30.336,1.983 28.949,1.894 27.137,1.866 20.176,1.249 16.426,0.933 15.895,0.905 c -0.454,0 -0.907,0.039 -1.36,0.118 -0.187,0.082 -0.613,0.226 -1.281,0.441 -0.371,0.133 -2.531,1.133 -6.481,3 C 2.719,6.386 0.629,7.358 0.492,7.386 0.414,7.409 0.375,7.437 0.375,7.464 H 0.293 C 0.16,7.569 0.16,7.663 0.293,7.745 0.402,7.796 0.559,7.839 0.773,7.866 0.48,7.999 0.441,8.105 0.652,8.183 0.68,8.21 0.719,8.237 0.773,8.265 0.801,8.237 0.855,8.198 0.934,8.144 1.336,7.983 5.867,5.96 14.535,2.065 c 0.774,-0.269 1.184,-0.402 1.238,-0.402 0.375,-0.105 0.786,-0.144 1.243,-0.117 0.504,0 2.226,0.09 5.16,0.277 2.851,0.215 4.597,0.348 5.238,0.403 1.785,0.05 3.172,0.132 4.16,0.238 0.399,0.082 0.735,0.148 1,0.203 C 32.336,2.64 32.066,2.597 31.773,2.546 29.32,2.437 27.906,2.37 27.535,2.347 27.027,2.319 25.254,2.21 22.215,2.026 19.359,1.839 17.613,1.745 16.973,1.745 c -0.481,0 -0.946,0.039 -1.399,0.121 -0.265,0.051 -0.679,0.199 -1.238,0.438 -0.402,0.133 -2.481,1.121 -6.242,2.961 -3.758,1.867 -5.758,2.84 -6,2.918 C 1.988,8.292 1.922,8.37 1.895,8.425 0.934,9.386 1.16,9.679 2.574,9.304 c 0.934,-0.16 5.16,-0.024 12.68,0.402 0.398,0.027 0.894,0.012 1.48,-0.039 0.559,-0.055 0.973,-0.148 1.239,-0.281 L 18.414,9.265 C 18.336,9.237 18.281,9.21 18.254,9.183 18.203,9.132 18.188,9.093 18.215,9.065 L 17.812,9.183 C 17.52,9.292 17.133,9.37 16.652,9.425 16.094,9.507 15.613,9.519 15.215,9.464 8.066,9.011 4.066,8.839 3.215,8.944 2.547,9.159 2.176,9.237 2.094,9.187 2.016,9.105 2.176,8.878 2.574,8.507 2.68,8.398 2.789,8.28 2.895,8.144 3.109,8.038 5.016,7.116 8.613,5.386 12.188,3.679 14.16,2.745 14.535,2.585 c 0.613,-0.242 1.051,-0.375 1.32,-0.402 0.399,-0.106 0.84,-0.157 1.321,-0.157 0.476,0.051 2.078,0.145 4.797,0.278 2.613,0.16 4.226,0.281 4.839,0.363 0.321,0.023 1.68,0.066 4.083,0.117 1.917,0.11 2.066,0.414 0.441,0.922 -0.16,0.051 -0.336,0.117 -0.52,0.199 l -1.203,0.399 c -0.343,0.16 -0.746,0.32 -1.199,0.48 -1.254,0.508 -2.852,1.16 -4.801,1.961 z M 33.016,6.745 C 32,7.093 30.879,7.546 29.652,8.105 28.375,8.718 27.359,9.198 26.613,9.546 L 25.016,9.425 c 1.039,-0.586 2.144,-1.149 3.32,-1.68 0.691,-0.293 1.703,-0.734 3.039,-1.32 z M 31.895,2.386 H 31.652 C 30.695,2.226 29.281,2.116 27.414,2.065 26.773,2.011 24.922,1.878 21.855,1.667 18.652,1.425 16.828,1.304 16.375,1.304 c -0.48,0 -0.934,0.043 -1.359,0.121 C 14.719,1.507 14.281,1.651 13.695,1.866 13.32,2.026 11.121,3.038 7.094,4.905 3.359,6.64 1.293,7.612 0.895,7.823 0.414,7.8 0.281,7.733 0.492,7.624 0.707,7.519 2.879,6.503 7.016,4.585 11.121,2.667 13.387,1.636 13.812,1.503 14.293,1.292 14.68,1.171 14.973,1.144 c 0.242,-0.028 0.652,-0.028 1.242,0 0.906,-0.028 4.597,0.226 11.078,0.761 2.48,0.239 3.828,0.371 4.043,0.399 0.184,0.027 0.371,0.054 0.559,0.082 z m 1.519,3.16 c 1.094,-0.481 2.602,-1.176 4.52,-2.082 l 1.878,0.16 c -1.011,0.508 -2.546,1.215 -4.597,2.121 z m 4.879,0.637 c 1.629,-0.664 3.562,-1.399 5.801,-2.2 0.48,0.055 1.535,0.122 3.16,0.2 -0.852,0.32 -2,0.711 -3.442,1.16 -1.863,0.59 -3.066,0.976 -3.597,1.16 z m 3.121,0.562 c 3.652,-1.176 5.988,-1.972 7,-2.402 1.039,0.215 1.012,0.48 -0.078,0.801 -1.441,0.32 -3.348,0.921 -5.723,1.8 z M 5.895,8.065 4.773,8.624 h 1.082 c 0.321,-0.027 1.758,0.027 4.321,0.16 0.613,0 2.199,0.121 4.758,0.36 L 16.453,8.464 17.492,7.983 19.133,7.226 17.695,7.023 15.375,6.745 C 15.055,6.69 14.559,6.651 13.895,6.624 13.602,6.569 13.281,6.53 12.934,6.503 12.27,6.452 11.508,6.386 10.652,6.304 10.336,6.276 9.988,6.253 9.613,6.226 L 9.055,6.503 C 9.27,6.823 9.441,7.05 9.574,7.183 L 10.453,7.105 C 10.641,7.077 10.949,7.05 11.375,7.023 11.613,6.972 11.812,6.944 11.973,6.944 l 1.882,0.079 c 0.106,0 0.239,0.015 0.399,0.042 0.32,0.051 0.574,0.094 0.762,0.118 0.343,0.109 0.625,0.254 0.839,0.441 l 0.118,0.199 V 7.866 C 15.812,8.21 15.641,8.464 15.453,8.624 15.375,8.706 15.27,8.745 15.133,8.745 15,8.769 14.789,8.796 14.492,8.823 14.199,8.878 13.773,8.878 13.215,8.823 12.68,8.745 12.281,8.69 12.016,8.663 11.746,8.663 11.547,8.651 11.414,8.624 11.227,8.597 11.055,8.569 10.895,8.542 L 10.535,8.343 C 10.293,8.237 9.895,8.05 9.336,7.784 9.254,7.733 9.176,7.69 9.094,7.667 9.039,7.64 9,7.64 8.973,7.667 8.652,7.718 8.176,7.784 7.535,7.866 Z m 5.48,0.399 c 0.105,0.082 0.266,0.082 0.48,0 v 0.039 c 0.028,0 0.094,-0.023 0.2,-0.078 -0.106,-0.16 -0.309,-0.215 -0.602,-0.16 -0.133,0.054 -0.16,0.121 -0.078,0.199 z m 1.277,-1.121 c -0.078,0.055 -0.132,0.094 -0.16,0.121 0.11,0.105 0.32,0.16 0.641,0.16 L 13.254,7.585 C 13.203,7.452 13.094,7.382 12.934,7.382 12.855,7.358 12.762,7.343 12.652,7.343 Z m 9.524,1.84 c 0.769,-0.371 1.797,-0.891 3.078,-1.559 1.148,-0.531 2.281,-1.012 3.398,-1.441 l 1.762,0.121 c -1.148,0.375 -2.281,0.867 -3.398,1.48 -1.282,0.668 -2.293,1.176 -3.043,1.52 z" + inkscape:connector-curvature="0" /> + + <path + id="path44" + style="fill:#32343d;fill-rule:evenodd" + d="m 34.094,10.823 c 0.773,0.082 1.347,0.055 1.718,-0.078 l 2.18,-0.922 -2.297,0.922 c -0.347,0.106 -0.883,0.133 -1.601,0.078 z M 51.492,4.464 C 51.652,4.249 51.215,4.038 50.176,3.823 50.016,3.796 49.84,3.757 49.656,3.706 L 45.336,3.304 C 44.879,3.253 43.828,3.159 42.176,3.023 38.707,2.706 36.414,2.53 35.293,2.503 34.309,2.48 33.508,2.53 32.895,2.663 c 0.16,0.027 0.265,0.067 0.32,0.121 0.183,0.106 0.238,0.227 0.16,0.36 0.051,0 0.09,-0.028 0.117,-0.079 l 0.641,-0.16 h 0.082 c 0.426,-0.082 0.851,-0.121 1.277,-0.121 l 1.481,0.121 c 0.855,0.063 2.082,0.157 3.679,0.278 2.618,0.242 4.348,0.414 5.203,0.519 1.758,0.082 3.133,0.176 4.118,0.281 0.933,0.161 1.441,0.321 1.519,0.481 z M 0.293,7.444 c 0.027,0.004 0.055,0.012 0.082,0.02 0,-0.027 0.039,-0.055 0.117,-0.082 0.137,-0.024 2.227,-1 6.281,-2.918 3.946,-1.867 6.106,-2.867 6.481,-3 0.668,-0.215 1.094,-0.359 1.281,-0.441 0.453,-0.079 0.906,-0.118 1.36,-0.118 0.531,0.028 4.281,0.348 11.238,0.961 1.816,0.024 3.203,0.117 4.16,0.278 0.398,0.054 0.746,0.121 1.043,0.199 0,-0.211 -0.496,-0.399 -1.484,-0.559 -0.024,0 -1.426,-0.094 -4.2,-0.281 C 25.879,1.425 24.055,1.276 21.172,1.065 17.918,0.773 16.066,0.624 15.613,0.624 15.105,0.597 14.652,0.636 14.254,0.745 14.012,0.823 13.586,0.972 12.973,1.183 12.598,1.315 10.441,2.304 6.492,4.144 3.535,5.519 1.48,6.483 0.332,7.042 L 0.293,7.065 C -0.055,7.198 -0.094,7.304 0.176,7.382 0.211,7.401 0.25,7.421 0.293,7.444 Z" + inkscape:connector-curvature="0" /> + + <path + id="path46" + style="fill:#000000;fill-opacity:0.4392;fill-rule:evenodd" + d="m 18.414,9.265 c 0.215,0.05 0.547,0.117 1,0.199 h 0.16 L 19.695,9.425 C 21.375,8.409 23.652,7.437 26.535,6.503 27.414,6.105 28.266,5.757 29.094,5.464 29.68,5.276 30.641,5.011 31.973,4.663 32.508,4.452 33.266,4.132 34.254,3.706 34.84,3.409 35.27,3.237 35.535,3.183 36.035,3.034 36.516,2.94 36.977,2.905 L 35.492,2.784 c -0.426,0 -0.851,0.039 -1.277,0.121 h -0.082 l -0.641,0.16 c -0.023,0.051 -0.066,0.079 -0.117,0.079 -0.082,0.054 -0.199,0.082 -0.359,0.082 -5.895,2.265 -9.989,3.851 -12.282,4.757 -1.199,0.481 -1.906,0.75 -2.121,0.801 -0.238,0.082 -0.371,0.176 -0.398,0.281 -0.027,0.028 -0.012,0.067 0.039,0.118 0.027,0.027 0.082,0.054 0.16,0.082 z" + inkscape:connector-curvature="0" /> + + <path + id="path48" + style="fill:#c2b8c2;fill-rule:evenodd" + d="m 18.215,9.065 c 0.027,-0.109 0.16,-0.199 0.398,-0.281 0.215,-0.054 0.922,-0.32 2.121,-0.801 l 2.879,-1.238 c 1.949,-0.801 3.547,-1.453 4.801,-1.961 0.453,-0.16 0.852,-0.32 1.199,-0.48 L 30.812,3.905 C 31,3.823 31.176,3.757 31.336,3.702 32.961,3.198 32.812,2.89 30.895,2.784 28.492,2.73 27.133,2.69 26.812,2.663 26.199,2.585 24.586,2.464 21.973,2.304 19.254,2.171 17.652,2.077 17.172,2.023 c -0.481,0 -0.918,0.054 -1.32,0.16 C 15.586,2.21 15.148,2.343 14.531,2.585 14.16,2.745 12.188,3.679 8.613,5.382 5.012,7.116 3.105,8.038 2.895,8.144 2.785,8.276 2.68,8.398 2.574,8.503 2.172,8.878 2.012,9.105 2.094,9.183 2.172,9.237 2.547,9.159 3.215,8.944 c 0.851,-0.109 4.851,0.067 12,0.52 0.398,0.051 0.879,0.039 1.437,-0.039 0.481,-0.055 0.868,-0.133 1.16,-0.242 z M 5.613,7.304 C 5.559,7.276 5.574,7.226 5.652,7.144 c 0.27,-0.051 0.536,-0.051 0.801,0 0.242,0.054 0.32,0.121 0.242,0.199 H 6.535 C 6.48,7.452 6.32,7.48 6.055,7.425 5.867,7.425 5.719,7.386 5.613,7.304 Z M 6.094,7.706 C 6.066,7.757 6.016,7.784 5.934,7.784 5.855,7.866 5.68,7.894 5.414,7.866 5.281,7.784 5.227,7.73 5.254,7.706 L 5.133,7.663 C 5.109,7.636 5.055,7.624 4.973,7.624 4.922,7.597 4.906,7.558 4.934,7.503 c 0.132,-0.078 0.308,-0.078 0.519,0 l 0.52,0.082 z M 9.055,6.503 9.613,6.226 c 0.375,0.023 0.723,0.05 1.039,0.078 0.59,-0.106 1.16,-0.278 1.723,-0.52 -0.16,-0.051 -0.32,-0.094 -0.48,-0.117 l -0.68,-0.16 c -0.106,0 -0.188,-0.016 -0.242,-0.043 -0.161,0.027 -0.293,0.027 -0.399,0 C 10.52,5.597 10.387,5.64 10.176,5.585 L 9.992,5.565 C 10.059,5.589 10.094,5.62 10.094,5.667 10.176,5.8 10.066,5.866 9.773,5.866 L 9.133,5.823 C 8.867,5.823 8.707,5.8 8.652,5.745 8.547,5.69 8.613,5.651 8.855,5.624 H 9.293 L 9.375,5.667 C 9.348,5.585 9.461,5.534 9.715,5.507 9.609,5.464 9.578,5.398 9.613,5.304 9.586,5.198 9.695,5.159 9.934,5.187 l 0.281,0.039 c 0.16,0.05 0.265,0.105 0.32,0.16 l 0.16,-0.082 C 10.559,5.171 10.535,5.038 10.613,4.905 L 10.734,4.866 C 10.652,4.839 10.574,4.812 10.492,4.784 10.441,4.73 10.535,4.69 10.773,4.663 h 0.243 l 0.16,-0.117 c -0.055,-0.027 -0.067,-0.082 -0.043,-0.16 0,-0.11 0.109,-0.149 0.32,-0.121 h 0.039 c 0.082,-0.082 0.215,-0.094 0.403,-0.039 0.027,0 0.039,-0.016 0.039,-0.043 h 0.039 C 11.895,4.159 11.84,4.116 11.812,4.065 11.789,3.933 11.895,3.866 12.133,3.866 h 0.281 c 0.078,0 0.16,0.012 0.238,0.039 0.11,0.028 0.16,0.078 0.16,0.16 l 0.442,-0.121 h 0.16 L 13.652,3.823 V 3.745 c 0,0.028 -0.039,0.039 -0.117,0.039 -0.293,0 -0.469,-0.011 -0.519,-0.039 L 12.812,3.706 c -0.183,-0.027 -0.21,-0.055 -0.078,-0.082 0.188,-0.027 0.36,-0.039 0.52,-0.039 l 0.441,0.16 c 0.078,-0.055 0.16,-0.066 0.239,-0.043 l 0.121,0.121 c 0,0.028 0.011,0.055 0.039,0.082 0.613,0.024 0.867,0.051 0.761,0.078 0.051,0.028 0.106,0.04 0.161,0.04 V 4.226 C 14.988,4.198 14.949,4.183 14.895,4.183 c 0.027,0.027 0.039,0.054 0.039,0.082 0.027,0.027 0.066,0.039 0.121,0.039 0.133,-0.051 0.254,-0.106 0.359,-0.16 0.426,-0.321 0.652,-0.508 0.68,-0.559 l 0.281,-0.559 c 0.105,-0.269 0.32,-0.402 0.641,-0.402 0.078,0.082 0.105,0.188 0.078,0.32 -0.028,0.106 -0.055,0.172 -0.078,0.2 0.211,0 0.492,-0.039 0.839,-0.118 0.133,-0.027 0.372,-0.082 0.719,-0.16 l -0.879,0.641 c 0.024,0.105 0.012,0.183 -0.043,0.238 h 0.243 c 0.32,-0.027 0.585,0.016 0.8,0.121 0.051,0.028 0.094,0.067 0.117,0.117 h 0.524 c 1.117,-0.238 2.625,-0.531 4.519,-0.878 0.825,-0.188 1.747,-0.239 2.758,-0.161 0.266,0.028 0.414,0.055 0.442,0.082 l 0.238,0.079 c 0.668,0.16 1.16,0.293 1.48,0.402 0.641,0.183 0.907,0.332 0.801,0.437 -0.238,0.188 -0.679,0.375 -1.32,0.563 -0.266,0.078 -0.906,0.25 -1.918,0.519 0.293,0.024 0.453,0.039 0.48,0.039 0.133,0 0.079,0.012 -0.16,0.04 l -0.418,-0.04 h -0.062 l -0.043,0.04 c -0.184,0.054 -0.399,0.093 -0.641,0.121 0.375,0 0.613,0.011 0.723,0.039 0.105,0 0.16,0.027 0.16,0.082 l 0.277,-0.043 c 0.293,-0.024 0.403,-0.024 0.321,0 -0.215,0.082 -0.442,0.148 -0.68,0.203 C 26.105,5.53 26,5.519 25.973,5.464 V 5.347 C 25.785,5.319 25.586,5.304 25.375,5.304 c -0.137,0.027 -0.203,0.027 -0.203,0 -0.293,0.054 -0.586,0.121 -0.879,0.203 h 0.039 c 0.563,0.105 0.801,0.226 0.723,0.359 -0.133,0.16 -0.414,0.184 -0.84,0.078 -0.137,0 -0.176,-0.039 -0.121,-0.117 0.027,-0.027 0.066,-0.027 0.121,0 0.211,0.024 0.344,0.012 0.398,-0.043 0.106,-0.078 0.028,-0.133 -0.238,-0.16 -0.16,0 -0.23,-0.023 -0.203,-0.078 0.027,0 0.043,-0.016 0.043,-0.039 -0.856,0.16 -1.801,0.344 -2.84,0.558 h -0.121 c -0.133,0.079 -0.266,0.118 -0.402,0.118 -0.161,0.027 -0.372,0.121 -0.637,0.281 0.238,0.187 0.465,0.402 0.68,0.641 0.16,-0.051 0.332,-0.094 0.519,-0.122 0.238,-0.023 0.465,-0.117 0.68,-0.277 0.32,0.051 0.426,0.094 0.32,0.117 -0.215,0.137 -0.387,0.215 -0.519,0.242 -0.348,0.051 -0.629,0.118 -0.84,0.2 0.16,-0.028 0.304,-0.039 0.437,-0.039 0.266,0.105 0.32,0.144 0.16,0.117 C 21.332,7.398 21,7.386 20.652,7.304 20.602,7.276 20.586,7.253 20.613,7.226 20.691,7.171 20.758,7.132 20.812,7.105 20.52,7.05 20.172,7.023 19.773,7.023 H 19.734 C 19.68,7.05 19.602,7.05 19.492,7.023 19.148,6.999 18.879,6.944 18.695,6.866 18.668,6.839 18.629,6.812 18.574,6.784 h 0.039 C 18.641,6.757 18.707,6.745 18.812,6.745 18.629,6.718 18.441,6.702 18.254,6.702 18.148,6.757 18.027,6.784 17.895,6.784 17.812,6.812 17.719,6.796 17.613,6.745 17.48,6.69 17.48,6.651 17.613,6.624 17.668,6.597 17.734,6.585 17.812,6.585 17.707,6.558 17.602,6.542 17.492,6.542 17.309,6.491 17.148,6.452 17.016,6.425 c -0.028,0.027 -0.055,0.039 -0.082,0.039 0.027,0.027 0.082,0.055 0.16,0.082 0.187,0.078 0.308,0.144 0.359,0.199 0.106,0.078 0.188,0.172 0.242,0.281 l 1.438,0.2 -1.641,0.757 -0.398,0.403 C 16.906,8.597 16.762,8.69 16.652,8.667 16.574,8.612 16.508,8.546 16.453,8.464 l -1.519,0.68 C 12.375,8.905 10.789,8.784 10.176,8.784 7.613,8.651 6.176,8.601 5.855,8.624 H 4.773 L 5.895,8.065 H 5.855 Z M 3.336,8.226 c 0.426,-0.028 0.746,-0.028 0.957,0 0.242,0 0.336,0.039 0.281,0.117 C 4.52,8.398 4.375,8.409 4.133,8.386 H 3.574 C 3.359,8.409 3.199,8.398 3.094,8.343 3.039,8.292 3.121,8.253 3.336,8.226 Z M 4.215,7.905 c 0.16,-0.109 0.465,-0.109 0.918,0 0.082,0.028 0.121,0.051 0.121,0.078 0,0.028 -0.027,0.043 -0.078,0.043 H 5.094 C 4.988,8.105 4.801,8.132 4.535,8.105 L 4.293,8.065 C 4.16,8.011 4.133,7.96 4.215,7.905 Z m 8.719,-1.402 c 0.347,0.027 0.668,0.066 0.961,0.121 0,-0.027 0.011,-0.055 0.039,-0.082 0,-0.078 0.039,-0.144 0.121,-0.199 -0.082,-0.028 -0.16,-0.051 -0.243,-0.078 -0.132,0 -0.238,-0.028 -0.32,-0.082 -0.105,0.109 -0.199,0.175 -0.277,0.199 -0.027,0.004 -0.121,0.043 -0.281,0.121 z m 0.601,-3.117 h 0.199 c 0.106,0.023 0.133,0.066 0.078,0.117 0.028,0.055 -0.105,0.082 -0.398,0.082 H 13.293 C 13.055,3.53 12.934,3.491 12.934,3.464 12.988,3.413 13.148,3.37 13.414,3.347 Z M 9.414,5.944 C 9.469,6.05 9.348,6.077 9.055,6.026 H 8.812 C 8.629,6.05 8.469,6.038 8.336,5.983 8.281,5.96 8.348,5.933 8.535,5.905 l 0.52,-0.039 c 0.215,-0.027 0.332,0 0.359,0.078 z M 7.695,6.343 V 6.304 C 7.641,6.171 7.746,6.132 8.016,6.183 8.121,6.21 8.254,6.237 8.414,6.265 8.574,6.347 8.613,6.413 8.535,6.464 8.453,6.597 8.359,6.69 8.254,6.745 8.066,6.773 7.883,6.733 7.695,6.624 7.535,6.519 7.535,6.425 7.695,6.343 Z M 7.336,6.944 7.016,7.026 C 6.801,7.077 6.629,7.05 6.492,6.944 6.309,6.866 6.32,6.796 6.535,6.745 6.668,6.718 6.762,6.679 6.812,6.624 6.949,6.573 7.094,6.597 7.254,6.706 7.441,6.784 7.469,6.866 7.336,6.944 Z m 9.719,2.282 c -0.188,-0.028 -0.36,-0.082 -0.52,-0.161 -0.055,0 -0.066,-0.027 -0.043,-0.082 0.082,-0.078 0.242,-0.117 0.481,-0.117 0.187,0 0.32,0.012 0.402,0.039 C 17.27,8.851 17.188,8.812 17.133,8.784 17.027,8.733 17.016,8.706 17.094,8.706 17.254,8.573 17.652,8.53 18.293,8.585 l 0.16,0.039 C 18.402,8.679 18.336,8.706 18.254,8.706 17.961,8.679 17.719,8.667 17.535,8.667 c -0.16,0.027 -0.055,0.106 0.32,0.238 0.133,0.055 0.106,0.094 -0.082,0.121 l -0.48,-0.043 c -0.16,-0.023 -0.227,0.016 -0.199,0.122 0.105,0.027 0.16,0.054 0.16,0.082 -0.027,0.023 -0.094,0.039 -0.199,0.039 z m 2,-0.883 C 18.84,8.425 18.613,8.437 18.375,8.386 18.293,8.358 18.27,8.319 18.293,8.265 L 19.016,8.105 18.812,7.944 18.773,7.905 c 0.161,-0.082 0.348,-0.109 0.563,-0.082 0,-0.238 0.316,-0.293 0.957,-0.16 l 0.082,0.043 C 20.348,7.73 20.281,7.757 20.176,7.784 19.855,7.706 19.707,7.745 19.734,7.905 l -0.199,0.039 c -0.242,-0.027 -0.375,-0.027 -0.402,0 0.027,0 0.109,0.055 0.242,0.161 0.078,0.027 0.066,0.039 -0.039,0.039 -0.188,0.054 -0.348,0.109 -0.481,0.16 z m 1.078,-2.238 c -0.16,0.027 -0.321,0.027 -0.481,0 0.028,0.027 0.043,0.066 0.043,0.121 0.024,0 0.024,0.011 0,0.039 C 19.855,6.21 20,6.159 20.133,6.105 Z m -1.199,-0.52 c 0.082,0.051 0.175,0.121 0.281,0.199 0.64,0.055 1.344,0.039 2.121,-0.039 0.266,-0.187 0.492,-0.308 0.68,-0.359 -0.188,0.023 -0.387,0.051 -0.602,0.078 -0.586,0.109 -1.078,0.148 -1.48,0.121 0,0.082 -0.039,0.105 -0.122,0.082 C 19.52,5.663 19.227,5.636 18.934,5.585 Z m -1.442,-1.68 -0.156,0.16 C 17.363,4.038 17.43,4.011 17.535,3.983 h 0.84 C 18.348,3.956 18.32,3.933 18.293,3.905 18.188,3.851 18.082,3.835 17.973,3.862 Z M 23.055,4.226 22.973,4.183 C 22.867,4.105 22.879,4.05 23.016,4.026 23.227,3.972 23.602,3.933 24.133,3.905 h 0.359 V 3.866 c 0,-0.027 0.137,-0.066 0.403,-0.121 0.242,0 0.48,0.016 0.718,0.039 l -0.32,-0.078 c -0.344,-0.082 -0.332,-0.148 0.043,-0.199 0.316,-0.027 0.641,0 0.957,0.078 0.43,0.109 0.75,0.215 0.961,0.32 0.16,0.106 0.027,0.16 -0.399,0.16 -0.402,0 -0.718,-0.039 -0.96,-0.121 0.054,0.082 -0.055,0.149 -0.321,0.2 0.375,0.054 0.508,0.121 0.403,0.203 -0.082,0.105 -0.309,0.133 -0.684,0.078 l -1.32,-0.121 c -0.028,0.082 -0.051,0.148 -0.078,0.199 0.187,0 0.238,0.027 0.16,0.082 -0.082,0.027 -0.172,0.051 -0.282,0.082 -0.16,0.133 -0.332,0.25 -0.519,0.359 -0.188,0.106 -0.426,0.184 -0.719,0.239 l 0.078,0.039 c 0.133,0 0.133,0.015 0,0.043 -0.105,0.051 -0.254,0.117 -0.437,0.199 0.691,-0.16 1.449,-0.359 2.277,-0.602 0.695,-0.132 1.535,-0.347 2.52,-0.64 C 27.613,4.12 27.934,3.972 27.934,3.866 27.879,3.733 27.348,3.519 26.336,3.226 L 26.254,3.183 c -0.563,-0.024 -1.348,0.07 -2.359,0.281 -1.016,0.242 -1.614,0.375 -1.801,0.402 -0.535,0.133 -0.973,0.227 -1.321,0.278 l 0.039,0.043 0.282,0.117 c 0.16,0 0.375,-0.039 0.64,-0.117 0.266,-0.055 0.481,-0.082 0.641,-0.082 0.023,0.105 0.078,0.175 0.156,0.199 0.137,0 0.309,-0.028 0.524,-0.078 z M 14.133,3.343 C 13.895,3.37 13.762,3.331 13.734,3.226 13.68,3.144 13.773,3.093 14.016,3.065 l 0.918,0.118 h 0.039 c 0.054,-0.024 0.175,-0.051 0.363,-0.078 0.266,0.027 0.383,0.078 0.359,0.16 0,0.16 -0.242,0.226 -0.722,0.199 L 14.254,3.382 c 0,-0.024 -0.039,-0.039 -0.121,-0.039 z m 1.121,-0.317 c -0.215,0.024 -0.399,0 -0.559,-0.082 -0.187,-0.027 -0.16,-0.05 0.078,-0.078 l 0.442,-0.043 c 0.293,0 0.437,0.043 0.437,0.121 0.028,0.028 -0.078,0.051 -0.316,0.079 h -0.082 z m 0.359,-0.523 c 0.106,-0.051 0.266,-0.039 0.481,0.043 0.215,0.105 0.226,0.184 0.039,0.238 -0.16,0.11 -0.321,0.11 -0.481,0 -0.105,0 -0.183,-0.027 -0.238,-0.078 -0.027,-0.082 0,-0.137 0.078,-0.16 z m 8.321,3.84 C 23.801,6.425 23.652,6.48 23.492,6.503 23.441,6.48 23.402,6.464 23.375,6.464 h -0.039 c -0.055,0.016 -0.109,0.016 -0.16,0 C 23.148,6.456 23.121,6.44 23.094,6.425 22.801,6.265 22.828,6.171 23.176,6.144 c 0.293,-0.051 0.543,-0.012 0.758,0.121 0.027,0.054 0.027,0.078 0,0.078 z M 25.453,5.745 25.414,5.663 v 0.082 c -0.266,0 -0.387,-0.015 -0.359,-0.039 L 25.016,5.624 c -0.028,-0.027 0.011,-0.039 0.117,-0.039 0.109,-0.027 0.176,-0.027 0.203,0 0.023,-0.027 0.078,-0.039 0.156,-0.039 0.082,0 0.149,0.012 0.203,0.039 l 0.078,0.121 c 0.082,0.051 0.055,0.078 -0.078,0.078 -0.109,0 -0.187,-0.011 -0.242,-0.039 z M 23.055,6.624 22.934,6.663 C 22.746,6.718 22.52,6.706 22.254,6.624 22.121,6.597 22.094,6.569 22.176,6.542 c 0.211,-0.184 0.543,-0.211 1,-0.078 0.105,0.051 0.117,0.094 0.039,0.117 h -0.16 c 0.027,0.031 0.027,0.043 0,0.043 z M 23.574,6.265 C 23.52,6.237 23.469,6.226 23.414,6.226 23.336,6.249 23.309,6.292 23.336,6.343 Z" + inkscape:connector-curvature="0" /> + + <path + id="path50" + style="fill:#000000;fill-opacity:0.298;fill-rule:evenodd" + d="M 0.336,7.046 C 1.48,6.483 3.535,5.519 6.492,4.144 c 3.949,-1.84 6.11,-2.825 6.481,-2.961 0.613,-0.211 1.043,-0.36 1.281,-0.438 0.398,-0.109 0.855,-0.148 1.359,-0.121 0.453,0 2.309,0.149 5.563,0.441 2.879,0.215 4.703,0.36 5.476,0.442 2.774,0.183 4.176,0.277 4.203,0.277 0.985,0.16 1.481,0.348 1.481,0.563 0.211,0.051 0.344,0.133 0.398,0.238 0.055,0.027 0.106,0.055 0.161,0.082 0.613,-0.133 1.414,-0.187 2.398,-0.16 1.121,0.027 3.414,0.199 6.883,0.519 1.652,0.133 2.707,0.227 3.16,0.282 l 4.316,0.398 C 49.84,3.761 50.016,3.8 50.176,3.827 50.254,3.612 49.84,3.425 48.934,3.265 48.105,3.132 46.922,3.026 45.375,2.944 L 42.293,2.706 C 38.613,2.358 36.199,2.148 35.055,2.065 34.469,2.038 33.613,2.093 32.492,2.226 32.227,1.983 31.254,1.745 29.574,1.507 29.176,1.452 28.133,1.331 26.453,1.148 25.867,1.065 23.934,0.866 20.652,0.546 17.188,0.226 15.254,0.054 14.855,0.026 14.426,-0.028 14.066,-0.001 13.773,0.108 13.398,0.241 13.012,0.382 12.613,0.526 12.219,0.667 9.926,1.753 5.734,3.784 1.539,5.819 -0.258,6.898 0.336,7.026 Z M 0.293,7.444 v 0.02 H 0.375 C 0.348,7.456 0.32,7.448 0.293,7.444 Z" + inkscape:connector-curvature="0" /> + + <path + id="path52" + style="fill:#827a55;fill-rule:evenodd" + d="m 0.773,8.265 c -0.027,0.05 0.149,0.105 0.52,0.16 H 1.895 C 1.922,8.37 1.988,8.292 2.094,8.183 c 0.242,-0.078 2.242,-1.051 6,-2.918 3.761,-1.84 5.84,-2.828 6.242,-2.961 0.559,-0.239 0.973,-0.387 1.238,-0.438 0.453,-0.082 0.918,-0.121 1.399,-0.121 0.64,0 2.386,0.094 5.242,0.281 3.039,0.184 4.812,0.293 5.32,0.317 0.371,0.027 1.785,0.094 4.238,0.203 0.293,0.051 0.563,0.09 0.801,0.117 -0.265,-0.051 -0.601,-0.117 -1,-0.199 C 30.586,2.358 29.199,2.276 27.414,2.226 26.773,2.171 25.027,2.038 22.176,1.823 19.242,1.636 17.52,1.546 17.016,1.546 16.559,1.519 16.148,1.558 15.773,1.663 15.719,1.663 15.309,1.796 14.535,2.065 5.867,5.956 1.336,7.983 0.934,8.144 0.855,8.198 0.801,8.237 0.773,8.265 Z M 31.895,2.386 C 31.707,2.358 31.52,2.331 31.336,2.304 31.121,2.276 29.773,2.144 27.293,1.905 20.812,1.37 17.121,1.116 16.215,1.144 c -0.586,-0.028 -1,-0.028 -1.242,0 C 14.68,1.171 14.293,1.292 13.812,1.503 13.387,1.636 11.121,2.663 7.016,4.585 2.879,6.503 0.707,7.519 0.492,7.624 0.281,7.733 0.414,7.8 0.895,7.823 1.293,7.612 3.359,6.64 7.094,4.905 11.121,3.038 13.32,2.026 13.695,1.866 c 0.586,-0.215 1.024,-0.359 1.321,-0.441 0.425,-0.082 0.879,-0.121 1.359,-0.121 0.453,0 2.277,0.121 5.48,0.363 3.067,0.211 4.918,0.344 5.559,0.398 1.867,0.051 3.281,0.161 4.238,0.321 z" + inkscape:connector-curvature="0" /> + + <path + id="path54" + style="fill:#69685a;fill-rule:evenodd" + d="M 6.094,7.706 5.973,7.585 5.453,7.503 C 5.242,7.425 5.066,7.425 4.934,7.503 4.906,7.558 4.922,7.597 4.973,7.624 c 0.082,0 0.136,0.012 0.16,0.039 l 0.121,0.043 c -0.027,0.024 0.027,0.078 0.16,0.16 0.266,0.024 0.441,0 0.52,-0.082 0.082,0 0.132,-0.027 0.16,-0.078 z M 5.613,7.304 C 5.719,7.386 5.867,7.425 6.055,7.425 6.32,7.476 6.48,7.452 6.535,7.343 h 0.16 C 6.773,7.265 6.695,7.198 6.453,7.144 6.188,7.093 5.922,7.093 5.652,7.144 5.574,7.226 5.559,7.276 5.613,7.304 Z m 7.039,0.039 c 0.11,0 0.203,0.015 0.282,0.043 0.16,0 0.265,0.066 0.32,0.199 l -0.121,0.039 c -0.321,0 -0.531,-0.051 -0.641,-0.16 0.028,-0.027 0.082,-0.066 0.16,-0.121 z M 11.375,8.464 C 11.293,8.382 11.32,8.315 11.453,8.265 c 0.293,-0.055 0.496,0 0.602,0.16 -0.106,0.051 -0.172,0.078 -0.2,0.078 V 8.464 c -0.214,0.082 -0.375,0.082 -0.48,0 z M 5.895,8.065 7.535,7.866 C 8.176,7.784 8.652,7.718 8.973,7.663 9,7.636 9.039,7.636 9.094,7.663 9.176,7.69 9.254,7.73 9.336,7.784 9.895,8.05 10.293,8.237 10.535,8.343 l 0.36,0.199 c 0.16,0.027 0.332,0.055 0.519,0.082 0.133,0.027 0.332,0.039 0.602,0.039 0.265,0.027 0.664,0.082 1.199,0.16 0.558,0.055 0.984,0.055 1.277,0 0.297,-0.027 0.508,-0.05 0.641,-0.078 0.137,0 0.242,-0.043 0.32,-0.121 0.188,-0.16 0.359,-0.414 0.52,-0.758 V 7.823 L 15.855,7.624 C 15.641,7.437 15.359,7.292 15.016,7.183 14.828,7.159 14.574,7.116 14.254,7.065 14.094,7.038 13.961,7.023 13.855,7.023 L 11.973,6.944 c -0.161,0 -0.36,0.028 -0.598,0.079 -0.43,0.027 -0.734,0.054 -0.922,0.082 L 9.574,7.183 C 9.441,7.05 9.27,6.823 9.055,6.503 l -3.2,1.562 z m 11.917,-1.48 c -0.078,0 -0.144,0.012 -0.199,0.039 -0.133,0.027 -0.133,0.066 0,0.121 0.106,0.051 0.199,0.067 0.282,0.039 0.132,0 0.253,-0.027 0.359,-0.078 0.105,-0.055 0.172,-0.109 0.199,-0.16 L 18.492,6.503 H 18.453 C 18.426,6.48 18.387,6.452 18.336,6.425 18.281,6.398 18.098,6.37 17.773,6.343 c 0,-0.028 0.016,-0.051 0.039,-0.078 0.161,0 0.309,0.011 0.442,0.039 0.226,0 0.426,-0.008 0.601,-0.02 0.024,-0.011 0.051,-0.015 0.079,-0.019 0.054,0 0.105,-0.016 0.16,-0.039 0.054,0 0.082,-0.016 0.082,-0.043 L 19.094,6.105 C 19.055,6.085 18.973,6.062 18.855,6.042 18.82,6.038 18.781,6.03 18.734,6.023 18.227,5.944 17.789,5.866 17.414,5.784 c -0.027,0.028 0.012,0.051 0.121,0.082 h 0.117 c -0.105,0.106 -0.172,0.199 -0.199,0.278 -0.586,-0.028 -0.973,-0.028 -1.16,0 h -0.16 c 0,0.054 0.043,0.082 0.121,0.082 0.215,0.078 0.48,0.132 0.801,0.16 0.054,0.023 0.105,0.039 0.16,0.039 0.32,0.055 0.574,0.082 0.758,0.082 -0.051,0.051 -0.106,0.078 -0.161,0.078 z m 2.403,-0.121 c 0.265,-0.16 0.48,-0.254 0.64,-0.281 0.133,0 0.266,-0.039 0.399,-0.118 -0.371,0.051 -0.746,0.067 -1.121,0.04 C 20,6.159 19.855,6.21 19.695,6.265 h -0.043 c -0.238,0.078 -0.437,0.133 -0.597,0.16 -0.082,0.051 -0.082,0.094 0,0.117 0.16,0.082 0.148,0.137 -0.039,0.16 h -0.161 l -0.043,0.043 c -0.105,0 -0.171,0.012 -0.199,0.039 h -0.039 c 0.051,0.028 0.094,0.051 0.121,0.082 0.184,0.078 0.453,0.133 0.797,0.157 0.11,0.027 0.188,0.027 0.242,0 h 0.039 C 19.746,6.944 19.652,6.905 19.492,6.905 19.336,6.745 19.426,6.706 19.773,6.784 19.961,6.757 19.973,6.718 19.812,6.667 19.629,6.585 19.629,6.53 19.812,6.507 19.867,6.503 20,6.491 20.215,6.464 Z m 0.68,0.641 h -0.083 c -0.05,0.027 -0.117,0.066 -0.199,0.121 -0.027,0.027 -0.011,0.05 0.039,0.078 0.348,0.082 0.684,0.094 1,0.043 0.16,0.023 0.11,-0.016 -0.16,-0.121 -0.133,0 -0.277,0.011 -0.437,0.039 0.215,-0.078 0.492,-0.145 0.84,-0.2 0.132,-0.027 0.304,-0.105 0.519,-0.238 0.106,-0.027 0,-0.066 -0.32,-0.121 -0.215,0.16 -0.442,0.254 -0.68,0.281 -0.187,0.024 -0.359,0.063 -0.519,0.118 z m 3.398,-1.602 h -0.078 c 0,0.027 -0.016,0.043 -0.039,0.043 -0.028,0.051 0.039,0.078 0.199,0.078 0.266,0.027 0.348,0.082 0.238,0.16 -0.054,0.055 -0.187,0.067 -0.398,0.039 -0.055,-0.023 -0.094,-0.023 -0.121,0 -0.055,0.082 -0.012,0.121 0.121,0.121 0.426,0.106 0.707,0.082 0.84,-0.078 0.082,-0.136 -0.16,-0.254 -0.719,-0.363 z m 1.199,-0.277 c -0.078,0.027 -0.183,0.05 -0.316,0.078 0,0.027 0.066,0.027 0.199,0 0.211,0 0.414,0.015 0.598,0.039 v 0.121 c 0.027,0.055 0.132,0.066 0.32,0.039 0.242,-0.051 0.469,-0.117 0.68,-0.199 0.082,-0.028 -0.024,-0.028 -0.321,0 l -0.277,0.039 c 0,-0.051 -0.055,-0.078 -0.16,-0.078 -0.11,-0.028 -0.348,-0.039 -0.723,-0.039 z m 0.844,-0.2 C 26.305,5.038 26.27,5.054 26.234,5.065 l 0.418,0.04 c 0.243,-0.028 0.293,-0.04 0.16,-0.04 -0.023,0 -0.183,-0.015 -0.476,-0.039 z M 17.652,3.745 17.414,3.823 C 17.336,3.851 17.242,3.839 17.133,3.784 17.027,3.73 16.949,3.706 16.895,3.706 c -0.133,-0.027 -0.243,-0.027 -0.321,0 -0.105,0.024 -0.066,0.051 0.121,0.078 0.133,0.028 0.321,0.082 0.559,0.16 l 0.238,-0.039 0.481,-0.039 c 0.109,-0.027 0.215,-0.015 0.32,0.039 l 0.082,0.078 c 0,0.028 0.012,0.067 0.039,0.122 -0.055,0.054 -0.078,0.093 -0.078,0.121 0.105,-0.028 0.211,-0.043 0.316,-0.043 0.055,0 0.11,-0.024 0.16,-0.078 V 3.983 C 18.789,3.933 18.746,3.89 18.695,3.866 18.48,3.757 18.215,3.718 17.895,3.745 Z m -3.558,0.16 C 14.039,3.878 13.961,3.866 13.855,3.866 l -0.082,0.039 c 0.028,0.028 0.122,0.039 0.282,0.039 0.347,0.055 0.574,0.067 0.679,0.039 h 0.121 C 14.961,3.96 14.707,3.933 14.094,3.905 Z m -0.442,-0.16 h 0.043 l -0.441,-0.16 c -0.16,0 -0.332,0.012 -0.52,0.039 -0.132,0.027 -0.105,0.055 0.078,0.082 l 0.204,0.039 c 0.05,0.028 0.226,0.039 0.519,0.039 0.078,0 0.117,-0.011 0.117,-0.039 z m -0.84,0.32 c 0,-0.082 -0.05,-0.132 -0.16,-0.16 -0.078,-0.027 -0.16,-0.039 -0.238,-0.039 h -0.281 c -0.238,0 -0.344,0.067 -0.321,0.199 0.028,0.051 0.083,0.094 0.161,0.118 h 0.082 c 0.078,0.054 0.16,0.082 0.238,0.082 h 0.281 c 0.215,-0.028 0.305,-0.094 0.281,-0.2 z m 0.524,0.161 c -0.164,0.019 -0.172,0.047 -0.024,0.078 -0.132,-0.012 -0.261,-0.012 -0.378,0 -0.321,0.054 -0.348,0.121 -0.079,0.203 0.293,0.051 0.559,0.066 0.797,0.039 0.27,-0.055 0.27,-0.109 0,-0.16 -0.05,-0.016 -0.105,-0.031 -0.16,-0.039 h 0.723 c 0.293,-0.055 0,-0.094 -0.879,-0.121 z m -2.16,0.32 c 0.051,0.078 0.133,0.117 0.238,0.117 -0.027,0 -0.066,0.016 -0.121,0.043 L 11.016,4.663 h -0.243 c -0.238,0.027 -0.332,0.067 -0.281,0.121 0.082,0.028 0.16,0.051 0.242,0.082 h 0.641 C 11.613,4.839 11.734,4.796 11.734,4.745 11.734,4.718 11.707,4.69 11.652,4.663 11.867,4.69 12.039,4.651 12.176,4.546 12.254,4.409 12.16,4.319 11.895,4.265 V 4.226 C 11.707,4.171 11.574,4.183 11.492,4.265 h -0.039 c -0.211,-0.028 -0.32,0.011 -0.32,0.117 -0.024,0.082 -0.012,0.137 0.043,0.164 z m 1.238,0.32 C 12.309,4.89 12.215,4.905 12.133,4.905 H 12.094 C 11.961,4.956 12,4.999 12.215,5.023 c 0.133,0.054 0.277,0.07 0.437,0.042 h 0.043 c 0.106,-0.054 0.117,-0.109 0.039,-0.16 0.133,0.051 0.266,0.067 0.399,0.039 0.293,-0.027 0.293,-0.078 0,-0.16 -0.266,-0.051 -0.492,-0.066 -0.68,-0.039 -0.32,0.028 -0.332,0.067 -0.039,0.121 z m -1.84,0.598 C 10.574,5.437 10.559,5.409 10.535,5.382 10.48,5.331 10.375,5.276 10.215,5.226 L 9.934,5.183 C 9.695,5.159 9.586,5.198 9.613,5.304 9.578,5.398 9.609,5.464 9.715,5.503 9.461,5.53 9.348,5.585 9.375,5.663 L 9.293,5.624 H 8.855 C 8.613,5.651 8.547,5.69 8.652,5.741 8.707,5.796 8.867,5.823 9.133,5.823 l 0.64,0.039 c 0.293,0 0.403,-0.066 0.321,-0.199 0,-0.043 -0.035,-0.078 -0.102,-0.098 l 0.184,0.016 c 0.211,0.055 0.344,0.016 0.398,-0.117 z M 4.215,7.905 C 4.133,7.956 4.16,8.011 4.293,8.065 l 0.242,0.04 c 0.266,0.027 0.453,0 0.559,-0.082 h 0.082 c 0.051,0 0.078,-0.012 0.078,-0.04 C 5.254,7.956 5.215,7.933 5.133,7.905 4.68,7.796 4.375,7.796 4.215,7.905 Z M 3.336,8.226 C 3.121,8.253 3.039,8.292 3.094,8.343 3.199,8.398 3.359,8.409 3.574,8.386 H 4.133 C 4.375,8.409 4.52,8.398 4.574,8.343 4.625,8.265 4.535,8.226 4.293,8.226 4.082,8.198 3.762,8.198 3.336,8.226 Z M 15.812,4.585 c 0.137,0.105 0.297,0.172 0.481,0.199 0.082,0.028 0.148,0.039 0.199,0.039 0.051,-0.047 0.137,-0.093 0.262,-0.14 -0.047,0.011 -0.094,0.004 -0.141,-0.02 -0.105,0 -0.199,-0.012 -0.277,-0.039 h 0.156 c 0.028,-0.027 0.043,-0.055 0.043,-0.082 0.024,0.027 0.067,0.043 0.117,0.043 l 0.043,-0.043 c 0,0.027 0.012,0.043 0.039,0.043 h 0.078 c 0.11,0.023 0.137,0.012 0.083,-0.043 l -0.2,-0.316 c -0.027,-0.028 -0.109,-0.028 -0.242,0 -0.105,0 -0.144,0.011 -0.117,0.039 l 0.078,0.117 C 16.387,4.358 16.359,4.343 16.336,4.343 16.281,4.315 16.199,4.292 16.094,4.265 c -0.078,0.027 -0.133,0.05 -0.16,0.078 -0.028,0 -0.028,0.015 0,0.039 h -0.079 c -0.613,0.027 -1.043,0.176 -1.281,0.441 -0.105,0.082 -0.015,0.133 0.281,0.16 l 0.34,-0.039 h 0.02 l 0.039,-0.039 c 0.027,0 0.039,-0.015 0.039,-0.043 0,-0.027 -0.012,-0.039 -0.039,-0.039 -0.027,-0.027 -0.066,-0.039 -0.121,-0.039 0.16,-0.133 0.375,-0.215 0.64,-0.242 z M 15.055,5.026 C 14.867,4.999 14.762,5.011 14.734,5.065 l -0.441,0.282 -0.039,0.039 c 0.055,0 0.094,0.012 0.121,0.039 C 14.133,5.398 13.934,5.386 13.773,5.386 13.668,5.358 13.535,5.347 13.375,5.347 c -0.266,0 -0.453,0.039 -0.563,0.117 h -0.039 c 0.055,0.055 0.122,0.109 0.2,0.16 0.215,0.109 0.519,0.199 0.922,0.281 l 0.078,0.039 c 0.269,0.055 0.519,0.082 0.761,0.082 0.215,0.028 0.399,0.051 0.559,0.079 0.109,-0.024 0.148,-0.051 0.121,-0.079 0,-0.027 -0.066,-0.054 -0.199,-0.082 -0.106,0.028 -0.227,0.028 -0.36,0 -0.269,0 -0.535,-0.039 -0.8,-0.117 C 13.867,5.8 13.695,5.745 13.535,5.667 13.242,5.558 13.227,5.491 13.492,5.468 c 0.188,0 0.43,0.012 0.723,0.039 0.078,0.027 0.172,0.039 0.277,0.039 h 0.481 c 0.215,-0.027 0.269,-0.051 0.16,-0.078 L 14.734,5.386 c -0.054,-0.028 0.012,-0.067 0.2,-0.121 0.054,-0.028 0.121,-0.094 0.199,-0.2 z m 1.359,0.477 C 16.176,5.398 16.055,5.292 16.055,5.183 L 15.934,5.026 C 15.883,4.972 15.773,4.933 15.613,4.905 c -0.16,0 -0.211,0.028 -0.16,0.078 l 0.402,0.524 c 0.028,0.023 0.106,0.051 0.239,0.078 0.082,-0.027 0.133,-0.039 0.16,-0.039 0,-0.027 0.016,-0.039 0.039,-0.039 0.055,-0.004 0.094,-0.004 0.121,-0.004 z M 12.293,5.386 C 12.426,5.331 12.414,5.276 12.254,5.226 12.066,5.144 11.895,5.132 11.734,5.183 l -0.121,0.043 c -0.078,0.105 -0.011,0.172 0.199,0.199 0.215,0 0.348,-0.016 0.403,-0.039 z M 7.336,6.944 C 7.469,6.866 7.441,6.784 7.254,6.706 7.094,6.597 6.949,6.569 6.812,6.624 6.762,6.679 6.668,6.718 6.535,6.745 6.32,6.796 6.309,6.862 6.492,6.944 6.629,7.05 6.801,7.077 7.016,7.023 Z M 7.695,6.343 c -0.16,0.082 -0.16,0.176 0,0.281 C 7.879,6.733 8.066,6.773 8.254,6.745 8.359,6.69 8.453,6.597 8.535,6.464 8.613,6.409 8.574,6.343 8.414,6.265 8.254,6.237 8.121,6.21 8.016,6.183 7.746,6.132 7.641,6.171 7.695,6.304 Z M 9.414,5.944 C 9.387,5.866 9.27,5.839 9.055,5.866 L 8.535,5.905 C 8.348,5.933 8.281,5.956 8.336,5.983 8.469,6.038 8.629,6.05 8.812,6.026 H 9.055 C 9.348,6.077 9.469,6.05 9.414,5.944 Z M 13.535,3.386 13.414,3.343 c -0.266,0.027 -0.426,0.066 -0.48,0.121 0,0.027 0.121,0.066 0.359,0.121 h 0.121 c 0.293,0 0.426,-0.027 0.398,-0.082 C 13.867,3.452 13.84,3.409 13.734,3.382 13.68,3.386 13.613,3.386 13.535,3.386 Z m 3.52,5.84 c 0.105,0 0.172,-0.016 0.199,-0.043 0,-0.024 -0.051,-0.051 -0.16,-0.078 -0.028,-0.106 0.039,-0.149 0.199,-0.122 l 0.48,0.043 C 17.961,8.999 17.988,8.96 17.855,8.905 17.48,8.773 17.375,8.69 17.535,8.667 c 0.184,0 0.426,0.012 0.719,0.039 0.082,0 0.148,-0.027 0.199,-0.082 L 18.293,8.585 C 17.652,8.53 17.254,8.569 17.094,8.706 c -0.078,0 -0.067,0.024 0.039,0.078 0.055,0.028 0.137,0.067 0.242,0.121 -0.082,-0.027 -0.215,-0.039 -0.402,-0.039 -0.239,0 -0.399,0.039 -0.481,0.117 -0.023,0.055 -0.012,0.082 0.043,0.082 0.16,0.079 0.332,0.133 0.52,0.161 z m 2,-0.883 -0.2,-0.039 c 0.133,-0.051 0.293,-0.106 0.481,-0.16 0.105,0 0.117,-0.012 0.039,-0.039 -0.133,-0.106 -0.215,-0.161 -0.242,-0.161 0.027,-0.027 0.16,-0.027 0.402,0 L 19.734,7.905 C 19.707,7.745 19.855,7.706 20.176,7.784 20.281,7.757 20.348,7.733 20.375,7.706 L 20.293,7.663 c -0.641,-0.133 -0.957,-0.078 -0.957,0.16 -0.215,-0.027 -0.402,0 -0.563,0.082 l 0.039,0.039 0.204,0.161 -0.723,0.16 c -0.023,0.05 0,0.093 0.082,0.117 0.238,0.055 0.465,0.043 0.68,-0.039 z m 0.879,-2.758 c 0.027,-0.027 0,-0.055 -0.079,-0.082 L 19.652,5.425 C 19.387,5.37 19.227,5.319 19.176,5.265 19.066,5.21 19.148,5.159 19.414,5.105 L 19.375,4.983 c 0.051,-0.023 0.078,-0.078 0.078,-0.156 0.16,-0.082 0.387,-0.094 0.68,-0.043 h 0.801 c -0.426,-0.078 -0.758,-0.144 -1,-0.199 -0.586,-0.051 -0.907,0.027 -0.961,0.242 -0.106,0.156 -0.094,0.278 0.043,0.36 -0.028,0.023 -0.055,0.039 -0.082,0.039 -0.051,0.054 -0.012,0.105 0.121,0.16 l 0.121,0.039 C 18.988,5.425 18.812,5.386 18.652,5.308 18.68,5.253 18.641,5.214 18.535,5.187 18.426,5.132 18.336,5.12 18.254,5.148 c -0.078,-0.028 -0.145,-0.028 -0.199,0 -0.133,0.023 -0.133,0.078 0,0.16 l 0.039,-0.043 c -0.055,0.082 -0.078,0.16 -0.078,0.242 h 0.078 c 0.105,0.051 0.215,0.078 0.32,0.078 0.055,-0.023 0.078,-0.066 0.078,-0.117 0.188,0.051 0.336,0.094 0.442,0.117 0.293,0.055 0.586,0.082 0.878,0.082 0.083,0.023 0.122,-0.004 0.122,-0.082 z m 1.402,-0.719 c 0,0.024 -0.027,0.051 -0.082,0.078 h -0.078 l 0.277,0.161 0.039,-0.04 h 0.043 c 0.051,-0.054 0,-0.109 -0.16,-0.16 z m 1.199,0.399 c -0.082,-0.028 -0.148,-0.028 -0.199,0 -0.082,0.027 -0.188,0.066 -0.32,0.117 -0.188,0.055 -0.414,0.176 -0.68,0.363 0.156,-0.027 0.316,-0.066 0.476,-0.121 0.137,-0.027 0.254,-0.055 0.364,-0.082 0.183,-0.078 0.332,-0.144 0.437,-0.199 0.133,-0.028 0.133,-0.039 0,-0.039 z M 17.973,6.144 C 18,6.093 18.055,6.026 18.133,5.944 v 0.039 c 0.16,0.055 0.293,0.11 0.402,0.161 z m -0.637,0.121 0.078,0.039 c -0.133,0 -0.254,-0.012 -0.359,-0.039 z M 16.094,3.624 c -0.106,0.055 -0.106,0.094 0,0.121 0.105,0.028 0.187,0.028 0.242,0 h 0.039 c 0.16,-0.027 0.078,-0.066 -0.242,-0.121 z m 1.359,0.84 C 17.402,4.382 17.336,4.304 17.254,4.226 17.203,4.171 17.121,4.144 17.016,4.144 c -0.161,0.027 -0.227,0.054 -0.204,0.082 0.11,0.105 0.176,0.211 0.204,0.316 l 0.078,0.043 c 0.082,-0.027 0.199,-0.066 0.359,-0.121 z m -1.84,-1.961 -0.121,0.043 c -0.078,0.023 -0.105,0.078 -0.078,0.16 0.055,0.051 0.133,0.078 0.238,0.078 0.16,0.11 0.321,0.11 0.481,0 C 16.32,2.733 16.309,2.651 16.094,2.546 15.879,2.464 15.719,2.452 15.613,2.503 Z m -0.359,0.523 h 0.082 c 0.238,-0.027 0.344,-0.054 0.316,-0.082 0,-0.078 -0.144,-0.121 -0.437,-0.121 l -0.442,0.043 c -0.238,0.024 -0.265,0.051 -0.078,0.078 0.16,0.082 0.344,0.106 0.559,0.082 z m -1.121,0.317 c 0.082,0 0.121,0.015 0.121,0.043 l 0.719,0.078 c 0.48,0.027 0.722,-0.039 0.722,-0.199 0.024,-0.082 -0.093,-0.133 -0.359,-0.16 -0.188,0.027 -0.309,0.054 -0.363,0.082 H 14.934 L 14.016,3.065 c -0.243,0.028 -0.336,0.079 -0.282,0.161 0.028,0.105 0.161,0.144 0.399,0.117 z m 9.801,3 c 0.027,0 0.027,-0.024 0,-0.078 -0.215,-0.133 -0.465,-0.172 -0.758,-0.121 -0.348,0.027 -0.375,0.121 -0.082,0.281 0.027,0.015 0.054,0.031 0.082,0.039 0.051,0.019 0.105,0.019 0.16,0 h 0.039 c 0.027,0 0.066,0.016 0.117,0.043 0.16,-0.027 0.309,-0.082 0.442,-0.164 z m 1.519,-0.598 c 0.055,0.028 0.133,0.039 0.242,0.039 0.133,0 0.16,-0.027 0.078,-0.078 L 25.695,5.585 C 25.641,5.558 25.574,5.546 25.492,5.546 c -0.078,0 -0.133,0.012 -0.156,0.039 -0.027,-0.027 -0.094,-0.027 -0.199,0 -0.11,0 -0.149,0.012 -0.121,0.039 l 0.039,0.082 c -0.028,0.027 0.093,0.039 0.359,0.039 V 5.667 Z m -1.879,0.52 -0.238,0.078 c -0.027,-0.051 0,-0.09 0.078,-0.117 0.055,0 0.106,0.011 0.16,0.039 z m -0.519,0.359 c 0.027,0 0.027,-0.012 0,-0.039 h 0.16 c 0.078,-0.027 0.066,-0.066 -0.039,-0.121 -0.457,-0.133 -0.789,-0.106 -1,0.082 -0.082,0.027 -0.055,0.051 0.078,0.078 0.266,0.082 0.492,0.094 0.68,0.043 z" + inkscape:connector-curvature="0" /> + + <path + id="path56" + style="fill:#d6cdbc;fill-rule:evenodd" + d="m 17.492,7.983 -1.039,0.481 c 0.055,0.082 0.121,0.148 0.199,0.203 0.11,0.023 0.254,-0.07 0.442,-0.281 z M 13.895,6.624 c 0.664,0.027 1.16,0.066 1.48,0.121 l 2.32,0.281 C 17.641,6.917 17.559,6.823 17.453,6.745 17.402,6.69 17.281,6.624 17.094,6.546 17.016,6.519 16.961,6.491 16.934,6.464 c -0.293,0.105 -0.641,0.16 -1.039,0.16 -0.426,0 -0.989,-0.094 -1.68,-0.281 h -0.16 c -0.082,0.055 -0.121,0.121 -0.121,0.199 -0.028,0.027 -0.039,0.055 -0.039,0.082 z m 4.359,0.082 c 0.187,0 0.375,0.012 0.558,0.039 L 18.855,6.706 C 18.801,6.651 18.773,6.612 18.773,6.585 c -0.105,0 -0.199,-0.027 -0.281,-0.082 l -0.039,0.043 c -0.027,0.051 -0.094,0.105 -0.199,0.16 z M 17.812,6.585 c 0.055,0 0.11,-0.027 0.161,-0.082 -0.184,0 -0.438,-0.023 -0.758,-0.078 -0.055,0 -0.106,-0.016 -0.16,-0.043 l -0.039,0.043 c 0.132,0.027 0.293,0.066 0.476,0.121 0.11,0 0.215,0.012 0.32,0.039 z M 19.215,5.784 C 19.109,5.706 19.016,5.636 18.934,5.585 18.828,5.558 18.68,5.519 18.492,5.464 c 0,0.055 -0.023,0.094 -0.078,0.121 0.238,0.078 0.508,0.145 0.801,0.199 z M 18.812,4.105 C 19,4.077 19.176,4.038 19.336,3.983 h -0.524 z m -1.359,0.359 c 0.215,-0.055 0.508,-0.133 0.883,-0.238 0,-0.028 0.023,-0.067 0.078,-0.121 C 18.387,4.05 18.375,4.011 18.375,3.983 h -0.84 C 17.43,4.011 17.363,4.038 17.336,4.065 l 0.156,-0.16 -0.238,0.039 C 17.016,3.866 16.828,3.812 16.695,3.784 16.508,3.757 16.469,3.733 16.574,3.706 c 0.078,-0.027 0.188,-0.027 0.321,0 0.05,0 0.132,0.024 0.238,0.078 0.109,0.055 0.203,0.067 0.281,0.039 L 17.652,3.745 C 17.707,3.69 17.719,3.612 17.695,3.503 l 0.879,-0.637 c -0.347,0.078 -0.586,0.133 -0.719,0.157 -0.347,0.082 -0.628,0.121 -0.839,0.121 0.023,-0.028 0.05,-0.094 0.078,-0.2 0.027,-0.132 0,-0.238 -0.078,-0.32 -0.321,0 -0.536,0.133 -0.641,0.402 l -0.281,0.559 c -0.028,0.051 -0.254,0.238 -0.68,0.559 -0.105,0.054 -0.226,0.109 -0.359,0.16 -0.055,0 -0.094,-0.012 -0.121,-0.039 0,-0.028 -0.012,-0.055 -0.039,-0.082 -0.133,0.054 -0.266,0.175 -0.403,0.359 -0.293,0.293 -0.519,0.481 -0.68,0.563 l -0.437,0.238 c 0.16,0 0.293,0.015 0.398,0.039 0.161,0 0.36,0.016 0.602,0.043 C 14.348,5.398 14.309,5.382 14.254,5.382 l 0.039,-0.039 0.441,-0.278 c 0.028,-0.054 0.133,-0.07 0.321,-0.042 0.035,-0.02 0.086,-0.047 0.14,-0.079 l -0.34,0.039 C 14.559,4.96 14.469,4.905 14.574,4.823 14.812,4.558 15.242,4.409 15.855,4.386 h 0.079 c -0.028,-0.028 -0.028,-0.043 0,-0.043 0.027,-0.024 0.082,-0.051 0.16,-0.078 0.105,0.027 0.187,0.05 0.242,0.078 0.023,0 0.051,0.015 0.078,0.043 L 16.336,4.265 c -0.027,-0.028 0.012,-0.039 0.117,-0.039 0.133,-0.028 0.215,-0.028 0.242,0 l 0.2,0.32 c 0.05,0.051 0.027,0.066 -0.083,0.039 h -0.039 l 0.082,0.039 c 0.028,0 0.106,-0.012 0.239,-0.039 L 17.016,4.546 C 16.988,4.437 16.922,4.331 16.812,4.226 16.789,4.198 16.855,4.171 17.016,4.144 c 0.105,0 0.183,0.027 0.238,0.082 0.082,0.078 0.148,0.16 0.199,0.238 z M 15.812,4.585 15.773,4.546 c -0.265,0.023 -0.48,0.105 -0.64,0.238 0.055,0 0.094,0.016 0.121,0.039 0.027,0 0.039,0.016 0.039,0.043 0.16,-0.082 0.336,-0.176 0.519,-0.281 z M 13.414,3.944 c 0.133,-0.027 0.254,-0.039 0.359,-0.039 l 0.082,-0.039 c 0.106,0 0.184,0.012 0.239,0.039 C 14.066,3.878 14.055,3.851 14.055,3.823 L 13.934,3.706 C 13.855,3.679 13.773,3.69 13.695,3.745 h -0.043 v 0.078 z m -2.441,1.52 C 10.84,5.437 10.762,5.409 10.734,5.382 c 0,-0.024 -0.015,-0.051 -0.039,-0.078 l -0.16,0.078 c 0.024,0.027 0.039,0.055 0.039,0.082 0.106,0.027 0.238,0.027 0.399,0 z m 2.922,0.441 C 13.492,5.823 13.188,5.73 12.973,5.624 12.84,5.73 12.719,5.784 12.613,5.784 h -0.238 c -0.563,0.239 -1.133,0.414 -1.723,0.52 0.856,0.078 1.618,0.148 2.282,0.199 0.16,-0.078 0.254,-0.121 0.281,-0.121 0.078,-0.024 0.172,-0.09 0.277,-0.199 0.028,0 0.028,-0.012 0,-0.039 l 0.043,-0.039 h 0.039 c 0.028,0 0.039,-0.016 0.039,-0.04 h 0.039 c 0.028,0 0.055,-0.015 0.082,-0.042 z M 14.492,5.546 C 14.387,5.546 14.293,5.53 14.215,5.503 13.922,5.48 13.68,5.464 13.492,5.464 c -0.265,0.027 -0.25,0.094 0.043,0.199 0.16,0.082 0.332,0.133 0.52,0.16 l 0.078,-0.039 z m 1.602,-1.922 h 0.039 c 0.32,0.055 0.402,0.094 0.242,0.121 h -0.039 c -0.055,0.028 -0.137,0.028 -0.242,0 -0.106,-0.027 -0.106,-0.066 0,-0.121 z m 3.558,2.641 h 0.043 c 0.024,-0.028 0.024,-0.039 0,-0.039 0,-0.055 -0.015,-0.094 -0.043,-0.121 -0.254,0 -0.519,-0.02 -0.797,-0.059 0.118,0.019 0.2,0.039 0.239,0.059 l 0.082,0.078 0.039,0.043 c 0.187,0 0.332,0.011 0.437,0.039 z m -0.918,0.199 c 0,-0.027 0.028,-0.039 0.078,-0.039 L 18.734,6.382 c 0.02,-0.055 0.059,-0.086 0.121,-0.098 -0.175,0.012 -0.375,0.02 -0.601,0.02 l 0.199,0.078 c 0.133,0.027 0.227,0.055 0.281,0.082 z m 1.399,-1.68 c -0.293,-0.051 -0.52,-0.039 -0.68,0.039 0,0.082 -0.027,0.137 -0.078,0.16 l 0.039,0.122 0.281,-0.04 -0.16,-0.042 C 19.48,4.999 19.547,4.956 19.734,4.905 19.867,4.851 20,4.812 20.133,4.784 Z m 1.359,0.281 c 0.106,0.079 -0.066,0.129 -0.519,0.161 0.215,0.05 0.254,0.089 0.121,0.117 -0.188,0.027 -0.305,0.039 -0.36,0.039 -0.398,0.055 -0.746,0.055 -1.039,0 l -0.043,0.043 0.203,0.078 c 0.079,0.027 0.106,0.055 0.079,0.082 0.402,0.027 0.894,-0.016 1.48,-0.121 0.215,-0.027 0.414,-0.051 0.602,-0.078 0.132,-0.055 0.238,-0.094 0.32,-0.121 0.051,-0.028 0.117,-0.028 0.199,0 0.293,-0.055 0.531,-0.133 0.719,-0.239 0.187,-0.109 0.359,-0.226 0.519,-0.359 -0.16,0.023 -0.347,0.039 -0.558,0.039 -0.32,0 -0.879,-0.016 -1.68,-0.039 -0.265,-0.027 -0.293,-0.082 -0.082,-0.16 0.348,-0.055 0.695,-0.07 1.039,-0.043 0.453,0.027 0.828,0.043 1.121,0.043 h 0.282 c 0.027,-0.055 0.05,-0.121 0.078,-0.203 h -0.52 C 23.293,4.253 23.16,4.226 23.055,4.226 22.84,4.276 22.668,4.304 22.535,4.304 22.453,4.28 22.402,4.21 22.375,4.105 c -0.16,0 -0.375,0.027 -0.641,0.082 -0.265,0.078 -0.48,0.117 -0.64,0.117 L 20.812,4.187 20.773,4.144 c -1.011,0.214 -1.652,0.347 -1.918,0.402 -0.882,0.266 -1.308,0.492 -1.281,0.68 l 0.039,0.039 v 0.039 c 0.055,0.054 0.188,0.121 0.403,0.199 0,-0.078 0.023,-0.16 0.078,-0.238 l -0.039,0.039 c -0.133,-0.078 -0.133,-0.133 0,-0.16 0.054,-0.028 0.121,-0.028 0.199,0 0.082,-0.028 0.172,-0.012 0.281,0.039 0.106,0.027 0.145,0.07 0.117,0.121 0.16,0.082 0.336,0.121 0.524,0.121 L 19.055,5.382 C 18.922,5.331 18.883,5.276 18.934,5.226 c 0.027,0 0.054,-0.016 0.082,-0.043 -0.137,-0.078 -0.149,-0.2 -0.043,-0.36 0.054,-0.215 0.375,-0.293 0.961,-0.238 0.242,0.051 0.574,0.117 1,0.199 0.187,0 0.308,0.012 0.359,0.039 l 0.082,0.082 c 0.16,0.051 0.211,0.106 0.16,0.16 z m -3.519,1.079 h 0.562 C 18.426,6.093 18.293,6.038 18.133,5.983 V 5.944 C 18.055,6.026 18,6.093 17.973,6.144 Z" + inkscape:connector-curvature="0" /> + + <path + id="path58" + style="fill:#d6c6a7;fill-rule:evenodd" + d="m 13.492,6.183 c 0.082,0.054 0.188,0.082 0.32,0.082 0.083,0.027 0.161,0.054 0.243,0.082 h 0.16 c 0.691,0.183 1.254,0.277 1.68,0.277 0.398,0 0.746,-0.051 1.039,-0.156 0.027,0 0.054,-0.016 0.082,-0.043 l 0.039,-0.039 c -0.321,-0.028 -0.586,-0.082 -0.801,-0.16 -0.078,0 -0.121,-0.028 -0.121,-0.082 h 0.16 c 0.187,-0.024 0.574,-0.024 1.16,0 0.027,-0.079 0.094,-0.172 0.199,-0.278 H 17.535 C 17.426,5.839 17.387,5.812 17.414,5.784 17.199,5.733 17.027,5.69 16.895,5.667 c -0.188,0 -0.387,-0.055 -0.602,-0.16 -0.023,0 -0.039,0.012 -0.039,0.039 -0.027,0 -0.078,0.012 -0.16,0.039 C 15.961,5.558 15.879,5.534 15.855,5.507 L 15.453,4.983 c -0.051,-0.05 0,-0.078 0.16,-0.078 0.16,0.028 0.266,0.067 0.321,0.121 l 0.121,0.157 c 0,-0.051 0.039,-0.133 0.121,-0.239 0.051,-0.05 0.16,-0.093 0.316,-0.121 -0.051,0 -0.117,-0.011 -0.199,-0.039 C 16.109,4.757 15.945,4.69 15.812,4.585 15.629,4.69 15.453,4.784 15.293,4.866 c 0,0.028 -0.012,0.039 -0.039,0.039 l -0.039,0.039 h -0.02 C 15.141,4.98 15.09,5.007 15.055,5.026 l 0.078,0.039 c -0.078,0.106 -0.145,0.172 -0.199,0.2 -0.188,0.054 -0.254,0.093 -0.2,0.121 l 0.399,0.082 c 0.109,0.023 0.055,0.051 -0.16,0.078 h -0.481 l -0.359,0.238 -0.078,0.043 c 0.265,0.078 0.531,0.117 0.8,0.117 h 0.2 c 0.105,-0.05 0.215,-0.066 0.32,-0.039 0.266,0 0.504,0.082 0.719,0.243 0.133,0.105 0.027,0.199 -0.321,0.277 H 15.535 C 15.402,6.425 15.227,6.386 15.016,6.308 14.746,6.253 14.652,6.175 14.734,6.065 V 6.026 c -0.242,0 -0.492,-0.027 -0.761,-0.082 L 13.895,5.905 13.734,6.026 C 13.707,6.05 13.68,6.065 13.652,6.065 h -0.039 c 0,0.028 -0.011,0.04 -0.039,0.04 h -0.039 l -0.043,0.039 c 0.028,0.027 0.028,0.039 0,0.039 z M 10.734,4.866 10.613,4.905 c -0.078,0.133 -0.054,0.266 0.082,0.399 0.024,0.027 0.039,0.054 0.039,0.082 0.028,0.023 0.106,0.051 0.239,0.078 0.054,0.027 0.136,0.043 0.242,0.043 l 0.68,0.16 c 0.16,0.023 0.32,0.066 0.48,0.117 h 0.238 c 0.106,0 0.227,-0.051 0.36,-0.16 -0.078,-0.051 -0.145,-0.105 -0.2,-0.16 h 0.039 c 0.11,-0.078 0.297,-0.117 0.563,-0.117 l 0.437,-0.242 c 0.161,-0.079 0.387,-0.266 0.68,-0.559 0.137,-0.188 0.27,-0.309 0.403,-0.359 0.05,0 0.093,0.011 0.121,0.039 v -0.2 c -0.055,0 -0.11,-0.015 -0.161,-0.043 h -0.121 c -0.105,0.028 -0.332,0.016 -0.679,-0.039 -0.16,0 -0.254,-0.011 -0.282,-0.039 -0.105,0 -0.226,0.012 -0.359,0.039 h -0.16 l -0.442,0.121 h 0.043 c 0.028,0.106 -0.066,0.172 -0.281,0.2 h -0.281 c -0.078,0 -0.16,-0.028 -0.238,-0.082 h -0.121 c 0,0.027 -0.012,0.043 -0.039,0.043 v 0.039 c 0.265,0.05 0.359,0.144 0.281,0.281 -0.137,0.105 -0.309,0.144 -0.524,0.117 0.055,0.027 0.082,0.055 0.082,0.082 0,0.051 -0.121,0.094 -0.359,0.121 z m 0.442,-0.32 -0.16,0.117 0.277,0.043 c 0.055,-0.027 0.094,-0.043 0.121,-0.043 -0.105,0 -0.187,-0.039 -0.238,-0.117 z m 2.16,-0.32 c 0.879,0.027 1.172,0.066 0.879,0.117 h -0.723 c 0.055,0.012 0.106,0.023 0.16,0.043 0.27,0.051 0.27,0.105 0,0.16 -0.238,0.023 -0.504,0.012 -0.797,-0.043 -0.269,-0.078 -0.242,-0.145 0.079,-0.199 0.117,-0.016 0.246,-0.016 0.378,0 -0.148,-0.031 -0.14,-0.059 0.024,-0.078 z m -0.922,0.64 c -0.293,-0.054 -0.281,-0.093 0.039,-0.121 0.188,-0.027 0.414,-0.015 0.68,0.039 0.293,0.082 0.293,0.133 0,0.16 C 13,4.972 12.867,4.96 12.734,4.905 c 0.078,0.051 0.067,0.106 -0.039,0.16 H 12.652 C 12.492,5.093 12.348,5.077 12.215,5.023 12,4.999 11.961,4.956 12.094,4.905 h 0.039 c 0.082,0 0.176,-0.011 0.281,-0.039 z m -0.121,0.52 H 12.215 C 12.16,5.409 12.027,5.425 11.812,5.425 11.602,5.398 11.535,5.331 11.613,5.226 l 0.121,-0.043 c 0.161,-0.051 0.332,-0.039 0.52,0.043 0.16,0.05 0.172,0.105 0.039,0.16 z m 6.441,1.078 C 18.68,6.437 18.586,6.409 18.453,6.382 L 18.254,6.304 C 18.121,6.276 17.973,6.265 17.812,6.265 c -0.023,0.027 -0.039,0.05 -0.039,0.078 0.321,0.027 0.508,0.055 0.563,0.082 0.051,0.027 0.09,0.051 0.117,0.078 h 0.039 c 0.082,0.055 0.176,0.082 0.281,0.082 C 18.746,6.53 18.734,6.491 18.734,6.464 Z M 17.613,5.304 V 5.265 L 17.574,5.226 c 0,0.027 0.012,0.05 0.039,0.078 z m -0.277,0.961 h -0.281 c 0.105,0.027 0.226,0.039 0.359,0.039 z M 16.855,4.624 16.773,4.585 h -0.039 c -0.027,0 -0.039,-0.016 -0.039,-0.039 l -0.043,0.039 c -0.05,0 -0.093,-0.016 -0.117,-0.039 0,0.023 -0.015,0.051 -0.043,0.078 h -0.156 c 0.078,0.027 0.172,0.043 0.277,0.043 0.047,0.02 0.094,0.027 0.141,0.016 l 0.019,-0.02 c 0.028,0 0.055,-0.012 0.082,-0.039 z" + inkscape:connector-curvature="0" /> + + <path + id="path60" + style="fill:#cbd698;fill-rule:evenodd" + d="m 20.812,7.105 h 0.083 C 20.68,6.866 20.453,6.651 20.215,6.464 20,6.491 19.867,6.503 19.812,6.503 c -0.183,0.027 -0.183,0.082 0,0.16 0.161,0.055 0.149,0.094 -0.039,0.121 -0.347,-0.082 -0.437,-0.039 -0.281,0.121 0.16,0 0.254,0.039 0.281,0.118 0.403,0.003 0.747,0.027 1.039,0.082 z M 18.734,6.464 c 0,0.027 0.012,0.066 0.039,0.121 0,0.023 0.028,0.066 0.082,0.117 h 0.161 c 0.183,-0.023 0.199,-0.078 0.039,-0.16 -0.082,-0.023 -0.082,-0.066 0,-0.117 0.16,-0.027 0.359,-0.082 0.597,-0.16 C 19.547,6.237 19.402,6.226 19.215,6.226 L 19.176,6.183 c 0,0.027 -0.028,0.043 -0.082,0.043 -0.055,0.027 -0.106,0.039 -0.16,0.039 -0.028,0.004 -0.055,0.011 -0.079,0.019 -0.062,0.012 -0.101,0.047 -0.121,0.102 l 0.078,0.039 c -0.05,0 -0.078,0.012 -0.078,0.039 z" + inkscape:connector-curvature="0" /> + + <path + id="path62" + style="fill:#a16038;fill-rule:evenodd" + d="m 18.812,4.105 c -0.05,0.054 -0.105,0.078 -0.16,0.078 -0.105,0 -0.211,0.015 -0.316,0.043 -0.375,0.105 -0.668,0.183 -0.883,0.238 -0.16,0.055 -0.277,0.094 -0.359,0.121 -0.133,0.027 -0.215,0.039 -0.239,0.039 -0.027,0.027 -0.054,0.043 -0.082,0.043 l -0.019,0.016 c -0.125,0.047 -0.211,0.093 -0.262,0.14 -0.156,0.028 -0.265,0.071 -0.316,0.121 -0.082,0.106 -0.121,0.188 -0.121,0.239 0,0.109 0.121,0.215 0.359,0.32 0.133,0.027 0.293,0.082 0.481,0.16 0.132,0.027 0.304,0.067 0.519,0.121 0.375,0.082 0.813,0.16 1.32,0.239 0.047,0.007 0.086,0.015 0.121,0.019 0.278,0.043 0.543,0.063 0.797,0.063 0.16,0.027 0.321,0.027 0.481,0 0.375,0.027 0.75,0.011 1.121,-0.04 h 0.121 c 1.039,-0.214 1.984,-0.402 2.84,-0.562 h 0.078 c 0.293,-0.078 0.586,-0.145 0.883,-0.199 0.133,-0.028 0.238,-0.055 0.316,-0.082 0.242,-0.024 0.453,-0.067 0.641,-0.117 l 0.043,-0.04 h 0.058 C 26.27,5.05 26.305,5.038 26.336,5.023 27.348,4.757 27.988,4.581 28.254,4.503 28.895,4.315 29.336,4.132 29.574,3.944 29.68,3.835 29.414,3.69 28.773,3.503 28.453,3.398 27.961,3.265 27.293,3.105 L 27.051,3.023 C 27.027,2.995 26.879,2.972 26.613,2.944 25.598,2.862 24.68,2.917 23.852,3.105 21.957,3.448 20.453,3.741 19.332,3.983 19.176,4.038 19,4.077 18.812,4.105 Z m 0.403,1.679 C 18.922,5.733 18.652,5.667 18.414,5.585 c -0.105,0 -0.215,-0.027 -0.32,-0.082 H 18.016 C 17.801,5.425 17.668,5.358 17.613,5.304 17.586,5.276 17.574,5.253 17.574,5.226 17.547,5.038 17.973,4.812 18.855,4.542 c 0.266,-0.051 0.907,-0.184 1.918,-0.398 0.348,-0.051 0.786,-0.149 1.321,-0.282 0.187,-0.027 0.785,-0.16 1.801,-0.398 1.011,-0.215 1.8,-0.309 2.359,-0.281 l 0.082,0.039 c 1.012,0.293 1.547,0.508 1.598,0.64 0,0.11 -0.321,0.254 -0.957,0.442 -0.989,0.293 -1.829,0.508 -2.524,0.64 -0.824,0.239 -1.586,0.438 -2.277,0.598 -0.106,0.027 -0.227,0.055 -0.36,0.082 -0.16,0.055 -0.32,0.094 -0.48,0.121 -0.777,0.078 -1.481,0.094 -2.121,0.039 z m 4.68,-1.281 h -0.282 c -0.293,0 -0.664,-0.012 -1.121,-0.039 -0.344,-0.027 -0.691,-0.012 -1.039,0.039 -0.211,0.082 -0.183,0.133 0.082,0.16 0.801,0.027 1.36,0.043 1.68,0.043 0.211,0 0.398,-0.016 0.558,-0.043 0.106,-0.027 0.2,-0.051 0.282,-0.078 0.078,-0.055 0.027,-0.082 -0.16,-0.082 z m -2.403,0.562 -0.039,0.04 -0.277,-0.161 h 0.078 c 0.055,-0.027 0.082,-0.05 0.082,-0.078 L 21.293,4.823 C 21.242,4.8 21.121,4.784 20.934,4.784 H 20.133 C 20,4.812 19.867,4.851 19.734,4.905 19.547,4.956 19.48,4.999 19.535,5.023 l 0.16,0.042 -0.281,0.04 c -0.266,0.054 -0.348,0.105 -0.238,0.16 0.051,0.05 0.211,0.105 0.476,0.16 l 0.043,-0.043 c 0.293,0.055 0.641,0.055 1.039,0 0.055,0 0.172,-0.012 0.36,-0.039 0.133,-0.028 0.094,-0.067 -0.121,-0.117 0.453,-0.032 0.625,-0.082 0.519,-0.161 z m 1.563,-0.839 c 0.105,0 0.238,0.027 0.398,0.078 h 0.52 l 1.32,0.121 c 0.375,0.055 0.602,0.027 0.684,-0.082 0.105,-0.078 -0.028,-0.145 -0.403,-0.199 0.266,-0.051 0.375,-0.118 0.321,-0.2 0.242,0.082 0.558,0.121 0.96,0.121 0.426,0 0.559,-0.054 0.399,-0.16 C 27.039,3.796 26.723,3.69 26.293,3.585 25.977,3.503 25.652,3.48 25.336,3.503 24.961,3.558 24.949,3.624 25.293,3.706 l 0.32,0.078 C 25.375,3.757 25.133,3.745 24.895,3.745 24.629,3.796 24.492,3.839 24.492,3.866 v 0.039 h -0.359 c -0.531,0.028 -0.906,0.067 -1.117,0.118 -0.137,0.027 -0.149,0.082 -0.043,0.16 z" + inkscape:connector-curvature="0" /> + + <path + id="path64" + style="fill:#f0eabb;fill-rule:evenodd" + d="m 14.855,5.944 c 0.133,0.028 0.254,0.028 0.36,0 0.133,0.028 0.199,0.055 0.199,0.082 0.027,0.024 -0.012,0.051 -0.121,0.079 -0.16,-0.028 -0.348,-0.051 -0.559,-0.079 v 0.039 c -0.082,0.106 0.012,0.184 0.282,0.239 0.211,0.082 0.386,0.121 0.519,0.121 h 0.238 C 16.121,6.343 16.227,6.249 16.094,6.144 15.879,5.983 15.641,5.905 15.375,5.905 15.27,5.878 15.16,5.89 15.055,5.944 Z m 2.04,-0.281 C 16.707,5.585 16.547,5.53 16.414,5.503 h -0.121 c 0.215,0.109 0.414,0.16 0.602,0.16 z" + inkscape:connector-curvature="0" /> + + </g> + + </g> + </g> +</svg> diff --git a/slides/2022-kll/img/crt.png b/slides/2022-kll/img/crt.png Binary files differnew file mode 100644 index 0000000..2ba79b4 --- /dev/null +++ b/slides/2022-kll/img/crt.png diff --git a/slides/2022-kll/img/ct.pdf b/slides/2022-kll/img/ct.pdf Binary files differnew file mode 100644 index 0000000..cbbed4a --- /dev/null +++ b/slides/2022-kll/img/ct.pdf diff --git a/slides/2022-kll/img/ct.svg b/slides/2022-kll/img/ct.svg new file mode 100644 index 0000000..ac992bb --- /dev/null +++ b/slides/2022-kll/img/ct.svg @@ -0,0 +1,229 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="205.88545mm" + height="102.1619mm" + viewBox="0 0 205.88545 102.1619" + version="1.1" + id="svg5" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="ct.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + height="102.1619mm" + inkscape:zoom="1.0450648" + inkscape:cx="382.27295" + inkscape:cy="233.95679" + inkscape:window-width="1870" + inkscape:window-height="1000" + inkscape:window-x="20" + inkscape:window-y="50" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Tail" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Tail" + inkscape:isstock="true"> + <g + transform="scale(-1.2)" + id="g30213"> + <path + style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" + d="M -3.8048674,-3.9585227 L 0.54352094,0" + id="path30201" /> + <path + style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" + d="M -1.2866832,-3.9585227 L 3.0617053,0" + id="path30203" /> + <path + style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" + d="M 1.3053582,-3.9585227 L 5.6537466,0" + id="path30205" /> + <path + style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" + d="M -3.8048674,4.1775838 L 0.54352094,0.21974226" + id="path30207" /> + <path + style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" + d="M -1.2866832,4.1775838 L 3.0617053,0.21974226" + id="path30209" /> + <path + style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" + d="M 1.3053582,4.1775838 L 5.6537466,0.21974226" + id="path30211" /> + </g> + </marker> + <marker + style="overflow:visible;" + id="Arrow2Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lend" + inkscape:isstock="true"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="stroke:context-stroke;fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round;" + id="path30186" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path30168" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Lstart" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lstart" + inkscape:isstock="true"> + <path + transform="scale(1.1) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="stroke:context-stroke;fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round" + id="path30183" /> + </marker> + <symbol + id="Connector"> + <title + id="title1138">Connector</title> + <desc + id="desc1140">Exit to or entry from another part of chart.</desc> + <circle + cx="19.84375" + cy="19.84375" + r="5.2916665" + style="stroke-width:0.529167" + id="circle1142" /> + </symbol> + <marker + style="overflow:visible" + id="Arrow2Lstart-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Lstart" + inkscape:isstock="true"> + <path + transform="matrix(1.1,0,0,1.1,1.1,0)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round" + id="path30183-2" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Lend-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Lend" + inkscape:isstock="true"> + <path + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round" + id="path30186-1" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 103.34693,26.871229 24.050658,78.244919 H 179.32177 Z" + id="path31992" /> + <use + xlink:href="#Connector" + style="fill:#333333;stroke:#000000;stroke-width:0.10378;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="use1507" + x="0" + y="0" + width="100%" + height="100%" + transform="matrix(4.8178784,0,0,4.8178784,7.6701246,-69.185182)" /> + <use + xlink:href="#Connector" + style="fill:#000080;stroke:#000000;stroke-width:0.9574;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:9.574" + id="use1507-6" + x="0" + y="0" + width="100%" + height="100%" + transform="matrix(4.8178784,0,0,4.8178784,-68.908291,-19.968188)" /> + <use + xlink:href="#Connector" + style="fill:#501616;stroke:#000000;stroke-width:0.957475;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:9.57475;stroke-opacity:1" + id="use1507-6-7" + x="0" + y="0" + width="100%" + height="100%" + transform="matrix(4.8178784,0,0,4.8178784,83.836923,-19.174839)" /> + <text + xml:space="preserve" + style="font-size:9.17222px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583" + x="103.29785" + y="29.647831" + id="text3545"><tspan + sodipodi:role="line" + style="font-weight:bold;font-size:9.17222px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583" + x="103.29785" + y="29.647831" + id="tspan24609">Logs</tspan></text> + <text + xml:space="preserve" + style="font-size:9.17222px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="26.939905" + y="79.848518" + id="text10253"><tspan + sodipodi:role="line" + style="font-weight:bold;font-size:9.17222px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583" + x="26.939903" + y="79.848518" + id="tspan40236">Monitors</tspan></text> + <text + xml:space="preserve" + style="font-size:9.17222px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583" + x="179.34456" + y="80.318275" + id="text10253-5"><tspan + sodipodi:role="line" + style="font-weight:bold;font-size:9.17222px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583" + x="179.34456" + y="80.318275" + id="tspan12781">Auditors</tspan></text> + </g> +</svg> diff --git a/slides/2022-kll/img/fire.pdf b/slides/2022-kll/img/fire.pdf Binary files differnew file mode 100644 index 0000000..475a06d --- /dev/null +++ b/slides/2022-kll/img/fire.pdf diff --git a/slides/2022-kll/img/fire.svg b/slides/2022-kll/img/fire.svg new file mode 100644 index 0000000..ecdc539 --- /dev/null +++ b/slides/2022-kll/img/fire.svg @@ -0,0 +1,223 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:ns1="http://sozi.baierouge.fr" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:dc="http://purl.org/dc/elements/1.1/" + id="svg3021" + sodipodi:docname="fire.svg" + viewBox="0 0 400 570" + version="1.1" + inkscape:version="0.48.4 r9939" + > + <defs + id="defs3023" + > + <linearGradient + id="linearGradient3109" + > + <stop + id="stop3111" + style="stop-color:#ffff00" + offset="0" + /> + <stop + id="stop3113" + style="stop-color:#ffff00;stop-opacity:0" + offset="1" + /> + </linearGradient + > + <linearGradient + id="linearGradient3115" + y2="236.65" + xlink:href="#linearGradient3109" + gradientUnits="userSpaceOnUse" + x2="241.43" + y1="696.65" + x1="315.71" + inkscape:collect="always" + /> + </defs + > + <sodipodi:namedview + id="base" + bordercolor="#666666" + inkscape:pageshadow="2" + inkscape:window-y="-8" + pagecolor="#ffffff" + inkscape:window-height="837" + inkscape:window-maximized="1" + inkscape:zoom="0.7" + inkscape:window-x="-8" + showgrid="false" + borderopacity="1.0" + inkscape:current-layer="layer1" + inkscape:cx="515.91218" + inkscape:cy="134.56561" + inkscape:window-width="1600" + inkscape:pageopacity="0.0" + inkscape:document-units="px" + /> + <g + id="layer1" + inkscape:label="Calque 1" + inkscape:groupmode="layer" + transform="translate(0 -482.36)" + > + <g + id="g3015" + > + <g + id="g3087" + transform="matrix(.93252 0 0 .93252 -81.093 374.66)" + > + <g + id="g3039" + style="fill:#ff0000" + > + <path + id="path3029" + d="m128.57 378.08c-11.51 130.7 51.76 353.85 182.86 348.57 111.71-4.5 197.44-218.35 131.43-308.57-83.43-114.02-167.29-178.9-165.72-264.29 1.01-54.411-56.04 65.77-42.85 118.57 73.66 295.06-102.44 68.52-105.72 105.72z" + sodipodi:nodetypes="ssssss" + style="fill:#ff0000" + inkscape:connector-curvature="0" + /> + <path + id="path3031" + sodipodi:nodetypes="ssssss" + style="fill:#ff0000" + inkscape:connector-curvature="0" + d="m120 309.51c-104.37 177.84 60.33 422.42 191.43 417.14 111.71-4.5 197.44-218.35 131.43-308.57-83.43-114.02-270.15-117.47-268.57-202.86 1.0053-54.412-42.081 12.651-30 65.714 66.52 292.2-5.39-3.63-24.29 28.58z" + /> + </g + > + <g + id="g3043" + style="fill:#ff0000" + transform="matrix(-1 0 0 1 602.87 -24.286)" + > + <path + id="path3045" + sodipodi:nodetypes="ssssss" + style="fill:#ff0000" + inkscape:connector-curvature="0" + d="m128.57 378.08c-11.51 130.7 51.76 353.85 182.86 348.57 111.71-4.5 197.44-218.35 131.43-308.57-83.43-114.02-167.29-178.9-165.72-264.29 1.01-54.411-56.04 65.77-42.85 118.57 73.66 295.06-102.44 68.52-105.72 105.72z" + /> + <path + id="path3047" + d="m120 309.51c-104.37 177.84 60.33 422.42 191.43 417.14 111.71-4.5 197.44-218.35 131.43-308.57-83.43-114.02-270.15-117.47-268.57-202.86 1.0053-54.412-42.081 12.651-30 65.714 66.52 292.2-5.39-3.63-24.29 28.58z" + sodipodi:nodetypes="ssssss" + style="fill:#ff0000" + inkscape:connector-curvature="0" + /> + </g + > + </g + > + <g + id="g3095" + style="fill:url(#linearGradient3115)" + transform="matrix(.93252 0 0 .93252 -81.093 374.66)" + > + <g + id="g3097" + style="fill:url(#linearGradient3115)" + > + <path + id="path3099" + sodipodi:nodetypes="ssssss" + style="fill:url(#linearGradient3115)" + inkscape:connector-curvature="0" + d="m128.57 378.08c-11.51 130.7 51.76 353.85 182.86 348.57 111.71-4.5 197.44-218.35 131.43-308.57-83.43-114.02-167.29-178.9-165.72-264.29 1.01-54.411-56.04 65.77-42.85 118.57 73.66 295.06-102.44 68.52-105.72 105.72z" + /> + <path + id="path3101" + d="m120 309.51c-104.37 177.84 60.33 422.42 191.43 417.14 111.71-4.5 197.44-218.35 131.43-308.57-83.43-114.02-270.15-117.47-268.57-202.86 1.0053-54.412-42.081 12.651-30 65.714 66.52 292.2-5.39-3.63-24.29 28.58z" + sodipodi:nodetypes="ssssss" + style="fill:url(#linearGradient3115)" + inkscape:connector-curvature="0" + /> + </g + > + <g + id="g3103" + style="fill:url(#linearGradient3115)" + transform="matrix(-1 0 0 1 602.87 -24.286)" + > + <path + id="path3105" + d="m128.57 378.08c-11.51 130.7 51.76 353.85 182.86 348.57 111.71-4.5 197.44-218.35 131.43-308.57-83.43-114.02-167.29-178.9-165.72-264.29 1.01-54.411-56.04 65.77-42.85 118.57 73.66 295.06-102.44 68.52-105.72 105.72z" + sodipodi:nodetypes="ssssss" + style="fill:url(#linearGradient3115)" + inkscape:connector-curvature="0" + /> + <path + id="path3107" + sodipodi:nodetypes="ssssss" + style="fill:url(#linearGradient3115)" + inkscape:connector-curvature="0" + d="m120 309.51c-104.37 177.84 60.33 422.42 191.43 417.14 111.71-4.5 197.44-218.35 131.43-308.57-83.43-114.02-270.15-117.47-268.57-202.86 1.0053-54.412-42.081 12.651-30 65.714 66.52 292.2-5.39-3.63-24.29 28.58z" + /> + </g + > + </g + > + </g + > + </g + > + <metadata + > + <rdf:RDF + > + <cc:Work + > + <dc:format + >image/svg+xml</dc:format + > + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" + /> + <cc:license + rdf:resource="http://creativecommons.org/licenses/publicdomain/" + /> + <dc:publisher + > + <cc:Agent + rdf:about="http://openclipart.org/" + > + <dc:title + >Openclipart</dc:title + > + </cc:Agent + > + </dc:publisher + > + </cc:Work + > + <cc:License + rdf:about="http://creativecommons.org/licenses/publicdomain/" + > + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" + /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" + /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" + /> + </cc:License + > + </rdf:RDF + > + </metadata + > +</svg +> diff --git a/slides/2022-kll/img/kau.png b/slides/2022-kll/img/kau.png Binary files differnew file mode 100755 index 0000000..0c7c885 --- /dev/null +++ b/slides/2022-kll/img/kau.png diff --git a/slides/2022-kll/img/lock.png b/slides/2022-kll/img/lock.png Binary files differnew file mode 100644 index 0000000..65e313e --- /dev/null +++ b/slides/2022-kll/img/lock.png diff --git a/slides/2022-kll/img/login.png b/slides/2022-kll/img/login.png Binary files differnew file mode 100644 index 0000000..f910d34 --- /dev/null +++ b/slides/2022-kll/img/login.png diff --git a/slides/2022-kll/img/outline.pdf b/slides/2022-kll/img/outline.pdf Binary files differnew file mode 100644 index 0000000..ad77aef --- /dev/null +++ b/slides/2022-kll/img/outline.pdf diff --git a/slides/2022-kll/img/outline.svg b/slides/2022-kll/img/outline.svg new file mode 100644 index 0000000..8270810 --- /dev/null +++ b/slides/2022-kll/img/outline.svg @@ -0,0 +1,292 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="228.50648mm" + height="30.695835mm" + viewBox="0 0 228.50649 30.695835" + version="1.1" + id="svg5" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="outline.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.2335188" + inkscape:cx="457.22854" + inkscape:cy="14.187056" + inkscape:window-width="925" + inkscape:window-height="1000" + inkscape:window-x="965" + inkscape:window-y="50" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow2Lend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Lend" + inkscape:isstock="true"> + <path + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round" + id="path14585" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Lend-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Lend" + inkscape:isstock="true"> + <path + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round" + id="path14585-6" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Lend-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Lend" + inkscape:isstock="true"> + <path + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round" + id="path14585-3" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Lend-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Lend" + inkscape:isstock="true"> + <path + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round" + id="path14585-2" /> + </marker> + <symbol + id="Keying"> + <title + id="title23960">Keying</title> + <desc + id="desc23962">Operation using a key-driven device, e.g. typing. (IBM)</desc> + <path + d="m 6.6145833,30.427083 a 17.197917,17.197917 0 0 1 0,-21.1666663 H 33.072917 a 17.197917,17.197917 0 0 1 0,21.1666663 z" + style="stroke-width:0.529167" + id="path23964" /> + </symbol> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(19.048991,-100)"> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="-19.445177" + y="105.36057" + id="text2967"><tspan + sodipodi:role="line" + id="tspan2965" + style="font-size:7.05556px;stroke-width:0.264583" + x="-19.445177" + y="105.36057">Certificates</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="49.307537" + y="105.36057" + id="text7811"><tspan + sodipodi:role="line" + id="tspan7809" + style="font-size:7.05556px;stroke-width:0.264583" + x="49.307537" + y="105.36057">Web PKI</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="107.71564" + y="105.36057" + id="text10533"><tspan + sodipodi:role="line" + id="tspan10531" + style="font-size:7.05556px;stroke-width:0.264583" + x="107.71564" + y="105.36057">CT logs</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="161.35359" + y="105.36057" + id="text11131"><tspan + sodipodi:role="line" + id="tspan11129" + style="font-size:7.05556px;stroke-width:0.264583" + x="161.35359" + y="105.36057">CT in practise</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" + d="M 24.745,103.26492 H 43.798472" + id="path14562" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-3)" + d="M 82.002197,103.26492 H 101.05567" + id="path14562-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-5)" + d="m 138.39291,103.26492 h 19.05348" + id="path14562-5" /> + <use + xlink:href="#Keying" + style="fill:#ffffff;stroke:#000000" + id="use24343" + x="0" + y="0" + width="100%" + height="100%" + transform="translate(-18.828554,100.00417)" /> + <text + xml:space="preserve" + style="font-size:4.27919px;line-height:1.25;font-family:sans-serif;stroke-width:0.244735" + x="1.4670336" + y="111.96262" + id="text25974" + transform="scale(0.96375314,1.0376101)"><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="1.4670331" + y="111.96262" + id="tspan4242">Conceptually,</tspan><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="1.4670341" + y="117.31161" + id="tspan4468">X.509 format,</tspan><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="1.4670336" + y="122.6606" + id="tspan4560">How to view</tspan></text> + <use + xlink:href="#Keying" + style="fill:#ffffff;stroke:#000000" + id="use24343-1" + x="0" + y="0" + width="100%" + height="100%" + transform="translate(43.895916,100.00417)" /> + <text + xml:space="preserve" + style="font-size:4.27919px;line-height:1.25;font-family:sans-serif;stroke-width:0.244735" + x="66.137077" + y="111.19029" + id="text25974-2" + transform="scale(0.96375314,1.0376101)"><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="66.137077" + y="111.19029" + id="tspan48614">Certificate</tspan><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="66.137077" + y="116.53928" + id="tspan14785">auhtorities,</tspan><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="66.137077" + y="121.88827" + id="tspan14879">DV/OV/EV</tspan></text> + <use + xlink:href="#Keying" + style="fill:#ffffff;stroke:#000000" + id="use24343-1-9" + x="0" + y="0" + width="100%" + height="100%" + transform="translate(100.78407,100.00417)" /> + <text + xml:space="preserve" + style="font-size:4.27919px;line-height:1.25;font-family:sans-serif;stroke-width:0.244735" + x="125.16479" + y="111.19029" + id="text25974-2-3" + transform="scale(0.96375314,1.0376101)"><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="125.16479" + y="111.19029" + id="tspan20924">Overall idea,</tspan><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="125.16479" + y="116.53928" + id="tspan21012">Properties,</tspan><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="125.16479" + y="121.88827" + id="tspan21154">RFC 6962</tspan></text> + <use + xlink:href="#Keying" + style="fill:#ffffff;stroke:#000000" + id="use24343-1-9-2" + x="0" + y="0" + width="100%" + height="100%" + transform="translate(165.71664,100.00417)" /> + <text + xml:space="preserve" + style="font-size:4.27919px;line-height:1.25;font-family:sans-serif;stroke-width:0.244735" + x="192.53949" + y="111.19029" + id="text25974-2-3-6" + transform="scale(0.96375314,1.0376101)"><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="192.53949" + y="111.19029" + id="tspan31345">Policy,</tspan><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="192.53949" + y="116.53928" + id="tspan31391">Limitations,</tspan><tspan + sodipodi:role="line" + style="font-size:4.27919px;text-align:center;text-anchor:middle;stroke-width:0.244735" + x="192.53949" + y="121.88827" + id="tspan41177">Monitoring</tspan></text> + </g> +</svg> diff --git a/slides/2022-kll/main.tex b/slides/2022-kll/main.tex new file mode 100644 index 0000000..1ad5919 --- /dev/null +++ b/slides/2022-kll/main.tex @@ -0,0 +1,25 @@ +\pdfminorversion=4 +\documentclass[handout,aspectratio=169]{beamer} +%\documentclass[aspectratio=169]{beamer} +\usetheme{rgd} + +\input{src/preamble} + +\title{%full version that is shown on the front page + The web's public-key infrastructure +} +\subtitle{%short version that is shown in the footer on each slide + The web's public-key infrastructure +} +\author{% + \textbf{Rasmus Dahlberg}\\ + \texttt{rasmus.dahlberg@kau.se} +} +\date{% + \today +} + +\begin{document} + \input{src/titlepage} + \input{src/body} +\end{document} diff --git a/slides/2022-kll/slides.pdf b/slides/2022-kll/slides.pdf Binary files differnew file mode 100644 index 0000000..c0c4885 --- /dev/null +++ b/slides/2022-kll/slides.pdf diff --git a/slides/2022-kll/src/body.tex b/slides/2022-kll/src/body.tex new file mode 100644 index 0000000..495bb27 --- /dev/null +++ b/slides/2022-kll/src/body.tex @@ -0,0 +1,109 @@ +% +% Landing page +% - Recall TLS from last lecture +% - Encrypted tunnel between client-server +% - Authenticate client, server, or both; trust anchors hand-waved +% - Today is about how to authenticate servers in the web's PKI +% + +\begin{frame} + \mktitle{Are we really connected to the real Google?} + \begin{tikzpicture} + \node[draw=none] (Login) at (0,0) {\includegraphics[height=0.8\textheight]{img/login}};\pause + %\node[draw=none] (Lock) at (0,0) {\includegraphics[height=0.8\textheight]{img/lock}};\pause + \node[draw=none] (Licence) at (Login.170) {\includegraphics[height=0.2\textheight]{img/certificate}};\pause + \node[draw=none] (CAs) at (Login.10) {\includegraphics[height=0.2\textheight]{img/cas}}; + \node[draw=none,below=0cm of CAs] (Text) {...and many more};\pause + \node[draw=none,below=0cm of Text] (Fire) {\includegraphics[height=0.1\textheight]{img/fire}}; + \end{tikzpicture} + + \footnotetext[1]{\tiny{Summary of the DigiNotar incidence: \url{https://www.enisa.europa.eu/media/news-items/operation-black-tulip/} (2011)}} +\end{frame} + +\begin{frame} + \mktitle{Learning outcomes} + \begin{columns} + \begin{column}{0.33\textwidth} + \centering\includegraphics[width=\columnwidth]{img/certificate}\\ + \textbf{X.509 certificates}\\ + Format, fields, ... + \end{column} + + \pause + \begin{column}{0.33\textwidth} + \centering\includegraphics[width=\columnwidth]{img/cas}\\ + \textbf{Certificate Authorities}\\ + Ecosystem, validation, ... + \end{column} + + \pause + \begin{column}{0.33\textwidth} + \centering\includegraphics[width=\columnwidth]{img/ct}\\ + \textbf{Certificate Transparency}\\ + Theory, practise, ...\\ + \end{column} + \end{columns} + + \pause + \vfill\alert{Why is this useful for me?} + % 1. You will likely encounter websites in one form or another. A site + % that's not working due to certificate errors; you need to get your own + % certificate for your site; etc. What should you get, why, and how? + % What steps are expected to keep your site's certificate secure? + % 2. Next time we will generalize. The technology surrounding certificate + % transparency is useful for a myriad of applications. Firmware, Go + % modules, official documents, etc. +\end{frame} + +\begin{frame} + \mktitle{Middle part---Cronological} + \centering\includegraphics[width=\textwidth]{img/outline} +\end{frame} + +\begin{frame} + \mktitle{Middle part---Segway to the end} + + CT logs and monitoring $\rightarrow$ no undeteted DigiNotar-style attacks +\end{frame} + +\begin{frame} + \mktitle{Middle part---Example of engagement} + + \begin{description} + \item[]\textbf{Select all statements that are true:} + \item[$\square$] An X.509 certificate proves ownership of a website + \item[$\square$] An EV certificate is more secure than a DV certificate + \item[$\square$] Only Swedish CAs can issue \texttt{.se} certificates + \item[$\square$] There are hundreds of CAs across the globe + \end{description} +\end{frame} + +\begin{frame} + \mktitle{Take away} + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{itemize} + \item X.509 certificates + \begin{itemize} + \item ``Driver's licence for websites'' + \item Am I connected to the right site? + \end{itemize} + \item Certificate Authorities (CAs) + \begin{itemize} + \item ``Transportstyrelsen for websites'' + \item DV/OV/EV validated certificates + \item Weakest-link security + \end{itemize} + \item Certificate Transparency (CT) + \begin{itemize} + \item Holds CAs accountable (detection) + \item Enforced by Chrome, Safari, Edge + \item Monitor your own websites + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.5\textwidth} + \includegraphics[width=\columnwidth]{img/crt} + \end{column} + \end{columns} +\end{frame} diff --git a/slides/2022-kll/src/preamble.tex b/slides/2022-kll/src/preamble.tex new file mode 100644 index 0000000..4021351 --- /dev/null +++ b/slides/2022-kll/src/preamble.tex @@ -0,0 +1,113 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[utf8]{inputenc} + +\usepackage[ + lambda, advantage, operators, sets, adversary, landau, probability, notions, + logic, ff, mm, primitives, events, complexity, asymptotics, keys +]{cryptocode} + +\usepackage{rotate} +\usepackage{graphicx} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{flowchart} +\usepackage{smartdiagram} +\usepackage{pifont} +\usepackage{wasysym} +\usepackage{graphicx} +\usepackage{color} +\usepackage{drawstack} +\usepackage{tikz} +\usepackage{tikz-qtree} +\usetikzlibrary{ + arrows,% + decorations.markings,% + backgrounds,% + calc,% + fit,% + positioning,% + shapes.misc,% + shadows,% + shapes.arrows,% + shapes,% + snakes,% +} +\usepackage{booktabs} +\usepackage{smartdiagram} +%\usepackage{floatrow}% this one causes error on arch for some reason +\usepackage[position=bottom]{subfig} % environment for nested figures + +\usepackage{xcolor} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} +\definecolor{darkGray}{HTML}{808080} +\definecolor{darkOrange}{HTML}{D77D00} +\definecolor{darkPurple}{HTML}{800080} +\colorlet{lightGray}{gray!33} +\colorlet{lightYellow}{yellow!50} +\definecolor{darkGreen}{HTML}{008000} +\definecolor{darkBlue}{HTML}{2809B2} +\definecolor{darkRed}{HTML}{CC0000} + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, % Color links instead of boxes + urlcolor = darkBlue, % Color external hyper links + linkcolor = darkBlue, % Color internal links + citecolor = darkBlue, % Color citations +} + +% Figures, tables and code +\usepackage{booktabs} +\usepackage{colortbl} +\usepackage{flowchart} +\usepackage{adjustbox} +\usepackage{listings} + +\lstdefinestyle{CStyle}{ + backgroundcolor=\color{lightGray!25}, + commentstyle=\color{darkGreen}, + keywordstyle=\color{darkBlue}, + numberstyle=\tiny\color{darkRed}, + stringstyle=\color{darkPurple}, + basicstyle=\footnotesize, + breakatwhitespace=false, + breaklines=false, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + language=C, + morekeywords={size_t,def,in,zip,True,False,ord,u8,u64}, +} + +\setbeamertemplate{itemize item}[circle] +\setbeamertemplate{itemize subitem}[default] +\setbeamertemplate{caption}[numbered] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Defines % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\let\@@magyar@captionfix\relax %needed for \titlefloatright +\makeatother + +\newcommand{\tyes}{\textcolor{darkGreen}{\ding{51}}} +\newcommand{\tno}{\textcolor{darkRed}{\ding{55}}} +\newcommand{\burl}[1]{\tiny{\url{#1}}} +\newcommand{\TODO}[1]{\textcolor{red}{TODO}: #1} +\newcommand{\floatright}[1]{\hspace{0pt plus 1 filll}#1$\;$} + +\def\rding{\rotatebox[origin=c]{-91}{\ding{224}}} +\def\lding{\rotatebox[origin=c]{91}{\ding{224}}} + +% TODO: fix this properly... +\newcommand{\mktitle}[1]{\centering\textbf{\large#1}\vfill\normalsize} diff --git a/slides/2022-kll/src/titlepage.tex b/slides/2022-kll/src/titlepage.tex new file mode 100644 index 0000000..9b18039 --- /dev/null +++ b/slides/2022-kll/src/titlepage.tex @@ -0,0 +1,3 @@ +\begin{frame} + \titlepage +\end{frame} |