Index: /talk/tags/20090612-fpw2009/Makefile
===================================================================
--- /talk/tags/20090612-fpw2009/Makefile	(revision 239)
+++ /talk/tags/20090612-fpw2009/Makefile	(revision 239)
@@ -0,0 +1,67 @@
+# $Id: Makefile 219 2008-11-25 19:11:01Z nanardon $
+
+.SUFFIXES: .dvi .pdf .eps .fig .png .jpg
+
+# epoll
+
+epoll_TEX = \
+    epoll.tex
+
+epoll_INCLUDES = \
+
+epoll_EXAMPLES = \
+
+epoll_IMAGESJPG= \
+
+epoll_IMAGESPNG= \
+    ballots.png  results.png \
+	vote.png  welcome.png
+
+epoll_FIGURES= \
+
+epoll_IMAGES= $(epoll_IMAGESJPG) $(epoll_IMAGESPNG)
+
+epoll_DEPS = Makefile \
+	$(epoll_INCLUDES) \
+	$(epoll_EXAMPLES) \
+	$(epoll_FIGURES) \
+	$(epoll_IMAGES) \
+
+epoll_DVI = $(epoll_TEX:.tex=.dvi)
+epoll_PDF = $(epoll_TEX:.tex=.pdf)
+epoll_EPS = $(epoll_FIGEPS) $(epoll_PNGEPS) $(epoll_JPGEPS)
+epoll_FIGEPS = $(epoll_FIGURES:.fig=.eps) 
+epoll_PNGEPS = $(epoll_IMAGESPNG:.png=.eps)
+epoll_JPGEPS = $(epoll_IMAGESJPG:.jpg=.eps)
+
+# Everything
+ALL_PDF = $(epoll_PDF)
+ALL_DVI = $(epoll_DVI)
+
+all: pdf
+
+pdf: $(ALL_PDF)
+
+dvi: $(ALL_DVI)
+
+epoll.pdf: $(epoll_TEX) $(epoll_DEPS)
+	pdflatex -halt-on-error $< && pdflatex -halt-on-error $< 
+
+epoll.dvi: $(epoll_TEX) $(epoll_DEPS)
+	latex -halt-on-error $< && latex -halt-on-error $< 
+
+%.eps: %.fig
+	fig2dev -L eps  $< $@
+
+.png.eps:
+	convert $< $@
+
+.jpg.eps:
+	convert $< $@
+
+clean:
+	rm -f $(FIGEPS)
+	rm -f $(ALL_DVI)
+	rm -f $(ALL_PDF)
+
+.PHONY: pdf dvi clean all
Index: /talk/tags/20090612-fpw2009/epoll.tex
===================================================================
--- /talk/tags/20090612-fpw2009/epoll.tex	(revision 239)
+++ /talk/tags/20090612-fpw2009/epoll.tex	(revision 239)
@@ -0,0 +1,594 @@
+% $Id$
+\documentclass[notes]{beamer}
+\usepackage[frenchb]{babel}
+\usepackage[T1]{fontenc}
+\usepackage{moreverb}
+\usepackage{graphicx}
+
+\mode<presentation>
+{
+  \definecolor{beamerstructure}{RGB}{143,79,112}
+  \definecolor{sidebackground}{RGB}{230,242,250}
+  \color{beamerstructure}
+  \usetheme[secheader]{Madrid}
+  \usepackage{times}
+  \userightsidebarcolortemplate{\color{sidebackground}}
+  \beamertemplateballitem
+}
+
+\AtBeginSection[]
+{
+\begin{frame}<beamer>
+    \frametitle{Plan}
+    \tableofcontents[currentsection,hideothersubsections]
+\end{frame}
+}
+
+\title{Epoll - Vote en ligne}
+\subtitle{FPW - 2009}
+\author{Olivier Thauvin}
+\date{\today}
+
+\begin{document}
+
+\frame{\titlepage}
+
+\begin{frame}
+\tableofcontents[hideallsubsections]
+\end{frame}
+
+\section{Vote électronique}
+
+\begin{frame}
+\frametitle{Généralités}
+
+\vfill
+\begin{block}{http://fr.wikipedia.org/wiki/Vote\_électronique}
+\textit{Le vote électronique est un système de vote automatisé, notamment des scrutins,
+à l'aide de systèmes informatiques.}
+\end{block}
+\pause
+\vfill
+
+\begin{alertblock}{Est-ce bien ?}
+\begin{itemize}
+\small{
+\item Impossibilité de contrôle par l'électeur (voir la commission électorale)
+\pause
+    \begin{itemize}
+    \item techniquement compliqué
+    \pause
+    \item logiciel souvent opaque
+    \pause
+    \item contrôle visuel impossible
+    \end{itemize}
+}
+\pause
+\item le syndrome "L'ordinateur ne se trompe jamais"
+\end{itemize}
+\end{alertblock}
+\pause
+\vfill
+
+\begin{block}{Références}
+\begin{itemize}
+\item \href{http://www.ordinateurs-de-vote.org/}{http://www.ordinateurs-de-vote.org/}
+\item \href{http://www.cnil.fr/}{http://www.cnil.fr/}
+\end{itemize}
+\end{block}
+\vfill
+\end{frame}
+
+\section{Epoll ?}
+
+\begin{frame}
+\frametitle{Contexte}
+\begin{block}{LATMOS}
+\begin{itemize}
+\item Laboratoire CNRS
+\pause
+\item Laboratoire Atmosphères, Milieux, Observation Spatiales
+\pause
+\item Environ 300 personnes
+\pause
+\item 4 sites (Verrières le Buisson, Vélizy, Paris et St Maur)
+\end{itemize}
+\end{block}
+\vfill
+\pause
+\begin{block}{CL}
+\begin{itemize}
+\item Conseil de laboratoire
+\item 3 membres de droits
+\item 10 membres élus parmis les personnels
+\item des personnels invités
+\end{itemize}
+\end{block}
+\end{frame}
+
+\begin{frame}
+\frametitle{Pourquoi ?}
+\vfill
+\begin{block}{Le LATMOS}
+Demande de vote électronique de la direction
+\end{block}
+\pause
+\vfill
+\begin{block}{Logiciel libre}
+Rien de bien satisfaisant
+\end{block}
+\pause
+\vfill
+\begin{block}{solutions payantes}
+Entre 1500 et 5000 euros
+\end{block}
+\pause
+\vfill
+\begin{block}{Sujet intéressant}
+Surtout quand il me donne des arguments contre
+\end{block}
+\vfill
+\end{frame}
+
+\begin{frame}
+\frametitle{Résumé}
+\vfill
+\begin{block}{Application web}
+\begin{itemize}
+\pause
+\item accessible avec un simple navigateur
+\pause
+\item envoi des identifiants par mail
+\pause
+\item pas d'intervention de l'administrateur
+\end{itemize}
+\end{block}
+\pause
+\vfill
+\begin{block}{Les fondations}
+\begin{itemize}
+\item Perl (\href{http://www.perl.org/}{http://www.perl.org/})
+\item Catalyst (\href{http://www.catalystframework.org/}{http://www.catalystframework.org/})
+\pause
+\end{itemize}
+\begin{itemize}
+\item PostgreSQL (\href{http://www.postgresql.org}{http://www.postgresql.org})
+\end{itemize}
+\end{block}
+\vfill
+\end{frame}
+
+\section{Epoll 1.0 (aujourd'hui)}
+
+\subsection{Utilisation}
+
+\begin{frame}
+\frametitle{Création du vote}
+\begin{block}{La commission électorale}
+\begin{enumerate}
+\item demande de création
+\pause
+\item confirmation de la demande (par mail)
+\pause
+\item configuration du vote (dont date début/fin)
+\pause
+\item inscription des électeurs
+\pause
+\item envois des identifiants au électeurs
+\end{enumerate}
+\end{block}
+\end{frame}
+
+\begin{frame}
+\frametitle{Le vote}
+\begin{block}{Les électeurs}
+\begin{enumerate}
+\item réception du mail avec url, login et mot de passe
+\pause
+\item authentification sur le site
+\pause
+\item choix
+\pause
+\item confirmation des choix
+\pause
+\item affichage du numéro du bulletin
+\pause
+\item réception d'un accusé de réception par mail
+\end{enumerate}
+\end{block}
+\end{frame}
+
+\begin{frame}
+\frametitle{Le dépouillement}
+\vfill
+\begin{block}{La commission électorale}
+\begin{enumerate}
+\item consolidation des choix libres si besoin
+\pause
+\item marquage des bulletins invalides
+\end{enumerate}
+\end{block}
+\pause
+\vfill
+\begin{block}{Dès la fin du vote}
+\begin{itemize}
+\item Les résultats (provisoires) sont disponibles
+\item La liste de bulletins est disponible
+\end{itemize}
+\end{block}
+\vfill
+\end{frame}
+
+\subsection{Respect des règles}
+
+\begin{frame}[fragile]
+\frametitle{Anonymat}
+\vfill
+\begin{block}{stockage}
+Pas de relation entre l'électeur et le bulletin
+\end{block}
+\pause
+\vfill
+
+\begin{exampleblock}{Émargement}
+\begin{tabular}{|c|c|c|}
+\hline
+Mail&IP&heure de vote\\
+\hline
+\hline
+thauvin@latmos.ipsl.fr&134.157.16.151&\verb+2009-03-19 15:31:56+\\
+\hline
+\end{tabular}
+\end{exampleblock}
+\pause
+\vfill
+
+\begin{exampleblock}{Le bulletin}
+\begin{tabular}{|c|c|}
+\hline
+Id&Contenu\\
+\hline
+\hline
+f4f667c78a2178095c3bae4d&oui\\
+\hline
+\end{tabular}
+\end{exampleblock}
+\vfill
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Les mots de passe}
+\vfill
+\begin{block}{Méthode utilisée}
+\begin{itemize}
+\only<1->{\item chiffré de manière irréversible}
+\only<2-5>{\item \textit{crypt} UNIX MD5}
+\only<3-5>{\item mot de passe aléatoire (électeurs)}
+\only<4-5>{\item \textit{salt} aléatoire}
+\only<6->{\item ne peut être retrouvé}
+\only<7->{\item méthode fiable}
+
+\end{itemize}
+\end{block}
+\vfill
+\onslide<5->
+\begin{exampleblock}{Stockage des mots de passe}
+En clair:
+
+\verb+password+
+
+Version chiffrée:
+
+\verb+$1$aqsedfrt$sxdgVrlCwHx6VdBpRAx6m1+
+\end{exampleblock}
+\end{frame}
+
+\begin{frame}
+\frametitle{Éviter les tricheries}
+\vfill
+\begin{block}{Côté base de données}
+\begin{itemize}
+\pause
+\item le vote est transactionnel (tout ou rien)
+\pause
+\item contraintes référentielles
+\end{itemize}
+\end{block}
+\pause
+\vfill
+\begin{block}{Contrôle par l'utilisateur}
+\begin{itemize}
+\item nombre de votants et nombre de bulletins disponibles
+\pause
+\item liste d'émargement disponible
+\pause
+\item liste des bulletins disponible dès la fin du vote
+\end{itemize}
+\end{block}
+\vfill
+\end{frame}
+
+\begin{frame}
+\frametitle{Les problèmes}
+\vfill
+\pause
+\begin{alertblock}{Le Mail}
+\begin{itemize}
+\item n'est pas chiffré
+\pause
+\item est interceptable
+\end{itemize}
+\end{alertblock}
+\pause
+\vfill
+\begin{alertblock}{La base de données}
+\begin{itemize}
+\pause
+\item lecture: accès aux résultats avant la fin du vote
+\pause
+\item écriture: modification des résultats (mais cela devrait se voir)
+\end{itemize}
+\end{alertblock}
+\vfill
+\pause
+\begin{alertblock}{L'application elle même}
+S'assurer de l'intégrité du code
+\end{alertblock}
+\vfill
+\end{frame}
+
+\begin{frame}
+\frametitle{Bilan}
+\vfill
+\begin{block}{Est-ce parfait ?}
+\only<2-4>{Bien sûr}
+\onslide<5->{
+Plein de choses sont à revoir:
+\begin{itemize}
+\onslide<5->{\item la partie validation du vote}
+\onslide<6->{\item certaines parties du code devraient être plus robustes}
+\onslide<7->{\item des validations des données à ajouter}
+\onslide<7->{\item \ldots}
+\end{itemize}
+}
+\end{block}
+\vfill
+\onslide<3->{
+\begin{block}{des bogues ?}
+\only<4>{Aucun !}
+\onslide<8->{
+Pas de connu à ce jour pour cette version.
+}
+\end{block}
+}
+\vfill
+\onslide<9->{
+\begin{block}{Promesse:}
+Avoir quelque chose à proposer pour le vote du CL (en 15 jours)
+\end{block}
+}
+\vfill
+\end{frame}
+
+\section{L'avenir:~Epoll 2}
+
+\subsection{Recommandation de la CNIL}
+
+\begin{frame}
+\frametitle{Référence: la CNIL}
+\begin{alertblock}{Essayer d'appliquer:}
+\textit{Délibération n. 03-036 du 1er juillet 2003 portant
+adoption d'une recommandation relative à la sécurité des systèmes de
+vote électronique}.
+\end{alertblock}
+\end{frame}
+
+\begin{frame}
+\frametitle{CNIL: Verrouillage de l'urne}
+\begin{block}{L'ouverture devrait necessiter plusieurs personnes}
+\begin{itemize}
+\item l'application peut demander plusieurs mot de passe
+\item pas de solution fiable au niveau des données
+\end{itemize}
+\end{block}
+\end{frame}
+
+\begin{frame}
+\frametitle{CNIL: Chiffrement}
+\begin{alertblock}{Données en clair dans la base}
+\begin{itemize}
+\item Le gestionnaire SQL y a accès
+\item Elles sont des les backup
+\end{itemize}
+\end{alertblock}
+\vfill
+\pause
+\begin{block}{Chiffrer les bulletins}
+\begin{itemize}
+\item{chiffrer\ldots}
+
+Opérationnel pour la prochaine version
+    \begin{itemize}
+    \item Clef asymétrique pour le vote
+    \item Bulletins chiffré avec clef symétrique aléatoire
+    \item Clef des bulletins chiffré avec clef du vote
+    \end{itemize}
+\pause
+\item{{\ldots}sur le poste du votant}
+
+Pb: comment supporter les différents OS ?
+    \begin{itemize}
+    \item javascript ? applet java ?
+    \item application sur le poste + XML/RPC  ?
+    \end{itemize}
+\end{itemize}
+\end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Somme de contrôle de l'application}
+\begin{block}{La CNIL dit:}
+"L'application doit effectuer une somme de contrôle de son code"
+\end{block}
+\vfill
+\pause
+\begin{block}{Ma réponse:}
+\begin{itemize}
+\item l'appli se contrôle elle même~?!
+\pause
+\begin{verbatim}
+sub check { print "Cheksum OK: " . 
+    "17ca809b185d59563d8776bac260c4b6\n" }
+\end{verbatim}
+\pause
+\item les gestionnaires de paquets le font (\verb+rpm+, \verb+dpkg+, \ldots)
+\pause
+\item il faudrait aussi controler:
+    \begin{itemize}
+    \item \verb+perl+ + les modules utilisés
+    \item le SGDB
+    \item le système (kernel, programmes, \dots)
+    \end{itemize}
+\end{itemize}
+\end{block}
+\end{frame}
+
+\subsection{Autres idées}
+
+\begin{frame}[fragile]
+\frametitle{Idées}
+\vfill
+\begin{block}{}
+\begin{itemize}
+\pause
+\item pouvoir changer son vote
+\begin{itemize}
+\item est-ce raisonnable ?
+\item il faut retrouver l'ancien bulletin
+\end{itemize}
+\pause
+\item support de plusieurs langues (i18n)
+\pause
+\item rendre un vote privé
+\pause
+\item votes non anonymes
+\pause
+\item pouvoir redemander un mot de passe (électeurs)
+\pause
+\item sortie imprimable des résultats
+
+Fait: sortie en \verb+pdf+ avec \LaTeX.
+\pause
+\item redondance des données (CNIL)
+\pause
+\item \ldots
+\end{itemize}
+\end{block}
+\end{frame}
+
+\section{Le résultat}
+
+\subsection{URL de la démo}
+
+\begin{frame}
+\frametitle{Tester en live:}
+\begin{block}{La démo}
+\href{http://forge.ipsl.jussieu.fr/epoll/demo}{http://forge.ipsl.jussieu.fr/epoll/demo}
+\end{block}
+\end{frame}
+
+\subsection{Capture d'écran}
+
+% padding pour les bordures
+\setlength\fboxsep{0pt}
+
+\begin{frame}
+\frametitle{Page principale}
+\center{
+\fbox{\includegraphics[height=0.8\textheight]{welcome}}
+}
+\vfill
+\end{frame}
+
+\begin{frame}
+\frametitle{Le vote}
+\center{
+\fbox{\includegraphics[height=0.8\textheight]{vote}}
+}
+\vfill
+\end{frame}
+
+\begin{frame}
+\frametitle{Présentation des résultats}
+\center{
+\fbox{\includegraphics[height=0.8\textheight]{results}}
+}
+\vfill
+\end{frame}
+
+\begin{frame}
+\frametitle{Lites des bulletins}
+\center{
+\fbox{\includegraphics[height=0.8\textheight]{ballots}}
+}
+\vfill
+\end{frame}
+
+\section{Fin}
+
+\begin{frame}[fragile]
+\frametitle{Les modules PERL utilisés}
+\vfill
+\begin{block}{Base de données}
+\begin{itemize}
+\item \verb+DBI+
+\item \verb+DBD::Pg+
+\end{itemize}
+\end{block}
+\pause
+\vfill
+\begin{block}{Cryptographie}
+\begin{itemize}
+\item \verb+Crypt::RSA+
+\item \verb+Crypt::DES+
+\item \verb+XML::Simple+ (format d'archivage)
+\end{itemize}
+\end{block}
+\pause
+\vfill
+\begin{block}{WEB / Mail}
+\begin{itemize}
+\item \verb+Catalyst+ (\verb+Template Toolkit+, \verb+C::P::Session+)
+\item \verb+LaTeX::Driver+
+\item \verb+Mail::Mailer+
+\end{itemize}
+\end{block}
+\pause
+\vfill
+\end{frame}
+
+\begin{frame}
+\frametitle{Questions et remarques}
+\vfill
+\begin{block}{Le projet}
+\href{http://forge.ipsl.jussieu.fr/epoll}{http://forge.ipsl.jussieu.fr/epoll:}
+\begin{itemize}
+\item le code
+\item la documentation
+\item lien vers la liste de diffusion
+\item le lien vers la démo
+\end{itemize}
+\end{block}
+\vfill
+\pause
+\begin{block}{Avez-vous:}
+\begin{itemize}
+\item des questions~?
+\item des remarques~?
+\item des critiques~?
+\end{itemize}
+\end{block}
+\vfill
+\end{frame}
+
+\end{document}
