Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Add article/zero knowledge architecture #208

Open
wants to merge 19 commits into
base: master
Choose a base branch
from

Conversation

m-wy
Copy link

@m-wy m-wy commented Nov 3, 2020

Rédaction de l'article sur l'architecture zero knowledge

@jibidus jibidus added the article Write new article label Nov 9, 2020

## Conclusion

L'évolution des lois et de la mentalité des utilisateurs ammène des principes d'architecture logicielle radicalement nouveaux, centrés sur la vie privée et la sécurité. L'apparition de nouveaux services basés sur cette architecture va stimuler l'écosystème ce qui développera à terme les briques technologiques nécessaires pour que toute l'industrie puisse appliquer ces approches architecturales. Les utilisateurs ont beaucoup à y gagner puisqu'en plus de la sécurité accrue, ces pratiques assurent l'éthique des développeurs qui ne peuvent pas accéder aux informations afin de faire de la publicité ciblée ou d'espionner leurs utilisateurs.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On peut retravailler un peu la conclusion aussi je pense :)

@vlamy vlamy force-pushed the add-article/zero-knowledge-architecture branch 6 times, most recently from e68e84b to f20a8f9 Compare November 23, 2020 08:50
@vlamy vlamy force-pushed the add-article/zero-knowledge-architecture branch from f20a8f9 to 536c721 Compare November 27, 2020 07:45
---

## Le problème de la protection des données dans le Cloud

Copy link

@GuillaumeCz GuillaumeCz Feb 25, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alterner entre le "nous" et le "on" (tout au long du texte, dés la ligne 2, et parfois au sein de mêmes phrases) me semble un peu maladroit.
Est-ce que ça semblerait pertinent d'en choisir un et de retravailler le texte avec ? ;)


Le chiffrement des données est une réponse forte et évidente à la problématique de protection des données, cependant elle n'est pas simple à mettre en œuvre. En effet, les outils de cryptographie nécessitent la manipulation de clefs et de certificats qui demandent une maturité des développeurs, des opérateurs mais aussi des utilisateurs. En utilisant le chiffrement, on assure la protection des données « en transite » (attaque de type MITM), à l'usage sur le Cloud (espionnage des données en mémoire non-persistante sur un serveur compromis) et au repos (compromission d'une mémoire persistante de type fichier ou base de données). Pour les cas d'usages qui le permettent, la ZKA recommande l'utilisation du chiffrement de bout en bout.

[Le chiffrement de bout en bout](https://fr.wikipedia.org/wiki/Chiffrement_de_bout_en_bout), aussi connu par son nom anglais « end to end encryption », consiste à chiffrer systématiquement des données échangées entre deux paires. Nous ne pourrons pas rentrer dans les détails cryptographiques dans cet article, mais le principe de base du chiffrement de bout en bout est que seuls les utilisateurs finaux disposent des clefs nécessaires aux déchiffrements des données. Ce principe est facile à comprendre dans le cas d'une application de messagerie. Afin que Bob et Alice puissent d'échanger des messages privés, ils vont systématiquement chiffrer les messages qu'ils s'échangent, avec des clefs que seuls eux connaissent. En fonction des outils de cryptographie utilisés, les messages pourront même être authentifiés (les messages d'Alice et Bob seront signés), et leur intégrité pourra être vérifiée (ont pourra vérifier que chaque message n'a pas été altéré pendant son transport). Comme expliqué précédemment la principale difficulté rencontrée dans le chiffrement est la gestion des clefs de chiffrement par les utilisateurs. Certains services à large échelle réussissent, néanmoins, à fournir du chiffrement de bout en bout en proposant une gestion simplifiée, souvent automatique, des clefs de chiffrement. Ces mécanismes sont décris pour l'application de messagerie instantanée WhatsApp dans [ce premier article](https://faq.whatsapp.com/general/security-and-privacy/end-to-end-encryption/) et pour le service d'email Protonmail [dans ce second](https://protonmail.com/blog/what-is-end-to-end-encryption/).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...
(on pourra vérifier que chaque message n'a pas été altéré pendant son transport).
...


## Authentification zero-knowledge avec le protocole SRP

S'authentifier avec une comabinaison de nom d'utilisateur et de mot de passe a plusieurs inconvénients, dans ce système l'authentification est faite sans transférer le mot de passe.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
S'authentifier avec une comabinaison de nom d'utilisateur et de mot de passe a plusieurs inconvénients, dans ce système l'authentification est faite sans transférer le mot de passe.
S'authentifier avec une combinaison de nom d'utilisateur et de mot de passe a plusieurs inconvénients, dans ce système l'authentification est faite sans transférer le mot de passe.


### Réflexion sur le dossier médical partagé

C'est un cas d'application idéal pour l'architecture ZKA, d'autant plus l'applicatif actuel du **[Dossier Médical Partagé](https://www.dmp.fr/)** est largement critiqué. Cette application gère le suivi médical et l'identité des patients, une sorte de carnet de santé virtuel. En adhérant aux principes zero knowledge on obtient exactement le controle que l'on souhaite avoir sur ses données avec la sécurité induite par l'architecture. L'utilisateur a un compte sur lequel se trouve tout son historique médical numérisé, ses rendez-vous, ses ordonnances etc... Grâce à ce compte il partage sélectivement ses informations avec les professionnels de santé, les ordonnances avec les pharmaciens, les informations de facturation avec sa mutuelle et chaque professionel ne voit que les données qui lui sont utiles. Compte tenu de la criticité des données gérées c'est exactement le genre de scénaro pour lequel la ZKA a beaucoup d'interet.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
C'est un cas d'application idéal pour l'architecture ZKA, d'autant plus l'applicatif actuel du **[Dossier Médical Partagé](https://www.dmp.fr/)** est largement critiqué. Cette application gère le suivi médical et l'identité des patients, une sorte de carnet de santé virtuel. En adhérant aux principes zero knowledge on obtient exactement le controle que l'on souhaite avoir sur ses données avec la sécurité induite par l'architecture. L'utilisateur a un compte sur lequel se trouve tout son historique médical numérisé, ses rendez-vous, ses ordonnances etc... Grâce à ce compte il partage sélectivement ses informations avec les professionnels de santé, les ordonnances avec les pharmaciens, les informations de facturation avec sa mutuelle et chaque professionel ne voit que les données qui lui sont utiles. Compte tenu de la criticité des données gérées c'est exactement le genre de scénaro pour lequel la ZKA a beaucoup d'interet.
C'est un cas d'application idéal pour l'architecture ZKA, d'autant plus l'applicatif actuel du **[Dossier Médical Partagé](https://www.dmp.fr/)** est largement critiqué. Cette application gère le suivi médical et l'identité des patients, une sorte de carnet de santé virtuel. En adhérant aux principes zero knowledge on obtient exactement le contrôle que l'on souhaite avoir sur ses données avec la sécurité induite par l'architecture. L'utilisateur a un compte sur lequel se trouve tout son historique médical numérisé, ses rendez-vous, ses ordonnances etc... Grâce à ce compte il partage sélectivement ses informations avec les professionnels de santé, les ordonnances avec les pharmaciens, les informations de facturation avec sa mutuelle et chaque professionnel ne voit que les données qui lui sont utiles. Compte tenu de la criticité des données gérées c'est exactement le genre de scénario pour lequel la ZKA a beaucoup d’intérêt.


L'écosystème de bibliothèque de cryptographie permet de développer tout types de clients : client lourds, mobiles ou Web, pour les services zero-knowledge.

La systématisation du principe de défi cryptographique, implique que les échanges de mot de passe sont limités au fournisseur de preuve, ce qui tend à diminuer le risque de fuite de mot de passe.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
La systématisation du principe de défi cryptographique, implique que les échanges de mot de passe sont limités au fournisseur de preuve, ce qui tend à diminuer le risque de fuite de mot de passe.
La systématisation du principe de défi cryptographique implique que les échanges de mot de passe soient limités au fournisseur de preuve, ce qui tend à diminuer le risque de fuite.

La systématisation du principe de défi cryptographique, implique que les échanges de mot de passe sont limités au fournisseur de preuve, ce qui tend à diminuer le risque de fuite de mot de passe.
De plus, le challenge émis par le serveur étant différent à chaque requête, les tentatives d'usurpation de types « man in the middle » sont aussi rendues plus difficiles à opérer.

Préservation de la vie privée avec l'approche non-naïve, en ne divulguant que les données nécessaires. Certains service Zero-knowledge proposent même un contrôle dans le temps d'accès aux données de l'utiliateur, en mettant en place des mécanismes de révocation et d'expiration des clefs qui permetent de déchiffrer ses données.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Préservation de la vie privée avec l'approche non-naïve, en ne divulguant que les données nécessaires. Certains service Zero-knowledge proposent même un contrôle dans le temps d'accès aux données de l'utiliateur, en mettant en place des mécanismes de révocation et d'expiration des clefs qui permetent de déchiffrer ses données.
Préservation de la vie privée avec l'approche non-naïve, en ne divulguant que les données nécessaires. Certains service Zero-knowledge proposent même un contrôle dans le temps d'accès aux données de l’utilisateur, en mettant en place des mécanismes de révocation et d'expiration des clefs qui permettent de déchiffrer ses données.

Attention toutefois à ne pas généraliser cette difficulté. En effet, la récupération de données n'est pas forcément critique pour tous les scénarios, par exemple un service de messagerie instantanée pourra se permettre de perde l'historique des conversations (et on pourra négliger la récupération des clefs privées utilisées pour le chiffrement des messages).
À contrario, il est inconcevable de perdre l'accès à ses données médicales.

Pour développer un client ZKA le plus sûr possible dans les navigateurs on a besoin de nombreuses mesures de sécurités, CORS, CSP (Content security policy), SRI (verification d'assets), Referrer-Policy et File-API. Afin de complexifier les manipulations lors de l'exécution il est préferable de faire tourner la couche crypto en WebAssembly car le javascript peut être manipulé à la volée .

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Pour développer un client ZKA le plus sûr possible dans les navigateurs on a besoin de nombreuses mesures de sécurités, CORS, CSP (Content security policy), SRI (verification d'assets), Referrer-Policy et File-API. Afin de complexifier les manipulations lors de l'exécution il est préferable de faire tourner la couche crypto en WebAssembly car le javascript peut être manipulé à la volée .
Pour développer un client ZKA le plus sûr possible dans les navigateurs on a besoin de nombreuses mesures de sécurités, [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS), [CSP (Content security policy)](https://developer.mozilla.org/fr/docs/Web/HTTP/CSP), [SRI (verification d'assets)](https://developer.mozilla.org/fr/docs/Web/Security/Subresource_Integrity), [Referrer-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy) et [File-API](https://www.w3.org/TR/FileAPI/). Afin de complexifier les manipulations lors de l'exécution il est préferable de faire tourner la couche crypto en WebAssembly car le javascript peut être manipulé à la volée .

@JulioJu
Copy link
Contributor

JulioJu commented Feb 28, 2021

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
article Write new article
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants