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é ?

@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 ?

@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 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

@nicofrand @kmk @bnjbvr Comme le dit Kim-Minh vous pouvez effectivement juste appliquer les bonnes pratiques reconnues et utilisées partout et qui fonctionnent ou décider de faire autre chose de votre côté car vous êtes sûr que c'est mieux pour une certaine définition de mieux. On tourne en rond, mais si ca peut vous aider, il est largement connu que n'importe qui est capable de définir une crypto qu'il pense incassable et parfaite. Le point important est dans le "il". Bon courage.

@pmevzek
Mais je n'ai jamais dit qu'on comptait faire un truc maison...

@kmk @bnjbvr

@nicofrand @pmevzek @kmk Je confirme, à aucun moment on ne cherche à réimplémenter notre propre crypto, c'est vraiment pas l'objectif. On cherche juste à comprendre pourquoi et comment ça marche.

@nicofrand @pmevzek @kmk D'ailleurs on a un superbe forum pour faire des réponses longues et éviter les messages courts qui mènent aux incompréhensions, wink wink nudge nudge say no more :p

Suivre

@bnjbvr
Oui, mais il nécessite une inscription. Donc je ferais une réponse courte : le point le plus important est le point numéro 1.
@nicofrand @pmevzek

· · Web · 1 · 0 · 0

@bnjbvr Comme on disait au début de la discussion : le sel est tiré aléatoirement et à usage unique. Si vous pensez que le garder secret est mieux, pourquoi pas, mais ça n'est pas l'objectif du sel. En général il est préfixé au texte chiffré.
Pour les détails de PBKDF2 nvlpubs.nist.gov/nistpubs/Lega
@nicofrand @pmevzek

@bnjbvr Une paire de suggestions additionnelles : stocker aussi le nombre d'itérations dans le texte clair.
Mettre une somme de contrôle pour vérifier que la totalité du fichier a bien été décodé
@nicofrand @pmevzek

@kmk @bnjbvr @pmevzek

Attention j'ai découpé en plusieurs , il y a aussi framagit.org/kresusapp/kresus/, et selon ta réponse sur le nombre d'itérations j'en ouvrirai un autre

@nicofrand Je vais faire une grosse réponse dans kresusapp/kresus#1112, libre à vous de redistribuer le tout dans d'autres tickets.
  Question : le résultat au format JSON est un impératif, ou bien retourner le fichier brut en binaire est possible aussi ?

@bnjbvr @pmevzek

@kmk on préfèrerait garder le JSON, vu qu'il existe aussi un format en texte clair, avec quelques données sensibles non présentes. @nicofrand

Inscrivez-vous pour prendre part à la conversation
Framapiaf

Le réseau social de l'avenir : Pas d'annonces, pas de surveillance institutionnelle, conception éthique et décentralisation ! Possédez vos données avec Mastodon !