Pour le chiffrement, on l’état de l’art c’est partir d’un mot de passe demandé à l’utilisateur ou d’une chaîne base64 aléatoire stockée dans le lien d’accès après le #. Les deux restent côté navigateur et ne devraient pas fuiter sur le réseau. À partir de ça on dérive avec PDKF2 ou un système similaire pour créer une clef utilisateur.

Chaque contenu sur le serveur est chiffré avec une clef symétrique type AES. Cette clef primaire est elle-même stockée à côté du contenu, et chiffrée par la clef utilisateur.

* * *

Un même utilisateur peut donc potentiellement déchiffrer plusieurs types de contenus différents. Il suffit qu’on ait laissé une version de chaque clef primaire, chiffrée à son attention.

Inversement, un même contenu peut être distribué à plusieurs utilisateurs. Il suffit de stocker plusieurs copies de la clef primaire, chiffrées avec les différentes clef utilisateur concernés.

La conjonction des deux fait qu’on peut retirer des accès à quelqu’un sans couper les accès des autres (on change la clef primaire à volonté, et il suffit de ne plus chiffrer les nouvelles clefs primaires avec les clefs des utilisateurs révoqués)