%ELO adaptor reuses a zero IV, breaking AES-GCM security

Ouverte
#14 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
50/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
À l'abandon
Stack technique
rust

Piste de recherche

Read rust/loro-websocket-client/src/lib.rs:1045-1138 and protocol-e2ee.md first. Trace both encode_elo_snapshot_container and the live subscribe_local_update hook, then ensure each encrypted record gets a fresh 12-byte IV while retaining it in the record header for decryption. Done means the zero IV is no longer reused under the same key.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug

rust/loro-websocket-client/src/lib.rs:1045-1138

  • The %ELO client sets the IV to [0u8; 12] in both encode_elo_snapshot_container and the live
    subscribe_local_update hook. Every encrypted record therefore repeats the same AES-GCM nonce under the
    same key.
  • protocol-e2ee.md mandates 96-bit unique IVs and warns against reuse; violating that lets an attacker
    recover XORs of plaintexts and eventually the key.
  • Fix: Plug in a CSPRNG (e.g. rand::rngs::OsRng) or a durable per-key counter to emit fresh IVs, and keep
    embedding the 12-byte IV in the record header so receivers can decrypt.
Langage dominant
TypeScript
Étoiles
41
Forks
12
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de loro-dev/protocol

Toutes les issues de loro-dev/protocol

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.