Auteur/autrice : Éric

  • La moitié de l’abon­ne­ment de trans­port — deux ans après

    Le pire est le « on rembourse la moitié de votre abon­­ne­­ment de trans­­port ». Presque élimi­­na­­toire. Si respec­­ter le mini­­mum légal est vu comme un avan­­tage propre à être mentionné, je ne suis pas certain d’avoir envie d’en­­tendre le reste. […]

    La moitié de l’abon­ne­ment de trans­port

    Ce billet a deux ans et je n’ai pas grand chose à y chan­ger. C’est lui qui guide mes offres aujourd’­hui, le fait de décrire le travail et le contexte plutôt qu’une liste de tech­nos.

    Le milieu a lui un peu changé. On trouve toujours ses mêmes recru­teurs qui cherchent « un déve­lop­peur pour un éditeur logi­ciel » mais qui refusent de te dire qui avant de te faire dérou­ler ton CV, et qui à la place se vantent d’avoir un baby­foot une mutuelle ou une sortie annuelle.

    Les espaces commu­nau­taires commencent par contre à mettre des règles un peu plus strictes. Préci­sion obli­ga­toire du salaire, de l’en­tre­prise, de la présence ou non de télé­tra­vail, etc.

    On a aussi quelques recru­teurs qui fonc­tionnent diffé­rem­ment. J’ai au moins Shir­ley Almosni Chiche en tête. On y voit des annonces claires avec des noms et des chiffres, sans détours, du détail sur le fonc­tion­ne­ment interne des équipes et sur les condi­tions de travail. J’ai­me­rais bien que d’autres prennent exemple.

    C’est proba­ble­ment elle qui m’a décidé à mettre moi aussi en avant le nom de l’en­tre­prise d’ac­cueil. Je suis agacé quand les autres ne le font pas, il est normal que j’en tire moi-même les consé­quences. Bref, merci.


    J’ai juste­ment une propo­si­tion en cours un peu hors des habi­tudes, avec un « bring your own team ». Profi­tez-en !

  • Quelques chiffres sur l’hé­ri­tage

    Dès que je parle d’hé­ri­tage on me parle de soli­da­rité inter­gé­né­ra­tion­nelle. J’en parle souvent avec des gens qui gagnent bien leur vie et ils ont des préju­gés large­ment discu­tables de ce qu’est la réalité de l’hé­ri­tage.

    Voici quelques chiffres extraits de la dernière étude patri­moine et trans­mis­sion inter­gé­né­ra­tion­nelle de l’INSEE (2015) :

    40 % des sommes héri­tées sont infé­rieures à 8 000 € ; 66 % sont infé­rieures à 30 000 € ; moins de 13 % dépassent 100 000 €

    Première conclu­sion : Les héri­tages réels sont bien loin des fantasmes. Quand on discute d’un héri­tage évalué à plus de 100 000 € on parle déjà de gens extrê­me­ment privi­lé­giés.


    Le second fantasme est sur la soli­da­rité inter­gé­né­ra­tion­nelle.

    Coup de théâtre :

    78 % des héri­tiers ont plus de 50 ans. Ils sont même 30 % à avoir plus de 70 ans.

    Sachant que nous avons les retrai­tés parmi les plus aisés d’Eu­rope, autant dire qu’on est très très loin de la vision d’Épi­nal où on aide les jeunes géné­ra­tions à partir avec le fruit du labeur de notre vie.

    En pratique non seule­ment on hérite peu, mais en plus ceux qui héritent le font quand ils n’en ont plus besoin, à la fin de leur vie.


    Je sais, vous allez me dire que quand même, les plus âgés sont parfois dans une misère incroyable.

    L’INSEE nous donne juste­ment des décou­pages en fonc­tion des caté­go­ries socio-profes­sion­nelles ou du niveau de patri­moine des héri­tiers.

    Près de 70 % de mes 13 % rece­vant au moins 100 000 € appar­tiennent déjà aux trois déciles les plus favo­ri­sés en terme de patri­moine.

    Le chiffre vient de recou­pe­ment de répar­ti­tions par déciles n’est pas précis mais l’ordre de gran­deur est bon.

    Surpris ? moi pas. Tout va dans le même sens : Les héri­tages béné­fi­cient prin­ci­pa­le­ment aux plus favo­ri­sés. On ne parle pas de soli­da­rité inter­gé­né­ra­tion­nelle mais de perpé­tua­tion de la richesse par droit de nais­sance.

    Mieux. La même étude nous dit que ce sont aussi ces caté­go­ries aisées qui ont déjà reçu des dons inter­gé­né­ra­tion­nels impor­tants par le passé au cours de leur vie (logique, l’op­ti­mi­sa­tion fiscale est l’apa­nage des plus riches). Ils ont donc encore moins besoin de cet héri­tage.

    Les plus pauvres, eux, reçoivent les montants les plus faibles.

    Les deux premiers déciles en terme de patri­moine reçoivent à 67 % moins de 8 000 €. Moins de 20 % de ces ménages ont reçu un des héri­tages à plus de 100 000 €.

    Inver­se­ment les deux déciles les plus favo­ri­sés en terme de patri­moine reçoivent à plus de 30 % des héri­tages de plus de 100 000 €.


    Bref, impos­sible de faire un tel croi­se­ment de façon fiable mais les jeunes ménages de moins de 30 ans avec un patri­moine infé­rieur à la médiane française et rece­vant un héri­tage suffi­sant pour avoir des droits de succes­sion à payer… doivent proba­ble­ment se comp­ter sur les doigts de la main.

    Juste et légi­time l’hé­ri­tage ? Lais­sez-moi rire un coup.

    En ligne directe, il faut héri­ter de plus de 1.8 millions d’eu­ros par personne pour être fisca­lisé à la même hauteur que les reve­nus du capi­tal (flat tax dite « Macron » à 30%) et ça restera dans tous les cas bien en deçà de l’im­pôt sur les reve­nus du travail.

    Ce qui est formi­dable c’est que malgré tout ça on conti­nue à moins fisca­li­ser l’hé­ri­tage que les reve­nus.

    Mise à jour : J’ai écrit depuis un ajout du point de vue des dona­teurs, c’est du même acabit.

  • Je recrute une équipe

    Parfois j’aide au recru­te­ment pour des amis ou des boites que j’ap­pré­cie. Ici c’est pour rejoindre un respon­sable produit avec qui j’ai travaillé par le passé et que j’ap­pré­cie je cautionne.

    Cette annonce ci j’y tiens aussi parce qu’elle me permet de faire ce que je n’ai pas vu ailleurs : Recru­ter une équipe et des gens qui se connaissent déjà.

    Bref, je recrute 3 déve­lop­peurs ou déve­lop­peuses, dont un ou une lead.

    Vous pouvez évide­ment venir seul·e mais profi­tez-en si vous avez envie de postu­ler ensemble avec des anciens collègues avec qui vous vous enten­dez bien, ou des amis avec qui vous parlez de travailler ensemble un jour depuis long­temps. C’est l’oc­ca­sion.

    Le second point dans la créa­tion d’une équipe c’est que c’est à vous de mettre en place les orga­ni­sa­tions et l’ADN qui vous semble perti­nents. Il y a une feuille blanche et si vous savez ce que vous voulez et pourquoi, on vous écou­tera. Profi­tez-en.


    📑 : La refonte complète d’un outil de GED exis­tant qui a des utili­sa­teurs dans le public et dans le privé.

    🗺 : Lyon sud, sur les trans­ports en commun, mais une équipe en télé­tra­vail complet hors de Lyon est aussi envi­sa­geable.

    🏢 : Une PME de 70 personnes, établie depuis des années sur son domaine.

    👥 : Pour consti­tuer une équipe de 5 à 7 avec un respon­sable produit (personne super avec qui j’ai déjà travaillé), une respon­sable UX, et poten­tiel­le­ment un alter­nant dans le futur.

    🔧 : Serveur d’API en PHP – Symfony. Appli­ca­tion cliente en Types­cript – Angu­lar. Héber­ge­ment Azure.

    💶 : C’est toujours évidem­ment adap­table suivant qui candi­date mais les four­chettes imagi­nées sont respec­ti­ve­ment de 35 à 45 k€ pour un·e dev confir­mé·e, envi­ron 3 ans d’ex­pé­rience, et 45 à 55 k€ pour un·e lead.

    La descrip­tion plus complète est sur E3D5.

    Vous m’ai­de­riez en faisant circu­ler autour de vous (je valo­rise forte­ment les personnes dans mon réseau de confiance ou recom­man­dées par quelqu’un de mon réseau de confiance).

    N’hé­si­tez pas à me contac­ter pour plus d’in­for­ma­tions.

  • Tous mes impôts

    Parfois le sort s’acharne. Sur une période assez courte j’ai vu trois cancers lourds dans mon entou­rage plus ou moins proche. Ce sont des choses qui brassent.

    Je peux vous dire qu’à ce moment là, savoir que deux sur les trois aient dû lancer des cagnottes en ligne pour payer leurs soins, pour juste conti­nuer à vivre, ça fait réflé­chir.

    Ce n’était pas le cas du troi­sième : Savoir que mes proches avec un cancer n’ont pas besoin de lancer un appel à dons pour payer leurs soins, ça justi­fie toutes mes coti­sa­tions sociales, tous mes impôts.

    J’irai plus loin : l’hô­pi­tal gratuit, l’école gratuite, les secours gratuits, les soins courants acces­sibles, le RSA et le mini­mum vieillesse, malgré toutes les critiques qu’on peut en faire, tout ça vaut vrai­ment large­ment tous mes impôts et toutes mes coti­sa­tions sociales.

    C’est vital. Litté­ra­le­ment.

    Avoir dans ses proches quelques personnes qui n’ont pas ces chances, qui en souffrent et dont la vie bascule, ça remet vite les pendules à l’heure. Ensuite on n’ou­blie pas. J’en pleure presque en écri­vant.

  • Sécu­ri­ser les nouveaux mots de passe

    J’ai récem­ment parlé complexité de mot de passe mais en réalité le problème est souvent ailleurs. La taille et la complexité n’ont aucune impor­tance si quelqu’un peut devi­ner quel mot de passe vous utili­sez après juste quelques essais.

    Jean réuti­lise son mot de passe

    Je connais l’email de Jean ? Il me suffit de regar­der quels mots de passe il a utilisé sur d’autres sites, et de les tester un à un.

    La plupart des sites ont un problème de sécu­rité un jour ou l’autre. Souvent les données extraites se retrouvent publiques d’une façon ou d’une autre. Parfois on y trouve des mots de passe en clair ou mal proté­gés. Il suffit de piocher dedans.

    Testez Have I Been Pwned, vous verrez que des tiers peuvent déjà connaitre plusieurs de vos mots de passe.

    Paul n’a aucune imagi­na­tion

    Je ne connais pas l’email de Paul ? Qu’im­porte. Je peux déjà tester les mots de passe les plus courants, et les varia­tions de ceux-ci.

    Ne vous croyez pas origi­nal. Même ajou­ter une date, un chiffre, un symbole, chan­ger une lettre, inver­ser le mot de passe, quelqu’un l’a déjà fait. En quelques milliers de combi­nai­sons j’ai déjà énor­mé­ment de mots de passe habi­tuels.

    Même les méthodes « choi­sir x mots du diction­naire » sont vulné­rables si c’est l’uti­li­sa­teur qui choi­sit ses mots dans sa tête. Le plus souvent on tombera dans quelques centaines de mots, toujours les mêmes.

    Par le passé j’ai utilisé un person­nage de litté­ra­ture, auquel j’ai ajouté un chiffre et un symbole. Croyez-le ou non, on trouve plus d’une dizaine d’oc­cur­rences sur Have I Been Pwned.

    Have I Been Pwned

    J’ai cité Have I Been Pwned. Ils mettent à dispo­si­tion une base de tous les mots de passe qui ont publique­ment fuité.

    Si vous lais­sez des tiers saisir des mots de passe sur votre service, vous devriez télé­char­ger leur base, puis cher­cher dedans à chaque fois qu’un de vos utili­sa­teur saisit un nouveau mot de passe. Le mot de passe est déjà dedans ?

    Alors il y a un risque de sécu­rité et vous devriez en aler­ter l’uti­li­sa­teur.

    Si vous voulez aller plus loin, tentez quelques varia­tions simples : Si le mot de passe se termine par un nombre, essayez les deux ou trois nombres précé­dents. Si le mot de passe à des symboles ou chiffres en début ou fin, reti­re­rez-les et testez le mot de passe résul­tant.

    Tout ça ne vous coûte quasi­ment rien si ce n’est un peu de stockage et le télé­char­ge­ment de la nouvelle base Have I Been Pwned de temps en temps, mais ça va éviter bien des risques à vos utili­sa­teurs.

  • Assu­mer ses choix

    J’avoue avoir été très agacé dans des discus­sions récentes par la fréquence de la réponse « je ne suis pas respon­sable, c’est un tiers qui m’a demandé de le faire ».

    Je ne comprends pas comment je peux trou­ver chez des ingé­nieurs, déve­lop­peurs et travailleurs du web au sens large ce que je n’ac­cep­te­rais pas chez mon fils du haut de ses 7 ans.

    C’est trop faci­le…


    Il est vrai­ment temps que notre corps de métier arrête de se croire étran­ger et sans respon­sa­bi­lité par rapport au monde.


    Ne pas remon­ter un problème ou un désac­cord, ne pas se battre est un choix. Parfois nous n’ob­te­nons pas gain de cause, mais parfois ça fonc­tionne aussi.

    Et si ça ne fonc­tionne jamais, ou rare­ment, ou pas sur ce qui est impor­tant, rester et conti­nuer quand même est un choix. C’est d’au­tant plus vrai dans nos métiers de travailleurs du web. D’autres profes­sions n’ont pas ce confort.

    Vous n’avez pas le couteau sous la gorge.

    Ces choix nous en sommes respon­sables, quand bien même ils sont contraints et diffi­ciles à prendre. Bien­ve­nue dans la vie, on n’a pas toujours ce qu’on souhaite.


    Je ne vous dis surtout pas de démis­sion­ner dès qu’il y a une source d’in­sa­tis­fac­tion. Je ne vous dis pas de faire blocage sur tout au point d’en deve­nir toxique. Vrai­ment, ne faites pas ça.

    Nous faisons tous des compro­mis. Nous avons tous nos prio­ri­tés et nos combats, pas toujours les mêmes.

    Faites ces compro­mis. Faites vos choix mais assu­mez les. Ce à quoi vous consen­tez, par choix, vous en êtes respon­sables. Ni plus, ni moins.


    Assu­mer ses choix ce n’est pas entrer dans une culpa­bi­li­sa­tion perma­nente.

    Il s’agit de prendre conscience de son impact, de ne pas s’en déres­pon­sa­bi­li­ser, et peut-être en consé­quence de faire d’autres choix à l’ave­nir.

    (je n’ai jamais dit que c’était facile)

  • Éthique et poli­tique dans les licences logi­cielles

    Je conti­nue mes réflexions sur comment nous, infor­ma­ti­ciens, parti­ci­pons à la poli­tique par nos actions.

    Il ne tient qu’à nous de refu­ser de parti­ci­per à des projets et des orga­ni­sa­tions du mauvais côté de la ligne morale. Contrai­re­ment à d’autres profes­sions, nous avons le choix. Utili­sons-le.


    Plus que le choix, nous avons un pouvoir, énorme. C’est un des appren­tis­sages des logi­ciels libres. Nous avons quand même réussi que les plus grandes corpo­ra­tions se sentent obli­gées de contri­buer, même de façon mineure, à des logi­ciels communs profi­tant à tous. Nous avons réussi à en faire un argu­ment dans les proces­sus de recru­te­ment.

    Imagi­nez, le temple du capi­ta­lisme, les méga star­tup techno qui contrôlent jusque notre vie privée, obli­gées de fait de se plier à contri­buer au domaine commun. Quel pouvoir !


    Nous avons utilisé ce pouvoir pour impo­ser le libre accès au logi­ciel et au code source, en nous moquant de qui l’uti­lise et pour faire quoi, comme si cela ne nous concer­nait pas.

    Que nous importe que l’im­pri­mante gère des listes de personnes à abattre tant que nous avons accès au code source du pilote pour en corri­ger les défauts. Je ne peux m’exo­né­rer des consé­quences de ce que je créé et de ce que je diffuse.

    Avec tout le respect que j’ai pour l’énorme œuvre du logi­ciel libre, j’ai l’im­pres­sion que nous avons partiel­le­ment fait fausse route, privi­lé­giant une vision liber­taire amorale plutôt qu’as­su­mer les consé­quences de ce que nous créons.

    Pire, en faisant le logi­ciel libre comme l’al­pha et l’oméga de toute notion poli­tique et éthique dans le logi­ciel, nous nous sommes reti­rés toute capa­cité à inter­ve­nir sur d’autre critères.


    Je repense à la licence JSON qui avait fait grand bruit par le passé.

    The Soft­ware shall be used for Good, not Evil.

    https://www.json.org/license.html

    Cette notion m’at­tire, aussi floue et aussi problé­ma­tique soit-elle.

    Oui, cette licence n’est pas libre. La licence GPL serait incom­pa­tible avec icelle. Qu’im­porte : L’ac­cès au logi­ciel et à son code source ne me semble pas une valeur si abso­lue qu’il me faille aban­don­ner tout recul sur ce qui est fait avec le logi­ciel.

    Je ne suis pas seul, en paral­lèle d’autres ont mis à jour la licence Hippo­cra­tic, qui va globa­le­ment dans le même sens.

    The soft­ware may not be used by indi­vi­duals, corpo­ra­tions, govern­ments, or other groups for systems or acti­vi­ties that acti­vely and knowin­gly endan­ger, harm, or other­wise threa­ten the physi­cal, mental, econo­mic, or gene­ral well-being of indi­vi­duals or groups in viola­tion of the United Nations Univer­sal Decla­ra­tion of Human Rights

    https://first­do­no­harm.dev/version/1/1/license.html

    J’ajou­te­rais proba­ble­ment la conven­tion de Genève, celle des droits de l’en­fant, peut-être un texte de portée simi­laire parlant d’éco­lo­gie (lequel ?), un lié à la vie privée, etc.

    Ça reste flou mais ça permet de tout de même donner un cadre, surtout si on ajoute que l’in­ter­pré­ta­tion à donner à ces textes ne doit pas être moins stricte que celle de l’Eu­rope occi­den­tale de notre décen­nie.

    Peu importe en réalité. Il s’agit de donner une inten­tion. Je n’ai pas cette préten­tion mais si l’ar­mée ou une corpo­ra­tion sans éthique veut réuti­li­ser mon code, ce n’est pas la licence qui les en empê­chera, flou ou pas.

    Je ne prétends certai­ne­ment pas aller devant au tribu­nal. Ma seule arme est l’op­probre publique et le flou n’est ici pas un problème. La préci­sion juri­dique n’est pas un besoin. Au contraire, rester au niveau de l’in­ten­tion permet d’évi­ter les pirouettes en jouant sur les mots ou en trou­vant les failles. Quelque part la formu­la­tion de la licence JSON a ma préfé­rence, juste­ment pour ça.

    Ça vous parait fou, irréa­liste, inap­pli­cable, mais combien d’entre nous auraient trou­vés la GPL raison­nable, réaliste et appli­cable à ses débuts ? Les débats n’ont d’ailleurs pas manqué.


    Le seul vrai problème, à mon niveau, est bien celui du logi­ciel libre, et plus parti­cu­liè­re­ment de la GPL, incom­pa­tible avec toute autre licence qui fait des choix diffé­rents. Or la GPL est incon­tour­nable dans de nombreuses situa­tions, dans de nombreux contextes.

    Une solu­tion pour­rait être de propo­ser une double licence : une licence basée sur l’éthique, tout en prévoyant une excep­tion qui permet de passer sur une AGPL au besoin.

  • Déve­lop­peurs, vous devriez avoir honte — Règles de mots de passe

    Je rage à chaque fois que je saisis un mot de passe fort et que le site m’en­voie bouler parce que je n’ai pas de carac­tère autre qu’al­pha­nu­mé­rique.

    Essayons quelque chose d’un peu plus smart pour évaluer la robus­tesse d’un mot de passe

    Déve­lop­peurs, vous savez proba­ble­ment tout ça, mais conti­nuez à lire parce que la fin vous est adres­sée

    Si j’en crois Hacker­noon on peut calcu­ler envi­ron 800 millions de SHA256 par seconde sur un maté­riel qui coûte 0,82 € par heure sur AWS. Ça fait 3,5 10^12 combi­nai­sons par euro.

    Traduit autre­ment, voici le nombre de combi­nai­sons qu’on peut tester, et le même chiffre écrit en puis­sance de deux (arrondi à la déci­male infé­rieure) :

    1 €3,5 × 10^122^41,6
    10 €3,5 × 10^132^44,9
    100 €3,5 × 10^142^48,3
    1 000 €3,5 × 10^152^51,6
    10 000 €3,5 × 10^162^54,9
    100 000 €3,5 × 10^172^58,2

    Quand on vous parle ailleurs de bits d’en­tro­pie, ça corres­pond à ces puis­sances de 2. Avec 1 000 € on peut tester toutes les combi­nai­sons de SHA 256 d’une chaîne aléa­toire de 51 bits.

    Ok, mais ça me dit quoi ? Une lettre c’est 26 combi­nai­sons, envi­ron 4,7 bits. Si vous ajou­tez les majus­cules vous doublez le nombre de combi­nai­sons et vous ajou­tez 1 bit. Si vous ajou­tez les chiffres et quelques carac­tères spéciaux on arrive à à peine plus de 6 bits.

    Petit calcul, en utili­sant juste les 26 lettres de l’al­pha­bet, on peut tester toutes les combi­nai­sons de 8 carac­tères pour moins de 1 €. Vu qu’on aura de bonnes chances de tomber dessus avant d’avoir testé toutes les combi­nai­sons, autant dire que même avec 9 carac­tères, votre mot de passe ne vaut pas plus de 1 €.

    Combien faut-il de carac­tères pour se trou­ver rela­ti­ve­ment à l’abri (c’est à dire que la somme inves­tie ne peut pas tester plus de 1% des combi­nai­sons) ? Ça va dépendre de ce que vous y mettez comme types de carac­tères. J’ai fait les calculs pour vous :

    a-za-z
    A-Z
    a-z
    A-Z
    0–9
    a-z
    A-Z
    0–9
    +-%
    1 €11998
    10 €111099
    100 €12101010
    1 000 €13111010
    10 000 €14111111
    100 000 €14121111

    Et là magie : 8 carac­tères, même avec des chiffres, des majus­cules et des symboles, ça résiste tout juste à 1 €. Et encore, là c’est en partant du prin­cipe que vous choi­sis­sez réel­le­ment les carac­tères de façon aléa­toire, pas que vous ajou­tez juste un symbole à la fin ou que vous trans­for­mez un E en 3.

    Vous voulez que votre mot de passe résiste à un voisin malveillant prêt à mettre plus de 10 € sur la table ? Prévoyez au moins 10 carac­tères.

    Et là, seconde magie : Si vous mettez 10 carac­tères on se moque de savoir si vous y avez mis des chiffres ou symboles. La longueur a bien plus d’im­por­tance que l’éven­tail de carac­tères utilisé.


    Main­te­nant que vous savez ça, tous les sites qui vous imposent au moins une majus­cule et un symbole mais qui vous laissent ne mettre que 8 carac­tères : Poubelle.

    Je ne suis pas en train de vous apprendre à faire un mot de passe fort. Vous devriez utili­ser un gestion­naire de mots de passe et le géné­ra­teur auto­ma­tique qui y est inclus.

    Je suis en train d’es­sayer de rendre honteux tous les déve­lop­peurs qui acceptent de mettre ces règles à la con sur les sites web dont ils ont la charge : Vous impo­sez des mots de passe qui sont à la fois imbi­tables et peu robustes.


    Vous voulez faire mieux ?

    Regar­dez dans quelle colonne est l’uti­li­sa­teur en fonc­tion des carac­tères qu’il a déjà tapé et donnez-lui un indi­ca­teur en fonc­tion de la longueur de son mot de passe.

    • Mot de passe refusé s’il est sur « Have I Been Pwned? »
    • Moins de 10 € ? mot de passe insuf­fi­sant, refusé
    • Moins de 100 € ? mot de passe faible, couleur rouge
    • Moins de 1 000 € ? mot de passe moyen, couleur orange
    • Mot de passe sûr, couleur verte, à partir de 10 000 €

    Si vous gérez un site central, par exemple un réseau social public, vous pouvez proba­ble­ment rele­ver tout ça d’un cran.

    Si ça donne accès à des données sensibles, à des possi­bi­li­tés d’achat, à la boite e-mail ou à l’opé­ra­teur télé­pho­nique, mieux vaux rele­ver tout ça de deux crans.

    Le tout prend proba­ble­ment moins de 10 lignes en javas­cript. C’est une honte que vous accep­tiez encore d’im­plé­men­ter des règles à la con « au moins une majus­cule, un chiffre et un symbole, voici les symboles auto­ri­sés […] ».

    Déve­lop­peurs, vous devriez avoir honte.

  • Dis tonton, comment ça fonc­tionne la sécu­rité d’un gestion­naire de mots de passe ? — Intro­duc­tion cryp­to­gra­phique

    Il y a peut-être des erreurs, proba­ble­ment des mauvais termes, certai­ne­ment des fautes ou mauvaises formu­la­tions. Vous êtes bien­ve­nus à parti­ci­per en propo­sant des correc­tions.


    L’idée de base : Tous les mots de passe sont chif­frés. Personne d’autre que vous ne peut les relire sans votre accord. Ni le serveur sur lequel vous les envoyez, ni quelqu’un qui a accès au disque où vous les stockez, ni quelqu’un qui a ponc­tuel­le­ment accès à votre poste de travail.

    Chif­frer c’est simple.

    Pour chif­frer on a le choix. On va sépa­rer deux caté­go­ries prin­ci­pales de chif­fre­ment : les chif­fre­ments symé­triques et les asymé­triques.

    La plupart des gestion­naires de mots de passe ont choisi un chif­fre­ment symé­trique (une seule clef secrète qui sert à la fois à chif­frer et à déchif­frer). C’est simple à gérer, rapide à l’exé­cu­tion, et il n’y a pas besoin de clef de grande taille. Tous ceux que j’ai vu utilisent de l’AES avec une clef de 256 bits. Au moins pour Bitwar­den et Keepass, c’est le mode CBC, et un contrôle HMAC avec SHA256 comme fonc­tion de hachage (mais vous pouvez igno­rer tous ces détails s’ils ne vous disent rien).

    J’ai dit « la plupart des gestion­naires de mots de passe ». Un projet au moins a fait un choix diffé­rent. L’ou­til pass utilise un chif­fre­ment asymé­trique (une clef publique et une clef privée, l’une sert à chif­frer et l’autre à déchif­frer). Plus exac­te­ment, ils utilisent l’ou­til GnuPG. Même si le choix de la clef est libre, par défaut on y utilise géné­ra­le­ment une clef RSA de 2048 bits. Pass a fait ce choix en consi­dé­rant le partage de mots de passes comme la fonc­tion­na­lité prin­ci­pale. On verra pourquoi quand on parlera partage. Entre temps on va se concen­trer sur ceux qui font du chif­fre­ment symé­trique.

    Dans les deux cas, on est là dans de l’ul­tra-stan­dard au niveau cryp­to­gra­phie. Je serais étonné de voir autre chose ailleurs (et c’est une bonne chose).

    Une clef ? quelle clef ?

    Ok, nos mots de passe sont chif­frés mais où est la clef ?

    Impos­sible de deman­der à l’uti­li­sa­teur de se rappe­ler une clef de 256 bits. Ce serait plus de 40 signes entre minus­cules, majus­cules, chiffres et carac­tères spéciaux. Même avec une très bonne mémoire, ce serait ingé­rable à l’usage.

    Stocker la clef de chif­fre­ment en clair sur le disque n’est pas beau­coup mieux. Ce serait comme avoir coffre-fort haute sécu­rité dont on cache la clef sous le paillas­son.

    Ce qu’on demande à l’uti­li­sa­teur c’est un mot de passe prin­ci­pal. Vu qu’il va permettre de déchif­frer tous les autres, on va l’ap­pe­ler « mot de passe maître ». Il faut qu’il soit assez long et complexe pour éviter qu’un tiers ne puisse le devi­ner ou le trou­ver en essayant toutes les combi­nai­sons une à une, mais assez court pour pouvoir s’en rappe­ler et le taper sans erreur.

    Le mot de passe maître ne chiffre rien lui-même. Accom­pa­gné d’autres para­mètres, il sert à calcu­ler une clef de taille suffi­sante qui, elle, servira au chif­fre­ment décrit plus haut et qu’on va appe­ler « clef maîtresse ». La fonc­tion qui fait cette opéra­tion est dite fonc­tion de déri­va­tion de clef.

    Bitwar­den utilise le très clas­sique PBKDF2 avec un hachage SHA256. Pour faire simple on prend le mot de passe, on le mélange à une chaîne aléa­toire (stockée quelque part pour réuti­li­ser la même à chaque fois), et on opère la fonc­tion de hachage prévue. Norma­le­ment ça suffit pour avoir un résul­tat consi­déré comme rela­ti­ve­ment aléa­toire et impos­sible à remon­ter en sens inverse.

    En pratique on cherche aussi à ralen­tir quelqu’un qui cher­che­rait à tester tous les mots de passe possibles un à un. Pour ça on va simple­ment répé­ter l’opé­ra­tion précé­dente un certain nombre de fois. Chaque itéra­tion prend en entrée le résul­tat de l’étape précé­dente. Si je fais 10 itéra­tions, il faudra 10 fois plus de temps à un attaquant pour tester toutes les combi­nai­sons. Ici on consi­dère le résul­tat comme assez confor­table à partir de 100.000 itéra­tions.

    Keepass utilise une fonc­tion plus récente et consi­dé­rée comme plus robuste aux possi­bi­li­tés des maté­riels actuels : Argon2.

    Là aussi tout est très clas­sique. Je n’ai pas regardé tous les gestion­naires de mots de passe mais je serais étonné de trou­ver autre chose que ces deux solu­tions stan­dards.

    On résume

    À l’ou­ver­ture le gestion­naire de mots de passe vous demande votre mot de passe maître. À partir de ce mot de passe et de para­mètres prédé­ter­mi­nés, il utilise une fonc­tion de déri­va­tion de clef et en sort une clef maitresse.

    C’est cette clef maitresse qui permet de chif­frer ou déchif­frer vos mots de passe. Celui qui n’a pas accès à votre clef ne pourra rien faire des mots de passe chif­frés sur le disque.

    Sécu­rité

    À l’ou­ver­ture, le gestion­naire de mot de passe vous deman­dera votre mot de passe maître que pour calcu­ler la clef maîtresse à l’aide d’une fonc­tion de déri­va­tion de clef. Une fois ceci fait, il garde la clef maîtresse en mémoire et oublie le reste. Quoi qu’il se passe, personne ne connaî­tra votre mot de passe maître.

    Le logi­ciel utilise cette clef maîtresse pour chif­frer et déchif­frer vos mots de passe. Cette clef maîtresse n’est jamais écrite nulle part. La plupart des gestion­naires de mots de passe oublie­ront volon­tai­re­ment cette clef en mémoire après un certain temps d’inac­ti­vité, ou à la mise en veille de votre poste de travail. L’idée c’est de limi­ter le risque de lais­ser qui que ce soit d’autre que vous y avoir accès. Dans ces cas là, on vous invi­tera à saisir de nouveau votre mot de passe maître pour retrou­ver la clef oubliée.

    Une fois la clef maîtresse hors de la mémoire, vous n’avez que des blocs chif­frés que personne ne pourra déchif­frer sans le mot de passe maître. Pas même vous. Si vous oubliez votre mot de passe maître, vous ne pour­rez plus jamais relire ce que vous avez stocké. Même votre ami qui s’y connait ne pourra rien pour vous.

    Ne vous lais­sez toute­fois par leur­rer. On parle sécu­rité, chif­fre­ment, complexité des fonc­tions de déri­va­tion de clef, mais en réalité tout ça a peu d’im­por­tance comparé à votre mot de passe maître. C’est un peu comme un coffre-fort : Discu­ter du diamètre des barres de renfort n’a aucun inté­rêt s’il s’ouvre avec une combi­nai­son de trois chiffres seule­ment.

    S’il est possible de trou­ver votre mot de passe avec un nombre de tenta­tives limité, tout le reste ne servira à rien. « Limité » dans ce cas, ça dépasse la centaine de milliards de combi­nai­sons. Il vaut mieux un mot de passe maître complexe avec une fonc­tion de déri­va­tion simple qu’un mot de passe maître simple avec une fonc­tion de déri­va­tion complexe.

    Chan­ger le mot de passe

    Les plus alertes d’entre vous auront remarqué que si tout est déchif­fré indi­rec­te­ment à partir du mot de passe, chan­ger le mot de passe fait perdre l’ac­cès à tout ce qui est déjà chif­fré.

    Quand vous chan­gez votre mot de passe maître, Keepass déchiffre toutes les données en mémoire, calcule la nouvelle clef et rechiffre l’in­té­gra­lité des données. Même si vous gérez une centaine de mots de passe, c’est quelque chose qui se fait rapi­de­ment sans avoir besoin de vous faire patien­ter long­temps.

    Bitwar­den utilise lui une clef inter­mé­diaire tota­le­ment aléa­toire appe­lée clef de chif­fre­ment. C’est cette clef qui sert en réalité à chif­frer et déchif­frer les données stockées. Elle est elle-même chif­frée, à partir de la clef maîtresse, et stockée à côté des données.

    On a donc un mot de passe maître qui sert à calcu­ler une clef maîtresse. La clef maîtresse sert à déchif­frer la clef de chif­fre­ment. La clef de chif­fre­ment sert à chif­frer et déchif­frer les données sur le disque.

    Lorsqu’on veut chan­ger de mot de passe il suffit de chif­frer la clef de chif­fre­ment avec la nouvelle clef maitresse. Il n’y a pas besoin de rechif­frer chaque donnée (vu que la clef de chif­fre­ment ne change pas, elle).

    L’avan­tage n’est pas tant dans le temps gagné (peu signi­fi­ca­tif) mais dans la résis­tance aux accès concur­rents : On peut avoir plusieurs clients qui lisent et écrivent en paral­lèle des données diffé­rentes dans le même trous­seau sans crainte que l’un d’eux n’uti­lise encore une ancienne clef de chif­fre­ment et envoie des données illi­sibles par les autres.

    Et juste­ment, et si je partage ?

    Avec ce qu’on a vu jusqu’à présent, si je partage des mots de passe je dois aussi parta­ger la clef de chif­fre­ment utili­sée.

    Bitwar­den permet de parta­ger des mots de passe à un groupe de plusieurs personnes (appelé « orga­ni­sa­tion »). Au lieu d’être chif­frés avec ma clef de chif­fre­ment person­nelle, ces mots de passe sont chif­frés avec une clef de chif­fre­ment dédiée à l’or­ga­ni­sa­tion.

    Le gros enjeu n’est pas dans le chif­fre­ment mais dans comment trans­mettre cette clef d’or­ga­ni­sa­tion à chaque utili­sa­teur de l’or­ga­ni­sa­tion.

    Il faut un moyen pour que l’ad­mi­nis­tra­teur de l’or­ga­ni­sa­tion chiffre la clef d’or­ga­ni­sa­tion, me l’en­voie sur le serveur d’une façon que seul moi puisse la relire.

    Jusqu’à main­te­nant c’est impos­sible parce que nous utili­sons des clefs symé­triques. C’est la même clef qui sert au chif­fre­ment et au déchif­fre­ment. Si l’ad­mi­nis­tra­teur pouvait chif­frer avec ma clef, il pour­rait aussi déchif­frer tous mes mots de passes person­nels et ça c’est inac­cep­table.

    C’est donc ici qu’on reparle des clefs asymé­triques RSA. Chacun a une clef publique (diffu­sée à tout le monde) et une clef privée (garder secrète par chaque utili­sa­teur). La clef publique sert à chif­frer. La clef privée sert à déchif­frer. Tout le monde est donc capable de chif­frer quelque chose avec ma clef publique, mais seul moi pour­rait le déchif­frer.

    La clef RSA fait 2048 bits mais ne vous lais­sez pas impres­sion­ner, ces 2048 bits sont en fait moins robustes que les 256 bits d’AES.

    L’ad­mi­nis­tra­teur de l’or­ga­ni­sa­tion récu­père ma clef publique, chiffre la clef d’or­ga­ni­sa­tion à l’aide de ma clef publique, et envoie ça sur le serveur. Quand je voudrais chif­frer ou déchif­frer quelque chose dans l’or­ga­ni­sa­tion, je récu­père la clef d’or­ga­ni­sa­tion chif­frée avec ma clef publique, je la déchiffre avec ma clef privée, et je m’en sers dans mes opéra­tions de chif­fre­ment.

    Ok, mais il va me falloir sécu­ri­ser ma clef privée. On a déjà les outils pour ça, il suffit de la chif­frer ! Bitwar­den la chiffre donc avec la clef de chif­fre­ment, celle dont on a déjà parlé plus haut.

    On a donc un mot de passe maître qui sert à calcu­ler une clef maîtresse. La clef maîtresse sert à déchif­frer la clef de chif­fre­ment. La clef de chif­fre­ment sert à déchif­frer ma clef RSA privée. La clef RSA privée sert à déchif­frer la clef d’or­ga­ni­sa­tion. La clef d’or­ga­ni­sa­tion sert à chif­frer et déchif­frer les données.

    Pfiou! Ça semble long et complexe mais tout utilise toujours le même prin­cipe et la plupart de ces opéra­tions ne servent qu’à l’ini­tia­li­sa­tion logi­ciel quand vous le déver­rouillez.

    Rappe­lez-vous, votre clef de chif­fre­ment ne change pas quand vous chan­gez votre mot de passe. Pas besoin donc de chan­ger ou rechif­frer vos clefs RSA non plus.

    Et Pass alors ?

    Pass fait le choix de sauter tout le chif­fre­ment symé­trique et de n’uti­li­ser que l’asy­mé­trique. Un dépôt contient les clefs GPG de tous les membres (clefs publiques). Chaque fois qu’un mot de passe est chif­fré, il l’est avec toutes ces clefs. Quand un membre veut lire un des mots de passe, il le déchiffre avec sa propre clef privée.

    Quand on ajoute un membre, quand on change une clef, il faut tout rechif­frer.

  • Quels crédits ?

    Je crédite peu. Je ne nomme géné­ra­le­ment pas la personne par qui j’ai obtenu une infor­ma­tion. Je nomme pas l’au­teur d’une photo­gra­phie qui n’a aucune origi­na­lité artis­tique (*). Je ne souhaite pas nommer la personne qui a numé­risé une œuvre.

    Je n’aime simple­ment pas la maxi­mi­sa­tion du droit d’au­teur qui s’in­filtre depuis des années. Je ne souhaite pas contri­buer à l’idée qu’une infor­ma­tion appar­tient à celui qui la diffuse. Je ne cautionne pas l’idée d’une pater­nité attri­buée à celui qui trans­met, tel un second droit d’au­teur s’ad­di­tion­nant au premier.

    Je n’ap­pré­cie pas plus la monnaie de célé­brité avec une course au nombre de like et de suivis sur les réseaux sociaux. Si c’est humain, et je m’y laisse parfois prendre aussi, je ne souhaite pas l’en­cou­ra­ger.


    Si quelqu’un mérite d’être mentionné, c’est par ce qu’il réalise, pour la valeur qu’il peut appor­ter à des tiers par le futur, pas parce que j’ai trouvé telle ou telle donnée chez lui.

    Parfois je remer­cie, souvent ou paral­lèle ou par un autre canal, mais je ne crédite pas. La forme, l’in­ten­tion et les desti­na­taires sont diffé­rents.

    Si je mentionne un inter­mé­diaire ou un auteur qui n’est pas source d’ori­gi­na­lité, c’est souvent que cette mention a du sens en elle-même. Ce peut être pour que cette personne puisse accé­der aux discus­sions qui s’en suivent, pour inci­ter les lecteurs à aller cher­cher un complé­ment d’in­for­ma­tion ou d’autres infor­ma­tions simi­laires à la source, ou encore pour lais­ser le lecteur juger de la crédi­bi­lité de ce que je diffuse.


    Petite note de fin de billet pour rappe­ler que si la pater­nité est une compo­sante essen­tielle du droit d’au­teur, le droit d’au­teur lui-même ne s’ap­plique ni aux infor­ma­tions ni aux créa­tions sans origi­na­lité, et ce peu importe le travail qui a été néces­saire ou la rareté de ce dont on parle.

    (*) J’en­tends la notion d’ori­gi­na­lité artis­tique au sens du droit d’au­teur. Il ne s’agit pas de juger de la valeur ou de la réus­site de l’image, ni de si elle ressemble à une autre. Il s’agit de grosso modo de savoir si c’est un œuvre intel­lec­tuelle qui dénote une inten­tion et une person­na­lité de l’au­teur, si elle a une parti­cu­la­rité créa­tive recher­chée.