Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Envoyer automatiquement un rageshake lors d'une erreur de chiffrement #920

Closed
3 tasks done
Tracked by #206
odelcroi opened this issue Feb 26, 2024 · 11 comments
Closed
3 tasks done
Tracked by #206
Assignees
Labels
P1 Priority 1

Comments

@odelcroi
Copy link
Member

odelcroi commented Feb 26, 2024

(PR description updated as we go with info from the comments)

why

  • améliorer le tracking des bugs uisi

what

  • envoyer un rageshake automatiquement

how

Une option existe dans les parametre users, (dans Labs/Expérimental > Analytics) on pourrait la forcer à true :
image

Cela envoie un rageshake auto lors de cette erreur : "Auto-reporting decryption error (recipient)" avec les labels suivants : "Z-UISI", "web", "uisi-recipient"

Ensuite un rageshake est envoyé avec une app particulière :
uisi_autorageshake_app

Le serveur rageshake est configuré ici

Exemple d'un rageshake

image

Questions

  • est ce que c'est uniquement pour les erreurs de UISI ?
  • on pourrait contacter la personne qui nous a envoyé un message indéchiffrable? -> on a le matrixid mais pas l'email

Todo

  • rajouter l'email de la personne (le matrix id est deja present) pour pouvoir le categoriser correctement dans crisp
  • rajouter le nom de la room (l'id de la room est deja presente), pour pouvoir notifier le sender du probleme eventuellement -> not necessary given privacy issue
  • utiliser default = true pour le setting d'envoi du rageshake on uisi (le laisser desactivable par les users) backend cannot handle it for now, see product issue
@odelcroi
Copy link
Member Author

odelcroi commented Feb 26, 2024

j'ai auto rageshake une erreur de chiffrement qui vient de moi. Je ne comprend pas :
j'ai regardé les logs mais ca ne m'aide pas à comprendre. Qu'en penses tu @MatMaul ?

Capture d’écran 2024-02-26 à 12 48 10

@odelcroi
Copy link
Member Author

@NicolasBuquet @yostyle vous avez cette option de votre coté aussi? Vous pouvez regarder si vous avez le meme comportement?

@odelcroi
Copy link
Member Author

@odelcroi
Copy link
Member Author

odelcroi commented Feb 27, 2024

  • rageshake a été envoyé, avec le nom du sender et le nom de la room, cela permet de contacter le sender pour lui dire que quelqu'un n'a pas pu lire son message
    Edit from Estelle : action removed : this is a privacy issue, so it's better to just use the roomId to make a link to the room, which the user will be able to follow.

https://app.crisp.chat/website/6dacc68e-de3a-4511-8177-1339616098de/inbox/session_68c89b56-743a-41d6-87d9-8d9b6b9fabc4/

@NicolasBuquet
Copy link

NicolasBuquet commented Feb 27, 2024

@NicolasBuquet @yostyle vous avez cette option de votre coté aussi? Vous pouvez regarder si vous avez le meme comportement?

Sur iOS, on a un point d'entrée similaire :

    // Track e2e failures
    dispatch_async(dispatch_get_main_queue(), ^{
        [[DecryptionFailureTracker sharedInstance] reportUnableToDecryptErrorForEvent:event withRoomState:roomState myUser:self->mxSession.myUser.userId];
    });

On a aussi ça :

// Tchap: Disable UISI
//    self.uisiAutoReporter = [[UISIAutoReporter alloc] init];

La classe UISIAutoReporter semble faire du reporting automatique en utilisant le bugReporter/rageShake 😄 @odelcroi

@odelcroi
Copy link
Member Author

odelcroi commented Feb 27, 2024

Erreur de faux positif ?
Impossible de retrouver ce message, d'ailleurs, la room n'est pas mentionnée :

Capture d’écran 2024-02-27 à 17 11 39

Hint : la personne en question a eu des problèmes avec son compte tchap et a du faire un discard session

Dans les logs attaché on trouve pour cette sender_key, l'erreur suivante :

2024-02-27T15:29:47.403Z W WARN matrix_sdk_crypto::olm::account: A to-device message was successfully decrypted but parsing and checking the event fields failed
    error=JsonError(Error("missing field `content`", line: 1, column: 324))
    at /home/runner/.cargo/git/checkouts/matrix-rust-sdk-1f4927f82a3d27bb/5957d96/crates/matrix-sdk-crypto/src/olm/account.rs:1261
    in matrix_sdk_crypto::olm::account::decrypt_and_parse_olm_message with sender="@nicolas.fries-beta.gouv.fr:agent.dinum.tchap.gouv.fr" sender_key="curve25519:q8d++7EhlCYDzuODVa5M5yENaAsiHyqFqQqKaWzRkgM" PreKey(PreKeyMessage { session_keys: SessionKeys { identity_key: "q8d++7EhlCYDzuODVa5M5yENaAsiHyqFqQqKaWzRkgM", base_key: "b7eOQ/7+MyjBCLecX3mqfQtgP/brJm+x/GomCorLhTU", one_time_key: "166Vc+eOMeLR1meowzOtRAu5E/hDeXZZqexWaWIaqA4" }, message: Message { version: 3, ratchet_key: "curve25519:qSvpifZumrgOxrGTNDrRuELKfo4IZ4I0G2ckONbcrTY", chain_index: 0, .. } }) session_id="2WVZUAKD3jyQMFQsp6sCzF+afg6Lx/3nB/q1j4NlekY" session=Session { session_id: "2WVZUAKD3jyQMFQsp6sCzF+afg6Lx/3nB/q1j4NlekY", sending_chain_index: None, receiving_chains: [ReceiverChain { ratchet_key: "curve25519:qSvpifZumrgOxrGTNDrRuELKfo4IZ4I0G2ckONbcrTY", chain_index: 1, skipped_message_keys: [], .. }], config: SessionConfig { version: V1 }, .. }
    in matrix_sdk_crypto::olm::account::decrypt_olm_v1 with sender_key="curve25519:q8d++7EhlCYDzuODVa5M5yENaAsiHyqFqQqKaWzRkgM"
    in matrix_sdk_crypto::olm::account::decrypt_to_device_event with algorithm="m.olm.v1.curve25519-aes-sha2"
    in matrix_sdk_crypto::machine::receive_to_device_event with sender="@xxxxx-beta.gouv.fr:agent.dinum.tchap.gouv.fr" event_type="m.room.encrypted" message_id="868faa90-e09f-4b16-8c83-6788e2575f0b"
    in matrix_sdk_crypto::machine::receive_sync_changes

sinon la ca parle de to_device, c'est les messages spécifiques qui établisse les clés d'encryption, c'est pas forcément directement lié a un msg. l'envoi d'un message le trigger apres un certain temps, mais apres les memes clés sont utilisés pour X messages.

Conclusion :

  • ca correspond pas vraiment à un message non déchiffré mais un message intermediaire. Dans la description du auto_uisi, on a pas de nom de room, c'est peut etre un facteur discriminant pour comprendre que ce n'est pas un message d'un user.

@odelcroi
Copy link
Member Author

odelcroi commented Mar 8, 2024

  • Le champs email n'est pas présent dans le rageshake

@estellecomment estellecomment added P1 Priority 1 and removed P2 Priority 2 labels Mar 19, 2024
@estellecomment
Copy link
Contributor

Note : element-web 1.11.60 introduit des changements dans le code de rageshake-on-uisi, ca peut etre pertinent de faire l'upgrade avant le dev de ce ticket. Ca evitera de rajouter du travail dans l'upgrade. (mais c'est pas grand chose non plus, pas la fin du monde)

@estellecomment estellecomment self-assigned this Mar 26, 2024
@MarcWadai MarcWadai linked a pull request Apr 3, 2024 that will close this issue
6 tasks
@MarcWadai MarcWadai removed a link to a pull request Apr 3, 2024
6 tasks
@estellecomment
Copy link
Contributor

@odelcroi cette issue est un peu dans tous les sens. Est-ce que la checklist dans la description de la PR est à jour ? Necessaire et suffisante ? :)

@estellecomment
Copy link
Contributor

Le titre du message du rageshake est "[element-auto-uisi] Auto-reporting decryption error (recipient)" (par exemple).
Le nom "element-auto-uisi" est customisable dans la config. "[tchap-web-auto-uisi]" me parait plus pertinent, ou meme "erreur-chiffrement-web" par exemple.

Je n'ose pas le changer parce que je sais pas si ca va casser l'auto-triage de tickets crisp @odelcroi ?

@NicolasBuquet
Copy link

@estellecomment

Oui, si on le change, ça va casser l'auto-triage de Crisp : https://github.com/tchapgouv/matrix-rageshake-crisp/blob/cf31e55e76997ad3de59d77638d4db9d3082458c/src/job_process_invalid_rageshake.py#L112

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P1 Priority 1
Projects
Archived in project
Development

No branches or pull requests

3 participants