Saúl Ibarra Corretgé
0cc323d96e
fix(misc) use safeJsonParse from js-utils
2 år sedan
Jorge Oliveira
1714bf079c
fix(e2ee) call correct function to update key
s/updateCurrentKey/updateCurrentMediaKey/g
2 år sedan
tmoldovan8x8
751b363080
feat(e2ee) add ability to verify participants using a SAS mechanism
It implements SAS verification as per the Matrix spec, adapted to our environment.
2 år sedan
Saúl Ibarra Corretgé
dcbfdac10d
chore(deps,eslint) update eslint-jitsi-config
3 år sedan
tmoldovan8x8
c29de010e8
fix(e2ee) discards frames that cannot be decrypted
3 år sedan
Nils Ohlmeier
411f8f81e0
fix potential race condition when en-/dis-abling E2EE
3 år sedan
Jorge Oliveira
043149046b
ref(e2ee) mark _decryptFrame function with correct jsdoc
the editor will no longer complain about superfluous await when calling
3 år sedan
Jorge Oliveira
26f05c4207
ref(e2ee) make tests compatible with new karma/jasmine versions
it removed support for functions being simultaneous async and have done parameter in callback
3 år sedan
Jorge Oliveira
43ae27f990
ref(e2ee) change jsdoc return to correct promise
the editor will no longer complain about superfluous await when calling these functions
3 år sedan
titus.moldovan
5c23a28087
fix(e2ee) adds promise to map when sending key onParticipantPropertyChanged
3 år sedan
titus.moldovan
67f43eeef8
fix(e2ee) keeps the initial key when decryption error
3 år sedan
Jaya Allamsetty
5ae19379aa
ref(JitsiConference) Make methods getMediaSessions and getActiveMediaSession public.
3 år sedan
Saúl Ibarra Corretgé
6bb981532d
fix(e2ee) removed no longer needed code
3 år sedan
Saúl Ibarra Corretgé
526bd5a94c
chore(lint) tame the new linter
3 år sedan
Saúl Ibarra Corretgé
c24130622e
chore(deps) adapt to logger package rename
3 år sedan
Daniel McAssey
4498f65fcc
fix(e2ee): fix loading web worker when using a relative path inside a blob for the E2EE context
3 år sedan
tmoldovan8x8
afc006e99a
feat(e2ee) add ExternallyManagedKeyHandler
4 år sedan
Daniel McAssey
fbebebd75d
fix: logger calling wrong function typo
4 år sedan
Saúl Ibarra Corretgé
86f6c25638
fix(e2ee) replace nullish coalescing with or
For some reason webpack seems to not be transpiling that properly.
Fixes: https://github.com/jitsi/lib-jitsi-meet/issues/1722
4 år sedan
tmoldovan8x8
2e1ca64654
fix(e2ee) restore initial key when RATCHET_WINDOW_SIZE reached
4 år sedan
Saúl Ibarra Corretgé
61c977f70a
feat(e2ee) add support for WebRTC Encoded Transform
An alternative to Insertable Streams, currently implemented in Safarii / WebKit.
https://w3c.github.io/webrtc-encoded-transform/
Fixes: https://github.com/jitsi/jitsi-meet/issues/9585
4 år sedan
Philipp Hancke
ba2958c014
e2ee: remove legacy apis (#1653)
remove legacy APIs which are not even supported anymore
4 år sedan
tmoldovan8x8
dd902dd33d
fix(e2ee): destroys olm session on disabling e2ee
4 år sedan
Jaya Allamsetty
17f968fdea
fix(logger): Logging enhancements.
Get rid of noisy logs related to SDP transformations which are redundant. Fix formatting and add missing information.
4 år sedan
tmoldovan8x8
e354745db5
task(e2ee): switch back to GCM
4 år sedan
tmoldovan8x8
49c4e75f37
bugfix(e2ee): frees olm session and rotates key when remote participant disabled e2ee
4 år sedan
tmoldovan8x8
2b94da12e8
feat(e2ee): makes olm sessions initialisation lazy
4 år sedan
Saúl Ibarra Corretgé
cacf6c7b56
feat(e2ee) update to SFrame draft -02
Drop end to end signature. The impersonation attack vector is deemed out of
scope since insiders are already part of the meeting.
4 år sedan
Saúl Ibarra Corretgé
6a7b16c33e
fix(e2ee) fix disabling E2EE
When E2EE is disabled we need just set the last key to `false`. When decoding we
need to check if the last key is not false, otherwise we might try to decrypt
the unencrypted video frames, thus resulting in breakage.
4 år sedan
Ahmet Sarı
16aaa125dd
fix(e2ee) fix key index after ratchetting
- After ratchet do not set it as new key for current index. Set it to correct position in crypto ring.
4 år sedan
Philipp Hancke
6784189600
(feat) e2ee: sign and verify frames (#1373)
Signs and verifies frames. For now this is done on every frame.
This is not the long-term goal and there needs to be a better strategy.
5 år sedan
Saúl Ibarra Corretgé
c77487685e
feat(e2ee) log Olm version
5 år sedan
Saúl Ibarra Corretgé
b65b1784df
feat(e2ee) publish olm id key in presence
5 år sedan
Saúl Ibarra Corretgé
b5aeba27b9
feat(e2ee) emit PARTICIPANT_E2EE_CHANNEL_READY also for the initiator
5 år sedan
Philipp Hancke
9331243236
e2ee: rename constants to upper-case
and add a few new ones.
5 år sedan
Philipp Hancke
9e10554e55
e2ee: clean up tests
and make them a bit more concise. No functional changes
5 år sedan
Philipp Hancke
00c8cfad98
e2ee: sync key ring size and packet format
this uses the full four bits in the wire format. The wire format
looses the (currently not implemented) extensibility with variable
length keys.
5 år sedan
Philipp Hancke
666f1006de
e2ee: add unit tests
Both for just encode function as well as an end-to-end test.
5 år sedan
Philipp Hancke
687a82e5a1
e2ee: move context to separate file
to allow writing tests
5 år sedan
Philipp Hancke
12604d96ff
e2ee: refactor and clean up
in particular this allows sharing the ratcheting between the E2EEncryption
module and the Worker.
5 år sedan
Saúl Ibarra Corretgé
25f08f97c3
e2ee: sync ratchetted key with olm layer
5 år sedan
Saúl Ibarra Corretgé
159ea5357b
e2ee: remove no longer needed code
5 år sedan
Philipp Hancke
4a6e493f41
e2ee: Ratchet the key forward on authentication tag errors
similar to what is explained here:
https://tools.ietf.org/html/draft-omara-sframe-00#section-4.3.5.1
but we do it on authentication tag failures since it is not possible
to tell whether decrypt.
5 år sedan
Philipp Hancke
4b71f96beb
e2ee: fix authentication tag check
this needs to be called with an Uint8Array, not an ArrayBuffer
5 år sedan
Philipp Hancke
b6821ddb65
e2ee: refactor to make it clear when to ratchet
refactor the signature checking to make it clear when we need to ratchet.
This is similar to
https://tools.ietf.org/html/draft-omara-sframe-00#section-4.3.5.1
but we verify the hash before attempting to decrypt.
5 år sedan
Philipp Hancke
85fde1aeae
e2ee: use CTR instead of GCM
following
https://tools.ietf.org/html/draft-omara-sframe-00
but putting the frame metadata into a trailer instead of a header.
We call this JFrame.
Also the key we get from OLM is high entropy so we do not need
to use PBKDF2 but can use HKDF instead. See
https://wiki.developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/deriveKey#HKDF
5 år sedan
Saúl Ibarra Corretgé
f761413976
e2ee: avoid CORS issues with the worker bundle
5 år sedan
Saúl Ibarra Corretgé
735c30ec4f
e2ee: introduce per-participant randomly generated keys
This the second stage in our E2EE journey.
Instead of using a single pre-shared passphrase for deriving the key used for
E2EE, we now establish a secure E2EE communication channel amongst peers.
This channel is implemented using libolm, using XMPP groupchat or JVB channels
as the transport.
Once the secure E2EE channel has been established each participant will generate
a random 32 byte key and exchange it over this channel.
Keys are rotated (well, just re-created at the moment) when a participant joins
or leaves.
5 år sedan
Saúl Ibarra Corretgé
5322ddd6b5
e2ee: use a separate bundle for the worker
Avoid having to use a code blob.
5 år sedan
Philipp Hancke
92ea388ce9
e2ee: update for latest chrome changes
see https://bugs.chromium.org/p/chromium/issues/detail?id=1119653
We'll probably do similar renaming in the future.
5 år sedan