On réfléchit à notre fonctionnalité d'import/export et au futur avec le multi-utilisateurs. Si la sécurité c'est votre truc, on a besoin de vous !

community.kresus.org/t/exports

@kresus Est-ce que la raison pour laquelle Kresus utilise ce sel est documenté quelquepart ?
Dans les usages traditionnels du sel, le sel est *inclus* avec le texte haché ( en.wikipedia.org/wiki/Salt_(cr ) et le nonce avec le texte chiffré (en.wikipedia.org/wiki/Cryptogr )

@bnjbvr Pouquoi ne pas simplement utiliser une fonction de dérivation de clé « normale » comme PBKDF2 par exemple ?
Ah ben c'est justement ce qui est fait 🙂
Du coups reste la question : pourquoi ne pas mettre le sel en clair en préfixe du message chiffré ?

@bnjbvr Et d'ailleurs… Le sel devrait être tiré au hazard À CHAQUE utilisation de PBKDF pas une unique fois.

@kmk c'était une contribution externe, j'en ai aucune idée :D
Donc le sel doit être unique, mais ensuite on peut l'inclure dans le message, sans avoir besoin de le cacher ?

@kmk @bnjbvr Dans le contexte d'un export de données (JSON mais peu importe) et non d'un mot de passe, on peut s'attendre à ce que chaque export soit différent, donc qu'on ne puisse pas trop utiliser de rainbow table ou truc du style dessus ? Dans ce cas quel est l'intérêt du sel ?

@kmk @bnjbvr

Actuellement on a un JSON comme ça : `{encrypted: true, data: "encryptedjson"}`. On pourrait donc imaginer ajouter une propriété `salt` (qui nous faciliterait la vie pour déchiffrer à l'import) : `{encrypted: true, salt: 'randomthingygeneratedonexport', data: "encryptedjson"}`?

@nicofrand
1, De manière générale il est recommandé d'utiliser les outils cryptographiques selon leurs recommandations,

2, PBKDF2 nécessite un sel, donc il faut en fournir un,

3, PBKDF2 dit que le sel permet de produire beaucoups de clés à partir d'un mot de passe,

4, si on utilise toujours le même sel alors un attaquant peut pré-calculer des clés et par la suite les essayer exhaustivement et rapidement sur des textes secrets,

@bnjbvr

@kmk @bnjbvr

Merci pour cette réponse ! Mais pour le point 4, si le sel est fourni avec le texte secret, un attaquant peut toujours pré-calculer des clés ? Donc ça réduit l'intérêt ?

@nicofrand Non, il ne peut pas la PRÉ-calculer. Il est obligé d'avoir le texte secret pour calculer les clés
@bnjbvr

@kmk @bnjbvr Je ne vois pas la différence entre avoir toujours le même sel (= le connaître) et avoir le sel à disposition en clair :/…

@nicofrand C'est pas grave. Le point le plus important est le point 1 : utiliser les outils cryptographiques selon leurs recommandations. B-)
@bnjbvr

@nicofrand Mais pour comprendre l'utilité du sel, il faut penser à un attaquant qui va vouloir déchiffrer des milliers de textes chiffrés avec des mots de passe potentiellement différents. Plusieurs documents et plusieurs victimes.
@bnjbvr

@kmk @bnjbvr Oui, ce qui est un cas relativement peu probable dans notre configuration.

Merci !

@nicofrand
Peu probable… De se faire attaquer, d'avoir plusieurs documents chiffrés  ou d'avoir plusieurs utilisateurs ?

@bnjbvr

@kmk @bnjbvr D'avoir des milliers de documents chiffrés, a priori. J'imaginais donc + probable une attaque sur un seul fichier. Et si on ignore le sel, même avec un mot de passe commun, ça me paraissait + sûr qu'avec un sel connu ?

@nicofrand
Euh… Par définition un mot de passe ne doit PAS être commun. Et toujours par définition un sel est connu (par opposition à secret).
@bnjbvr

@kmk
Je suis bien d'accord pour les mots de passe mais les utilisateurs font un peu ce qu'ils veulent, à leurs dépens.

OK pour le sel, merci.
@bnjbvr

@nicofrand @kmk @bnjbvr Un sel permet justement d'assurer que 2 fois le même mot de passe seront chiffrés (hashés) différemment. Parce que toute la crypto est déterministe: même entrée => même sortie. Le sel permet d'introduire des variations. Une bonne définition lue un jour: la cryptographie nécessite des mathématiques solides et de l'aléatoire pour nous sauver.

@pmevzek
@kmk @bnjbvr

Oui mais on parle ici de fichiers qui ont peu de chances d'être identiques d'un utilisateur à un autre. Et actuellement le sel n'est connu que de l'admin de l'instance.

@nicofrand @kmk @bnjbvr Je ne connais pas le cas en particulier, je rebondissais juste sur l'assertion apparemment comme quoi les utilisateurs pouvaient utiliser les mêmes mots de passe. C'est justement pour ca que chaque mot de passe doit être stocké après application d'un algorithme (ex: PBKDF2) qui accepte en entrée une partie variable et "aléatoire" ( le sel).

@nicofrand Ne pas oublier le point numéro 1 : utiliser les mécanismes cryptographiques selon leur préconisations. Ça fait que, même si on ne comprend pas pourquoi il faut le faire, on reste à l'abris.
Mais effectivement, vous pouvez faire comme vous voulez, et ne pas suivre les recommandations. Mais du coups la sécurité s'en trouvera affaiblie.
@pmevzek @bnjbvr

@kmk
Non mais je vois pas en quoi le fait que le sel soit privé diminuerait la sécurité du même système (hormis pour plusieurs utilisateurs/ instance).

Par contre dans notre cas précis (attaque ciblant un fichier/utilisateur en particulier), le fait que ce soit publique me semble + préjudiciable.

Bref on tourne en rond, je vais m'arrêter là et on verra selon les propositions éventuelles sur le forum.

@pmevzek @bnjbvr

Show newer
Show newer

@nicofrand @kmk @bnjbvr Si dans le contexte de JSON, il y a aussi des standards pour le chiffrement. Ca ne signifie pas qu'on ne peut pas faire autrement évidemment mais ca reste des bonnes lectures de départ. C'est le système JOSE. Cf RFC 7516 et 7520 notamment.

@pmevzek et t'as pas un TLDR plutôt ? :p Tout le monde peut pas devenir expert, on cherche de l'aide, on voudrait des solutions simples et concrètes, pas deux RFC et une aura de mystère :p

@bnjbvr Ah ok, non alors, sorry, TL;DR et crypto dans la même phrase, je passe. La "bonne" alternative alors est d'utiliser la bonne bibliothèque qui fait tout bien avec les bonnes valeurs par défaut pour empêcher les développeurs pressés de faire de mauvais choix. Mais choisir la bonne bibliothèque n'est pas TL;DR non plus, il faut soit comprendre ce qui se passe en dessous soit avoir 100% confiance dans la recommendation d'un tiers. Désolé d'être intervenu alors, bonne chance dans la suite.

@bnjbvr Il doit surtout être (cryptographiquement) aléatoire

@bnjbvr Le nombre d'itérations (100000) me semble démesurément grand. Il me semble que les valeurs recommandées sont plutôt de l'ordre du millier.

Sign in to participate in the conversation
TUTUT DELIRE PARTY

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!