[Cocorico] avancement 06/10/2016

Bonjour,

le projet « Cocorico » (la plateforme de vote) avance à vive allure, notamment en raison de son utilisation pour le 1er tour de LaPrimaire.org dés le 22 octobre prochain. 22 octobre… 2016 (ouaip’). En résumé, les travaux réalisés depuis le hackathon ODN #4 (depuis le 19 septembre 2016 donc) :

  • beaucoup de procédures ont été automatisées ;
  • beaucoup de tests ont été rajoutés ;
  • ajout de docs/procédures pour faciliter/encourager/guider le travail des contributeurs ;
  • estimation des coûts liés à la blockchain ;
  • ajout d’une procédure d’audit/dépouillement de l’urne numérique sur la blockchain.

Merci à Yoann Aubineau, Quentin Barbosa et virgile-dev pour leurs contributions.
Merci à Thibauld pour son travail d’intégration/test dans LaPrimaire.org.

1. Chiffrage des coûts liés à la blockchain

On estime aujourd’hui qu’il faut dépenser 7,90€ pour 1000 bulletins de vote :

2. Implémentation d’une procédure d’audit de l’urne numérique

A la fin d’un vote, l’utilisateur peut télécharger (fichier SVG) ou imprimer (QR code) une « preuve de vote ».
Lorsque le vote est fini, il peut télécharger/scanner cette preuve de vote sur une page dédiée qui va retrouver son bulletin dans l’urne numérique (qui est sur la blockchain).
La valeur du bulletin dans la preuve de vote est comparée à la valeur dans la blockchain, permettant ainsi de « prouver » que le bulletin de vote est valide et que la procédure de vote et fiable.

Le système permet ainsi de savoir (et affiche avec de jolis graphiques animés):

  • quel pourcentage de bulletins ont été « audités » (ou « validé via la preuve de vote »)
  • quel pourcentage de ces bulletins est valide (normalement 100%)

Voilà à quoi ressemble la page pour dépouiller l’urne numérique lorsqu’on a soumis une preuve de vote :

La « preuve de vote » est signée par notre serveur avec une clef secrète propre à chaque vote.
Les résultats fournis par l’audit sont donc à priori fiables et les preuves de vote ne peuvent pas être falsifiées.

La « preuve de vote » est anonyme. On peut donc l’envoyer (anonymement) par la post/par e-mail à des volontaires qui pourraient agir comme des scrutateurs numériques.

3. Simplification de la procédure de vote

L’étape de la génération/sélection de la « carte de vote » a été automatisée et ne demande plus quoique ce soit à l’utilisateur.

Chaque vote se fait donc maintenant en 3 étapes (identité, bulletin de vote, confirmation) au lieu de 4.

4. Mise en place d’un chat pour les développeurs

« Réservé » aux sujets techniques liés directement au développement de la plateforme. Mais accessible publiquement en lecture. Le chat fait également remonter l’activité du dépôt GitHub et l’intégration continue de Travis.

5. Traduction en anglais et en espagnol

Plusieurs autres projets civic tech voudraient utiliser la plateforme, mais avaient besoin que cette dernière soit disponible en d’autres langues. La plateforme est maintenant disponible en anglais et en espagnol.

La plateforme détecte également la langue du navigateur pour proposer la bonne version.

Une page de documentation concernant l’internationalisation a été mise en ligne ici.

6. Intégration continue

https://travis-ci.org/promethe42/cocorico/

Le service Travis a été connecté au dépôt Github. Chaque modification dans le code envoyé sur Github va donc automatiquement déclencher le test de la procédure de déploiement et les tests automatisés.

7. Tests automatisés de l’API

Mise en place de tests automatisés pour l’API de la plateforme. Les points d’API suivants sont au moins partiellement couverts :

  • /user, l’authentification et la récupération d’un utilisateur, notamment via JWT (la techinque mise en place par LaPrimaire.org)
  • /oauth, l’authentification des « applications » tierces qui se branchent à la plateforme (par exemple LaPrimaire.org)

8. Tests automatisés de la coding style

Mise en place de tests automatisés pour vérifier que les modifications du code proposée par les contributeurs correspondent aux « best practices » et suivent la même « coding style » que le reste du projet.

9. Déploiement automatisé

Tous les changements acceptés dans la branche « master » sont automatiquement déployés en production. L’application va donc toute seule en production dés que les tests passent. Plus besoin d’humains (berk !) pour ça.

10. Rapports d’erreur automatisés

Lorsque l’application Web « plante », elle envoie automatiquement une alerte au service Sentry. Les développeurs peuvent donc voir quand, comment et pourquoi l’application Web plante sans avoir accès au poste/à la configuration des utilisateurs.

Ces rapports d’erreur inclus également des informations pour identifier quelle version de l’application est fautive. Ils permettent également de suivre l’évolution de la qualité de l’application Web.

Dans une prochaine version, le service Sentry sera internalisé et nous ne passerons plus par leur SaaS pour des raisons de confidentialité.

11. Correction d’un problème de performances

lié à la façon dont nous générons la signature numérique des utilisateurs.
Le modèle de sécurité en est partiellement affaibli, mais rien de préoccupant.
Le risque lié à ce changement sera d’autant plus faible que le nombre de votes augmentera. Et il augmentera sûrement très vite très rapidement…

12. Mise en place d’une procédure de contribution pour les développeurs

13. Début d’implémentation des "webhooks"

Les « webhooks » permettront aux plateformes civictech tierces qui utilisent la plateforme de vote de suivre l’activité sur les votes qu’elles gèrent. Par exemple, elles seront « alertées » lorsqu’un utilisateur a voté. Ces webhooks respectent les règlent strictes de confidentialité et d’anonymat déjà appliquées sur la plateforme. Ce travail sur les webhooks n’est pas (encore) testable.

A votre disposition si vous avez des questions !

7 « J'aime »

Ha we… yen a qui bosse quand même…
Moi tu connais mon avis sur la preuve de vote… c’est pas le must must… mais ca s ameliore notamment avec la possibilité de générer des faux exprès. On en reparlera!
Bravo deja pour tout ce travail c est fou fou ! :clap:

1 « J'aime »

Ah tiens j’avais oublié cette histoire…
Maintenant que « c’est fait » et que « ça marche » je ne sais pas vraiment comment on va faire ça.
Notamment par ce que le dépouillement affiche le nombre de preuves de votes testées et le nombre de bulletins audités comme valides/invalides.

Félicitation pour cette prouesse.

J’ai juste une question concernant l’identité. Comment est elle garantie ?

FranceConnect dans le cas général.

JWT dans le cas où l’application tierce fournie sa propre base d’utilisateurs (c’est le cas de LaPrimaire.org par exemple). La doc pour les développeurs d’applications pour fournir leurs utilisateurs est ici.
Dans ce cas, c’est évidemment à l’application tierce de vérifier que ses utilisateurs sont uniques.

OK et qu’en est-il de FranceConnect ?

Est-il disponible ? opérationnel ? Pouvons-nous l’intégrer indépendamment à la plateforme de vote #mavoix ? comment obtenir son identification numérique FranceConnect ?

Il faut qu’on fasse la demande. C’est « en cours ».

Mon message précédent n’était peut-être pas assez clair, mais FranceConnect est déjà intégré.

Il n’y a pas d’ « identification numérique FranceConnect ».
Le mieux c’est de consulter le site officiel de FranceConnect pour comprendre comment ça marche.

Effectivement c’est plus clair en allant sur leur site. Merci et content de lire autant d’avancer.

Mais du coup FranceConnect servira pour éviter les doublons d’identité mais Est-ce que ces identités peuvent avoir des restrictions supplémentaires ?

ex : l’age de la personne ? l’éligibilité ou non ? et peut-être d’autres ?

Je viens de le tester, sur les conseils de @Didier.Aucher (une vraie secte, ces Didier :wink:) et c’est super easy:
https://www.idn.laposte.fr/register
en qlq clics, c’est fait.
Et un(e) postier(e) vient à un rdv que tu fixes (pour moi, effectué au bureau, donc aucune contrainte d’être présent à mon domicile) pour valider ton identité (lien entre la personne, sa carte d’identité et son inscription sur leur site.
Pour toute personne qui a aujourd’hui une connexion internet, plus/pas d’excuse :slight_smile:

1 « J'aime »

@Jean-Marc_Le_Roux, serais tu dispo samedi vers 10h pour présenter la plateforme , via un skype ou un hangout, lors de notre rencontre globale à Lyon ?

Combien de temps?
C’est possible en fin de journée plutôt ?

15 minutes
Fin de journée: compliqué; on finit vers 17h et certains ont leur train retour peu de temp après

Je ne suis pas sur Paris ce week end et j’aurais pas de connection Internet.
Par contre je peux préparer 10 slides et brieffer quelqu’un par téléphone vendredi soir.
Qu’en penses-tu ?

1 « J'aime »

Ok pour tes slides et briefer qqun: @Ludovic_69620 t’es ok ?

Avec plaisir. Je suis impressionné après tout ce que je viens de lire des travaux de @Jean-Marc_Le_Roux :slight_smile:
Mais je suis dispo demain soir quand tu veux. Je te donne mon numéro tout de suite.