Bonjour les agrumes !
Pour une fois, c’est avec un Proof Of Concept que je viens vous voir aujourd’hui. J’ai en effet commencé un projet, temporairement nommé « Privacy Forms », dont le but est de permettre à quelqu’un de partager un formulaire dont lui seul peut lire les réponses.
Quelque soit la confiance que l’on peut avoir pour le site hébergeant un formulaire, il est théoriquement toujours possible que le contenu des réponses soit lu par des personnes qui ne sont pas sensées pouvoir le lire. Le but de Privacy Forms est justement de corriger cette lacune.
La création du formulaire se passe comme sur n’importe quel site de formulaire ; à un gros détail près : il s’agit d’un POC, il faut donc écrire un schéma JSON, il n’y a pas d’inteface user-friendly pour l’instant. Par exemple, voici ce que donne le schéma suivant.
{
"title": "Titre",
"description": "Une description.",
"fields": [
{
"type": "charfield",
"name": "champ-1",
"label": "Votre pseudo",
"required": true,
"default": ""
},
{
"type": "textarea",
"name": "champ-2",
"label": "Comment avez-vous connu ce site ?",
"required": false,
"default": ""
},
{
"type": "markdown",
"name": "champ-3",
"content": "This will be a markdown **text**."
},
{
"type": "radiotable",
"name": "champ-4",
"label": "Indiquez ce que vous pensez des affirmations suivantes.",
"required": true,
"columns": ["D'accord", "Ni d'accord ni pas d'accord", "Pas d'accord"],
"rows": ["La réponse est 42", "Netscape est un navigateur moderne", "Zeste de Savoir, c'est la classe (tu peux pas zeste)"]
},
{
"type": "radio",
"name": "champ-5",
"label": "Vous êtes plutôt...",
"required": true,
"rows": ["Clémentine", "Âne", "Autre"]
},
{
"type": "checkbox",
"name": "champ-6",
"label": "Ce site est un POC",
"required": false,
"rows": ["Oui", "Bien sur", "Évidemment"]
}
]
}
Une fois le schéma renseigné, une étape se rajoute : l’auteur du formulaire doit renseigner une clé publique GPG. C’est là qu’est le point central du système. Quand quelqu’un remplira le formulaire et cliquera sur "Envoyer", les réponses renseignées seront sérialisées en JSON, puis le JSON résultant sera chiffré avec la clé publique de l’auteur du formulaire avant d’être envoyé. Ainsi, tout ce que le serveur stockera sera un bloc de texte chiffré et la date à laquelle il a été reçu.
Lorsque l’auteur voudra relever les réponses à un formulaire, il lui suffira de télécharger l’ensemble des blocs chiffrés, puis de les déchiffrer avec un script dédié (qui, évidemment, tournera entièrement en local) afin d’obtenir un format facilement exploitable par un logiciel de data-mining (CSV par exemple).
Que penseriez-vous d’un projet comme celui-ci ? J’y vois un intérêt potentiel pour les recherches en sciences humaines et sociales, mais serait-il vraiment utilisé en pratique (le nombre de personnes utilisant GPG est très restreint, et faire une interface claire ne nécessitant pas de connaitre GPG risque de s’avérer compliqué) ?
Bien sur, si quelqu’un veut les sources, n’hésitez pas à demander, je peux les zipper et les partager.
Merci d’avance pour vos avis !