From 3a8bbc2a86980031f179258973c950f37d3860b8 Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Tue, 17 Oct 2023 18:40:41 +0200 Subject: [PATCH 01/13] Adds seminar LMS instructions for first module --- modules/02-passwd/01-seminar.md | 14 ++++++++++++++ modules/02-passwd/02-seminar.md | 12 ++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 modules/02-passwd/01-seminar.md create mode 100644 modules/02-passwd/02-seminar.md diff --git a/modules/02-passwd/01-seminar.md b/modules/02-passwd/01-seminar.md new file mode 100644 index 0000000..756cd4f --- /dev/null +++ b/modules/02-passwd/01-seminar.md @@ -0,0 +1,14 @@ +The library will come and talk about tools to use for searching and how to do +literature reviews. + +**Participation**: Online in the class Zoom room. Working webcam and microphone +is required. + +**Preparation**: The assignments that you just did (all previous material). You +need a device that you can work with web tools on. + +**Seminar content**: The library will talk about different types of literature +reviews. They will also present some useful tools for searching for literature. +We'll use these tools to search for literature to answer some of the research +questions we've discussed in the preparation material. (That's why you need a +device to work on.) diff --git a/modules/02-passwd/02-seminar.md b/modules/02-passwd/02-seminar.md new file mode 100644 index 0000000..f5f43bd --- /dev/null +++ b/modules/02-passwd/02-seminar.md @@ -0,0 +1,12 @@ +**Participation**: Online in the class Zoom room. Working webcam and microphone +is required. + +**Preparation**: The assignments that you just did (all previous material from +last seminar until now). + +**Seminar content**: We will discuss the papers that you've worked with. + +Particularly, we'll discuss how they relate to the research questions that was +the origin of the discussion. What we're interested in is how well these papers +answer those research questions and, particularly, how we can answer *exactly* +those questions. From 401758c14605fc22a86b2bcd982a2774b6b906d0 Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Wed, 31 Jan 2024 10:30:28 +0100 Subject: [PATCH 02/13] Adds slides to course overview --- course-design/contents.tex | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/course-design/contents.tex b/course-design/contents.tex index faae245..9dcdc32 100644 --- a/course-design/contents.tex +++ b/course-design/contents.tex @@ -531,7 +531,14 @@ \subsection{Format} \mode{% \begin{frame} - \begin{block}{Assessment} + \begin{block}{Teaching}<+> + \begin{itemize} + \item Reading material and watching videos. + \item Discuss and work with material at synchronous seminars. + \end{itemize} + \end{block} + + \begin{block}{Assessment}<+> \begin{itemize} \item A synchronous seminar to summarize all work and tie the sack. \end{itemize} @@ -728,6 +735,17 @@ \subsection{Final assessment} \end{question} \end{frame} +\begin{onlyenv} +\section{The material} + +\begin{frame}[fragile] + \begin{center} + \huge + Canvas + \end{center} +\end{frame} +\end{onlyenv} + %%% REFERENCES %%% From e69720ec94dc4468a0862c1648b90da6e01c9d35 Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Wed, 31 Jan 2024 23:05:37 +0100 Subject: [PATCH 03/13] Improves 02-passwd slides for seminar --- modules/02-passwd/contents.tex | 99 ++++++++++++++++++++++++---------- modules/02-passwd/slides.tex | 2 +- 2 files changed, 71 insertions(+), 30 deletions(-) diff --git a/modules/02-passwd/contents.tex b/modules/02-passwd/contents.tex index 4aba4a6..85c8384 100644 --- a/modules/02-passwd/contents.tex +++ b/modules/02-passwd/contents.tex @@ -24,23 +24,19 @@ \clearpage -\section{Introduction} +\section
{Introduction} -\begin{frame} We've had passwords for about as long as we've had computers. Unfortunately, we still\footnote{As of \today.} haven't managed to do it right in practice. -\end{frame} So here we'll deal with the following question. -\begin{frame} - \begin{question}\label{RQ} - How can we know how secure our password-based authentication system will be? - \end{question} -\end{frame} +\begin{question}\label{RQ} + How can we know how secure our password-based authentication system will be? +\end{question} -\section{How do we know it's secure?} +\section[How do we know?]{How do we know it's secure?} \begin{frame} We have a system where users log in. @@ -48,16 +44,17 @@ \section{How do we know it's secure?} We've decided to use a password-based authentication system\footnote{% Yes, I know it's a bit of an oxymoron, but humor me. }. -\end{frame} -\begin{frame} \begin{exercise} - What do we need to know to try to answer \cref{RQ}? + What do we need to know to try to answer + \only
{\cref{RQ}}% + \only{how secure this will be}% + ? \end{exercise} \end{frame} -\section{What do we mean by secure?} +\section[Define secure?]{What do we mean by secure?} Well, first of all, we need to define what we mean by \enquote{being secure}. \Cref{RQ} asks us to estimate how secure a password-based authentication system @@ -123,23 +120,24 @@ \subsection{Literature reviews} \begin{frame} \begin{exercise} - We want to investigate the most common definitions of security for - authentication systems and for which types of authentication systems + We want to investigate \alert<2>{the most common} definitions of security + for authentication systems and for which types of authentication systems they're used. Which type of literature review should we do; systematic or non-systematic? Why? \end{exercise} -\end{frame} + \begin{onlyenv}
In this case, the goal is to get an overview of the literature. Since purpose is to research what definitions there are and how they're used, we must document our method of research. This means that we should do a systematic literature review. + \end{onlyenv} -\begin{frame} \begin{exercise} - We want to explore different definitions of security for authentication - systems to find a definition to use for our study. + We want to \alert<2>{explore \only<2>{\textins{some} }different} + definitions of security for authentication systems to find a definition to + use for our study. Which type of literature review should we do; systematic or non-systematic? Why? \end{exercise} @@ -279,14 +277,10 @@ \subsection{Deductive evaluation} \end{frame} A uniform distribution means that -\begin{frame} - all passwords are equally likely (\(\frac{1}{N^n}\)) -\end{frame} +all passwords are equally likely (\(\frac{1}{N^n}\)) and that -\begin{frame} - the Shannon entropy is maximized and equal to \(-\log \frac{1}{N^n} = n \log - {N}\), -\end{frame} +the Shannon entropy is maximized and equal to \(-\log \frac{1}{N^n} = n \log +{N}\), where \(N\) is the number of possible characters and \(n\) is the length of the password. @@ -306,6 +300,14 @@ \subsection{Deductive evaluation} Is it really secure, why or why not? How can we answer this question? \end{exercise} + + \begin{solution} + We can try forcing some user-generated passwords. + + We've assumed that the passwords are uniformly distributed. + But are they? + How can we find out? + \end{solution} \end{frame} \subsection{Empirical evaluation} @@ -328,10 +330,10 @@ \subsection{Empirical evaluation} So we should change the question into the following. \begin{frame} -\begin{question} +\begin{question}[Password distribution] How does different password policies affect the password distribution? \end{question} -\begin{question}\label{Guessability} +\begin{question}[Password distribution, guessability]\label{Guessability} How easily can we guess the passwords under different password policies? \end{question} \begin{exercise} @@ -349,6 +351,16 @@ \subsection{Empirical evaluation} We will explore these papers to see how they tried to answer these questions, so we'll return to them. +\begin{frame} + \begin{example}[Password distribution, guessability] + \fullcite{OfPasswordsAndPeople} + \end{example} + + \begin{example}[Guessability, usability] + \fullcite{CanLongPasswordsBeSecureAndUsable} + \end{example} +\end{frame} + However, we can do other estimates deductively too. For instance, we have the very famous \enquote{correct horse battery staple} from xkcd (\cref{xkcd936}). @@ -366,7 +378,13 @@ \subsection{Empirical evaluation} \end{figure} \end{frame} -\section{But is it even a good model to begin with?} +\begin{frame} + \begin{exercise} + Did any of the papers answer the question of how the passwords are chosen? + \end{exercise} +\end{frame} + +\section[Is it a good model?]{But is it even a good model to begin with?} \begin{frame} \begin{exercise} @@ -385,9 +403,23 @@ \section{But is it even a good model to begin with?} \begin{frame} \begin{question} Can the verifier be an adversary or is the verifier always benign? + What are the consequences of this? \end{question} \end{frame} +\begin{frame} + \begin{example} + \fullcite{WhyPhishingWorks} + \end{example} + + \pause + + \begin{example}[Consequences] + We need the zero-knowledge property in our security definition. + (We actually need \emph{malicious}, not honest, verifier zero-knowledge. + \end{example} +\end{frame} + Now this depends on the users. Can they tell a benign verifier from an adversary? Turns out they can't\autocite{WhyPhishingWorks}. @@ -416,6 +448,15 @@ \section{But is it even a good model to begin with?} answered this question. So we'll return to this paper later. + +\section{Conclusion} + +\begin{frame} + We might need a qualitative (\eg usability) study + \only{\newline}% + to inform our deductive (\eg cryptographic) choices. +\end{frame} + %\begin{frame} % \begin{question} % Are there more reasons? diff --git a/modules/02-passwd/slides.tex b/modules/02-passwd/slides.tex index 2287028..395cdf5 100644 --- a/modules/02-passwd/slides.tex +++ b/modules/02-passwd/slides.tex @@ -20,7 +20,7 @@ \end{beamercolorbox} } \setbeamercovered{transparent} -\setbeamertemplate{bibliography item}[text] +\setbeamertemplate{bibliography item}{\relax} \AtBeginSection[]{% \begin{frame} From 684dd0aed01a7c7be3e318cd8e506837e9d3df7e Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Thu, 29 Feb 2024 09:13:27 +0100 Subject: [PATCH 04/13] Adds WIP on anonymity module --- modules/04-anonymous/Makefile | 31 +++++++ modules/04-anonymous/abstract.tex | 30 +++++++ modules/04-anonymous/bibliography.bib | 0 modules/04-anonymous/contents.tex | 115 ++++++++++++++++++++++++++ modules/04-anonymous/notes.tex | 64 ++++++++++++++ modules/04-anonymous/preamble.tex | 55 ++++++++++++ modules/04-anonymous/seminar.md | 9 ++ modules/04-anonymous/slides.tex | 106 ++++++++++++++++++++++++ 8 files changed, 410 insertions(+) create mode 100644 modules/04-anonymous/Makefile create mode 100644 modules/04-anonymous/abstract.tex create mode 100644 modules/04-anonymous/bibliography.bib create mode 100644 modules/04-anonymous/contents.tex create mode 100644 modules/04-anonymous/notes.tex create mode 100644 modules/04-anonymous/preamble.tex create mode 100644 modules/04-anonymous/seminar.md create mode 100644 modules/04-anonymous/slides.tex diff --git a/modules/04-anonymous/Makefile b/modules/04-anonymous/Makefile new file mode 100644 index 0000000..3a73932 --- /dev/null +++ b/modules/04-anonymous/Makefile @@ -0,0 +1,31 @@ +.PHONY: all +all: notes.pdf slides.pdf + +LATEXFLAGS+= -shell-escape + +SRC+= preamble.tex +SRC+= abstract.tex contents.tex + +DEPENDS+= objectives.tex + +notes.pdf: notes.tex +notes.pdf: ${SRC} ${DEPENDS} ${FIGS} + +slides.pdf: slides.tex +slides.pdf: ${SRC} ${DEPENDS} ${FIGS} + +objectives.tex: ../../course-design/objectives.tex + +${DEPENDS}: + ${LN} $< $@ + + +.PHONY: clean +clean: + ${RM} notes.pdf slides.pdf + ${RM} ${DEPENDS} + ${MAKE} -C fig clean + + +INCLUDE_MAKEFILES=../../makefiles +include ${INCLUDE_MAKEFILES}/tex.mk diff --git a/modules/04-anonymous/abstract.tex b/modules/04-anonymous/abstract.tex new file mode 100644 index 0000000..ae4a777 --- /dev/null +++ b/modules/04-anonymous/abstract.tex @@ -0,0 +1,30 @@ +% What's the problem? +% Why is it a problem? Research gap left by other approaches? +% Why is it important? Why care? +% What's the approach? How to solve the problem? +% What's the findings? How was it evaluated, what are the results, limitations, +% what remains to be done? + +% XXX Summary +\emph{Summary:} +In this assignment we will explore the research methods used in the area of +anonymous communication systems, such as Tor. +This is interesting because it requires a wide range of methods. + +% XXX Motivation and intended learning outcomes +\emph{Intended learning outcomes:} +This assignment focuses on practice to +\begin{itemize} + \item \LOrelate; + \item \LOevaluate; + \item \LOapply; + \item \LOcomm. +\end{itemize} + +% XXX Prerequisites +\emph{Prerequisites:} +We need basic knowledge of security, corresponding to an introductory course in +the subject. +We also need a high-level overview of the breadth of research methods used in +the area of security, corresponding to the overview lecture \enquote{The +Scientific Method} given in the course. diff --git a/modules/04-anonymous/bibliography.bib b/modules/04-anonymous/bibliography.bib new file mode 100644 index 0000000..e69de29 diff --git a/modules/04-anonymous/contents.tex b/modules/04-anonymous/contents.tex new file mode 100644 index 0000000..2bc200c --- /dev/null +++ b/modules/04-anonymous/contents.tex @@ -0,0 +1,115 @@ +\title{% + How do you know it's secure? + Anonymous communication +} +\author{Daniel Bosk\thanks{% + This material is available under the Creative Commons + Attribution-NonCommercial-ShareAlike (CC-BY-NC-SA) 4.0 international + license. + The material was written with some aid from GitHub Copilot. +}} +\institute{% + KTH EECS +} + +\begin{frame} + \maketitle +\end{frame} + +\mode* + +\begin{abstract} + \input{abstract.tex} +\end{abstract} + +\clearpage + +\section{Users get routed} + +\begin{frame} + \begin{question}[Users get routed] + \begin{itemize} + \item What was the research question? + \item What methods did they use? + \item Why is that a good method? + \item Can we use another method? + \end{itemize} + \end{question} +\end{frame} + +\begin{frame} + \begin{question} + \begin{itemize} + \item Why do we need to use empirical methods in this case? + \item What effect does data have on validity? + \end{itemize} + \end{question} +\end{frame} + +\section{Shadow: Running Tor in a box} + +\begin{frame} + \begin{question}[Shadow: Running Tor in a box] + \begin{itemize} + \item What was the research question? + \item What methods did they use? + \item Why is that a good method? + \item Can we use another method? + \end{itemize} + \end{question} +\end{frame} + +\begin{frame} + \begin{question} + \begin{itemize} + \item They evaluate the quality of a research tool. + \item What are the challenges in doing that? + \end{itemize} + \end{question} +\end{frame} + +\section{WF with Website Oracles} + +\begin{frame} + \begin{question}[WF with Website Oracles] + \begin{itemize} + \item What was the research question? + \item What methods did they use? + \item Why is that a good method? + \item Can we use another method? + \end{itemize} + \end{question} +\end{frame} + +\begin{frame} + \begin{question} + \begin{itemize} + \item What type of contribution do we get from this paper? + What is the Website Oracle? + \item How do they show WOs exist in reality? + \end{itemize} + \end{question} +\end{frame} + +\section{Evaluating WF in Real World} + +\begin{frame} + \begin{question}[Evaluating WF in Real World] + \begin{itemize} + \item What was the research question? + \item What methods did they use? + \item Why is that a good method? + \item Can we use another method? + \end{itemize} + \end{question} +\end{frame} + +\begin{frame} + \begin{question} + \begin{itemize} + \item They complained about the evaluation of WF in other papers. + What was the problem? + \item Are there any problems with this paper's approach? + \end{itemize} + \end{question} +\end{frame} diff --git a/modules/04-anonymous/notes.tex b/modules/04-anonymous/notes.tex new file mode 100644 index 0000000..49b372d --- /dev/null +++ b/modules/04-anonymous/notes.tex @@ -0,0 +1,64 @@ +\documentclass[a4paper,10pt,article,oneside]{memoir} +%%% Tufte %%% +\usepackage{marginfix} +%\setlength{\evensidemargin}{\oddsidemargin} +\marginparmargin{outer} +\setlrmarginsandblock{2.5cm}{8cm}{*} + +\footnotesinmargin + +\usepackage{ragged2e} +\renewcommand{\sidefootform}{\RaggedRight} +\renewcommand{\foottextfont}{\footnotesize\RaggedRight} + +\setmpjustification{\RaggedRight}{\RaggedRight} + +% margin figure and caption typeset ragged against text block +\setfloatadjustment{marginfigure}{\mpjustification} +\setmarginfloatcaptionadjustment{figure}{\captionstyle{\mpjustification}} + +% From https://tex.stackexchange.com/a/324757/17418 +% Palatino for main text and math +\usepackage[osf,sc]{mathpazo} + +% Helvetica for sans serif +% (scaled to match size of Palatino) +\usepackage[scaled=0.90]{helvet} + +% Bera Mono for monospaced +% (scaled to match size of Palatino) +\usepackage[scaled=0.85]{beramono} + +\setlxvchars\setxlvchars +\checkandfixthelayout + +\nouppercaseheads +%%% end tufte %%% +\let\subsubsection\subsection +\let\subsection\section +\let\section\chapter + +\input{preamble.tex} + +\usepackage[noamsthm,notheorems]{beamerarticle} +\setjobnamebeamerversion{slides} + +%\usepackage{authblk} +%\let\institute\affil + +\declaretheorem[style=theorem]{theorem} +\declaretheorem[style=definition]{definition} +\declaretheorem[style=definition]{assumption} +\declaretheorem[style=definition]{protocol} +\declaretheorem[style=example]{example} +\declaretheorem[style=remark]{remark} +\declaretheorem[style=remark]{idea} +\declaretheorem[style=exercise]{exercise} +\declaretheorem[style=exercise]{question} +\declaretheorem[style=solution]{solution} + +\begin{document} +\input{contents.tex} + +\printbibliography +\end{document} diff --git a/modules/04-anonymous/preamble.tex b/modules/04-anonymous/preamble.tex new file mode 100644 index 0000000..dce955a --- /dev/null +++ b/modules/04-anonymous/preamble.tex @@ -0,0 +1,55 @@ +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[british]{babel} +\usepackage{booktabs} + +\usepackage[% + natbib, + citestyle=verbose,singletitle=false, + style=verbose, + maxbibnames=99,% + isbn=false,doi=false,url=true +]{biblatex} +\addbibresource{bibliography.bib} + +\usepackage[all]{foreign} +\renewcommand{\foreignfullfont}{} +\renewcommand{\foreignabbrfont}{} + +\usepackage{import} + +\usepackage[strict]{csquotes} +\SetCiteCommand{\autocite} +\usepackage[single]{acro} +\acsetup{cite/cmd={\autocite}} + +\usepackage[noend]{algpseudocode} +\usepackage{xparse} + +\let\email\texttt + +\usepackage[outputdir=ltxobj]{minted} +\setminted{autogobble} + +\usepackage{pythontex} +\setpythontexoutputdir{.} +\setpythontexworkingdir{..} + +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{mathtools} +\usepackage{amsthm} +\usepackage{thmtools} +%\usepackage[unq]{unique} +\DeclareMathOperator{\powerset}{\mathcal{P}} + +\usepackage[binary-units]{siunitx} + +\usepackage{adjustbox} +\usepackage{lipsum} +\usepackage{multicol} +\usepackage{changepage} + +\usepackage[capitalize]{cleveref} + +\input{objectives.tex} diff --git a/modules/04-anonymous/seminar.md b/modules/04-anonymous/seminar.md new file mode 100644 index 0000000..cf03b91 --- /dev/null +++ b/modules/04-anonymous/seminar.md @@ -0,0 +1,9 @@ +We will talk about some methods used in researching Tor, this covers a variety +of methods ranging from deductive to empirical experiments to simulations. + +**Participation**: online in the class Zoom room. + +**Preparation**: The material in this module that precedes this page. + +**Seminar content**: Briefly discuss the methods and research questions. + diff --git a/modules/04-anonymous/slides.tex b/modules/04-anonymous/slides.tex new file mode 100644 index 0000000..395cdf5 --- /dev/null +++ b/modules/04-anonymous/slides.tex @@ -0,0 +1,106 @@ +\documentclass[ignoreframetext]{beamer} +\input{preamble.tex} + +\usetheme{Berlin} +\setbeamertemplate{footline}%{miniframes theme} +{% + \begin{beamercolorbox}[colsep=1.5pt]{upper separation line foot} + \end{beamercolorbox} + \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% + leftskip=.3cm,rightskip=.3cm plus1fil]{author in head/foot}% + \leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor}% + \hfill% + {\usebeamerfont{institute in head/foot}\usebeamercolor[fg]{institute in head/foot}\insertshortinstitute}% + \end{beamercolorbox}% + \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% + leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}% + {\usebeamerfont{title in head/foot}\insertshorttitle} \hfill \insertframenumber% + \end{beamercolorbox}% + \begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot} + \end{beamercolorbox} +} +\setbeamercovered{transparent} +\setbeamertemplate{bibliography item}{\relax} + +\AtBeginSection[]{% + \begin{frame} + \tableofcontents[currentsection] + \end{frame} +} + +\ProvideDocumentEnvironment{assumption}{o}{% + \IfValueTF{#1}{% + \begin{block}{Assumption: #1} + }{% + \begin{block}{Assumption} + } +}{% + \end{block} +} + +\ProvideDocumentEnvironment{protocol}{o}{% + \IfValueTF{#1}{% + \begin{block}{Protocol: #1} + }{% + \begin{block}{Protocol} + } +}{% + \end{block} +} + +\ProvideDocumentEnvironment{remark}{o}{% + \IfValueTF{#1}{% + \begin{alertblock}{Note: #1} + }{% + \begin{alertblock}{Note} + } +}{% + \end{alertblock} +} + +\ProvideDocumentEnvironment{idea}{o}{% + \IfValueTF{#1}{% + \begin{block}{Idea: #1} + }{% + \begin{block}{Idea} + } +}{% + \end{block} +} + +\ProvideDocumentEnvironment{question}{o}{% + \setbeamercolor{block body}{bg=orange!15,fg=black} + \setbeamercolor{block title}{bg=orange,fg=white} + \setbeamercolor{local structure}{fg=orange} + \IfValueTF{#1}{% + \begin{block}{Question: #1} + }{% + \begin{block}{Question} + } +}{% + \end{block} +} + +\ProvideDocumentEnvironment{exercise}{o}{% + \setbeamercolor{block body}{bg=yellow!10,fg=black} + \setbeamercolor{block title}{bg=yellow,fg=black} + \setbeamercolor{local structure}{fg=yellow} + \IfValueTF{#1}{% + \begin{block}{Exercise: #1} + }{% + \begin{block}{Exercise} + } +}{% + \end{block} +} + + +\begin{document} +\mode +\input{contents.tex} +\mode* + +\begin{frame}[allowframebreaks] + \printbibliography +\end{frame} +\end{document} From 182e947811f5009186b7fe623dedb11e82d79be4 Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Thu, 29 Feb 2024 09:17:41 +0100 Subject: [PATCH 05/13] Adds empty fig/ and missing .gitignore --- modules/04-anonymous/.gitignore | 4 ++++ modules/04-anonymous/fig/.gitignore | 2 ++ modules/04-anonymous/fig/Makefile | 5 +++++ 3 files changed, 11 insertions(+) create mode 100644 modules/04-anonymous/.gitignore create mode 100644 modules/04-anonymous/fig/.gitignore create mode 100644 modules/04-anonymous/fig/Makefile diff --git a/modules/04-anonymous/.gitignore b/modules/04-anonymous/.gitignore new file mode 100644 index 0000000..85d632d --- /dev/null +++ b/modules/04-anonymous/.gitignore @@ -0,0 +1,4 @@ +notes.pdf +slides.pdf +objectives.tex +literature diff --git a/modules/04-anonymous/fig/.gitignore b/modules/04-anonymous/fig/.gitignore new file mode 100644 index 0000000..2bc47a4 --- /dev/null +++ b/modules/04-anonymous/fig/.gitignore @@ -0,0 +1,2 @@ +password_reuse.png +password_strength.png diff --git a/modules/04-anonymous/fig/Makefile b/modules/04-anonymous/fig/Makefile new file mode 100644 index 0000000..ea16ce9 --- /dev/null +++ b/modules/04-anonymous/fig/Makefile @@ -0,0 +1,5 @@ +.PHONY: all +all: + +.PHONY: clean +clean: From 182b4e4aadbc9812b014fcd54bda413a8a67ca4a Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Thu, 29 Feb 2024 16:35:19 +0100 Subject: [PATCH 06/13] Adds WIP on scientificity module --- modules/05-scientificity/.gitignore | 4 + modules/05-scientificity/Makefile | 31 +++++++ modules/05-scientificity/abstract.tex | 28 ++++++ modules/05-scientificity/bibliography.bib | 0 modules/05-scientificity/contents.tex | 48 ++++++++++ modules/05-scientificity/fig/Makefile | 5 + modules/05-scientificity/notes.tex | 64 +++++++++++++ modules/05-scientificity/preamble.tex | 55 +++++++++++ modules/05-scientificity/seminar.md | 11 +++ modules/05-scientificity/slides.tex | 106 ++++++++++++++++++++++ 10 files changed, 352 insertions(+) create mode 100644 modules/05-scientificity/.gitignore create mode 100644 modules/05-scientificity/Makefile create mode 100644 modules/05-scientificity/abstract.tex create mode 100644 modules/05-scientificity/bibliography.bib create mode 100644 modules/05-scientificity/contents.tex create mode 100644 modules/05-scientificity/fig/Makefile create mode 100644 modules/05-scientificity/notes.tex create mode 100644 modules/05-scientificity/preamble.tex create mode 100644 modules/05-scientificity/seminar.md create mode 100644 modules/05-scientificity/slides.tex diff --git a/modules/05-scientificity/.gitignore b/modules/05-scientificity/.gitignore new file mode 100644 index 0000000..85d632d --- /dev/null +++ b/modules/05-scientificity/.gitignore @@ -0,0 +1,4 @@ +notes.pdf +slides.pdf +objectives.tex +literature diff --git a/modules/05-scientificity/Makefile b/modules/05-scientificity/Makefile new file mode 100644 index 0000000..3a73932 --- /dev/null +++ b/modules/05-scientificity/Makefile @@ -0,0 +1,31 @@ +.PHONY: all +all: notes.pdf slides.pdf + +LATEXFLAGS+= -shell-escape + +SRC+= preamble.tex +SRC+= abstract.tex contents.tex + +DEPENDS+= objectives.tex + +notes.pdf: notes.tex +notes.pdf: ${SRC} ${DEPENDS} ${FIGS} + +slides.pdf: slides.tex +slides.pdf: ${SRC} ${DEPENDS} ${FIGS} + +objectives.tex: ../../course-design/objectives.tex + +${DEPENDS}: + ${LN} $< $@ + + +.PHONY: clean +clean: + ${RM} notes.pdf slides.pdf + ${RM} ${DEPENDS} + ${MAKE} -C fig clean + + +INCLUDE_MAKEFILES=../../makefiles +include ${INCLUDE_MAKEFILES}/tex.mk diff --git a/modules/05-scientificity/abstract.tex b/modules/05-scientificity/abstract.tex new file mode 100644 index 0000000..b2a93c6 --- /dev/null +++ b/modules/05-scientificity/abstract.tex @@ -0,0 +1,28 @@ +% What's the problem? +% Why is it a problem? Research gap left by other approaches? +% Why is it important? Why care? +% What's the approach? How to solve the problem? +% What's the findings? How was it evaluated, what are the results, limitations, +% what remains to be done? + +% XXX Summary +\emph{Summary:} +In this module we will try to overview the methodological state of security. + +% XXX Motivation and intended learning outcomes +\emph{Intended learning outcomes:} +This assignment focuses on practice to +\begin{itemize} + \item \LOrelate; + \item \LOevaluate; + \item \LOapply; + \item \LOcomm. +\end{itemize} + +% XXX Prerequisites +\emph{Prerequisites:} +We need basic knowledge of security, corresponding to an introductory course in +the subject. +We also need a high-level overview of the breadth of research methods used in +the area of security, corresponding to the overview lecture \enquote{The +Scientific Method} given in the course. diff --git a/modules/05-scientificity/bibliography.bib b/modules/05-scientificity/bibliography.bib new file mode 100644 index 0000000..e69de29 diff --git a/modules/05-scientificity/contents.tex b/modules/05-scientificity/contents.tex new file mode 100644 index 0000000..8e8915a --- /dev/null +++ b/modules/05-scientificity/contents.tex @@ -0,0 +1,48 @@ +\title{% + Scientificity in Security +} +\author{Daniel Bosk\thanks{% + This material is available under the Creative Commons + Attribution-NonCommercial-ShareAlike (CC-BY-NC-SA) 4.0 international + license. + The material was written with some aid from GitHub Copilot. +}} +\institute{% + KTH EECS +} + +\begin{frame} + \maketitle +\end{frame} + +\mode* + +\begin{abstract} + \input{abstract.tex} +\end{abstract} + +\clearpage + +\section{How to design computer security experiments} + +\section{Dos and don'ts of machine learning in security} + +\begin{frame} + \begin{question} + \begin{itemize} + \item What can we actually say from these results, based on their method? + \end{itemize} + \end{question} +\end{frame} + +\section{Security as a scientific pursuit} + +\begin{frame} + \begin{question} + \begin{itemize} + \item How did they know that this is so? + \item What can we actually say from these results? + \end{itemize} + \end{question} +\end{frame} + diff --git a/modules/05-scientificity/fig/Makefile b/modules/05-scientificity/fig/Makefile new file mode 100644 index 0000000..ea16ce9 --- /dev/null +++ b/modules/05-scientificity/fig/Makefile @@ -0,0 +1,5 @@ +.PHONY: all +all: + +.PHONY: clean +clean: diff --git a/modules/05-scientificity/notes.tex b/modules/05-scientificity/notes.tex new file mode 100644 index 0000000..49b372d --- /dev/null +++ b/modules/05-scientificity/notes.tex @@ -0,0 +1,64 @@ +\documentclass[a4paper,10pt,article,oneside]{memoir} +%%% Tufte %%% +\usepackage{marginfix} +%\setlength{\evensidemargin}{\oddsidemargin} +\marginparmargin{outer} +\setlrmarginsandblock{2.5cm}{8cm}{*} + +\footnotesinmargin + +\usepackage{ragged2e} +\renewcommand{\sidefootform}{\RaggedRight} +\renewcommand{\foottextfont}{\footnotesize\RaggedRight} + +\setmpjustification{\RaggedRight}{\RaggedRight} + +% margin figure and caption typeset ragged against text block +\setfloatadjustment{marginfigure}{\mpjustification} +\setmarginfloatcaptionadjustment{figure}{\captionstyle{\mpjustification}} + +% From https://tex.stackexchange.com/a/324757/17418 +% Palatino for main text and math +\usepackage[osf,sc]{mathpazo} + +% Helvetica for sans serif +% (scaled to match size of Palatino) +\usepackage[scaled=0.90]{helvet} + +% Bera Mono for monospaced +% (scaled to match size of Palatino) +\usepackage[scaled=0.85]{beramono} + +\setlxvchars\setxlvchars +\checkandfixthelayout + +\nouppercaseheads +%%% end tufte %%% +\let\subsubsection\subsection +\let\subsection\section +\let\section\chapter + +\input{preamble.tex} + +\usepackage[noamsthm,notheorems]{beamerarticle} +\setjobnamebeamerversion{slides} + +%\usepackage{authblk} +%\let\institute\affil + +\declaretheorem[style=theorem]{theorem} +\declaretheorem[style=definition]{definition} +\declaretheorem[style=definition]{assumption} +\declaretheorem[style=definition]{protocol} +\declaretheorem[style=example]{example} +\declaretheorem[style=remark]{remark} +\declaretheorem[style=remark]{idea} +\declaretheorem[style=exercise]{exercise} +\declaretheorem[style=exercise]{question} +\declaretheorem[style=solution]{solution} + +\begin{document} +\input{contents.tex} + +\printbibliography +\end{document} diff --git a/modules/05-scientificity/preamble.tex b/modules/05-scientificity/preamble.tex new file mode 100644 index 0000000..dce955a --- /dev/null +++ b/modules/05-scientificity/preamble.tex @@ -0,0 +1,55 @@ +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[british]{babel} +\usepackage{booktabs} + +\usepackage[% + natbib, + citestyle=verbose,singletitle=false, + style=verbose, + maxbibnames=99,% + isbn=false,doi=false,url=true +]{biblatex} +\addbibresource{bibliography.bib} + +\usepackage[all]{foreign} +\renewcommand{\foreignfullfont}{} +\renewcommand{\foreignabbrfont}{} + +\usepackage{import} + +\usepackage[strict]{csquotes} +\SetCiteCommand{\autocite} +\usepackage[single]{acro} +\acsetup{cite/cmd={\autocite}} + +\usepackage[noend]{algpseudocode} +\usepackage{xparse} + +\let\email\texttt + +\usepackage[outputdir=ltxobj]{minted} +\setminted{autogobble} + +\usepackage{pythontex} +\setpythontexoutputdir{.} +\setpythontexworkingdir{..} + +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{mathtools} +\usepackage{amsthm} +\usepackage{thmtools} +%\usepackage[unq]{unique} +\DeclareMathOperator{\powerset}{\mathcal{P}} + +\usepackage[binary-units]{siunitx} + +\usepackage{adjustbox} +\usepackage{lipsum} +\usepackage{multicol} +\usepackage{changepage} + +\usepackage[capitalize]{cleveref} + +\input{objectives.tex} diff --git a/modules/05-scientificity/seminar.md b/modules/05-scientificity/seminar.md new file mode 100644 index 0000000..214c67f --- /dev/null +++ b/modules/05-scientificity/seminar.md @@ -0,0 +1,11 @@ +We will talk about scientificity in security. + +**Participation**: online in the class Zoom room. + +**Preparation**: The material in this module that precedes this page. + +**Seminar content**: Briefly discuss the methods and research questions of the +papers. Discuss the role of the scientific method in security and what doing +security in a scientific way means. + +We'll also introduce the final assignment. diff --git a/modules/05-scientificity/slides.tex b/modules/05-scientificity/slides.tex new file mode 100644 index 0000000..395cdf5 --- /dev/null +++ b/modules/05-scientificity/slides.tex @@ -0,0 +1,106 @@ +\documentclass[ignoreframetext]{beamer} +\input{preamble.tex} + +\usetheme{Berlin} +\setbeamertemplate{footline}%{miniframes theme} +{% + \begin{beamercolorbox}[colsep=1.5pt]{upper separation line foot} + \end{beamercolorbox} + \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% + leftskip=.3cm,rightskip=.3cm plus1fil]{author in head/foot}% + \leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor}% + \hfill% + {\usebeamerfont{institute in head/foot}\usebeamercolor[fg]{institute in head/foot}\insertshortinstitute}% + \end{beamercolorbox}% + \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% + leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}% + {\usebeamerfont{title in head/foot}\insertshorttitle} \hfill \insertframenumber% + \end{beamercolorbox}% + \begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot} + \end{beamercolorbox} +} +\setbeamercovered{transparent} +\setbeamertemplate{bibliography item}{\relax} + +\AtBeginSection[]{% + \begin{frame} + \tableofcontents[currentsection] + \end{frame} +} + +\ProvideDocumentEnvironment{assumption}{o}{% + \IfValueTF{#1}{% + \begin{block}{Assumption: #1} + }{% + \begin{block}{Assumption} + } +}{% + \end{block} +} + +\ProvideDocumentEnvironment{protocol}{o}{% + \IfValueTF{#1}{% + \begin{block}{Protocol: #1} + }{% + \begin{block}{Protocol} + } +}{% + \end{block} +} + +\ProvideDocumentEnvironment{remark}{o}{% + \IfValueTF{#1}{% + \begin{alertblock}{Note: #1} + }{% + \begin{alertblock}{Note} + } +}{% + \end{alertblock} +} + +\ProvideDocumentEnvironment{idea}{o}{% + \IfValueTF{#1}{% + \begin{block}{Idea: #1} + }{% + \begin{block}{Idea} + } +}{% + \end{block} +} + +\ProvideDocumentEnvironment{question}{o}{% + \setbeamercolor{block body}{bg=orange!15,fg=black} + \setbeamercolor{block title}{bg=orange,fg=white} + \setbeamercolor{local structure}{fg=orange} + \IfValueTF{#1}{% + \begin{block}{Question: #1} + }{% + \begin{block}{Question} + } +}{% + \end{block} +} + +\ProvideDocumentEnvironment{exercise}{o}{% + \setbeamercolor{block body}{bg=yellow!10,fg=black} + \setbeamercolor{block title}{bg=yellow,fg=black} + \setbeamercolor{local structure}{fg=yellow} + \IfValueTF{#1}{% + \begin{block}{Exercise: #1} + }{% + \begin{block}{Exercise} + } +}{% + \end{block} +} + + +\begin{document} +\mode +\input{contents.tex} +\mode* + +\begin{frame}[allowframebreaks] + \printbibliography +\end{frame} +\end{document} From 15d94bd7662b055a0eca5858b017d716b69c7354 Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Fri, 5 Apr 2024 09:10:18 +0200 Subject: [PATCH 07/13] Clarifies the course overview --- course-design/contents.tex | 111 ++++++++++++++++++++++++++++--------- 1 file changed, 86 insertions(+), 25 deletions(-) diff --git a/course-design/contents.tex b/course-design/contents.tex index 9dcdc32..42b6b95 100644 --- a/course-design/contents.tex +++ b/course-design/contents.tex @@ -103,7 +103,7 @@ \section{Overview} The requirements for Master's level are set out in \citetitle{HEO2}~\autocite{HEO2}, namely: -\begin{frame}[fragile] +%\begin{frame}[fragile] \begin{block}{Master's goals: Knowledge and understanding~\autocite{HEO2}} \only
{\begin{enumerate}[label={(K\arabic*)},ref=K\arabic*]} \only{\begin{itemize}} @@ -117,9 +117,9 @@ \section{Overview} \only
{\end{enumerate}} \only{\end{itemize}} \end{block} -\end{frame} +%\end{frame} -\begin{frame}[fragile] +%\begin{frame}[fragile] \begin{block}{Master's goals: Competence and skills~\autocite{HEO2}} \only
{\begin{enumerate}[label={(C\arabic*)},ref=C\arabic*]} \only{\begin{itemize}} @@ -139,9 +139,9 @@ \section{Overview} \only{\end{itemize}} \only
{\end{enumerate}} \end{block} -\end{frame} +%\end{frame} -\begin{frame}[fragile] +%\begin{frame}[fragile] \begin{block}{Master's goals: Judgement and approach~\autocite{HEO2}} \only
{\begin{enumerate}[label={(J\arabic*)},ref=J\arabic*]} \only{\begin{itemize}} @@ -154,7 +154,7 @@ \section{Overview} \only{\end{itemize}} \only
{\end{enumerate}} \end{block} -\end{frame} +%\end{frame} \paragraph{Intended learning outcomes}\label{LearningOutcomes} @@ -184,7 +184,19 @@ \section{Overview} in order to be able to contribute to scientifically based development. \end{frame} -\subsection{Prerequisites} +There are also two learning outcomes related more to general skill, rather than +scientific method: +\begin{frame}[fragile] + After passing the course, the student should be able to + \begin{itemize} + \item plan and carry out assignments within given time frames and using + available resources, and + \item write short, clear and arguing texts based on own analysis as well as + given material. + \end{itemize} +\end{frame} + +\subsection
{Prerequisites} The course requires some prerequisites. In the area of cybersecurity, the student should be able to: @@ -312,6 +324,16 @@ \subsection{The goal} We can see this aspect in \ref{LOcomm} (and \ref{Ccomm}) and we will see this aspect as part of the assessment of the course later. +\begin{frame} + \begin{block}{Concrete goals} + \begin{itemize} + \item Ask good questions. + \item Use suitable methods to answer them. + \item Evaluate the suitability of proposed methods. + \end{itemize} + \end{block} +\end{frame} + \subsection{Teaching design} @@ -549,6 +571,7 @@ \subsection{Format} \begin{block}{Giving the course} \begin{enumerate} \item Given every period; yes, four times per year. + \item If you don't finish, you can try again next period. \end{enumerate} \end{block} \end{frame} @@ -645,17 +668,26 @@ \subsection{Contents} \end{frame} } -%\begin{frame} -% \begin{block}{Contents, part II} -% \begin{itemize} -% \item General introductions to various subfields. -% \item Which methods are used and why? -% \item Some exemplary papers? \alert<2>{Both good and bad!} -% \item How does a subfield fit into the holistic picture of Security? -% \end{itemize} -% \end{block} -%\end{frame} -% +\begin{frame} + \begin{block}{Contents, part II} + \begin{itemize} + \item General introductions to various subfields. + \item Which methods are used and why? + %\item Some exemplary papers? \alert<2>{Both good and bad!} + \item How does a subfield fit into the holistic picture of Security? + \item How can these methods fit into other situations? + \end{itemize} + \end{block} + + \begin{exercise} + \begin{itemize} + \item What is an area or problem that you're interested in (in security)? + \item Think of an interesting case that you can reflect on during the + course. + \end{itemize} + \end{exercise} +\end{frame} + %\begin{frame} % \begin{remark} % \begin{itemize} @@ -699,14 +731,43 @@ \subsection{Final assessment} LOrelate,LOcomm,LOplan,LOapply,LOevaluate% }. +\begin{frame} + \begin{block}{Final assessment} + \begin{itemize} + \item Design a research method for a given set of research questions. + \item Assess the suitability of the method. + \item Motivate the choices of methods. + \item Explain why the methods answer the questions. + \end{itemize} + \end{block} +\end{frame} + You'll do this by writing a report motivating your choices of methods and explaining why they answer the question. You'll also present this report at the final seminar. Someone else will review the report, and you will review someone else's report too. +\begin{frame} + \begin{block}{Final seminar and review} + \begin{itemize} + \item Present this at the final seminar. + \item Review someone else's report. + \end{itemize} + \end{block} +\end{frame} + The final assessment will be done in pairs. +\begin{frame} + \begin{remark} + \begin{itemize} + \item The final assessment will be done in pairs. + \item Up to three in a group is allowed. + \end{itemize} + \end{remark} +\end{frame} + %\begin{frame}[allowframebreaks] % \begin{block}{Assessment} % \begin{itemize} @@ -727,13 +788,13 @@ \subsection{Final assessment} % \end{block} %\end{frame} -\begin{frame} - \begin{question} - \begin{itemize} - \item Comments, questions, other thoughts? - \end{itemize} - \end{question} -\end{frame} +%\begin{frame} +% \begin{question} +% \begin{itemize} +% \item Comments, questions, other thoughts? +% \end{itemize} +% \end{question} +%\end{frame} \begin{onlyenv} \section{The material} From 5347596e6d75cd465ffdb62f79143079ef04663b Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Tue, 9 Apr 2024 13:51:01 +0200 Subject: [PATCH 08/13] Switches to didactic package with sidecaptions --- modules/02-passwd/2024-04-05-Note-14-56.xoj | Bin 0 -> 114749 bytes modules/02-passwd/contents.tex | 17 ++-- modules/02-passwd/notes.tex | 46 ---------- modules/02-passwd/preamble.tex | 1 + modules/02-passwd/slides.tex | 94 -------------------- 5 files changed, 11 insertions(+), 147 deletions(-) create mode 100644 modules/02-passwd/2024-04-05-Note-14-56.xoj diff --git a/modules/02-passwd/2024-04-05-Note-14-56.xoj b/modules/02-passwd/2024-04-05-Note-14-56.xoj new file mode 100644 index 0000000000000000000000000000000000000000..985fee87c08a2cee4689bacd478258729f46717e GIT binary patch literal 114749 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 z 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 Z{^P&@>)-$O_ka1P{{!RvR>38y1px0FTHgQw literal 0 HcmV?d00001 diff --git a/modules/02-passwd/contents.tex b/modules/02-passwd/contents.tex index 85c8384..c022ece 100644 --- a/modules/02-passwd/contents.tex +++ b/modules/02-passwd/contents.tex @@ -370,11 +370,12 @@ \subsection{Empirical evaluation} \begin{frame} \begin{figure}[h] - \includegraphics[width=\linewidth]{fig/password_strength.png} - \caption{% - The famous xkcd \enquote{correct horse battery staple} comic. + \begin{sidecaption}[xkcd 936]{% + Illustrating the password policy of using a long passphrase. Image: xkcd.com/936/. - }\label{xkcd936} + }[xkcd936] + \includegraphics[width=\linewidth]{fig/password_strength.png} + \end{sidecaption} \end{figure} \end{frame} @@ -433,12 +434,14 @@ \subsection{Empirical evaluation} \begin{frame} \begin{figure} - \includegraphics[height=0.9\textheight]{fig/password_reuse.png} - \caption{% + \begin{sidecaption}[xkcd 792]{% Illustrating whether the benign verifier assumption is a good idea in practice. Image: xkcd.com/792/. - }\label{xkcd792} + }[xkcd792] + \flushscap + \includegraphics[height=0.9\textheight]{fig/password_reuse.png} + \end{sidecaption} \end{figure} \end{frame} diff --git a/modules/02-passwd/notes.tex b/modules/02-passwd/notes.tex index 49b372d..20e181f 100644 --- a/modules/02-passwd/notes.tex +++ b/modules/02-passwd/notes.tex @@ -1,39 +1,4 @@ \documentclass[a4paper,10pt,article,oneside]{memoir} -%%% Tufte %%% -\usepackage{marginfix} -%\setlength{\evensidemargin}{\oddsidemargin} -\marginparmargin{outer} -\setlrmarginsandblock{2.5cm}{8cm}{*} - -\footnotesinmargin - -\usepackage{ragged2e} -\renewcommand{\sidefootform}{\RaggedRight} -\renewcommand{\foottextfont}{\footnotesize\RaggedRight} - -\setmpjustification{\RaggedRight}{\RaggedRight} - -% margin figure and caption typeset ragged against text block -\setfloatadjustment{marginfigure}{\mpjustification} -\setmarginfloatcaptionadjustment{figure}{\captionstyle{\mpjustification}} - -% From https://tex.stackexchange.com/a/324757/17418 -% Palatino for main text and math -\usepackage[osf,sc]{mathpazo} - -% Helvetica for sans serif -% (scaled to match size of Palatino) -\usepackage[scaled=0.90]{helvet} - -% Bera Mono for monospaced -% (scaled to match size of Palatino) -\usepackage[scaled=0.85]{beramono} - -\setlxvchars\setxlvchars -\checkandfixthelayout - -\nouppercaseheads -%%% end tufte %%% \let\subsubsection\subsection \let\subsection\section \let\section\chapter @@ -46,17 +11,6 @@ %\usepackage{authblk} %\let\institute\affil -\declaretheorem[style=theorem]{theorem} -\declaretheorem[style=definition]{definition} -\declaretheorem[style=definition]{assumption} -\declaretheorem[style=definition]{protocol} -\declaretheorem[style=example]{example} -\declaretheorem[style=remark]{remark} -\declaretheorem[style=remark]{idea} -\declaretheorem[style=exercise]{exercise} -\declaretheorem[style=exercise]{question} -\declaretheorem[style=solution]{solution} - \begin{document} \input{contents.tex} diff --git a/modules/02-passwd/preamble.tex b/modules/02-passwd/preamble.tex index dce955a..43bbd69 100644 --- a/modules/02-passwd/preamble.tex +++ b/modules/02-passwd/preamble.tex @@ -50,6 +50,7 @@ \usepackage{multicol} \usepackage{changepage} +\usepackage{didactic} \usepackage[capitalize]{cleveref} \input{objectives.tex} diff --git a/modules/02-passwd/slides.tex b/modules/02-passwd/slides.tex index 395cdf5..a77bbb7 100644 --- a/modules/02-passwd/slides.tex +++ b/modules/02-passwd/slides.tex @@ -1,100 +1,6 @@ \documentclass[ignoreframetext]{beamer} \input{preamble.tex} -\usetheme{Berlin} -\setbeamertemplate{footline}%{miniframes theme} -{% - \begin{beamercolorbox}[colsep=1.5pt]{upper separation line foot} - \end{beamercolorbox} - \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% - leftskip=.3cm,rightskip=.3cm plus1fil]{author in head/foot}% - \leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor}% - \hfill% - {\usebeamerfont{institute in head/foot}\usebeamercolor[fg]{institute in head/foot}\insertshortinstitute}% - \end{beamercolorbox}% - \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% - leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}% - {\usebeamerfont{title in head/foot}\insertshorttitle} \hfill \insertframenumber% - \end{beamercolorbox}% - \begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot} - \end{beamercolorbox} -} -\setbeamercovered{transparent} -\setbeamertemplate{bibliography item}{\relax} - -\AtBeginSection[]{% - \begin{frame} - \tableofcontents[currentsection] - \end{frame} -} - -\ProvideDocumentEnvironment{assumption}{o}{% - \IfValueTF{#1}{% - \begin{block}{Assumption: #1} - }{% - \begin{block}{Assumption} - } -}{% - \end{block} -} - -\ProvideDocumentEnvironment{protocol}{o}{% - \IfValueTF{#1}{% - \begin{block}{Protocol: #1} - }{% - \begin{block}{Protocol} - } -}{% - \end{block} -} - -\ProvideDocumentEnvironment{remark}{o}{% - \IfValueTF{#1}{% - \begin{alertblock}{Note: #1} - }{% - \begin{alertblock}{Note} - } -}{% - \end{alertblock} -} - -\ProvideDocumentEnvironment{idea}{o}{% - \IfValueTF{#1}{% - \begin{block}{Idea: #1} - }{% - \begin{block}{Idea} - } -}{% - \end{block} -} - -\ProvideDocumentEnvironment{question}{o}{% - \setbeamercolor{block body}{bg=orange!15,fg=black} - \setbeamercolor{block title}{bg=orange,fg=white} - \setbeamercolor{local structure}{fg=orange} - \IfValueTF{#1}{% - \begin{block}{Question: #1} - }{% - \begin{block}{Question} - } -}{% - \end{block} -} - -\ProvideDocumentEnvironment{exercise}{o}{% - \setbeamercolor{block body}{bg=yellow!10,fg=black} - \setbeamercolor{block title}{bg=yellow,fg=black} - \setbeamercolor{local structure}{fg=yellow} - \IfValueTF{#1}{% - \begin{block}{Exercise: #1} - }{% - \begin{block}{Exercise} - } -}{% - \end{block} -} - - \begin{document} \mode \input{contents.tex} From eebf154d37907f87e0292640754df4bc90d2457d Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Tue, 9 Apr 2024 13:51:39 +0200 Subject: [PATCH 09/13] Improves passwd --- modules/02-passwd/contents.tex | 50 ++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/modules/02-passwd/contents.tex b/modules/02-passwd/contents.tex index c022ece..0e2bcc3 100644 --- a/modules/02-passwd/contents.tex +++ b/modules/02-passwd/contents.tex @@ -408,6 +408,16 @@ \subsection{Empirical evaluation} \end{question} \end{frame} +Now this depends on the users. +Can they tell a benign verifier from an adversary? +Turns out they can't\autocite{WhyPhishingWorks}. +\Citeauthor{WhyPhishingWorks} actually found that users might actually test +whether the verifier is benign or not by entering their password: +the reasoning was that if the is correct it will accept the password, otherwise +it will not (since it doesn't know the password)---which is a fallacy. +This tells us that we need to consider the verifier as an adversary, +consequently we need a zero-knowledge property in \cref{FormalSecurity}. + \begin{frame} \begin{example} \fullcite{WhyPhishingWorks} @@ -417,18 +427,10 @@ \subsection{Empirical evaluation} \begin{example}[Consequences] We need the zero-knowledge property in our security definition. - (We actually need \emph{malicious}, not honest, verifier zero-knowledge. + (We actually need \emph{malicious}, not honest, verifier zero-knowledge.) \end{example} \end{frame} -Now this depends on the users. -Can they tell a benign verifier from an adversary? -Turns out they can't\autocite{WhyPhishingWorks}. -\Citeauthor{WhyPhishingWorks} actually found that users might actually test -whether the verifier is benign or not by entering their password: -the reasoning was that if the is correct it will accept the password, otherwise -it will not (since it doesn't know the password)---which is a fallacy. - We can also again turn to the wisdom of xkcd for another argument against the benign verifier assumption, namely password reuse (\cref{xkcd792}). @@ -445,6 +447,13 @@ \subsection{Empirical evaluation} \end{figure} \end{frame} +%\begin{frame} +% \begin{question} +% Are there more reasons? +% Password re-use, incompetent service, malicious service. +% \end{question} +%\end{frame} + \paragraph{Case study} We will study the paper by \textcite{WhyPhishingWorks} to explore how they @@ -460,9 +469,20 @@ \section{Conclusion} to inform our deductive (\eg cryptographic) choices. \end{frame} -%\begin{frame} -% \begin{question} -% Are there more reasons? -% Password re-use, incompetent service, malicious service. -% \end{question} -%\end{frame} +\begin{frame} + \begin{question}[Is the opposite also true?] + Can deduction be a useful (necessary?) complement for empirical studies? + How? + \end{question} +\end{frame} + +For instance, using a deductive approach we can rule out all those approaches +to passwords that are \emph{provably} easy to guess. +There is no need to empirically test them, which takes time, if we already know +they're bad. + +\begin{frame} + \begin{exercise} + What other aspects didn't we consider? + \end{exercise} +\end{frame} From bbbbecd9dc56e399526553f17f5b7bb105cf9a9e Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Fri, 26 Apr 2024 15:02:43 +0200 Subject: [PATCH 10/13] Adda Arve's exercise on extending old software --- modules/03-formal-methods/extendoldsoft.md | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 modules/03-formal-methods/extendoldsoft.md diff --git a/modules/03-formal-methods/extendoldsoft.md b/modules/03-formal-methods/extendoldsoft.md new file mode 100644 index 0000000..ae25e2a --- /dev/null +++ b/modules/03-formal-methods/extendoldsoft.md @@ -0,0 +1,32 @@ +--- +title: Exercise: Extending old software +authors: + - Arve Gengelbach +--- +The goal of this exercise is to harden an old network-connected banking +software that is checked to be working correctly on input that is well-formed, +however on any other input anything could happen from simple shutdown +(availability) to leak of confidential data. Programmers that could program in +the system's programming language are not around anymore. + +To increase the assurance level the idea of this exercise is to discussing +formal-methods based hardening in this particular scenario. + +The approach to harden the system is in two steps, first by adding a filtering +software that drops any malformed network traffic before this traffic could +even enter the possibly partially broken banking software, and second by +checking that the filter works correctly. Well-formed input can be specified by +a regular expression for this program. + +Tasks: + +1. Formulate a security property that could be verified for each of the two: + + a. the interface between (the output of) the filter and (the input of) the + old banking application + + b. the application that does the filtering + +2. Discuss how to verify the security property: Which formal method should be + used for which scenario? What are the reasons? State any assumptions on + input/output. From 6c3cdd67a973dc8d26b99057489c77690a74422f Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Fri, 26 Apr 2024 15:09:45 +0200 Subject: [PATCH 11/13] Adds teaching material Still no links to the videos. Must be added later. --- modules/03-formal-methods/teaching.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 modules/03-formal-methods/teaching.md diff --git a/modules/03-formal-methods/teaching.md b/modules/03-formal-methods/teaching.md new file mode 100644 index 0000000..b62a6c2 --- /dev/null +++ b/modules/03-formal-methods/teaching.md @@ -0,0 +1,14 @@ +--- +title: Teaching material on formal methods +authors: + - Arve Gengelbach +--- +1. Lecture: Introduction to theorem proving +2. Lecture: Formal methods and interactive theorem proving +3. Lecture: Proving list-reverse correct (optional) +4. Lecture: Examples of what can be verified with interactive theorem provers +5. Lecture: Limitations of interactive theorem proving and conclusion +6. Article: Model checking: algorithmic verification and debugging +7. Lecture: Determining economic value of high assurance for commodity software + security +8. [Exercise: Extending old software](extendoldsoft.md) From 1afd9e5889ba727285edb5da627d3973798c4199 Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Sat, 27 Apr 2024 09:16:25 +0200 Subject: [PATCH 12/13] Updates final assignment and seminar --- modules/final-seminar/contents.tex | 291 ++++++++++++++++------------- modules/final-seminar/notes.tex | 46 ----- modules/final-seminar/preamble.tex | 2 + modules/final-seminar/slides.tex | 94 ---------- 4 files changed, 159 insertions(+), 274 deletions(-) diff --git a/modules/final-seminar/contents.tex b/modules/final-seminar/contents.tex index 4307019..4ce9d67 100644 --- a/modules/final-seminar/contents.tex +++ b/modules/final-seminar/contents.tex @@ -36,6 +36,8 @@ \section{Introduction} \begin{frame} \begin{block}{Goal} \begin{itemize} + \item You should be able to evaluate a proposed method to answer a + question. \item You should be able to design a method to answer a research question. \item Security is multifaceted, you should be able to consider more than @@ -60,16 +62,12 @@ \section{Scenario and research question} The research question that you should answer is the following: \begin{frame} -\begin{question} - We want to develop a secure instant-messaging system\footnote{% - Think chat or SMS/text messages; something like Signal, WhatsApp, Telegram, - \etc - }. - How can we evaluate its security? -\end{question} +\begin{restatable}{question}{mainRQ}\label{mainRQ} + How secure is the Signal instant-messaging app? +\end{restatable} \end{frame} -\section{Assessment}\label{Assessment} +\section
{Assessment}\label{Assessment} In brief, what you should be able to do is to ask good questions and propose suitable ways of answering them. @@ -87,42 +85,52 @@ \subsection{Material you should produce} To be able to show that you can do that, you should \begin{frame} - \only{You should} \begin{itemize} \item write a report, and - \item make a presentation (10 minutes).\footnote{% - If you write your report in LaTeX, consider writing your slides in LaTeX - also using the \texttt{beamer} and \texttt{beamerarticle} packages. - } + \item review someone else's report. \end{itemize} -These should should contain the following sections: +\end{frame} + +The report should contain the following sections: +\begin{frame} \begin{enumerate} - \item Research question overview. - \only
{This section should give an overview of the research - question and outline any subquestions that you derive. - (This focuses on \cref{LOrelate}.)} - \item Methodology. - \only
{This section contains how you propose to answer the - questions from the previous section (methods used). - (This focuses on \cref{LOapply}.)} - \item Discussion. - \only
{In this section you discuss why those methods answer the - questions properly and any limitations that you see. - You can also discuss item alternative methods that you discarded (and - why). - (This focuses on \cref{LOevaluate}.)} + \item Related works. + \only
{% + This section should give an overview of the existing research literature + related to \cref{mainRQ}. + That is, you should find all papers that answers some aspect of it. + You should note what question each paper answers and summarize how they + do that. + (This focuses on \cref{LOevaluate}.)% + } + \item Missing aspects. + \only
{% + In this section, you pose questions that are also related to + \cref{mainRQ}, but has not been covered by the literature. + For each such question, you must propose a method that correctly provides + an answer\footnote{% + But remember, you don't have to actually perform any of these + methods. + }. + You must also discuss why this method is suitable to answer the question + and any limitations. + (This focuses on \cref{LOapply,LOevaluate}.)% + } \item Conclusion. - \only
{This section ties the sack. - Here you connect the questions and the types of answers gained (through the - methods) and piece them back into the original research question. - You also summarize how well you find the original question to be answered, - if there are any \enquote{holes that need filling}. - (This focuses on \cref{LOrelate,LOevaluate,LOcomm}.)} + \only
{% + This section ties the sack. + Here you connect the questions (yours and from related works) and the + types of answers gained (through the methods) and piece them back into + \cref{mainRQ}. + You also summarize how well you find \cref{mainRQ} to be answered, if + there are any \enquote{holes that need filling}. + (This focuses on \cref{LOrelate}.)% + } % \item your original plan for the course work, adaptations made and what you % learned. \end{enumerate} \end{frame} -This assesses \cref{LOrelate,LOevaluate,LOapply,LOcomm,LOplan}. +This assesses \cref{LOrelate,LOevaluate,LOapply,LOcomm}. %\paragraph{Feedback you should provide} % @@ -142,10 +150,10 @@ \subsection{Material you should produce} %\end{itemize} %This also assesses \cref{LOcomm}. -\subsection{Assessment criteria} +\subsection
{Assessment criteria} To assess the learning objectives -(\cref{LOrelate,LOevaluate,LOapply,LOplan,LOcomm}) +(\cref{LOrelate,LOevaluate,LOapply,LOcomm,LOplan}) we use the following criteria. These criteria are also included as a rubric in the assignment where you hand in your report. @@ -156,82 +164,76 @@ \subsection{Assessment criteria} You'll need a pass on all criteria to pass the assignment and the course. -\begin{frame}[fragile,allowframebreaks] - \RaggedRight - \begin{longtable} - {p{0.33\textwidth}p{0.33\textwidth}p{0.33\textwidth}p{0.33\textwidth}} - \toprule - \textbf{Learning objective} - & \textbf{Criteria} - & \textbf{Pass} - & \textbf{Fail} - \\* - \midrule - \endhead - \only
{\cref{LOrelate}:} - The student is able to \LOrelate - & The main research question is explored from relevant aspects? - & There might be more aspects to explore, but the most important ones are - covered. Motivate why no more aspect need to be explored. - & There is at least one aspect missing that can be motivated to be - important. Motivate which one. - For instance, do we need to ask another more detailed (research) question - to be able to answer the main research question in a meaningful way? Do - they address the question from just a single perspective? - \\* - \newpage - \only
{\cref{LOapply}:} - The student is able to \LOapply - & The methods are suitable to answer the questions? - & All questions have suggested methods that can actually answer the - question correctly. - Motivate why this is the case. - & There is at least one question that will not be answered correctly with - the suggested method. - State which one and why. - For instance, the method might only answer part of the question. - %Or not at all. - \\* - \newpage - \only
{\cref{LOevaluate}:} - The student is able to \LOevaluate - & Are all quality aspects considered in the discussion? - & The most important quality aspects are considered and discussed. - & At least one important quality aspect is missing. - State which one and motivate why it's important enough that it must be - treated. - \\* - & Are all ethical aspects considered? - & The most important ethical aspects are considered and discussed. - & At least one important ethical aspect is missing. - State which one and motivate why it's important enough that it must be - treated. - \\* - \newpage - \only
{\cref{LOcomm}:} - The student is able to \LOcomm - & Is the report written as short as possible? - & The report can probably be slightly shortened, but not by much. - & The report can be shortened considerably. - Give at least one example of where and how. - \\* - & Is the report clear and easy to understand? - & The report is easy to understand. - & Some parts of the report must be read more than once to understand. - (Or worse.) - Give at least one example. - \\* - & Are the arguments clearly stated and well motivated? - & All arguments are clearly stated and well motivated. - & At least one argument is not clearly stated or not well motivated. - State which one and motivate why it's not clear or well motivated. - \\* - \bottomrule - \end{longtable} -\end{frame} +{\RaggedRight +\begin{longtable} +{p{0.33\textwidth}p{0.33\textwidth}p{0.33\textwidth}p{0.33\textwidth}} +\toprule +\textbf{Learning objective} + & \textbf{Criteria} + & \textbf{Pass} + & \textbf{Fail} + \\* +\midrule +\endhead +\only
{\cref{LOrelate}:} +The student is able to \LOrelate + & The main research question is explored from relevant aspects? + & There might be more aspects to explore, but the most important ones are + covered. Motivate why no more aspect need to be explored. + & There is at least one aspect missing that can be motivated to be + important. Motivate which one. + For instance, do we need to ask another more detailed (research) question + to be able to answer the main research question in a meaningful way? Do + they address the question from just a single perspective? + \\* +\only
{\cref{LOapply}:} +The student is able to \LOapply + & The methods are suitable to answer the questions? + & All questions have suggested methods that can actually answer the + question correctly. + Motivate why this is the case. + & There is at least one question that will not be answered correctly with + the suggested method. + State which one and why. + For instance, the method might only answer part of the question. + %Or not at all. + \\* +\only
{\cref{LOevaluate}:} +The student is able to \LOevaluate + & Are all quality aspects considered in the discussion? + & The most important quality aspects are considered and discussed. + & At least one important quality aspect is missing. + State which one and motivate why it's important enough that it must be + treated. + \\* + & Are all ethical aspects considered? + & The most important ethical aspects are considered and discussed. + & At least one important ethical aspect is missing. + State which one and motivate why it's important enough that it must be + treated. + \\* +\only
{\cref{LOcomm}:} +The student is able to \LOcomm + & Is the report written as short as possible? + & The report can probably be slightly shortened, but not by much. + & The report can be shortened considerably. + Give at least one example of where and how. + \\* + & Is the report clear and easy to understand? + & The report is easy to understand. + & Some parts of the report must be read more than once to understand. + (Or worse.) + Give at least one example. + \\* + & Are the arguments clearly stated and well motivated? + & All arguments are clearly stated and well motivated. + & At least one argument is not clearly stated or not well motivated. + State which one and motivate why it's not clear or well motivated. + \\* +\bottomrule +\end{longtable}} -\only
{% -\subsection{Plagiarism} +\subsection
{Plagiarism} You work in the groups that you've signed up for. You may discuss with others, search the literature and use tools such as @@ -254,33 +256,54 @@ \subsection{Plagiarism} Not mentioning that you've used ChatGPT or discussed the topic with people outside the group is considered an attempt to deceive. -} \section{The final seminar} -\subsection{Structure} +During the final seminar we will discuss the questions and methods that you've +covered in the report and how well \cref{mainRQ} was covered. -\begin{frame} - \begin{block}{Structure} - \begin{enumerate} - \item Each group presents - \item After each presentation, I might ask for some more details. - \item When everyone has presented, we discuss what we've heard. - \end{enumerate} - \end{block} +For the seminar you should prepare slides. +Each slide should focus on a research question. +If the research question was covered by the literature, you should have a +reference to the paper on the slide. + +During the seminar, with the slide you should be able to explain the question +and your evaluation of how well the method answers the question. +(You can use more than one slide if it improves the presentation, but it +shouldn't be necessary.) + +The participants will take turn in presenting the question, method and +evaluation. +The we discuss jointly. +We will want to discuss closely related questions, try to group them by that in +the slide deck. + +\begin{frame} + \begin{activity}[Order] + \begin{itemize} + \item What order to present? + \item You'll have one minute to write \enquote{me!}. + \item The order in which you appear will be the order of presentation. + \end{itemize} + \end{activity} \end{frame} -\subsection{Questions for discussion} +\begin{frame} + \mainRQ* + \begin{activity} + \begin{itemize} + \item One aspect/subquestion at a time. + \end{itemize} + \end{activity} +\end{frame} -\begin{frame} - \begin{question} - What are the first thoughts while/after hearing the others present? - \end{question} - \begin{question} - What did you like the most from what you've heard? - \end{question} - \begin{question} - What would you like to improve/do differently/add to your own work - after hearing what the others did? - \end{question} +\begin{frame} + \begin{activity}[Any other aspects/questions?] + \begin{itemize} + \item Take a few minutes to reflect on holes that need filling to get + closer to fully answer the main question. + \item Just write the questions. + \end{itemize} + \end{activity} \end{frame} + diff --git a/modules/final-seminar/notes.tex b/modules/final-seminar/notes.tex index 30c6191..c8f6dae 100644 --- a/modules/final-seminar/notes.tex +++ b/modules/final-seminar/notes.tex @@ -1,39 +1,4 @@ \documentclass[a4paper,10pt,article,oneside]{memoir} -%%% Tufte %%% -\usepackage{marginfix} -%\setlength{\evensidemargin}{\oddsidemargin} -\marginparmargin{outer} -\setlrmarginsandblock{2.5cm}{8cm}{*} - -\footnotesinmargin - -\usepackage{ragged2e} -\renewcommand{\sidefootform}{\RaggedRight} -\renewcommand{\foottextfont}{\footnotesize\RaggedRight} - -\setmpjustification{\RaggedRight}{\RaggedRight} - -% margin figure and caption typeset ragged against text block -\setfloatadjustment{marginfigure}{\mpjustification} -\setmarginfloatcaptionadjustment{figure}{\captionstyle{\mpjustification}} - -% From https://tex.stackexchange.com/a/324757/17418 -% Palatino for main text and math -\usepackage[osf,sc]{mathpazo} - -% Helvetica for sans serif -% (scaled to match size of Palatino) -\usepackage[scaled=0.90]{helvet} - -% Bera Mono for monospaced -% (scaled to match size of Palatino) -\usepackage[scaled=0.85]{beramono} - -\setlxvchars\setxlvchars -\checkandfixthelayout - -\nouppercaseheads -%%% end tufte %%% \let\subsubsection\subsection \let\subsection\section \let\section\chapter @@ -46,17 +11,6 @@ %\usepackage{authblk} %\let\institute\affil -\declaretheorem[style=theorem]{theorem} -\declaretheorem[style=definition]{definition} -\declaretheorem[style=definition]{assumption} -\declaretheorem[style=definition]{protocol} -\declaretheorem[style=example]{example} -\declaretheorem[style=remark]{remark} -\declaretheorem[style=remark]{idea} -\declaretheorem[style=exercise]{exercise} -\declaretheorem[style=exercise]{question} -\declaretheorem[style=solution]{solution} - \usepackage[inline]{enumitem} \begin{document} diff --git a/modules/final-seminar/preamble.tex b/modules/final-seminar/preamble.tex index 0789d3b..f6f9822 100644 --- a/modules/final-seminar/preamble.tex +++ b/modules/final-seminar/preamble.tex @@ -41,6 +41,8 @@ \usepackage[binary-units]{siunitx} +\usepackage{didactic} + \usepackage[capitalize]{cleveref} \input{objectives.tex} diff --git a/modules/final-seminar/slides.tex b/modules/final-seminar/slides.tex index 2287028..a77bbb7 100644 --- a/modules/final-seminar/slides.tex +++ b/modules/final-seminar/slides.tex @@ -1,100 +1,6 @@ \documentclass[ignoreframetext]{beamer} \input{preamble.tex} -\usetheme{Berlin} -\setbeamertemplate{footline}%{miniframes theme} -{% - \begin{beamercolorbox}[colsep=1.5pt]{upper separation line foot} - \end{beamercolorbox} - \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% - leftskip=.3cm,rightskip=.3cm plus1fil]{author in head/foot}% - \leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor}% - \hfill% - {\usebeamerfont{institute in head/foot}\usebeamercolor[fg]{institute in head/foot}\insertshortinstitute}% - \end{beamercolorbox}% - \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% - leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}% - {\usebeamerfont{title in head/foot}\insertshorttitle} \hfill \insertframenumber% - \end{beamercolorbox}% - \begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot} - \end{beamercolorbox} -} -\setbeamercovered{transparent} -\setbeamertemplate{bibliography item}[text] - -\AtBeginSection[]{% - \begin{frame} - \tableofcontents[currentsection] - \end{frame} -} - -\ProvideDocumentEnvironment{assumption}{o}{% - \IfValueTF{#1}{% - \begin{block}{Assumption: #1} - }{% - \begin{block}{Assumption} - } -}{% - \end{block} -} - -\ProvideDocumentEnvironment{protocol}{o}{% - \IfValueTF{#1}{% - \begin{block}{Protocol: #1} - }{% - \begin{block}{Protocol} - } -}{% - \end{block} -} - -\ProvideDocumentEnvironment{remark}{o}{% - \IfValueTF{#1}{% - \begin{alertblock}{Note: #1} - }{% - \begin{alertblock}{Note} - } -}{% - \end{alertblock} -} - -\ProvideDocumentEnvironment{idea}{o}{% - \IfValueTF{#1}{% - \begin{block}{Idea: #1} - }{% - \begin{block}{Idea} - } -}{% - \end{block} -} - -\ProvideDocumentEnvironment{question}{o}{% - \setbeamercolor{block body}{bg=orange!15,fg=black} - \setbeamercolor{block title}{bg=orange,fg=white} - \setbeamercolor{local structure}{fg=orange} - \IfValueTF{#1}{% - \begin{block}{Question: #1} - }{% - \begin{block}{Question} - } -}{% - \end{block} -} - -\ProvideDocumentEnvironment{exercise}{o}{% - \setbeamercolor{block body}{bg=yellow!10,fg=black} - \setbeamercolor{block title}{bg=yellow,fg=black} - \setbeamercolor{local structure}{fg=yellow} - \IfValueTF{#1}{% - \begin{block}{Exercise: #1} - }{% - \begin{block}{Exercise} - } -}{% - \end{block} -} - - \begin{document} \mode \input{contents.tex} From a22eeb1be4dd26d72bc74503c08acc35dea45ea9 Mon Sep 17 00:00:00 2001 From: Daniel Bosk Date: Mon, 29 Apr 2024 13:13:00 +0200 Subject: [PATCH 13/13] Adds more material to slides in anonymity module --- modules/04-anonymous/contents.tex | 60 ++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 5 deletions(-) diff --git a/modules/04-anonymous/contents.tex b/modules/04-anonymous/contents.tex index 2bc200c..6d8204b 100644 --- a/modules/04-anonymous/contents.tex +++ b/modules/04-anonymous/contents.tex @@ -24,6 +24,7 @@ \clearpage + \section{Users get routed} \begin{frame} @@ -38,14 +39,50 @@ \section{Users get routed} \end{frame} \begin{frame} + \begin{solution}[What was the research question?] + \begin{itemize} + \item How susceptible are \alert<2>{typical} users to attacks by + \alert<2>{reasonably realistic} adversaries? + \end{itemize} + \end{solution} + + \begin{uncoverenv}<2> \begin{question} \begin{itemize} - \item Why do we need to use empirical methods in this case? - \item What effect does data have on validity? + \item What is a \enquote{typical} user? + \item What is \enquote{reasonably realistic}? \end{itemize} \end{question} + \end{uncoverenv} +\end{frame} + +\begin{frame} + \begin{solution}[What methods did they use?] + \begin{itemize} + \item They used a simulation. + \end{itemize} + \end{solution} + + \begin{uncoverenv}<+> + \begin{question} + \begin{itemize} + \item Why is a simulation a good method? + \item How do the results relate to reality (validity)? + \end{itemize} + \end{question} + \end{uncoverenv} + + \begin{uncoverenv}<+> + \begin{question}[\enquote{Typical} users] + \begin{itemize} + \item How well do the \enquote{typical} users match reality? + \item Do they have to? + \end{itemize} + \end{question} + \end{uncoverenv} \end{frame} + \section{Shadow: Running Tor in a box} \begin{frame} @@ -68,6 +105,7 @@ \section{Shadow: Running Tor in a box} \end{question} \end{frame} + \section{WF with Website Oracles} \begin{frame} @@ -84,13 +122,15 @@ \section{WF with Website Oracles} \begin{frame} \begin{question} \begin{itemize} - \item What type of contribution do we get from this paper? - What is the Website Oracle? - \item How do they show WOs exist in reality? + \item<+> What type of contribution do we get from this paper? + \item<+> What is the Website Oracle? How do they show WOs exist in + reality? + \item<+> How do they show WF+WO effect in reality? \end{itemize} \end{question} \end{frame} + \section{Evaluating WF in Real World} \begin{frame} @@ -113,3 +153,13 @@ \section{Evaluating WF in Real World} \end{itemize} \end{question} \end{frame} + +\begin{frame} + \begin{remark}[Problems] + \begin{itemize} + \item Didn't test WF+WO paper's approach in this new setting. + \item Papers like WF+WO must use same approach as papers they compare + with. + \end{itemize} + \end{remark} +\end{frame}