Keyless Signatures with Identity - Master 2 project
Do not use in production (it's a PoC... and it uses pickle
because time was lacking).
'Keyless Signatures with Identity' implementation (Master 2 project)
Home Page: http://alan-mushi.github.io/KSI/
Do not use in production (it's a PoC... and it uses pickle
because time was lacking).
Pour la signature portant sur St il faudrait faire une structure permettant de changer d'algo de signature asymétrique facilement.
Sur le serveur il serait préférable d'utiliser le logger python en lieu et place de print()
"sauvages".
Il serait de bon ton de commencer par concevoir un serveur émettant St par appel de fonction, puis d'ajouter la sérialisation des objets pythons échangés, enfin de rendre le serveur accessible sur un port TCP (issue #7). Pour réellement bien finir les choses une "message queue" (tel que RabbitMQ) des requêtes serait intéressant à ajouter et permettrait de scaler très facilement.
Réaliser des benchmarks en faisant varier les algorithmes de hachage utilisés.
Toutes les autres issues doivent naturellement être finalisées avant celle ci!
La vérification de la signature KSI est jugée fausse à l'étape de la vérification de la signature apposée par le serveur uniquement dans les fichiers api_server.py
et api_client.py
mais fonctionne parfaitement dans les tests unitaires... mystère.
À réaliser après la tâche #4
Créer une API JSON/XML/... pour accéder au service de création de timestamp (St) depuis le réseau. Il faudra bien entendu modifier le client pour qu'il utilise le service. Pour inspiration: https://tools.ietf.org/html/rfc3161
Pour le stockage des données:
Les points 1 et 3 correspondent à l'utilisation possible d'un serveur LDAP. Les points 2 et 4 correspondraient plus à des bases de type clé-valeur ou bien NoSQL avec un stockage en colonnes. Bien entendu il est possible d'utiliser un seul type de base SQL (MariaDB/PostgreSQL...) pour tous les usages.
Rappelons nous que dans les "publications KSI" il est explicité que le client puisse publier ses certificats et signatures d'une manière à ce que le serveur n'y ait pas accès en modification. Il est possible de traiter cette contrainte en fixant des politiques d'accès ou en employant des serveurs/BDD différents.
Pour ce point je pense que l'utilisation de systèmes de container est tout à fait justifiée.
J'ai fait une première version mais il est possible de simplifier le code
Voir #5 pour quels éléments sont à coordonner.
À des fins de débug je pense qu'ajouter des couleurs sur les noeuds du hash tree présents dans ci (la hash chain) serait pratique (à ajouter dans Node.to_graphviz()
).
Il faudra coordonner avec le serveur l'algo/sérialisation utilisé(e) pour St.
Il faudra coordonner avec le client la sérialisation utilisée pour ci (la chaîne de hash).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.