Je regardais autrefois la confidentialité des contrats, et mes yeux restaient toujours braqués sur la zone de stockage. Les champs chiffrés y étaient bien en place : on se sent tout de suite rassuré. Mais aujourd’hui, en fouillant les conditions d’abonnement de RUES, deux qualificatifs m’ont retenu. Le contrat @Dusk peut bien cacher l’état, mais l’abonnement ne se fait pas “à l’aveugle” : il identifie d’abord le contract_id, puis event_name. La visibilité se divise donc déjà ici en plusieurs branches.
J’ai étalé D-03 et D-37 en deux colonnes. À gauche : chiffrage du stockage. À droite : la couche d’événements. Dans l’exemple d’abonnement, j’ai entouré le header JSON et les octets bruts de l’événement ; l’événement du contrat $DUSK sera transmis au souscripteur selon les conditions. Quand j’ai pu lire les raw event bytes tels quels, je l’ai ressenti comme une alerte : ne laisse pas la conclusion de la couche de stockage recouvrir celle de la couche de logs. Les champs d’abonnement ne sont pas décoratifs : ils déterminent qui peut collecter quels fragments de comportement.
Dit simplement : verrouiller l’armoire ne signifie pas que la déclaration de réception au guichet est aussi verrouillée. L’état ressemble aux matériaux rangés dans l’armoire ; l’événement ressemble plutôt à un bon de retrait collé sur la porte. L’indexeur ne touche pas forcément aux champs chiffrés, mais il peut trier avec beaucoup d’empressement l’heure, l’appel et le nom. En mettant les deux colonnes ensemble, j’ai fini par comprendre : la confidentialité n’est pas un bouton, c’est le résultat de calculs de visibilité séparés à chaque couche.
Il y a ici une frontière très concrète. L’événement n’a pas besoin d’exposer directement des quantités d’actifs pour créer un risque. Si l’on regroupe les instants, les relations d’appel qui reviennent sans cesse et les noms associés, un observateur peut déjà en déduire quelque chose de proche. Ne consulter que l’état du contrat revient à manquer un chemin de requête. Découper la couche d’événements dans une liste de contrôle, ce n’est pas chipoter : c’est éviter de découvrir plus tard que la silhouette des comportements a déjà été reconstituite par les logs.
Du coup, je ne me contente plus de demander si le stockage est chiffré : je veux aussi savoir comment les événements sont émis, qui peut s’abonner, et si les champs sont désensibilisés. Je préfère passer une minute de plus à lire les champs plutôt que de considérer la visibilité par défaut comme une confidentialité par défaut. Le chiffrage du stockage est bien utile, mais il ne veut pas dire que les logs se mettent automatiquement en mode privé. Dans la check-list d’un contrat de confidentialité, la couche d’événements doit avoir sa propre ligne. Plus l’indexeur est zélé, moins cette ligne doit être sacrifiée. #dusk
J’ai étalé D-03 et D-37 en deux colonnes. À gauche : chiffrage du stockage. À droite : la couche d’événements. Dans l’exemple d’abonnement, j’ai entouré le header JSON et les octets bruts de l’événement ; l’événement du contrat $DUSK sera transmis au souscripteur selon les conditions. Quand j’ai pu lire les raw event bytes tels quels, je l’ai ressenti comme une alerte : ne laisse pas la conclusion de la couche de stockage recouvrir celle de la couche de logs. Les champs d’abonnement ne sont pas décoratifs : ils déterminent qui peut collecter quels fragments de comportement.
Dit simplement : verrouiller l’armoire ne signifie pas que la déclaration de réception au guichet est aussi verrouillée. L’état ressemble aux matériaux rangés dans l’armoire ; l’événement ressemble plutôt à un bon de retrait collé sur la porte. L’indexeur ne touche pas forcément aux champs chiffrés, mais il peut trier avec beaucoup d’empressement l’heure, l’appel et le nom. En mettant les deux colonnes ensemble, j’ai fini par comprendre : la confidentialité n’est pas un bouton, c’est le résultat de calculs de visibilité séparés à chaque couche.
Il y a ici une frontière très concrète. L’événement n’a pas besoin d’exposer directement des quantités d’actifs pour créer un risque. Si l’on regroupe les instants, les relations d’appel qui reviennent sans cesse et les noms associés, un observateur peut déjà en déduire quelque chose de proche. Ne consulter que l’état du contrat revient à manquer un chemin de requête. Découper la couche d’événements dans une liste de contrôle, ce n’est pas chipoter : c’est éviter de découvrir plus tard que la silhouette des comportements a déjà été reconstituite par les logs.
Du coup, je ne me contente plus de demander si le stockage est chiffré : je veux aussi savoir comment les événements sont émis, qui peut s’abonner, et si les champs sont désensibilisés. Je préfère passer une minute de plus à lire les champs plutôt que de considérer la visibilité par défaut comme une confidentialité par défaut. Le chiffrage du stockage est bien utile, mais il ne veut pas dire que les logs se mettent automatiquement en mode privé. Dans la check-list d’un contrat de confidentialité, la couche d’événements doit avoir sa propre ligne. Plus l’indexeur est zélé, moins cette ligne doit être sacrifiée. #dusk
