% Created 2022-09-24 Sa 10:37
% Intended LaTeX compiler: pdflatex
\documentclass[presentation]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{capt-of}
\usepackage{hyperref}
\newcounter{framenumberwithoutappendix}
\usetheme{Berlin}\usecolortheme{dove}
\newcommand{\carlo}[1]{\color{blue!65!black}{#1}}
\newcommand{\arne}[1]{\color{red!50!black}{#1}}
\setbeamercolor{block body alerted}{fg=orange,bg=darkgray}
\setbeamercolor{block title alerted}{fg=cyan,bg=black}
\setbeamertemplate{blocks}[rounded]
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage[ngerman, english]{babel}
\usepackage{tikz}
\setlength{\parindent}{0cm}
\setlength{\parskip}{0.5em}
\usepackage{uniinput}
\DeclareUnicodeCharacter{B7}{\ensuremath{\cdot}}
\usepackage{natbib}
\usepackage{morefloats}
\hypersetup{
colorlinks,
linkcolor={red!50!black},
citecolor={blue!30!black},
urlcolor={cyan}
}
\usepackage{lmodern}
\usepackage[protrusion=true,expansion=true]{microtype}
\usepackage{pdfpages}
% make PDF reproducible as by https://tex.stackexchange.com/questions/229605/reproducible-latex-builds-compile-to-a-file-which-always-hashes-to-the-same-va/313605#313605
% For pdfTex:
\pdfinfoomitdate=1
\pdftrailerid{}
\pdfinfo{   /Producer () /Creator () }
\usetheme{default}
\author{Dr. Arne Babenhauserheide}
\date{\includegraphics[width=1cm]{logo.png}}
\title{\includegraphics[height=1em]{logo.png} Freenet: the long game \includegraphics[height=1em]{logo.png}}
\subtitle{Wann immer eine neue Art Datenschutzverletzung bekannt wird,\\
erinnern sich einige an das \alert{Freenet Projekt},\\
aber wenige kennen es wirklich.\\
\alert{Ändern wir das.}\\
Vision, Grundlagen und Neuerungen}
\setbeameroption{show notes}
\setbeamertemplate{navigation symbols}{}
\hypersetup{
 pdfauthor={Dr. Arne Babenhauserheide},
 pdftitle={\includegraphics[height=1em]{logo.png} Freenet: the long game \includegraphics[height=1em]{logo.png}},
 pdfkeywords={},
 pdfsubject={},
 pdfcreator={Emacs 28.1 (Org mode 9.5.5)}, 
 pdflang={English}}
\begin{document}

\maketitle


\section{Warum Freenet?}
\label{sec:org544043e}

\subsection{Warum Freenet?}
\label{sec:orgd4aa393}

\begin{frame}[label={sec:org1004006}]{Warum Freenet?}
\begin{quote}
“There is now no shield from forced exposure…The foundation of Groklaw is over…the Internet is over” --Groklaw, \href{http://www.groklaw.net/article.php?story=20130818120421175}{Forced Exposure (2013-08-20)}
\end{quote}
\end{frame}

\begin{frame}[label={sec:org5d93258}]{Warum ich?}
\begin{itemize}
\item Seit 20 Jahren in der Entwicklung von peer-to-peer Netzen
\item Freenet Release-Manager seit 2017
\item Vorlesung zu Verteilten Systemen an der DHBW
\item 2015 den SUMA Award für Freenet entgegengenommen
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org84053b2}]{Fragen}
\begin{itemize}
\item Warum gibt es Freenet?
\item Wie funktioniert Freenet?
\item Was ermöglicht Freenet?
\item Was hat sich geändert?
\end{itemize}
\end{frame}

\subsection{Was bietet Freenet?}
\label{sec:org66969cb}

\begin{frame}[label={sec:org9b6b6ea}]{Warum Freenet? Was bringt es?}
\begin{itemize}
\item Vertraulich oder pseudonym kommunizieren.
\item Technischer Grundpfeiler für den Schutz gegen Zensur.
\item Dafür: Hohes Datenschutzniveau.
\end{itemize}

\emph{“Covers the needs for protection expected from a secure data broker for Multi-Party Data Exchange in IoT for Health”} \citep[Uni Bern]{Benoist2020} — \href{https://www.igi-global.com/chapter/using-freenet-as-a-broker-for-multi-party-data-exchange-in-iot-for-health/257911}{Artikel}
\end{frame}

\begin{frame}[label={sec:org06dd607}]{Im Freundeskreis sprechen: Vertraulich}
\begin{center}
\includegraphics[width=.9\linewidth]{friend-to-friend.png}
\end{center}
\end{frame}


\begin{frame}[label={sec:orgcadf740}]{Sprechen wie mit …}
\begin{center}
\includegraphics[height=0.6\textheight]{friend-to-friend-chat-whatsapp.png}
\end{center}
\end{frame}


\begin{frame}[label={sec:org6647f45}]{… aber ohne den Überwachungs-Server}
\begin{alertblock}{Ohne zentralen Server}
\begin{center}
\includegraphics[height=0.6\textheight]{friend-to-friend-chat-freenet.png}
\end{center}
\end{alertblock}
\end{frame}

\begin{frame}[label={sec:org309e09f}]{Mit Fremden sprechen}
\begin{alertblock}{Verbundene Freundeskreise}
\begin{center}
\includegraphics[width=0.9\textwidth]{friend-to-friend-foaf.png}
\end{center}
\end{alertblock}
\end{frame}

\begin{frame}[label={sec:org14b42a6}]{Ohne Server}
\begin{alertblock}{Verteilter Zwischenspeicher: Verfügbar wenn offline}
\begin{center}
\includegraphics[width=0.9\textwidth]{friend-to-friend-foaf-offline.png}
\end{center}
\end{alertblock}
\end{frame}


\begin{frame}[label={sec:org4c639e7}]{Pionier im Freundeskreis?}
\begin{alertblock}{Opennet}
\begin{center}
\includegraphics[width=0.9\textwidth]{opennet-seed.png}
\end{center}
\end{alertblock}
\end{frame}

\begin{frame}[label={sec:org1cda264}]{Einwurf: Wir starten eine Sharesite-Seite!}
\url{http://127.0.0.1:8888/Sharesite}

\begin{center}
\includegraphics[width=.9\linewidth]{sharesite.png}
\end{center}
\end{frame}

\subsection{Warum brauchen wir das?}
\label{sec:orgd55be22}

\begin{frame}[label={sec:org0ef0c3d}]{Warum brauchen wir das?}
\begin{block}{\alert{Spiegelbild der Welt}}
\emph{Durch die steigende Vermengung des digitalen Lebens mit dem Analogen wird Analoge Kommunikation zu einem Spiegelbild des beschränkten Lebens im Netz.}\\
— Arne Babenhauserheide, \href{https://www.youtube.com/watch?v=dZpsBSPsHDI\&t=456s}{Suma e.V. Kongress 2015 :-)}
\end{block}

\begin{block}{\alert{Das Netz verbreitet sich}}
Ohne pseudonyme Kommunikation und ohne vertrauliche Kommunikation im
Internet, werden wir sie auch in der Analogen Welt verlieren.
\end{block}
\end{frame}


\begin{frame}[label={sec:orgfab45dd}]{Analoge Kommunikation}
\begin{columns}
\begin{column}{0.32\columnwidth}
\begin{block}<4-4>{}
Im Überwachten Netz
\end{block}
\end{column}
\end{columns}

\begin{columns}
\begin{column}{0.32\columnwidth}
\begin{block}<1-3>{Vertraulich}
\begin{center}
\includegraphics[width=1.0\textwidth]{gruene_jugend_ffm-stammtisch-cc_by-6272541036_17d2251176_o.jpg}
\end{center}

\noindent\rule{\textwidth}{0.5pt}

Im kleinen Rahmen

Direkter Kontakt
\end{block}
\end{column}
\begin{column}{0.32\columnwidth}
\begin{block}<2-4>{Offiziell}
\begin{center}
\includegraphics[width=1.0\textwidth]{angela_merkel-eppofficial-european_peoples_party-cc_by-13564824463_ec3499360d_o.jpg}
\end{center}

\noindent\rule{\textwidth}{0.5pt}

Selbstzensur

Fremdbestimmt
\end{block}
\end{column}
\begin{column}{0.32\columnwidth}
\begin{block}<3-3>{Pseudonym}
\begin{center}
\includegraphics[width=1.0\textwidth]{anonymous_munich-feb_14-cc_by-3282278914_d686734ef2_o.jpg}
\end{center}

\noindent\rule{\textwidth}{0.5pt}

Stetig auf der Hut

Quellenschutz!
\end{block}
\end{column}
\end{columns}
\begin{columns}
\begin{column}{0.32\columnwidth}
\begin{block}<4-4>{}
Stichwort: Panoptikum
\end{block}
\end{column}
\end{columns}
\end{frame}

\begin{frame}[label={sec:org8466504}]{Die Dystopie: Verlust der Pressefreiheit}
\begin{quote}
I worry about my child and the Internet all the time, even though she's too young to have logged on yet. Here's what I worry about. I worry that 10 or 15 years from now, she will come to me and say 'Daddy, where were you when they took freedom of the press away from the Internet?'
--Mike Godwin, Electronic Frontier Foundation, \href{https://w2.eff.org/Misc/EFF/quotes.eff.txt}{“Fear of Freedom” (1995)}
\end{quote}

Das Ziel des Freenet-Projektes ist es, den freien Informationsfluss zu gewährleisten.

\emph{Auch dann noch, wenn Kriminelle journalistisch Arbeitende und ihre Quellen bedrohen.}
\end{frame}

\begin{frame}[label={sec:orgbc835ab}]{Technik und Politik}
\begin{columns}
\begin{column}{0.45\columnwidth}
\begin{block}{Tech alleine reicht nicht}
Totale Überwachung und Kontrolle sind möglich.
\end{block}
\end{column}

\begin{column}{0.45\columnwidth}
\begin{block}{Politik alleine reicht nicht}
Wenn Überwachung und Zensur trivial sind, werden sie genutzt.
\end{block}
\end{column}
\end{columns}

\begin{columns}
\begin{column}{0.97\columnwidth}
\begin{block}{Tech und Politik}
Technologie liefert die Grundlage, auf der Politik arbeiten kann: Überwachung und Zensur so aufwändig und teuer machen, dass wir den politischen Kampf gewinnen können.

\vspace{0.2cm}

\begin{quote}
The NSA surveillance doesn’t scale. \\
-- Constanze Kurz (EuroPython 2014)
\end{quote}
\end{block}
\end{column}
\end{columns}
\end{frame}

\begin{frame}[label={sec:org0da5493}]{Die Vision: Ziele des Freenet Projekts}
\large
\begin{quote}
 \footnotesize The specific purpose of this corporation is to assist in developing
and disseminating \large \alert{technological solutions} \footnotesize to further the \large \alert{open and
democratic distribution of information} \footnotesize over the Internet or its
successor electronic communication networks or organizations. It is
also the purpose of this organization to guarantee consenting
individuals the \large \alert{free, unmediated, and unimpeded reception and
impartation of} \footnotesize all intellectual, scientific, literary, social,
artistic, creative, human rights, and cultural \large \alert{expressions, opinions
and ideas} \footnotesize without interference or limitation by or service to state,
private, or special interests. It is also the purpose of this
organization to educate the world community and be an advocate of
these purposes. — The Freenet Project Inc, a 501(c)(3) non-profit (EIN
95-4864038) \url{https://freenetproject.org/pages/donate.html}
\end{quote}
\end{frame}

\begin{frame}[label={sec:org7350dc6}]{Zensurfreiheit}
\begin{itemize}
\item Kern von allem in Freenet
\item Alle Möglichkeiten und Entwicklungen dienen diesem Ziel
\item Artikel 5 GG: eine Zensur findet nicht statt
\end{itemize}
\end{frame}

\begin{frame}[label={sec:orgeaf0169}]{Folgerungen: Herrschaftsfreiheit}
Niemand darf Macht über die Kommunikation anderer haben. Einige der Risiken für Kommunikation:

\begin{description}
\item[{\alert{Direkte Zensur}}] entfernt Beiträge durch Drohung oder Löschung
\item[{\alert{Schikane oder Hetze}}] schließt Leute aus und treibt sie raus
\item[{\alert{Fluten mit Irrelevantem}}] macht Wichtiges unauffindbar
\item[{\alert{Zerrüttung der Gesprächskultur}}] verhindert Evolution von Ideen
\end{description}
\end{frame}

\subsection{Fragen}
\label{sec:orgf8b434f}
\begin{frame}[label={sec:org479cd7b}]{Braucht das nicht Moderation?}
\begin{block}{\alert{Freenet ermöglicht Moderation ohne zentrale Macht}}
Wähle selbst, wer für dich blocken kann.

Wenn dein pseudonymer Freundeskreis ein Pseudonym blockt, wird es für
dich automatisch auch unsichtbar, es sei denn, du hast es explizit
freigeschaltet.

Das Anti-Spam-System skaliert besser als Spam. Auch ohne ein Heer
ausgebeuteter Content-Moderationsteams aus Billiglohnländern (weiter:
\href{https://www.youtube.com/watch?v=pP6rngNuOfc}{Arte: „The cleaners“}).

Heutige verteilte Plattformen \href{https://socialhub.activitypub.rocks/t/problem-network-level-moderation-of-content-on-federated-networks-leads-to-fragmentation-and-lower-total-value-for-users/1949/2}{ziehen langsam nach}.
\end{block}
\end{frame}

\begin{frame}[label={sec:orgbe5928d}]{Und Hetze?}
\begin{block}{\alert{Den Opfern helfen Pseudonyme mehr als den Tätern}}
Wer Gewalt fürchten muss, kann ohne Pseudonym nicht öffentlich
kommunizieren. Überwachung hilft so immer den Tätern.
\end{block}

\begin{block}{\alert{Unter Klarnamen sind Leute aggressiver}}
\begin{quote}
Results show that in the context of online firestorms, non-anonymous
individuals are more aggressive compared to anonymous individuals
\begin{itemize}
\item Katja Rost et al.: \href{https://journals.plos.org/plosone/article?id=10.1371\%2Fjournal.pone.0155923}{Digital Social Norm Enforcement: Online Firestorms in Social Media}
\end{itemize}
\end{quote}

Weiterlesen: \href{https://www.draketo.de/deutsch/politik/klarnamenspflicht}{Klarnamenspflicht schadet der Online-Kommunikation}
\end{block}
\end{frame}

\begin{frame}[label={sec:org31e24cc}]{Und Propaganda?}
\begin{block}{\alert{Propaganda will Herrschaft}}
Q: \emph{“Can I prevent someone from commenting in my thread?”}

A: \emph{“You did understand the part about no power over others?”}
\end{block}

\begin{block}{\alert{Herrschaft ist zentralisierte Macht}}
Tik Toks Algorithmen treiben Leute in ein Labyrinth aus
Desinformation.

Selbst zu entscheiden, welchen Einflüssen wir uns aussetzen, ist eine
Frage Kommunikativer Selbstbestimmung.
\end{block}
\end{frame}

\begin{frame}[label={sec:org87fe54d}]{Und Radikalisierung?}
Soziale Medien machen alles — und schlimmeres — was Leute jemals bei
Freenet befürchtet haben. Außer Zugriff auf brisante Informationen wo
Leute sie wirklich bräuchten.

Und außer der Möglichkeit, aggressiven Propagandisten verbal die Stirn
zu bieten, ohne sich in Gefahr zu bringen.
\end{frame}

\begin{frame}[label={sec:org6fdcc0c}]{Zusammenfassung}
\begin{itemize}
\item Zensurfreiheit
\item Datenschutz
\item Vertrauliche Kommunikation
\item Pseudonyme
\end{itemize}

\emph{Eine technische Säule für Informationelle Selbstbestimmung.}
\end{frame}

\begin{frame}[label={sec:orgfbd65e1}]{Einwurf: Unsere Sharesite!}
\url{http://127.0.0.1:8888/Sharesite}

\begin{center}
\includegraphics[width=.9\linewidth]{sharesite.png}
\end{center}
\end{frame}


\section{Funktionsweise}
\label{sec:orgdbaf3cd}

\subsection{Warum will ich das wissen?}
\label{sec:orgf575abf}

\begin{frame}[label={sec:org8c99b0b}]{Funktionsweise von Freenet}
\begin{itemize}
\item Grundkonzepte
\item Schnittstellen
\item Schutzmaßnahmen
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org0a28d0a}]{Warum Funktionsweise betrachten?}
\begin{itemize}
\item Quelle der Stärken von Freenet
\item Verständnis notwendig für Effizienz
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org7964f7d}]{Alleinstellungsmerkmale}
\begin{itemize}
\item Freund-zu-Freund Darknet (plus Opennet)
\item Hosting ohne Server (hochladen und verschwinden)
\item Stabile Pseudonyme (privater Schlüssel)
\item Kryptografie über Links (einfach nutzbar)
\item Dezentrale Spamresistenz (erprobt; hilft Kommunikationskultur)
\item Nutzungsabhängige Lebenszeit (anonym)
\end{itemize}

\emph{Praktisch: Seit 22 Jahren durch Tausende genutzt.}
\end{frame}

\begin{frame}[label={sec:org71c61f4}]{Grundkonzepte}
\begin{itemize}
\item Zugriff auf Daten: dezentral und skalenfrei (small world)
\item Referenzierung von Daten über Inhalts-Hash oder Öffentlichen Schlüssel
\item Private und Öffentliche Schlüssel als Links
\item Updates über Versionierung
\end{itemize}
\end{frame}

\subsection{Einstieg}
\label{sec:orgb919eca}

\begin{frame}[label={sec:org3645d6a}]{Einstieg}
\begin{columns}
\begin{column}{0.5\columnwidth}
\begin{itemize}
\item Mit Freunden verbinden¹ (sicherer), oder
\item Mit Seednode verbinden
\end{itemize}

¹: High Security Mode: nur mit Freunden verbinden
\end{column}

\begin{column}{0.5\columnwidth}
\begin{center}
\includegraphics[width=0.8\textwidth]{opennet-einstieg.png}
\end{center}
\end{column}
\end{columns}
\end{frame}

\begin{frame}[label={sec:orgf6d66e9}]{Small World / grob Skalenfreies Netz}
\begin{itemize}
\item Verbunden zu vielen Nahen Knoten und wenigen entfernten
\item 6 Degrees of Separation: Wie Briefe über Bekannte
\item Ring: Location liegt zwischen 0.0 und 1.0
\item Wer bei 0.3 ist, kennt v.a. Leute nahe 0.3
\item Bei Opennet über den Einstieg realisiert
\item Bei Friend-to-Friend über Tausch der Location
\end{itemize}
\end{frame}

\subsection{Datenoperationen}
\label{sec:orgdc481b3}
\begin{frame}[label={sec:org2711ce8}]{Dateien referenzieren: Schlüsseltypen}
\begin{itemize}
\item CHK: Datei nach Inhalt
\item SSK: Public/Private Key
\begin{itemize}
\item USK: Aktualisierbar
\item KSK: Gemeinsames Passwort
\end{itemize}
\end{itemize}

\emph{CHKs sind 32kiB groß, SSKs 2kiB. Größere sind Bäume von CHKs mit SSK
oder CHK für das Manifest.}
\end{frame}

\begin{frame}[label={sec:org1e25e9f},fragile]{Struktur der Schlüsseltypen}
 \footnotesize
\begin{verbatim}
CHK@<routing>,<encryption>,<flags>/<name>/[optional-path]
SSK@<routing>,<encryption>,<flags>/<name>/[optional-path]
USK@<routing>,<encryption>,<flags>/<name>/<version>/[optional-path]
KSK@<password>
\end{verbatim}

\normalsize

\begin{itemize}
\item CHK: \href{http://127.0.0.1:8888/CHK@7ERTt0G\~ut6AFWDEtjwDA09Diaz0fGcAutWmo7DUWSA,F2uFi-xbhPZmCZOcnA\~WLB4Cwej5gIR6u4cqFyhKVSY,AAMC--8/fetchpull-lifetime-realtime-success-count.png}{CHK@7ER\ldots{},F2u\ldots{},AAMC--8/fetchpull-lifetime-realtime-success-count.png}
\item SSK: \href{http://localhost:8888/SSK@rQnuHCVpf7BHcsZHBt911K3-iaELN1u1Vg0fzxDRq7k,I1vFYWONhGfECHr9XD-1lKxxstr64rF4dTykcMq9swY,AQACAAE/gms-16/}{SSK@rQn\ldots{},I1v\ldots{},AQACAAE/gms-16/}
\item USK: \href{http://localhost:8888/USK@rQnuHCVpf7BHcsZHBt911K3-iaELN1u1Vg0fzxDRq7k,I1vFYWONhGfECHr9XD-1lKxxstr64rF4dTykcMq9swY,AQACAAE/gms/16/}{USK@rQn\ldots{},I1v\ldots{},AQACAAE/gms/16/}
\item KSK: KSK@the-long-game
\end{itemize}

\emph{Nur <routing> wird ins Netz geschickt. <encryption> bleibt lokal.}
\end{frame}

\begin{frame}[label={sec:orgec00f79}]{Dateien aufteilen und hochladen}
\begin{columns}
\begin{column}{0.5\columnwidth}
\begin{center}
\includegraphics[width=1.0\textwidth]{freenet-split-file.png}
\end{center}

Schlüssel ist im Link (z.B. CHK).

Blöcke ohne Link nicht entschlüssel- oder erkennbar.
\end{column}

\begin{column}{0.5\columnwidth}
\begin{center}
\includegraphics[width=1.0\textwidth]{freenet-keyspace.png}
\end{center}

Blöcke zufällig überschreiben.
\end{column}
\end{columns}
\end{frame}


\begin{frame}[label={sec:orgf30173c}]{Blöcke finden und zusammenfügen}
\begin{columns}
\begin{column}{0.5\columnwidth}
\begin{center}
\includegraphics[width=1.0\textwidth]{freenet-join-file.png}
\end{center}

\emph{Verfügbar, solange 50\% der Blöcke auffindbar sind.}
\end{column}

\begin{column}{0.5\columnwidth}
\begin{center}
\includegraphics[width=1.0\textwidth]{friend-to-friend-foaf-finding-block.png}
\end{center}

\emph{Routing in Small-World Netzwerk über die Positionen der Freunde von Freunden (FOAF).}
\end{column}
\end{columns}
\end{frame}

\begin{frame}[label={sec:orgdf30e05}]{Lebenszeit}
\begin{center}
\includegraphics[width=0.6\textwidth]{./fetchpull-lifetime-small-success-count.png}
\end{center}

\emph{Jeder Zugriff startet die Uhr neu.}
\end{frame}

\begin{frame}[label={sec:org8ac33dc}]{Recht auf Vergessen?}
\begin{itemize}
\item Lebenszeit aus öffentlichem Interesse
\item Recht auf Vergessen in Technologie
\item Datenschutzfreundlich
\end{itemize}

\emph{Technischer Hintergrund: wichtigste Frage bei verteilten Speichernetzen: wie entscheiden wir, was wir löschen?}
\end{frame}

\begin{frame}[label={sec:org1a202a2},fragile]{Und Update-Infos? In konstanter Zeit: Date Hints}
 \begin{itemize}
\item Nutzer: \texttt{SSK@…/meine-seite-1/...} → \texttt{SSK@…/meine-seite-2/activelink.png}
\item Entwickler: \texttt{USK@…/meine/seite/1}
\begin{itemize}
\item \texttt{SSK@[key]/[sitename]-DATEHINT-[year]}
\end{itemize}
\end{itemize}

\begin{verbatim}
HINT
46
2013-7-5
\end{verbatim}

\emph{DATEHINT-[year], DATEHINT-[year]-WEEK-[week], DATEHINT-[year]-[month], DATEHINT-[year]-[month]-[day]}
\end{frame}


\subsection{Ordner}
\label{sec:orgec88c2f}
\begin{frame}[label={sec:orgdb1ea7d}]{Ordner in Freenet: Manifest-Daten}
\begin{center}
\includegraphics[width=.9\linewidth]{key-utils-zw-data.png}
\end{center}

\begin{itemize}
\item Ein Archiv (Tarball), transparenter Zugriff
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org9af7fbc}]{Ordner in Freenet: Als Manifest}
\begin{center}
\includegraphics[width=.9\linewidth]{key-utils-zw-data-manifest.png}
\end{center}

\href{http://127.0.0.1:8888/USK@LHeuG-SU5ZvYQXTu8Y9mhjCYyQxB-m-W\~ryElufr-2M,Ij9l0U1Wa\~FQu7GFBf\~ciwUbCwpTFv6mWZkS1YuoxQk,AQACAAE/arnebab-org/413/}{USK@LHe\ldots{},Ij9\ldots{},AQACAAE/arnebab-org/413/}
\end{frame}
\subsection{Schnittstellen}
\label{sec:org8325753}
\begin{frame}[label={sec:org178c96a}]{Schnittstellen}
\begin{itemize}
\item Browser
\item Verteilte Datenbank für Programme
\item Plugins
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org0dd2d3a}]{Der Browser}
\begin{itemize}
\item Zugriff üblicherweise auf \url{http://localhost:8888}
\item \href{https://github.com/freenet/browser}{freenetbrowser} (automatisch generiertes Firefox-Profil) für bessere Sicherheit
\item Optimierungen für Pre-Fetching und Media-Streaming
\end{itemize}

\href{http://localhost:8888/USK@rQnuHCVpf7BHcsZHBt911K3-iaELN1u1Vg0fzxDRq7k,I1vFYWONhGfECHr9XD-1lKxxstr64rF4dTykcMq9swY,AQACAAE/gms/16/}{http://localhost:8888/USK@rQn\ldots{},I1v\ldots{},AQACAAE/gms/16/}
\end{frame}

\begin{frame}[label={sec:orgec93299}]{Externe Programme}
\begin{itemize}
\item Server für Foren/NNTP (FMS) und IRC (FLIP)
\item GUI-Programme (jSite)
\end{itemize}
\end{frame}

\begin{frame}[label={sec:orga2ffd75},fragile]{Externe Programmier-Schnittstellen}
 \begin{itemize}
\item FCP: Freenet Client Protokoll
\begin{itemize}
\item HTTP-Ähnlich: \texttt{Key: value} Zeilenweise, Optional Data-Bytes am Ende
\item \url{https://github.com/freenet/wiki/wiki/FCPv2}
\end{itemize}
\item Bibliotheken
\begin{itemize}
\item Maintained: Java, Python
\item Unmaintained or experimental: ruby, go, C++
\item \url{https://github.com/freenet/wiki/wiki/Projects\#libraries}
\end{itemize}
\item Plugins
\begin{itemize}
\item \url{https://github.com/freenet/wiki/wiki/Plugin-API}
\item Beispiele: \url{https://github.com/freenet/wiki/wiki/Projects\#plugins}
\end{itemize}
\end{itemize}
\end{frame}


\begin{frame}[label={sec:org3096d92},fragile]{Schnittstelle: FCP}
 \begin{columns}
\begin{column}{0.5\columnwidth}
Async für Programme:

\begin{itemize}
\item Put/Putdir/Get
\item Subscribe to key
\item Plugins kontrollieren
\end{itemize}
\end{column}
\begin{column}{0.5\columnwidth}
\small

\begin{verbatim}
ClientHello
Name=My Client
ExpectedVersion=2.0
EndMessage
\end{verbatim}

\begin{verbatim}
NodeHello
...
EndMessage
\end{verbatim}

\begin{verbatim}
ClientPut
URI=CHK@
UploadFrom=disk
Filename=/tmp/debian-dvd1.iso
Identifier=sarge-disk-1
Global=true
EndMessage
\end{verbatim}
\end{column}
\end{columns}
\end{frame}

\begin{frame}[label={sec:org043f193},fragile]{Latenz in der Praxis}
 \begin{itemize}
\item Bis zu 2kiB, raw, realtime mode: <30s
\item Große Dateien, im Manifest: \textasciitilde{}5 min
\end{itemize}

\begin{columns}[t]
\begin{column}{0.5\columnwidth}
\begin{block}{\alert{Realtime}}
\begin{verbatim}
PriorityClass . 2 ;; high
MaxRetries . 0 ;; default: 10
RealTimeFlag . true
DontCompress . true
ExtraInsertsSingleBlock . 0
ExtraInsertsSplitfileHeaderBlock . 0
\end{verbatim}
\end{block}
\end{column}

\begin{column}{0.5\columnwidth}
\begin{block}{\alert{Bulk}}
\begin{verbatim}
PriorityClass . 3 ;; medium
RealTimeFlag . false
DontCompress . false
\end{verbatim}
\end{block}
\end{column}
\end{columns}
\end{frame}


\begin{frame}[label={sec:org053c936}]{Schnittstelle: Plugins}
\begin{itemize}
\item In die Web-Oberfläche integriert
\item Schwache Abstraktion
\item Zugriff auf das Innenleben (riskant)
\item Leichtester Einstieg: Bestehendes Plugin anpassen
\end{itemize}

Beispiele: \href{http://127.0.0.1:8888/USK@nwa8lHa271k2QvJ8aa0Ov7IHAV-DFOCFgmDt3X6BpCI,DuQSUZiI\~agF8c-6tjsFFGuZ8eICrzWCILB60nT8KKo,AQACAAE/sone/82/}{Sone} oder \href{http://127.0.0.1:8888/Sharesite}{Sharesite}
\end{frame}

\begin{frame}[label={sec:orgaadd4a2}]{Grundlagen der Kommunikation über Freenet}
\begin{itemize}
\item Einstieg: Seed-keys + Captcha-Queue: KSK-Prefix
\item Suche: Nutzerspezifische Seiten mit Links, Update-Infos
\item Verteilung: Gossip keys, Dateien einfach hochladen
\item Störungsresistenz: Web of Trust mit langsam steigender Sichtbarkeit
\end{itemize}

Einwurf: Konstruktive Spammer: \url{https://xkcd.com/810/}
\end{frame}

\subsection{Schutzmaßnahmen}
\label{sec:org77b8814}

\begin{frame}[label={sec:org8c41e9a}]{Schutzmaßnahmen}
\begin{itemize}
\item Datenschutz trotz Browser
\item Abstreitbarkeit
\item Spam-Abwehr
\end{itemize}
\end{frame}

\begin{frame}[label={sec:orge3107e4}]{Content Sanitizing: Vor dem Browser schützen}
Browser und Media-Player: Anderes Bedrohungs-Szenario

⇒ Inhalte filtern, um Zugriffe auf Clearnet-Resourcen zu vermeiden

Beispiel: Album-Art einer Radiosendung über URL nachladen.
\end{frame}

\begin{frame}[label={sec:org686b89e}]{Abstreitbarkeit: Das war jemand anders}
\begin{itemize}
\item Anfragen haben Hops to Live (HTL)
\item Mit jedem Schritt um 1 verringert
\item HTL 18 wird nur bei 50\% der Verbindungen verringert — Wahl bleibt
über die Dauer der Verbindung bestehen\\
⇒ Anfragen mit HTL 18 können immer von einem anderen Knoten kommen
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org2c080e8}]{Spam-Abwehr}
\emph{WoT (Web of Trust): Eine von zwei praktisch genutzten Möglichkeiten. Die andere ist FMS (Freenet Message System).}

\begin{itemize}
\item ID = USK
\item Trust -100 bis 100
\item Rank: Distanz → capacity

\item Score: Summe über alle Wertungen: trust * rank

\item Skaliert bei 22 Nachrichten pro Tag\footnote{\tiny \url{https://www.draketo.de/english/freenet/deterministic-load-decentralized-spam-filter}} (Dunbar-Zahl)
\end{itemize}
\end{frame}

\begin{frame}[label={sec:orgc5ab10d},fragile]{Capacity}
 \begin{center}
\includegraphics[width=.9\linewidth]{freenet-wot-rank.png}
\end{center}

\begin{itemize}
\item Rank 1 40 \%. rank 1: 100 trust, 40 Punkte als Score.
\item Rank 2 16 \%
\item Rank 3 6 \%
\item Rank 4 2 \%
\item Rank 5 und niedriger: 1 \%
\end{itemize}

\emph{Integer-Mathematik: \texttt{2 * 6 / 100 = 0}.}
\end{frame}


\begin{frame}[label={sec:orgcd234d9}]{Zusammenfassung}
\begin{columns}
\begin{column}{0.5\columnwidth}
\begin{itemize}
\item Freundeskreis / Opennet,
\item Ohne Server,
\item Schlüssel als Pseudonym,
\item Spamresistenz,
\end{itemize}
\end{column}

\begin{column}{0.5\columnwidth}
\begin{itemize}
\item Small-World
\item Schlüsseltypen (CHK: Inhalt, USK: Aktualisierbar, KSK: Passwort)
\item Dateien werden aufgeteilt, Redundanz
\item Lebenszeit nach Zugriffshäufigkeit
\item Ordner
\item Schnittstellen
\item Schutzmaßnahmen
\end{itemize}
\end{column}
\end{columns}
\end{frame}

\section{Werkzeuge}
\label{sec:orgdc78238}
\subsection{Werkzeuge}
\label{sec:orgbb9583c}
\begin{frame}[label={sec:org41e175b}]{Werkzeuge}
\emph{Sieht spannend aus, aber was kann ich mit Freenet praktisch machen?}
\end{frame}

\begin{frame}[label={sec:org13984f0}]{Der Browser}
\begin{itemize}
\item Browse
\item Hoch-/Herunterladen
\item Plugins
\item Freund-zu-Freund-Nachrichten
\item Lesezeichen mit Update-Info (5 min Latenz)
\item Indexe mit Listen von Seiten (pseudonym betriebene Crawler)
\end{itemize}
\end{frame}

\subsection{Konkret}
\label{sec:org706e19d}
\begin{frame}[label={sec:org1848818}]{Sharesite: Einfachstes pseudonymes Veröffentlichen}
\url{http://127.0.0.1:8888/Sharesite}
\end{frame}

\begin{frame}[label={sec:orgfbfb5be}]{FMS and Flip: pseudonyme Foren and IRC}
\begin{itemize}
\item FMS: \url{http://127.0.0.1:8888/USK@0npnMrqZNKRCRoGojZV93UNHCMN-6UU3rRSAmP6jNLE,\~BG-edFtdCC1cSH4O3BWdeIYa8Sw5DfyrSV-TKdO5ec,AQACAAE/fms/153/}

\item FLIP: \url{http://127.0.0.1:8888/USK@pGQPA-9PcFiE3A2tCuCjacK165UaX07AQYw98iDQrNA,8gwQ67ytBNR03hNj7JU\~ceeew22HVq6G50dcEeMcgks,AQACAAE/flip/17/}
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org6f467e3}]{Sone: pseudonymes Microblogging}
Beispiele: \href{http://127.0.0.1:8888/USK@nwa8lHa271k2QvJ8aa0Ov7IHAV-DFOCFgmDt3X6BpCI,DuQSUZiI\~agF8c-6tjsFFGuZ8eICrzWCILB60nT8KKo,AQACAAE/sone/82/}{USK@nwa\ldots{},DuQ\ldots{},AQACAAE/sone/82/}
\end{frame}

\begin{frame}[label={sec:org96e3939}]{Freemail: vertrauliche E-Mail}
\url{http://127.0.0.1:8888/USK@M0d8y6YoLpXOeQGxu0-IDg8sE5Yt\~Ky6t\~GPyyZe\~zo,KlqIjAj3\~dA1Zf57VDljkmp3vHUozndpxnH-P2RRugI,AQACAAE/freemail/8/}
\end{frame}

\subsection{Plugins}
\label{sec:org13f32d1}
\begin{frame}[label={sec:org33cf805}]{Shoeshop: Sneakernet mit Freenet}
\url{http://127.0.0.1:8888/USK@MYLAnId-ZEyXhDGGbYOa1gOtkZZrFNTXjFl1dibLj9E,Xpu27DoAKKc8b0718E-ZteFrGqCYROe7XBBJI57pB4M,AQACAAE/Shoeshop/3/}
\end{frame}

\begin{frame}[label={sec:org99c0cc3}]{jfniki: Wiki über Freenet}
\url{http://127.0.0.1:8888/USK@jZVIWXW-5nl4Bco\~7lWbVazRzFQv78X9RnJsWWKdWm4,zBn2IimGcyEQ7mh\~w\~tRABGAYH6F4Zwoqfh8Cv7tVhY,AQACAAE/jFniki.Index/12/Contributing.html}
\end{frame}

\begin{frame}[label={sec:org7f9fbe5}]{KeyUtils: Technische Details über Uploads}
\url{http://127.0.0.1:8888/KeyUtils/}
\end{frame}

\begin{frame}[label={sec:org53863e5}]{Keepalive: Ein paar Dateien verfügbar halten}
\url{http://127.0.0.1:8888/KeepAlive/}
\end{frame}

\begin{frame}[label={sec:org56fd02d}]{Freereader: RSS über Freenet verbreiten}
\url{http://127.0.0.1:8888/freereader/feeds}
\end{frame}

\subsection{Programme}
\label{sec:orga74d4e7}
\begin{frame}[label={sec:orgdfc03ca}]{pyFreenet: Kommandozeilenwerkzeuge}
\url{https://github.com/freenet/pyFreenet}
\end{frame}

\begin{frame}[label={sec:orge566d09}]{infocalypse: Versionsverwaltung über Freenet}
\url{https://hg.sr.ht/\~arnebab/infocalypse/browse/Readme.txt}
\end{frame}

\begin{frame}[label={sec:orge53e761}]{jSite: Webseiten hochladen mit GUI}
\url{http://127.0.0.1:8888/USK@1waTsw46L9-JEQ8yX1khjkfHcn--g0MlMsTlYHax9zQ,oYyxr5jyFnaTsVGDQWk9e3ddOWGKnqEASxAk08MHT2Y,AQACAAE/jSite/15/}
\end{frame}

\section{Neuerungen}
\label{sec:orgeb0ddfe}

\subsection{Neuerungen}
\label{sec:org9908f62}

\begin{frame}[label={sec:org3628f7d}]{Neuerungen}
\emph{Was sich in 15 Jahren seit dem Rewrite in 0.7 getan hat.}

\emph{One secret of success: relentless optimization.}
\end{frame}

\begin{frame}[label={sec:orga9ff646}]{Pitch-Black Attack}
2007 haben Christian Grothoff et al. eine Schwachstelle gefunden \href{http://grothoff.org/christian/pitchblack.pdf}{und belegt}.

\begin{center}
\includegraphics[width=.9\linewidth]{pitch-black-paper-screenshot.png}
\end{center}
\end{frame}

\begin{frame}[label={sec:org6b0159c}]{Pitch black gelöst}
\begin{alertblock}{The mitigation}
2021 haben wir sie endlich \alert{\href{https://nlnet.nl/project/Freenet-Routing/}{gefixt}}.

\begin{center}
\includegraphics[height=0.5\textheight]{freenet-logo-blue-gpl.png}
\end{center} 
\centering
→ \alert{\href{https://freenetproject.org/freenet-build-1490-released.html}{build 1490: “pitch black streaming”}} ←
\end{alertblock}
\end{frame}

\begin{frame}[label={sec:org647310f}]{WoT: Precisely updating and subscription-based}
\begin{center}
\includegraphics[width=.9\linewidth]{oadsfff-wot-thesis-title.png}
\end{center}

\href{https://github.com/freenet/plugin-WebOfTrust/blob/master/developer-documentation/core-developers-manual/OadSFfF-version1.2-non-print-edition.pdf}{Bachlor-thesis: Optimizing a distributed Spam Filter for Freenet (OadSFfF).pdf}
\end{frame}

\begin{frame}[label={sec:org637ee41}]{Bessere Geschwindigkeit}
\begin{itemize}
\item Von 10kiB/s bis 11MB/s (und mehr)
\item Unterstützt bis zu 15.000 Subscriptions: Binnen 5 Minuten Updates sehen
\item 30 Sekunden Round-Trip-Zeit für Chat
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org78b5181}]{Mehr HTML and CSS}
\begin{itemize}
\item Unterstützung für Teile von CSS3.
\item Nur, bei was die Sicherheit garantiert werden kann.
\end{itemize}
\end{frame}

\subsection{Multimedia}
\label{sec:orgdf3bfa4}
\begin{frame}[label={sec:org609277e}]{Audio streaming}
\href{http://127.0.0.1:8888/USK@\~22K5-BaMq8px171N6okVmdI2g9zjLBxs422HshMEgY,lwYlSm7ynpitof79fD4RtmzTx9fbPnid72vTPIdzmq0,AQACAAE/stream-radiocc-again/15/}{http://127.0.0.1:8888/USK@\textasciitilde{}22K5\ldots{},lwY\ldots{},AQACAAE/stream-radiocc-again/15/}

Mit Live-Streaming:

\url{https://github.com/freenet/re-stream-into-freenet}

Beispiel:

\href{http://127.0.0.1:8888/USK@j1VYK90HrOtoR0Sb8pYGJ7hVggzVuhi9ORN9HhIyS\~s,vsk446-6GJjV68Z4YUtgWaaoqHWMnKvAN\~J7xaPMPTE,AQACAAE/futo-ian-interview-2022/3/}{http://127.0.0.1:8888/USK@j1V\ldots{},vsk\ldots{},AQACAAE/futo-ian-interview-2022/3/}
\end{frame}

\begin{frame}[label={sec:org08df350}]{Video on demand}
\href{http://localhost:8888/USK@rQnuHCVpf7BHcsZHBt911K3-iaELN1u1Vg0fzxDRq7k,I1vFYWONhGfECHr9XD-1lKxxstr64rF4dTykcMq9swY,AQACAAE/gms/16/}{http://localhost:8888/USK@rQn\ldots{},I1v\ldots{},AQACAAE/gms/16/}
\end{frame}

\subsection{Mobil / Handy}
\label{sec:org9daec97}
\begin{frame}[label={sec:org24d0f48}]{mobile-node: Freenet auf Android}
\url{https://freenet-mobile.github.io/app/}
\end{frame}

\begin{frame}[label={sec:org52766fe}]{FreeChat: Chat auf Android}
\url{https://github.com/freenet/free-chat-2}
\end{frame}

\begin{frame}[label={sec:org0a3ac0a}]{icicles: Nachrichten von Freunden und Knoten verbinden}
\url{https://github.com/freenet/icicle}
\end{frame}

\subsection{Offene Fragen}
\label{sec:orge8a464f}
\begin{frame}[label={sec:org939f507}]{Offene Fragen}
\begin{itemize}
\item Besseres Routing? (dank Pitch Black mitigation wurden auch neue Strukturen möglich)
\item Freund-zu-Freund Verbindungen über tor und i2p? (braucht UDP!)
\item Steganographic Transport Plugins
\item Dezentrale Suche in Freenet (Spider/Library optimierungsbedürftig)
\end{itemize}
\end{frame}
\begin{frame}[label={sec:org285c5d5}]{Pläne}
\begin{quote}
No plan survives contact with reality, but a good plan provides
set-pieces for the path you might actually walk.
\end{quote}

\begin{itemize}
\item \href{https://github.com/freenet/wiki/wiki/High-Impact-tasks}{High-Impact Tasks}
\item \href{https://github.com/freenet/wiki/wiki/Roadmap}{High-Level Roadmap} — structured by major version
\item \href{https://freenet.mantishub.io/roadmap\_page.php}{Bugtracker-Roadmap} — very detailed but outdated
\end{itemize}
\end{frame}

\section{Zusammenfassung}
\label{sec:org05244a5}

\subsection{Zusammenfassung}
\label{sec:orgd3bfef9}

\begin{frame}[label={sec:orga6012e7}]{Zusammenfassung 1}
\begin{description}
\item[{Warum gibt es Freenet?}] Freie Kommunikation
\item[{Was ermöglicht Freenet?}] Vertraulich und Pseudonym,
ohne zentrale Server, Datenschutzfreundliche Datenbank für verteilte Programme.
\item[{Wie funktioniert Freenet?}] -
\begin{description}
\item[{Einstieg:}] Freund-zu-Freund (High Security) oder über Seednode (Opennet)
\item[{Routing:}] Small-World mit FOAF-Routing
\item[{Dateien:}] Aufteilen, Verschlüsseln, 100\% Redundanz, Verfügbar solange genutzt.
\end{description}
\end{description}
\end{frame}
\begin{frame}[label={sec:org4bc5644}]{Zusammenfassung 2}
\begin{description}
\item[{Was hat sich geändert?}] Pitch Black gelöst, Spam-Schutz über
WoT/Sone und FMS, schneller, IRC Chat, Multimedia-Streaming,
Android-Unterstützung, Sharesite für einfachste Webseiten, Stetige
Optimierung in praktischer Nutzung.
\end{description}
\end{frame}


\begin{frame}[label={sec:orgb016270}]{Nutzt Freenet!}
\begin{columns}
\begin{column}{0.62\columnwidth}
\centering

\Huge

\begin{center}
\includegraphics[width=.9\linewidth]{./freenet-logo-blue-gpl.png}
\end{center}

\alert{\href{https://freenetproject.org}{freenetproject.org}}

\vspace{0.4cm}

\scriptsize

\emph{Donate: \href{https://freenetproject.org/donate.html}{freenetproject.org/donate.html}}
\end{column}

\begin{column}{0.38\columnwidth}
\begin{itemize}
\item Sharesite
\item Sone
\item Verbindung im Freundeskreis
\end{itemize}
\end{column}
\end{columns}
\end{frame}

\appendix

\subsection{}
\label{sec:org4688b12}

\begin{frame}[label={sec:orgd08f053}]{Andere Projekte}
\begin{itemize}
\item Tor mit SecureDrop
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org3bf28d0}]{Quellen}
Bilder: Hase unter GPL, alle weiteren cc by.

\begin{itemize}
\item \url{https://www.flickr.com/photos/anonymous-munich/3282278914}
\item \url{https://www.flickr.com/photos/gruenejugendffm/6272541036}
\item \url{https://www.flickr.com/photos/eppofficial/13564824463}
\item \url{https://www.flickr.com/photos/maguide/6092244239}
\end{itemize}
\end{frame}

\begin{frame}[label={sec:org01074cc}]{Quellen 2}
\begin{itemize}
\item \url{https://www.flickr.com/photos/okubax/15814107199}
\item \url{https://www.flickr.com/photos/okubax/14248440483}
\item \url{https://www.flickr.com/photos/okubax/15812839470}
\item \url{https://www.flickr.com/photos/digitpedia/4709307610}
\end{itemize}
\end{frame}


\begin{frame}[label={sec:org0877d62}]{Quellen 3}
\begin{itemize}
\item \url{https://www.flickr.com/photos/focusc/4758319160}
\item \url{https://www.flickr.com/photos/amitd/4693814169}
\item \url{http://commons.wikimedia.org/wiki/File:International\_newspaper,\_Rome\_May\_2005.jpg\#metadata}
\item \url{http://commons.wikimedia.org/wiki/File:Edward\_Snowden\_2013-10-9\_\%281\%29\_\%28cropped\%29.jpg}
\end{itemize}
\end{frame}

\begin{frame}[label={sec:orgc735bea}]{Quellen 4}
Lizenzen:

\begin{itemize}
\item \url{https://creativecommons.org/licenses/by/2.0/deed.en}
\item \url{https://gnu.org/l/gpl}
\end{itemize}

(und neuere Versionen)
\end{frame}

\begin{frame}[allowframebreaks,label=]{References}
\bibliographystyle{apalike}
\bibliography{ref}
\end{frame}
\end{document}