bLSAG, draft tabs, update draft surveillance

This commit is contained in:
Pascal Engélibert 2024-06-21 23:27:12 +02:00
parent ae923c65a8
commit 2402738d70
4 changed files with 212 additions and 12 deletions

122
content/blog/blsag.fr.md Normal file
View file

@ -0,0 +1,122 @@
+++
title = "Signature en anneau bLSAG"
date = 2024-06-21
description = "Quelques notes sur l'algorithme bLSAG de signature en anneau sur courbe elliptique"
insert_anchor_links = "left"
[taxonomies]
tags = ["cryptographie", "mathématiques"]
[extra]
katex = true
+++
Une signature en anneau (_ring signature_) est une preuve cryptographique qu'un message est intègre et a été authentifié par une personne parmi une assemblée donnée, sans révéler son identité.
Par exemple, les membres d'un jury pourraient chacun annoncer son verdict anonymement, de sorte que ni les autres juré·es ni le public ne puissent établir un lien entre un verdict et une personne. Afin de s'assurer de l'authenticité des verdicts, chaque verdict est accompagné d'une signature en anneau qui permet de prouver qu'il a bien été émis par un membre du jury.
Il existe plusieurs algorithmes de signature en anneau. Sera présenté ici bLSAG, qui a la propriété de permettre de détecter le cas où deux signatures auraient été émises par la même personne. Dans l'exemple du jury, on s'assure ainsi que personne n'a voté deux fois.
Ce résumé de bLSAG prend comme source le document [Zero to Monero 2.0.0](https://www.getmonero.org/library/Zero-to-Monero-2-0-0.pdf) (page 29) ainsi que la bibliothèque Rust [nazgul](https://github.com/edwinhere/nazgul/) qui implémente plusieurs schémas de signature en anneau dont bLSAG. Il sert de documentation supplémentaire à la bibliothèque Rust [orodruin](https://git.duniter.org/tuxmain/orodruin-rs/) que j'ai développée pour implémenter les transactions anonymes dans [Duniter](https://duniter.org).
**Prérequis** : bases d'algèbre et de cryptologie. La connaissance des courbes elliptiques n'est pas nécessaire.
## Notations
* $\mathbb{Z}/l\mathbb{Z}$ les nombres entiers modulo $l$
* $E$ une courbe elliptique (ensemble fini de points, formant un groupe sur lequel le problème du logarithme discret est difficile)
* $G$ un générateur de $E$
* $\mathbin\Vert$ opérateur de concaténation
* $x[n]$ le reste par la division de $x$ par $n$
* $H$ une fonction de hachage cryptographique (en fonction du contexte, son image est dans $\mathbb{Z}/l\mathbb{Z}$ ou dans $E$)
* On parlera d'anneau $\mathcal{R}$, au sens d'un ensemble ordonné de clés publiques, et non de la structure algébrique d'anneau. C'est ambigü mais c'est le terme consacré, comme en anglais _ring_.
## Signature
La signature $\sigma(m)$ d'un message $m$, par la clé secrète $k_\pi$ dont la clé publique $K_\pi$ est dans l'anneau $\mathcal{R}=\\\{K_1,\ldots,K_n\\\}$, est obtenue comme suit :
* $k_\pi \in \mathbb{Z}/l\mathbb{Z}$ la clé privée d'Alice
* $K_\pi = G k_\pi \in E$ la clé publique d'Alice
* $\tilde K_\pi = k_\pi H(K_\pi) \in E$ l'image de la clé d'Alice
* $r_1,\ldots,r_{\pi-1},\alpha,r_{\pi+1},\ldots,r_n$ nombres aléatoires dans $\mathbb{Z}/l\mathbb{Z}$
* $c_{\pi+1} = H(m \mathbin\Vert \alpha G \mathbin\Vert \alpha H(K_\pi))$
* $\forall i \in \\\{\pi+1,\ldots,n,1,\ldots,\pi-1\\\},\ c_{i+1[n]} = H(m \mathbin\Vert r_i G + c_i K_i \mathbin\Vert r_i H(K_i) + c_i \tilde K_\pi)$
* $r_\pi = \alpha - c_\pi k_\pi$
* $\sigma(m) = (\mathcal{R}, \tilde K_\pi, c_1, (r_1, \ldots, r_n))$
## Vérification
* Vérifier $l\tilde K_\pi=0$
* $c_1' = c_1$
* $\forall i \in \\\{1,\ldots,n\\\},\ c_{i+1}' = H(m \mathbin\Vert r_i G + c_i' K_i \mathbin\Vert r_i H(K_i) + c_i' \tilde K_\pi)$
* Vérifier $c_1 = c_{n+1}'$
On comprend maintenant l'explication du nom de signature en _anneau_. On forme un anneau, ou un cercle, avec toutes les clés, et on fait faire un tour de l'anneau au challenge. Chaque clé le modifie à son tour. Pour retomber sur le même challenge à la fin, il faut qu'une clé quelque part dans l'anneau, sans qu'on puisse savoir où, ait fait la bonne modification qui annule le bruit créé par les autres.
## Correction
Montrons que l'algorithme de vérification est correct. Rappelons les définitions suivantes :
* $k_\pi$ la clé privée d'Alice
* $K_\pi = G k_\pi$ la clé publique d'Alice
* $\tilde K_\pi = k_\pi H(K_\pi)$ l'image de la clé d'Alice
* $c_{\pi+1} = H(m \mathbin\Vert \alpha G \mathbin\Vert \alpha H(K_\pi))$
* $\forall i \in \\\{\pi+1,\ldots,n,1,\ldots,\pi-1\\\},\ c_{i+1[n]} = H(m \mathbin\Vert r_i G + c_i K_i \mathbin\Vert r_i H(K_i) + c_i \tilde K_\pi)$
* $r_\pi = \alpha - c_\pi k_\pi$
Le but est de construire successivement les $c_i'$ afin de trouver $c_1=c_{n+1}'$ si la signature est authentique.
$$
\begin{align*}
c_1 = c_{n+1}'
&\Leftrightarrow
\begin{cases}
r_n G + c_n K_n = r_n G + c_n' K_n \\\\
r_n H(K_n) + c_n \tilde K_\pi = r_n H(K_n) + c_n' \tilde K_\pi
\end{cases} \\\\
&\Leftrightarrow
\begin{cases}
c_n K_n = c_n' K_n \\\\
c_n \tilde K_\pi = c_n' \tilde K_\pi
\end{cases} \\\\
&\Leftarrow c_n = c_n' \\\\
&\Leftrightarrow
\begin{cases}
c_{n-1} K_{n-1} = c_{n-1}' K_{n-1} \\\\
c_{n-1} \tilde K_\pi = c_{n-1}' \tilde K_\pi
\end{cases} \\\\
&\Leftarrow c_{\pi+1} = c_{\pi+1}' \quad\text{par récurrence} \\\\
&\Leftrightarrow
\begin{cases}
\alpha G = r_\pi G + c_\pi K_\pi &\quad\text{(1)}\\\\
\alpha H(K_\pi) = r_\pi H(K_\pi) + c_\pi \tilde K_\pi &\quad\text{(2)}
\end{cases}
\end{align*}
$$
Montrons que (1) et (2) sont vrais :
$$
\begin{align*}
\text{(1)}
&\Leftrightarrow \alpha G = (\alpha - c_\pi k_\pi) G + c_\pi K_\pi \\\\
&\Leftrightarrow \alpha G = \alpha G + c_\pi k_\pi + c_\pi K_\pi G \\\\
&\Leftarrow K_\pi = k_\pi G
\end{align*}
$$
$$
\begin{align*}
\text{(2)}
&\Leftrightarrow \alpha H(K_\pi) = (\alpha - c_\pi k_\pi) H(K_\pi) + c_\pi \tilde K \\\\
&\Leftrightarrow \alpha H(K_\pi) = \alpha H(K_\pi) - c_\pi k_\pi H(K_\pi) + c_\pi k_\pi H(K_\pi)
\end{align*}
$$
La signature est donc correcte.
## Sécurité
Sans faire de preuve de sécurité, ayons une intuition de ce pourquoi le système est sûr :
La signature est-elle **infalsifiable**, c'est-à-dire que la forger nécessite bien de connaître $k_\pi$ ? On voit que les preuves de (1) et (2) utilisent $r_\pi = \alpha - c_\pi k_\pi$, donc la clé privée.
La signature est-elle **anonyme**, c'est-à-dire qu'on ne peut pas retrouver $\pi$ ? On a que $r_\pi$ est bruité par $\alpha$. On ne peut pas distinguer $r_\pi$ des autres $r_i$, puisqu'ils sont aléatoires uniformes comme $\alpha$ et $c_\pi$ (qui est un hash), et que $k_\pi$ est secret.

View file

@ -16,52 +16,91 @@ Il est habituel que des expérimentations sécuritaires illégales ou dérogatoi
## Donnez la main à la police, elle vous arrache le bras
Quand la police reçoit un nouveau jouet avec un certain cadre légal, elle se permet de l'étendre à outrance. Par exemple le <a href="https://fr.wikipedia.org/wiki/Fichier_national_automatis%C3%A9_des_empreintes_g%C3%A9n%C3%A9tiques" target="_blank">FNAEG</a> (Fichier National Automatisé des Empreintes Génétiques) était destiné à identifier génétiquement les délinquants sexuels et les meutriers, mais contenait en 2021 les empreintes génétiques de plus de 7,5% de la population française.
Quand la police reçoit un nouveau jouet avec un certain cadre légal, elle se permet de l'étendre à outrance. Par exemple le <a href="https://fr.wikipedia.org/wiki/Fichier_national_automatis%C3%A9_des_empreintes_g%C3%A9n%C3%A9tiques" target="_blank">FNAEG</a> (Fichier National Automatisé des Empreintes Génétiques) était destiné à identifier génétiquement les délinquants sexuels et les meutriers susceptibles de récidive, mais contenait en 2021 les empreintes génétiques de plus de 7,5% de la population française.
## Incompétence des décisionnaires
affaire de décembre 2022, députés
L'incompétence des magistrats en matière d'informatique est facilement exploitée par la police et les géants de l'informatique pour attenter des procès politiques sans fondement. [L'affaire du 8 décembre 2022](https://www.laquadrature.net/2023/06/05/affaire-du-8-decembre-le-chiffrement-des-communications-assimile-a-un-comportement-terroriste/), avec la tention prolongée et illégale de militants accusés de terrorisme pour l'unique motif qu'ils utilisaient des logiciels et messageries sécurisés tout à fait légaux et très répandus.
Articles de LQDN
Les politiciens aussi sont victimes d'une dangereuse inculture informatique, qui serait pardonnable s'ils s'abstenaient de prendre des décisions à ce sujet ou de se laisser guider aveuglément (ou de manière intéressée) par les lobbies. On notera une méconnaissance des principes d'Internet, tant techniques que philosophiques, ainsi qu'une confusion entre l'information qui peut circuler, et les biens matériels "rivaux" qu'on peut posséder.
## Pédophiles et terroristes
Voir la conférence [Internet ou Minitel 2.0](https://framatube.org/w/9a8642c0-62f0-4060-95e4-088de9c5db00).
## C'est pour notre sécurité
Toutes les occasions sont bonnes pour ajouter des caméras et de l'intelligence artificielle. L'exécutif se justifie généralemment de manière très confuse, prétendant que ces mesures auraient évité tel ou tel accident. Cette réponse est la plupart du temps disproportionnée, inadaptée et inefficace, alors que des solutions plus simples existent. Voir le <a href="https://www.laquadrature.net/2023/03/21/fiasco-du-stade-de-france-la-vsa-ne-masquera-pas-les-echecs-du-maintien-de-lordre/">fiasco du stade de France de 2022</a> qui est un exemple de mauvaise gestion de foule instrumentalisée pour promouvoir la vidéosurveillance algorithmique. Voir aussi <a href="https://invidious.fdn.fr/watch?v=mhLKT4D2YvI">comment ce genre de problème peut être évité (vidéos de Fouloscopie)</a> (spoiler&nbsp;: sans IA ni vidéosurveillance).
## Pédophiles et terroristes en épouvantail
efficacité
les enfants d'Argus
## Sécurité des communications
risque de fuite en cas de backdoor
## Liberté individuelle fondamentale
tout le monde est suspect, état de droit
## Démocratie
centralisation de l'information => du pouvoir
## Corruption et lobbyisme
Beaucoup de décisions menant directement à plus de surveillance (par l'investissement dans des solutions de surveillance), ou indirectement (par le choix de solutions informatiques non respectueuses de la vie privée), sont le résultat d'un énorme lobyyisme de la part des GAFAM et compagnie auprès des décideurs à tous les niveaux, des écoles aux parlementaires. On se souviendra notamment du contrat open-bar entre Microsoft et l'Éducation Nationale, qui permet de graver le monopole de Windows dans les cerveaux des écoliers.
anticor
Beaucoup de décisions menant directement à plus de surveillance (par l'investissement dans des solutions de surveillance), ou indirectement (par le choix de solutions informatiques non respectueuses de la vie privée), sont le résultat d'un énorme lobyyisme de la part des GAFAM et compagnie auprès des décideurs à tous les niveaux, des écoles aux parlementaires. On se souviendra notamment du [contrat open-bar entre Microsoft et l'Éducation Nationale](https://www.anticor.org/affaires-anticor/affaire-education-nationale-microsoft/), qui permet de graver le monopole de Windows dans les cerveaux des écoliers.
## Capitalisme
La surveillance génère beaucoup de données qui sont revendues à des fins publicitaires, ce qui représente une part importante du chiffre d'affaires des GAFAM, en plus d'alimenter une finance morbide à base d'enchères sur la probabilité que telle ou telle publicité vous pousse tôt ou tard à l'achat. Participer à cela, c'est encourager une gigantesque économie parfaitement improductive.
Affordance
Faites un tour sur les blogs [Affordance](https://affordance.framasoft.org/) (en français) ou [Pluralistic](https://pluralistic.net/) (en anglais) pour découvrir à quel point la surveillance de masse joue un rôle central dans le capitalisme aujourd'hui. Le marché de la surveillance est aussi [lucratif grâce au gouvernement et aux collectivités](https://www.laquadrature.net/2024/01/26/vsa-et-jeux-olympiques-coup-denvoi-pour-les-entreprises-de-surveillance/).
## Écologie
Effacer vos courriels pour économiser un pouïème de disque dur est tout à fait négligeable devant la quantité de données qu'un grand nombre d'entreprises et d'institutions (celles que vous connaissez, mais aussi leurs prestataires, les intermédiaires gérant les supports de communication, ceux qui les ont piratées, etc.) conservent sur vous, sans compter tout ce qui s'échange entre on ne sait combien de serveurs à chaque affichage d'une publicité, dont l'emplacement est mis aux enchères entre les annonceurs.
Effacer vos courriels pour économiser un pouïème de disque dur est tout à fait négligeable devant la quantité de données qu'un grand nombre d'entreprises et d'institutions (celles que vous connaissez, mais aussi leurs prestataires, les intermédiaires gérant les supports de communication, ceux qui les ont piratées, etc.) conservent sur vous, sans compter tout ce qui s'échange entre on ne sait combien de serveurs à chaque affichage d'une publicité, dont l'emplacement est mis aux [enchères en temps réel](https://fr.wikipedia.org/wiki/Real_Time_Bidding) entre les annonceurs.
[Vidéo de Monsieur Bidouille&nbsp;: Internet et le climat, ça tourne mal&#8239;?](https://video.monsieurbidouille.fr/w/oR4oaZT8pNhKyoQNQiHZiR) (quel est l'impact environnemental d'Internet, et d'où vient-il réellement&#8239;?)
## Biais et discriminations
La surveillance de masse générant d'énormes quantités de données, des algorithmes sont utilisés pour déterminer les événements et individus plus ou moins suspects. Ces algorithmes doivent être paramétrés, qu'ils soient un [calcul de score effectué par la CAF](https://www.laquadrature.net/2022/10/19/caf-le-numerique-au-service-de-lexclusion-et-du-harcelement-des-plus-precaires/) pour décider qui doit subir un contrôle, ou une [vidéosurveillance "intelligente" dans un lieu public](https://affordance.framasoft.org/2018/12/speculation-faciale/). Ils sont toujours plus ou moins biaisés, en général en défaveur des minorités (personnes racisées, pauvres, et dans le cas de la CAF, les mères seules). Cela ne fait qu'amplifier les préjugés déjà présents chez les autorités, et renforce une norme sociale qu'on ne discute plus, puisque l'Algorithme est souvent présenté à tort comme neutre et objectif. Il n'est pourtant qu'un outil, qui comme tout outil aussi neutre qu'on le veuille, reflète dans son utilisation l'idéologie de ses concepteurs.
## Et si l'extrême-droite arrivait au pouvoir ?
Si un dirigeant fasciste arrivait au pouvoir, il lui serait aisé de déterminer les personnes trop incompatibles avec son idéologie, en utilisant les données déjà accumulées par l'état et par les entreprises (qui collaboreraient volontiers). Vous avez un jour participé à une manifestation un peu trop de gauche, vous avez aidé une personne migrante sans papiers il y a des années, vous avez dit quelque chose d'hérétique dont vous ne vous souvenez même pas ? Un datacenter, quelque part, s'en souvient.
Si un dirigeant fasciste arrivait au pouvoir, il lui serait aisé de déterminer les personnes trop incompatibles avec son idéologie, en utilisant les données déjà accumulées par l'état et par les entreprises (qui collaboreraient volontiers). Vous avez un jour participé à une manifestation un peu trop de gauche, vous avez aidé une personne migrante sans papiers il y a des années, vous avez dit quelque chose d'hérétique dont vous ne vous souvenez même pas ? Un datacenter, quelque part, s'en souvient, et nul ne peut garantir l'application de votre droit à l'oubli.
## Effets de la surveillance sur le comportement
## Effet de groupe et victimes directes
Agit-on de la même manière quand on sait être surveillé ? Peut-être s'empêche-t-on de faire des choses un peu trop déviantes, ou même d'y penser. <a href="https://www.bbc.com/worklife/article/20230127-how-worker-surveillance-is-backfiring-on-employers" target="_blank">La surveillance au travail se révèle source d'anxiété chez les travailleureuses, et diminue même la productivité.</a>
La vidéosurveillance est aussi utilisée pour entraîner des IA à détecter les "comportements anormaux". Le but est que le système automatique puisse prévenir la police, par exemple. Cela risque de créer une sorte de nouveau délit de faciès, en rendant suspect tout ce qui dévie un peu trop d'un comportement ou d'une apparence "normal".
## Effet de groupe
Un système de communication n'a d'intérêt que s'il est partagé. Si votre entourage utilise telle plateforme centralisée de messagerie, vous êtes fortement encouragé·e voire forcé·e à y adhérer pour éviter de vous isoler. Les grandes plateformes profitent de cet effet de groupe et de son inertie qui limite le développement des plateformes alternatives.
Un moyen de lutte pour la diversification des plateformes de communication est l'obligation à l'interopérabilité. Par exemple, un grand média social devrait accepter que ses utilisateurices interagissent avec des gens qui ont seulement un compte sur une plateforme concurrente quelle qu'elle soit. Bien entendu, les géants préfèrent garder leur clientèle captive.
## Victimes directes
Pour la plupart d'entre nous, ces arguments peuvent sembler abstraits et manquer de pertinence au niveau individuel. Cependant il existe des cas où les effets de la surveillance sont non seulement systémiques mais bien visibles et ciblés.
Certaines personnes ont un besoin accru de protéger leur vie privée face aux autorités. On prendra les exemples de [femmes cherchant à avorter dans un pays qui l'interdit (USA)](https://www.theguardian.com/us-news/2022/aug/10/facebook-user-data-abortion-nebraska-police), de journalistes d'investigation et de lanceurs d'alerte, des LGBTQ en Russie ou en Turquie... Même avec une grande rigueur sur leur usage personnel de l'informatique, ces personnes sont exposées involontairement par les autres, et victimes de l'effet de groupe. C'est à nous de leur fournir un environnement sûr, à la manière d'une couverture vaccinale qui protège non seulement les personnes vaccinées, mais aussi une minorité à risque.
## Verrouillage
## Il n'est jamais trop tard
## Ressources utiles
Quelques ressources transversales et sources récurrentes de cet article&nbsp;:
* [La Quadrature du Net](https://www.laquadrature.net/), association contre la surveillance et la censure.
* [April](https://april.org/), association pour les libertés informatiques.
* [Affordance](https://affordance.framasoft.org/), le blog d'un maître de conférences en sciences de l'information.
* [Pluralistic](https://pluralistic.net/), le blog de Cory Doctorow entre autres sur les dérives du capitalisme.
* [Next](https://next.ink/) (anciennement NextInpact), journal indépendant sur l'informatique.
* [Sebsauvage&nbsp;: raisons techniques, économiques et politiques (passées et présentes) de ne plus faire confiance à Microsoft.](https://sebsauvage.net/wiki/doku.php?id=microsoft)

39
content/blog/tabs.md Normal file
View file

@ -0,0 +1,39 @@
+++
title = "Why using tabs for indentation"
date = 2024-05-12
description = "I use tabs for indentation, here are the reasons."
insert_anchor_links = "left"
draft = true
[taxonomies]
tags = ["programming"]
+++
I always indent with tabs when given the choice. Here is why.
If you know other pro-space arguments, I'm interested.
## Pros
Advantages to use tabs, and refutations of some pro-space arguments.
### Tab width is what you want
### A code that looks the same everywhere may not be what you want
### Git is smart enough
to show spaces in red when they are followed by a tab
### Moving through indentations with the keyboard
### Invisible character rendering
### No need to configure your editor
### Distinguish indentation and alignment
### Formatters can be useful
## Cons
### Copying tabs from terminal

View file

@ -1,7 +1,7 @@
{%macro katex() %}
<link rel="stylesheet" href="/katex/katex.min.css"/>
<script defer src="/katex/katex.min.js"></script>
<script defer src="/katex/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
<script defer src="/katex/contrib/auto-render.min.js" onload="renderMathInElement(document.body, {delimiters: [{left:'$$',right:'$$',display:true},{left:'$',right:'$',display:false}]});"></script>
{%endmacro katex %}
{%macro langurl() %}{% if lang != "en" %}{{lang}}/{% endif %}{%endmacro langurl %}