web-dev-qa-db-fra.com

Quel algorithme est-ce que 1password utilise pour le cryptage, AES-GCM-256 ou AES-CBC-256?

J'aimerais savoir quel cryptage 1password utilise.

Sur le sur le modèle de sécurité 1password page, il est indiqué:

Vos données 1Password sont conservées en sécurité par le cryptage authentifié AES-GCM-256. Les données que vous confiez au 1password sont effectivement impossibles à déchiffrer.

Mais sur la page Opvault Design page, il dit:

Les données - à l'exclusion de l'IV, mais d'inclure le remplissage préparé - sont cryptés à l'aide d'AES en mode CBC avec une clé de cryptage de 256 bits.

Donc, je suis confus: pourquoi son cryptage est-il différent sur différentes pages? Quelle page est correcte? Est-ce que je manque quelque chose?

4
JIE WANG

TL; DR: Presque certainement AES-GCM-256

1password ne peut être nominalement pas open source, mais les extensions de navigateur sont des JS et donc lisibles (bien que minifiée JS soit encore plus simple que la substance habituelle). J'ai pris l'extension du navigateur 1password de Firefox et le déballe. Dans le fond de fichier/arrière-plan.js, la chaîne de cas insensible "CBC" ne se produit que deux fois, à la fois sous forme de sous-chaînes d'hex apparemment aléatoires. La chaîne "GCM" survient 26 fois, y compris:

  • Les messages d'erreur de texte anglais tels que "GCM: tag ne correspondent pas"
  • Noms d'objet JS, i.mode.gcm={name:"gcm"... Parmi un groupe d'autres références au cryptage et au déchiffrement
  • Une utilisation sensible à une casse de "jwk_alg_a256gcm", qui est une constante https://searchfox.org/mozilla-central/source/dom/crypto/webcryptocommon.h et maps à "A256GCM" qui apparaît également
  • Deux utilisations sensibles à la casse de "AES-GCM", une pour 128 bits et une pour 256 bits (comme dans, $c={name:"AES-GCM",length:256})
  • Six références sensibles à la casse à "natifeaesgcm"

S'ils essayaient d'être malveillant, ce type de chèque serait totalement inadéquat - de nombreuses façons d'obscurcir ce que fait JS et je n'ai pas lu presque assez du code (beaucoup moins de trace son exécution) pour qu'il n'y ait pas de T Quel que soit quelque chose de drôle en cours - mais en supposant qu'ils ne soient pas délibéramment trompeurs quant à leur choix de chiffrement, il est assez clairement AES-GCM. La résistance exacte du bit est un peu plus ambiguë, mais seulement un peu; Il y a plus de références à des chiffres de 256 bits que des chiffres de 128 bits (par exemple 3x "A256GCM", 1x "A128GCM"), et c'est ce que vous attendez de la DOCS.

3
CBHacking