aeris22’s avataraeris22’s Twitter Archive—№ 84,622

                1. Question à la con aux cryptos du coin : est-ce que le fait qu’un sel ne soit pas crypto (low entropy, devinable, etc…) change quelque chose à la sécurité de PBKDF2 et des dérivations de clefs en général ? 🤔
              1. …in reply to @aeris22
                J’aurais tendance à dire que l’intérêt de la dérivation de clef est de justement réussir à générer quelque chose à entropie élevée à partir d’une donnée à entropie élevée (le sel) + une à entropie faible (le mot de passe utilisateur). Mais le fait que le sel soit une donnée
            1. …in reply to @aeris22
              publique me gène un peu pour savoir si un sel low entropie est gênant ou pas et si oui, où et comment.
          1. …in reply to @aeris22
            J’veux bien votre avis sur le cas précis en question : Bitwarden. Pour des raisons d’UI/UX, j’ai l’impression qu’ils ont rogné sur la sécu… Je vous explique. […]
        1. …in reply to @aeris22
          « La crypto c’est chiant », et encore plus quand on veut faire de la 0 knowledge pour protéger un wallet de mot de passe. En l’occurence, on veut une appli dispo partout, multi-device, etc. Pas possible de stocker la clef de chiffrement uniquement sur le client donc. Sinon les
      1. …in reply to @aeris22
        autres devices vont galérer.
    1. …in reply to @aeris22
      Du coup, la seule donnée d’entrée dispo, c’est l’adresse email de l’utilisateur ainsi que son mot de passe. Du coup, Bitwarden génère une « master key » via un pbkdf2(data=password, salt=email). Qui chiffre une « encryption key » en AES avec la clef obtenue. Dont le résultat est
  1. …in reply to @aeris22
    *ENVOYÉ AU SERVEUR*.
    1. …in reply to @aeris22
      C’est cette « encryption key » qui sert au chiffrement des données proprement dit. Jusque là, on serait en 0 knowledge, vu que le serveur ne connaît que l’encryption key chiffré. Sauf que oui mais… […]
      1. …in reply to @aeris22
        Ils ont aussi l’adresse email de leur côté du coup. Ne reste donc que le mot de passe à deviner pour pouvoir déchiffrer l’encryption key, et donc l’ensemble du wallet de l’utilisateur…
        1. …in reply to @aeris22
          Le mot de passe est **AUSSI** utilisé pour s’authentifier à leur API. Il n’est pas transmis en clair en tant que tel, mais le hash pbkdf2(data=master key, salt=master password), qui lui est connu du serveur donc…
          1. …in reply to @aeris22
            On se retrouve donc côté serveur à connaître : - l’email de l’utilisateur - le hash pbkdf2(pbkdf2(password, email), password) - une master key chiffrée avec pbkdf2(password, email) Ça me paraît extrêmement fragile comme 0 knowledge là comme ça… Votre avis ?
            1. …in reply to @aeris22
              Ça me perturbe d’autant plus qu’une API existe pour savoir si un email existe et obtenir les paramètres crypto associés… 🤔