tchapgouv / tchap-web-v4

A Matrix web client for Tchap
https://www.tchap.gouv.fr/
Apache License 2.0
12 stars 5 forks source link

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

Closed odelcroi closed 5 months ago

odelcroi commented 6 months ago

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

why

what

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

Todo

odelcroi commented 6 months ago

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 commented 6 months ago

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

odelcroi commented 6 months ago

Tuto d'activation : https://www.notion.so/mercurial-timer-ec4/Activer-les-options-avanc-es-dans-Tchap-1908088d24d744ed91c45efeb03544d4

odelcroi commented 6 months ago

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

NicolasBuquet commented 6 months ago

@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 commented 6 months ago

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 :

odelcroi commented 6 months ago
estellecomment commented 6 months ago

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 commented 5 months ago

@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 commented 5 months ago

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 commented 5 months ago

@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