- CH Chethan Reddy
Organization : matrix.org
Project : Adding Features in End-to-End encryption for Nheko-Reborn
My main work can broadly be classified into adding two main features to end-to-end encryption, viz. Device Verification and Cross Signing, and for implementing these I had to work on two repos
Nheko (main client) and mtxclient (a C++ Library which implements the Client-Server API related to matrix network).
For the frontend, Qt C++ Framework was used for GUI and the backend was written in C++17.
Device-Verification enables two devices to construct a trust between them. In matrix network, every device of the client is uniquely identified and has to be verified individually to ensure the encrypted messages are exchanged among the trusted devices only. In this project the Device-Verification has been done using SAS verification method.
Cross-Signing is a feature which enables a user to trust multiple devices of same user using an already verified device (which would create a trust between these two users) . It avoids the hassle of verification of multiple devices of same user individually. In the project the user-verification has been done both by room verification and to-device verification. A feature to display the list of verified devices
in the User-Profile is also implemented by going through the trust chain.
This is the list of PRs made to nheko and mtxclient
As some of PRs are huge, I have divided each PR into major commits of sub-tasks and it is mentioned in the "Outcome" of the project given below
The working of Room Verification and Device Verification has been shown in the following video links
Device-Verification
Room-Verification
The Videos also show the UserProfile and it's features. As can be seen in the video the verification status of the device changes after successful device-verification (yellow -> green). It may be noted that the verification status i.e. color of lock remains yellow for other devices even after Room Verification because the other user has not yet verified all of their devices. These devices will be trusted once the other user extends the trust chain to them.
I had a wonderful time working for Matrix from May this year. I'm grateful to be part of the Matrix community and had the pleasure of working with my mentors Nico and Red_Sky. The project not only provided me a great learning oppurtunity but also to realize the significance of the Open-Source. I'm looking forward contributing to the Matrix projects in the future and implement even more cool features. Thank you Matrix, Google, Nico and Red_Sky for making this summer a wonderful experience.