update ceofhack to ceof
Signed-off-by: Nico Schottelius <nico@brief.schottelius.org>
This commit is contained in:
parent
b2c34a2210
commit
f41d6fa0ac
12 changed files with 12 additions and 1084 deletions
|
@ -1,10 +1,19 @@
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
ceofhack is the first implementation of ***EOF*** (Eris Onion Forwarding),
|
ceof is the implementation and documentation
|
||||||
|
of ***EOF*** (Eris Onion Forwarding),
|
||||||
the secure, peer-to-peer (p2p), decentralised anonymous chat network.
|
the secure, peer-to-peer (p2p), decentralised anonymous chat network.
|
||||||
|
|
||||||
* [[user documentationy|user]]
|
You can read the
|
||||||
* [[developer documentationy|developer]]
|
[bachelor thesis](http://git.schottelius.org/?p=ceof;a=blob;f=doc/thesis.pdf),
|
||||||
|
which describes the motivation and goals or you
|
||||||
|
can view [the poster that was used on the presentation](http://git.schottelius.org/?p=ceof;a=blob;f=doc/appendix/poster.pdf).
|
||||||
|
|
||||||
|
## Get ceof
|
||||||
|
|
||||||
|
You can get ceof via git:
|
||||||
|
|
||||||
|
git clone git://git.schottelius.org/ceof
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
Binary file not shown.
|
@ -1,20 +0,0 @@
|
||||||
## Requirements
|
|
||||||
|
|
||||||
ceofhack depends on a small number of other packages:
|
|
||||||
|
|
||||||
* [gpgme](http://www.gnupg.org/gpgme.html)
|
|
||||||
* make
|
|
||||||
* [latex](http://www.latex-project.org/) and [dia](http://live.gnome.org/Dia)
|
|
||||||
(for documentation)
|
|
||||||
|
|
||||||
## Building ceofhack
|
|
||||||
|
|
||||||
Simply run the following line:
|
|
||||||
|
|
||||||
cd ceofhack && make
|
|
||||||
|
|
||||||
Parallel building is also supported, like this:
|
|
||||||
|
|
||||||
cd ceofhack && make -j8
|
|
||||||
|
|
||||||
[[!tag unix]]
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,24 +0,0 @@
|
||||||
## Introduction
|
|
||||||
|
|
||||||
ceofhack and all other EOF subsystems need a common place to find themselves
|
|
||||||
and to function properly.
|
|
||||||
|
|
||||||
## Initial configuration: the easy way
|
|
||||||
|
|
||||||
Simply run the following line:
|
|
||||||
|
|
||||||
cd ceofhack && ./scripts/init_home.sh
|
|
||||||
|
|
||||||
This will
|
|
||||||
|
|
||||||
* create a the configuration directory **$HOME/.ceof**,
|
|
||||||
* create a new pgp key pair,
|
|
||||||
* add the tcp transport protool
|
|
||||||
* and enable the tcp transport protocol to listen to **0.0.0.0:4242**.
|
|
||||||
|
|
||||||
## Initial configuration: the expert way
|
|
||||||
|
|
||||||
Read and understand **./scripts/init_home.sh** and consult
|
|
||||||
the current EOF standard document.
|
|
||||||
|
|
||||||
[[!tag unix]]
|
|
|
@ -1,66 +0,0 @@
|
||||||
[[!toc levels=2]]
|
|
||||||
|
|
||||||
To get into EOF through ceofhack, you should make sure you understand
|
|
||||||
[[how to use|user]] ceofhack in general. Depeding on your skills and
|
|
||||||
interests, you may either be interested in
|
|
||||||
|
|
||||||
* hacking the core (aka ceofhack, rare developers probably)
|
|
||||||
* creating user interfaces (ui)
|
|
||||||
* creating transport protocols (tp)
|
|
||||||
|
|
||||||
## API documentation
|
|
||||||
|
|
||||||
In general, everything you need should be documented in the
|
|
||||||
EOF standard document. If it's not, it's probably a bug
|
|
||||||
(in that case, send a patch).
|
|
||||||
|
|
||||||
## UI developers
|
|
||||||
|
|
||||||
UIs can either live in their own projects or be a part of
|
|
||||||
ceofhack. The **first** way is recommended, so your development
|
|
||||||
does not depend on ceofhack.
|
|
||||||
|
|
||||||
## Transport protocol developers
|
|
||||||
|
|
||||||
TPs can either live in their own projects or be a part of
|
|
||||||
ceofhack. The **second** way is recommended, so all available
|
|
||||||
transport protocols are shared with the ceofhack installation.
|
|
||||||
|
|
||||||
### Creating a new transport protocol
|
|
||||||
|
|
||||||
You can use the following code as a start:
|
|
||||||
|
|
||||||
scheme=phpbb
|
|
||||||
implementation=shell
|
|
||||||
cd ceofhack/tp
|
|
||||||
mkdir -p ${scheme}/${implementation}
|
|
||||||
echo "echo listening implementation" > ${scheme}/${implementation}/listen
|
|
||||||
echo "echo send implementation" > ${scheme}/${implementation}/send
|
|
||||||
chmod 0755 ${scheme}/${implementation}/*
|
|
||||||
|
|
||||||
Now you've a dummy "working" transport protocol.
|
|
||||||
|
|
||||||
### Enabling a new transport protocol
|
|
||||||
|
|
||||||
You can use the following code as a start:
|
|
||||||
|
|
||||||
scheme=phpbb
|
|
||||||
implementation=shell
|
|
||||||
cd ceofhack/tp
|
|
||||||
|
|
||||||
# Enable protocol in general
|
|
||||||
mkdir -p "$HOME/.ceof/tp/available/${scheme}"
|
|
||||||
cp "${scheme}/${implementation}/listen" "$HOME/.ceof/tp/available/${scheme}"
|
|
||||||
cp "${scheme}/${implementation}/send" "$HOME/.ceof/tp/available/${scheme}"
|
|
||||||
|
|
||||||
# Enable listener for protocol
|
|
||||||
address="describe-particular-address"
|
|
||||||
mkdir -p "$HOME/.ceof/tp/listen/${scheme}-${address}"
|
|
||||||
echo "${scheme}${address}" > "$HOME/.ceof/tp/listen/${scheme}-${address}/url"
|
|
||||||
|
|
||||||
### Submitting a transport protocol for inclusion into the mainline
|
|
||||||
|
|
||||||
* Create a branch ${scheme}-${implementation} on your side
|
|
||||||
* Submit a pull request (via ML, IRC, github, whatever)
|
|
||||||
|
|
||||||
[[!tag unix]]
|
|
|
@ -1,11 +0,0 @@
|
||||||
[[!meta title="EOF - die erste Vorstellung"]]
|
|
||||||
[[!meta date="2007-09-05"]]
|
|
||||||
|
|
||||||
This speech was made in the Chaos Computer Club Zuerich (CCCZH)
|
|
||||||
in the rooms of the Dock18 at the 5th of September 2009.
|
|
||||||
It is the first public presentation about EOF (in German).
|
|
||||||
|
|
||||||
* [[View as PDF|eof-die-erste-vorstellung.pdf]]
|
|
||||||
* [[View LaTeX source|eof-die-erste-vorstellung.tex]]
|
|
||||||
|
|
||||||
[[!tag publication]]
|
|
Binary file not shown.
|
@ -1,844 +0,0 @@
|
||||||
% first presentation about cmtp
|
|
||||||
\documentclass{beamer}
|
|
||||||
\usepackage{german}
|
|
||||||
\usepackage{beamerthemesplit}
|
|
||||||
\setbeamercovered{dynamic}
|
|
||||||
\usetheme{Malmoe}
|
|
||||||
|
|
||||||
\title{EOF}
|
|
||||||
\subtitle{Die erste Vorstellung}
|
|
||||||
\author{Nico -telmich- Schottelius}
|
|
||||||
%\date{\today}
|
|
||||||
\date{5. September 2007}
|
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
|
|
||||||
\frame{\titlepage}
|
|
||||||
|
|
||||||
%\section[Outline]{}
|
|
||||||
\frame{\tableofcontents}
|
|
||||||
|
|
||||||
% Inhalt:
|
|
||||||
% - Vorstellung
|
|
||||||
% telmich
|
|
||||||
% !eof
|
|
||||||
% - Motivation
|
|
||||||
% * !eof befindet ist zur Zeit im IRCNet
|
|
||||||
% * Etwas unangenehnem
|
|
||||||
% * abhoerbar an vielen Stellen
|
|
||||||
% - Alternativen
|
|
||||||
% irc+ssl:
|
|
||||||
% alle links?
|
|
||||||
% - ssl-only kanaele
|
|
||||||
% - auf den servern abhoerbar
|
|
||||||
% silc
|
|
||||||
% jabber
|
|
||||||
% sympathische software
|
|
||||||
% tor
|
|
||||||
%
|
|
||||||
% EOF
|
|
||||||
% in mehreren projektphasen
|
|
||||||
% PGP
|
|
||||||
% momentaner stand
|
|
||||||
% Webseite: EOF-1, www.eof.name/projects/eof-1/
|
|
||||||
% Libraries, client, client zum client
|
|
||||||
%
|
|
||||||
%
|
|
||||||
|
|
||||||
\section{Einleitung}
|
|
||||||
\subsection{Vorstellung}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Erste Vorstellung}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Erste Pr\"asentation
|
|
||||||
\pause
|
|
||||||
\item Hier im CCCZH
|
|
||||||
\pause
|
|
||||||
\item Kreative K\"opfe
|
|
||||||
\pause
|
|
||||||
\item Kritik bekommen
|
|
||||||
\pause
|
|
||||||
\item Anregen zum Mitdenken und -machen
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{!eof}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Junge Hackergruppe
|
|
||||||
\pause
|
|
||||||
\item 2001 gegr\"undet
|
|
||||||
\pause
|
|
||||||
\item Fokus auf Freundlichkeit
|
|
||||||
\pause
|
|
||||||
\item Deutschland, Niederlande, Schweiz
|
|
||||||
\pause
|
|
||||||
\item IRCNet: !eof
|
|
||||||
\pause
|
|
||||||
\item https://www.eof.name/
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Nico Schottelius}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Entwickelt freie, quelloffene Software (FOSS)
|
|
||||||
\pause
|
|
||||||
\item Philosophie: Machen statt meckern
|
|
||||||
\pause
|
|
||||||
\item aka telmich
|
|
||||||
\pause
|
|
||||||
\item https://nico.schottelius.org/
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{EOF}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Alternatives Chatsystem
|
|
||||||
\pause
|
|
||||||
\item Projekt von !eof
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\subsection{Motivation}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Warum dieser Vortrag?}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Idee vorstellen
|
|
||||||
\pause
|
|
||||||
\item Kritik bekommen
|
|
||||||
\pause
|
|
||||||
\item Werben von
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Entwicklern
|
|
||||||
\pause
|
|
||||||
\item Testern
|
|
||||||
\pause
|
|
||||||
\item (noch) nicht Benutzern
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Warum das Rad neu erfinden?}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item IRC ist grunds\"atzlich unverschl\"usselt
|
|
||||||
\pause
|
|
||||||
\item Suchen eine generell nicht abh\"orbare Alternative
|
|
||||||
\pause
|
|
||||||
\item Existierende Alternativen erf\"ullen nicht alle Anforderungen
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Anforderungen}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Dezentralit\"at
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Ohne zentralen Server
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Nicht abh\"orbar
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item \textbf{Wer} mit \textbf{wem} \textbf{wann} \textbf{was} redet
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Verschl\"usselung und Signatur
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\subsection{\"Uber diesen Vortrag}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Versionen dieses Vortrages}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Nur Text (\LaTeX{} oder PDF)
|
|
||||||
\pause
|
|
||||||
\item Nur Ton (Aufnahme in Ogg)
|
|
||||||
\pause
|
|
||||||
\item Text und Ton (Theora-Video)
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Kopieren dieses Vortrages}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Ist (hiermit) explizit gestattet
|
|
||||||
\pause
|
|
||||||
\item Creative Commons Attribution-Share Alike 2.0 Germany License
|
|
||||||
\pause
|
|
||||||
\item http://creativecommons.org/licenses/by-sa/2.0/de/
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Quellen dieses Vortrages}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Unter folgenden Adressen zu finden:
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item https://nico.schottelius.org/projects/eof-1/
|
|
||||||
\pause
|
|
||||||
\item https://www.eof.name/projects/eof-1/
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\section{Alternativen}
|
|
||||||
\subsection{IRC+SSL}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{\"Ubersicht IRC+SSL}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Standard IRC mit SSL
|
|
||||||
\pause
|
|
||||||
\item Verschl\"usselung
|
|
||||||
\begin{itemize}
|
|
||||||
\item Client zum Server
|
|
||||||
\pause
|
|
||||||
\item Server zum Server
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item "`Nur SSL"'-R\"aume
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Vorteile}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Erprobtes Protokoll
|
|
||||||
\pause
|
|
||||||
\item Stabile Software vorhanden
|
|
||||||
\pause
|
|
||||||
\item Verschl\"usselung ist einfach hinzuf\"ugbar
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Nachteile}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Innerhalb der Server ungesichert
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Kompromitierung durch \"Ubernahme eines Servers m\"oglich
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Keine Ende-zu-Ende-Verschl\"usselung
|
|
||||||
\pause
|
|
||||||
\item Teile der Verbindung k\"onnen unverschl\"usselt sein
|
|
||||||
\pause
|
|
||||||
\item Statistische Analyse m\"oglich
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Wer sendet wann, wer empf\"angt wann?
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\subsection{SILC}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{\"Ubersicht SILC}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item \textbf{S}ecure \textbf{I}nternet \textbf{L}ive \textbf{C}hat
|
|
||||||
\pause
|
|
||||||
\item Geplanter Ersatz f\"ur IRC
|
|
||||||
\pause
|
|
||||||
\item Verschl\"usselung
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Server zum Server
|
|
||||||
\pause
|
|
||||||
\item Client zum Server
|
|
||||||
\pause
|
|
||||||
\item Client zum Client
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item http://www.silcnet.org/
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Vorteile}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Verschl\"usselung von Anfang eingeplant
|
|
||||||
\pause
|
|
||||||
\item Integration in einen bekannten Chat-Client (irssi)
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Nachteile}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Instabile Software
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Client st\"urzt ab
|
|
||||||
\pause
|
|
||||||
\item Server verliert Kanal-Parameter (z.B. +r)
|
|
||||||
\pause
|
|
||||||
\item Server verliert Kan\"ale
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Eigenes (unerforschtes) Protokoll
|
|
||||||
\pause
|
|
||||||
\item Statistische Analyse m\"oglich
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\subsection{Jabber}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{\"Ubersicht Jabber}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Instant messaging (IM) Protokoll
|
|
||||||
\pause
|
|
||||||
\item Transport via XML
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Vorteile}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Viele Clients verf\"ugbar
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Nachteile}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Kan\"ale sind eine Erweiterung
|
|
||||||
\pause
|
|
||||||
\item Verschl\"usselung optional
|
|
||||||
\pause
|
|
||||||
\item Statistische Analyse m\"oglich
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\subsection{Tor}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{\"Ubersicht Tor}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Anonymisierungsdienst
|
|
||||||
\pause
|
|
||||||
\item Kein Chatprotokoll
|
|
||||||
\pause
|
|
||||||
\item Zwiebelprinzip
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Vorteile}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Stabile Software vorhanden
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Nachteile}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Client sendet nur wenn er wirklich sendet
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Statistische Analyse m\"oglich
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Empf\"anger sendet Paket nicht weiter
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Endpunkte sind erkennbar
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
\section{EOF}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{EOF}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Projektaufbau
|
|
||||||
\pause
|
|
||||||
\item Grundideen
|
|
||||||
\pause
|
|
||||||
\item Beispiele
|
|
||||||
\pause
|
|
||||||
\item Stand
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\subsection{Projektaufbau}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Evolution}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Kleine Teile programmieren
|
|
||||||
\pause
|
|
||||||
\item Vorschl\"age f\"ur Protokolle entwerfen
|
|
||||||
\pause
|
|
||||||
\item Ausprobieren und aus Fehlern lernen
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{EOF-1}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Erste Phase
|
|
||||||
\pause
|
|
||||||
\item Ideen dokumentieren
|
|
||||||
\pause
|
|
||||||
\item Ideen diskutieren
|
|
||||||
\pause
|
|
||||||
\item Viele Fehler machen
|
|
||||||
\pause
|
|
||||||
\item Juli 2007 bis Dezember 2007
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{EOF-1 Vorgehen}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Spezifikationsentw\"urfe schreiben f\"ur
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Protokolle
|
|
||||||
\pause
|
|
||||||
\item Software
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Freie Wahl der Programmiersprache
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Kommunikation \"uber klar definierte Schnittstellen
|
|
||||||
\end{itemize}
|
|
||||||
\pause
|
|
||||||
\item Modularer Aufbau
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{EOF-2}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Fehler aus EOF-1 korrigieren
|
|
||||||
\pause
|
|
||||||
\item Dokumentation erstellen
|
|
||||||
\pause
|
|
||||||
\item Plan f\"ur finale Version erstellen
|
|
||||||
\pause
|
|
||||||
\item Januar 2008 bis Juni 2008
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{EOF-3}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Spezifikation von EOF-2 implementieren
|
|
||||||
\pause
|
|
||||||
\item Unterst\"utzung mehrerer Betriebsysteme
|
|
||||||
\pause
|
|
||||||
\item Produktiv nutzbar
|
|
||||||
\pause
|
|
||||||
\item Juli 2008 bis Dezember 2008
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\subsection{Grundideen}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Modularit\"at}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Viele kleine Teile
|
|
||||||
\pause
|
|
||||||
\item Alles ist austauschbar
|
|
||||||
\pause
|
|
||||||
\item Klar definierte Schnittstellen
|
|
||||||
\pause
|
|
||||||
\item F\"ur anderes wiederverwendbar
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Das Zwiebelprinzip}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Mehrfach verschl\"usselt
|
|
||||||
\pause
|
|
||||||
\item Nie direkt an den Empf\"anger senden
|
|
||||||
\pause
|
|
||||||
\item Auch der Empf\"anger sendet es weiter!
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Indirekte Kommunikation}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item \"Uber mehrere Stationen
|
|
||||||
\pause
|
|
||||||
\item Jede Station ent- und verschl\"usselt
|
|
||||||
\pause
|
|
||||||
\item Keine Station sendet direkt an den End-Empf\"anger
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Alles verschl\"usselt}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Kein unverschl\"usseltes Paket
|
|
||||||
\pause
|
|
||||||
\item Initialer Schl\"usseltausch \"uber sichere Kan\"ale
|
|
||||||
\pause
|
|
||||||
\item Schl\"usseltausch sp\"ater \"uber etablierten Kanal
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Nachrichten signiert}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Sicherstellen, dass ich mit dem richtigen kommuniziere
|
|
||||||
\pause
|
|
||||||
\item Signatur ist nur sichbar f\"ur den Empf\"anger
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Abstraktion vom Transportprotokoll}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item \"Ubertragung ist \textbf{nicht} Bestandteil von EOF
|
|
||||||
\pause
|
|
||||||
\item Das Paketformat wird unabh\"angig vom Transportprotkoll definiert
|
|
||||||
\pause
|
|
||||||
\item Beliebige Protokolle m\"oglich
|
|
||||||
\pause
|
|
||||||
\item Einfaches Tunneln von Firewalls
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item z.B. direkte "`HTTP-Verbindung"' oder via Webforen
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Rauschen}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Jeder Teilnehmer sendet "`immer"' (fixer Intervall)
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Fest definierter Sendeintervall
|
|
||||||
\pause
|
|
||||||
\item Wenn nichts zu senden ist werden Zufallsdaten gesendet
|
|
||||||
\pause
|
|
||||||
\item Zufallsdaten werden genauso wie richtige Pakete behandelt
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Von ausen nicht zu erkennen, wann er wirklich sendet
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
% beispiele
|
|
||||||
% - chatten mit wem direkt
|
|
||||||
% - key exchange: nur ueber bekannte peers
|
|
||||||
% - transport protokolle
|
|
||||||
% - Vollstaendige Verschluesselung
|
|
||||||
\subsection{Beispiele}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Beispiele}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item F\"ur
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Ausgew\"ahlte Teile von EOF
|
|
||||||
\pause
|
|
||||||
\item \"Ubliche Handlungen beim Chatten
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Um abstrakte Informationen konkretisieren
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Wie man sich findet}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item \"Uber Marktschreier
|
|
||||||
\pause
|
|
||||||
\item Marktschreier verwalten Metaninformationen
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Liste von bekannten Kan\"alen
|
|
||||||
\pause
|
|
||||||
\item Liste von bekannten Partner
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Jeder Client kann Marktschreier sein
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{\"Uber die Marktschreier}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Besitzen und Verteilen \textbf{nur} \"offentliche Informationen
|
|
||||||
\pause
|
|
||||||
\item Verwalten Liste von \"offentlichen Kan\"alen
|
|
||||||
\pause
|
|
||||||
\item Vermitteln Partner zum Indirekten Senden
|
|
||||||
\pause
|
|
||||||
\item Sind ganz normale EOF-Clients
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Erlauben zus\"atzlich Abfragen und Speichern von Metainformationen
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Vollstaendige Verschl\"usselung}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item \"Offentlicher Schl\"ussel wird vorher per
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item PGP verschl\"usselter E-Mail
|
|
||||||
\pause
|
|
||||||
\item Versiegelten Brief
|
|
||||||
\pause
|
|
||||||
\item Telefon
|
|
||||||
\end{itemize}
|
|
||||||
\item ausgetauscht
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Beitreten eines Kanals}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Verbinden zum Marktschreier
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item "`Was f\"ur Kan\"ale kennst Du?"'
|
|
||||||
\pause
|
|
||||||
\item Liste: "`blackhats"' ... "`antim\$"' ... "`EOF-1"' ...
|
|
||||||
\pause
|
|
||||||
\item "`Teile bitte den Leuten von Kanal EOF-1 mit, dass ich beitreten m\"ochte."'
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Marktschreier verbindet sich zu einem Partner, der die anderen kennt
|
|
||||||
\pause
|
|
||||||
\item Der wiederrum schickt Pakete an alle anderen (indirekt) weiter
|
|
||||||
\pause
|
|
||||||
\item Die Kanalinsassen melden sich dann bei mir
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Woher wissen die, wie sie mich erreichen?}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Zum Anfang \"ubermittelt man dem Marktschreier, wo man erreichbar ist
|
|
||||||
\pause
|
|
||||||
\item Diese Information leitet er weiter
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Transport-Protokolle}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Etwas, mit dem man senden und/oder empfangen kann
|
|
||||||
\pause
|
|
||||||
\item Beliebige Protokolle
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Empfangen via SMTP HELO
|
|
||||||
\pause
|
|
||||||
\item Senden via Webdav
|
|
||||||
\pause
|
|
||||||
\item Empfangen via ICQ/Jabber/Skype/...
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Indirekte Kommunikation}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Wenn ich mit Andre reden will, verschl\"ussele ich die Nachricht f\"ur ihn
|
|
||||||
\pause
|
|
||||||
\item Und f\"uge eine Liste von Empf\"angern zur Nachricht hinzu
|
|
||||||
\pause
|
|
||||||
\item Jeder der Empf\"anger kann (nur) die n\"achste Empfangsadresse sehen
|
|
||||||
\pause
|
|
||||||
\item Andre
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item entschl\"usselt die Nachricht,
|
|
||||||
\pause
|
|
||||||
\item schickt sie weiter, damit niemand weiss, das sie f\"ur ihn war
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\subsection{Stand}
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Stand}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Was wurde bereits erledigt
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Spezifikationen
|
|
||||||
\pause
|
|
||||||
\item Programme
|
|
||||||
\pause
|
|
||||||
\item Dokumentation
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Was ist zu tun?
|
|
||||||
\begin{itemize}
|
|
||||||
\pause
|
|
||||||
\item Meilensteine
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Spezifikationen}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Einige Entw\"urfe auf https://www.eof.name/projects/eof-1/eof-1/ zu finden
|
|
||||||
\pause
|
|
||||||
\item W\"ochentlich neue
|
|
||||||
\pause
|
|
||||||
\item Teilweise schon \"uberarbeitet
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Implementation von EOF-1}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Hauptprogramm ceof zu 20\% fertig
|
|
||||||
\pause
|
|
||||||
\item Erste Erfahrungen mit GPGME
|
|
||||||
\pause
|
|
||||||
\item Bibliotheken zu 80\% fertig
|
|
||||||
\pause
|
|
||||||
\begin{itemize}
|
|
||||||
\item Quelltexts\"auberung steht noch an
|
|
||||||
\pause
|
|
||||||
\end{itemize}
|
|
||||||
\item Erste GUI fertiggestellt
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Von Dir}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item Verwirrt?
|
|
||||||
\pause
|
|
||||||
\item Ist etwas unklar?
|
|
||||||
\pause
|
|
||||||
\item Interessiert?
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
\frame
|
|
||||||
{
|
|
||||||
\frametitle{Diese Vorstellung}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item ...endet hier
|
|
||||||
\pause
|
|
||||||
\item Vielen Dank f\"ur die Aufmerksamkeit
|
|
||||||
\pause
|
|
||||||
\item Projektseite: https://www.eof.name/eof-1/
|
|
||||||
\pause
|
|
||||||
\item Kontakt via "`telmich (bei) u.eof.name"'
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
\end{document}
|
|
|
@ -1,35 +0,0 @@
|
||||||
The current release is [[ceofhack-0.6.tar.xz]],
|
|
||||||
the current documentation [[EOF-0.6.pdf]].
|
|
||||||
|
|
||||||
## Development / unreleased code
|
|
||||||
|
|
||||||
The latest development code can be found in git.
|
|
||||||
You can view latest changes in
|
|
||||||
[gitweb](http://git.schottelius.org/?p=EOF/ceofhack;a=summary)
|
|
||||||
or clone the latest sources using
|
|
||||||
|
|
||||||
git clone git://git.schottelius.org/EOF/ceofhack
|
|
||||||
|
|
||||||
Git mirrors can be found at
|
|
||||||
|
|
||||||
* [github](http://github.com/telmich/ceofhack/tree/master)
|
|
||||||
* [gitorious](http://gitorious.org/ceofhack)
|
|
||||||
|
|
||||||
The ***master*** branch should always contain latest "stable" code,
|
|
||||||
which means it should at least compile.
|
|
||||||
|
|
||||||
Other branches may be available to focus on specific features, which
|
|
||||||
will be merged into the master branch after completion.
|
|
||||||
|
|
||||||
To submit changes, simply follow the instructions
|
|
||||||
on [how to setup a public git repo](http://book.git-scm.com/4_setting_up_a_public_repository.html).
|
|
||||||
|
|
||||||
There are also some
|
|
||||||
[CIA bot statistics](http://cia.vc/stats/project/EOF/ceofhack) available.
|
|
||||||
|
|
||||||
## All releases
|
|
||||||
|
|
||||||
* [[ceofhack-0.6.tar.xz]] - [[EOF-0.6.pdf]] - Usable UI interface
|
|
||||||
* [[ceofhack-0.5.tar.lzma]] - the first usable version
|
|
||||||
|
|
||||||
[[!tag unix]]
|
|
|
@ -1,81 +0,0 @@
|
||||||
[[!toc levels=2]]
|
|
||||||
|
|
||||||
## How to get ceofhack running?
|
|
||||||
|
|
||||||
There are three simple steps to get ceofhack running:
|
|
||||||
|
|
||||||
* [[Get ceofhack|get]]
|
|
||||||
* [[Build ceofhack|build]]
|
|
||||||
* [[Configure ceofhack|configure]]
|
|
||||||
|
|
||||||
## How to use ceofhack?
|
|
||||||
|
|
||||||
ceofhack is only the main part of an EOF implementation.
|
|
||||||
ceofhack itself is **not** a user interface (**ui**).
|
|
||||||
There is, however, a sample command line user interface
|
|
||||||
included, called **ui_cmd**. Thus, to make real use of
|
|
||||||
ceofhack, you need to
|
|
||||||
|
|
||||||
* start ceofhack
|
|
||||||
* and start a user interface
|
|
||||||
|
|
||||||
The following sections explain the ui_cmd user interface,
|
|
||||||
but the principles are the same for other user interfaces.
|
|
||||||
All the following examples assume that ceofhack is already
|
|
||||||
running.
|
|
||||||
|
|
||||||
## How to chat with ceofhack?
|
|
||||||
|
|
||||||
As EOF is a p2p chat network, there's no central server. Thus, you need
|
|
||||||
to specify where your chat partner ("peer" in EOF speak) can be found.
|
|
||||||
In ui_cmd you do that with **ui_cmd_peer_add**:
|
|
||||||
|
|
||||||
./ui_cmd_peer_add telmich tcp:127.0.0.1:4242 A310FB220BA776083559C8276A8817C51B70A5DF
|
|
||||||
|
|
||||||
Where
|
|
||||||
|
|
||||||
* **telmich** is the nickname I gave that peer
|
|
||||||
* **tcp:127.0.0.1:4242** is the initial address of that peer
|
|
||||||
* **A310FB220BA776083559C8276A8817C51B70A5DF** is the pgp fingerprint
|
|
||||||
|
|
||||||
### Getting the fingerprints
|
|
||||||
|
|
||||||
You can retrieve all fingerprints known to EOF in a copy & past compatible
|
|
||||||
format, if you run this command:
|
|
||||||
|
|
||||||
gpg --homedir $HOME/.ceof/gpg --fingerprint | sed 's/ //g'
|
|
||||||
|
|
||||||
### Getting keys
|
|
||||||
|
|
||||||
As the current protocol does not define a key exchange, you need
|
|
||||||
to manually import pgp keys of other peers. You can do that by dowloading
|
|
||||||
the public key of the peer to **peer.key** and then running
|
|
||||||
|
|
||||||
gpg --homedir $HOME/.ceof/gpg --import peer.key
|
|
||||||
|
|
||||||
### Exporting your key
|
|
||||||
|
|
||||||
To allow others to chat with you, you need to publish your public
|
|
||||||
key somewhere. You can retrieve it the following way:
|
|
||||||
|
|
||||||
gpg --homedir $HOME/.ceof/gpg --export -a <yourkeyid> > mykey.key
|
|
||||||
|
|
||||||
### Sending a message
|
|
||||||
|
|
||||||
After you successfully added the new peer, you can drop her a message
|
|
||||||
by issuing
|
|
||||||
|
|
||||||
./ui_cmd_peer_send telmich "What's up?"
|
|
||||||
|
|
||||||
### Displaying messages
|
|
||||||
|
|
||||||
ceofhack will always receive messages, independently of whether
|
|
||||||
a user interface is connected or not. The user interface must
|
|
||||||
take care of displaying them. The included ui support a generic
|
|
||||||
listen command, which will display all incoming ui commands:
|
|
||||||
|
|
||||||
./ui_cmd_listen
|
|
||||||
|
|
||||||
And in addition, it will also show the messages received.
|
|
||||||
|
|
||||||
[[!tag unix]]
|
|
Loading…
Reference in a new issue