bLSAG, draft tabs, update draft surveillance
This commit is contained in:
parent
ae923c65a8
commit
2402738d70
4 changed files with 212 additions and 12 deletions
122
content/blog/blsag.fr.md
Normal file
122
content/blog/blsag.fr.md
Normal 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.
|
|
@ -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
|
## 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
|
## 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 dé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 : sans IA ni vidéosurveillance).
|
||||||
|
|
||||||
|
## Pédophiles et terroristes en épouvantail
|
||||||
|
|
||||||
efficacité
|
efficacité
|
||||||
|
|
||||||
|
les enfants d'Argus
|
||||||
|
|
||||||
## Sécurité des communications
|
## Sécurité des communications
|
||||||
|
|
||||||
risque de fuite en cas de backdoor
|
risque de fuite en cas de backdoor
|
||||||
|
|
||||||
## Liberté individuelle fondamentale
|
## Liberté individuelle fondamentale
|
||||||
|
|
||||||
|
tout le monde est suspect, état de droit
|
||||||
|
|
||||||
## Démocratie
|
## Démocratie
|
||||||
|
|
||||||
centralisation de l'information => du pouvoir
|
centralisation de l'information => du pouvoir
|
||||||
|
|
||||||
## Corruption et lobbyisme
|
## 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.
|
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.
|
||||||
|
|
||||||
anticor
|
|
||||||
|
|
||||||
## Capitalisme
|
## 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.
|
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
|
## É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 : Internet et le climat, ça tourne mal ?](https://video.monsieurbidouille.fr/w/oR4oaZT8pNhKyoQNQiHZiR) (quel est l'impact environnemental d'Internet, et d'où vient-il réellement ?)
|
||||||
|
|
||||||
|
## 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 ?
|
## 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
|
## 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
|
## Verrouillage
|
||||||
|
|
||||||
|
## Il n'est jamais trop tard
|
||||||
|
|
||||||
|
## Ressources utiles
|
||||||
|
|
||||||
|
Quelques ressources transversales et sources récurrentes de cet article :
|
||||||
|
|
||||||
|
* [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 : 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
39
content/blog/tabs.md
Normal 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
|
|
@ -1,7 +1,7 @@
|
||||||
{%macro katex() %}
|
{%macro katex() %}
|
||||||
<link rel="stylesheet" href="/katex/katex.min.css"/>
|
<link rel="stylesheet" href="/katex/katex.min.css"/>
|
||||||
<script defer src="/katex/katex.min.js"></script>
|
<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 %}
|
{%endmacro katex %}
|
||||||
|
|
||||||
{%macro langurl() %}{% if lang != "en" %}{{lang}}/{% endif %}{%endmacro langurl %}
|
{%macro langurl() %}{% if lang != "en" %}{{lang}}/{% endif %}{%endmacro langurl %}
|
||||||
|
|
Loading…
Reference in a new issue