Secure chat is a cross platform end to end encrypted instant messaging service with different modes of security and visibility.
A blockchain based secure backend for decentralisation of the platform and storing sensitive information, another server for centeralized management of the application.
Users can send one-to-one and group messages, which can include emojis and images.
Emoji vectors are stored in elasticsearch. For a search query, a more relevant emoji list can be recommended to users based on semantic search functionality of elasticsearch based on cosine score. This has some application in chat servers for users to decide on relevant emojis.
Download ⬇️
Table of Contents
This is my second year project in which i worked on react, react native and node to create a full stack application. It is a secure messanging app having two visibility modes, private and anonymous. Peer to peer and group messanging can be done in both the modes. It have two backend servers, one centralized used data management and socket server and other is decentralized blockchain based server to store messages and user's sensitive information. Proper encryption is applied on both servers for data security.
One of the disadvantages of the blockchain based chat applications is that they rely on the blockchain too much which make the management and upgradation of the app difficult. A very big disadvantage of centralized chat applications is that they lack security. The appropriate combination of these two technologies removes both the disadvantages, which is being implemented in this application.
In case you get curious to try my project or come up with a better version of this, here is the required information -
The frontend is based on react native
, expo, its libraries and modules.
The backend is build on node.js
.
Database is stored on mongodb
cloud. (The blockchain database is stored on blockchain locally)
Both the servers are delpoyed on Microsoft azure
.
First fork this repository and clone it in your pc. node should be installed for the below steps.
Browse to "backend", "frontend" ,and "blockchain" named folders and run -
npm install
-
Use npm start to start the blockchain and backend server.
npm start
-
For the frontend part we need to install expo globally.
npm install -g expo-cli
-
Start the expo server using expo start
expo start
The major features of this application are -
Private mode
can be used as a normal mode of chatting with additional features.Anonymous mode
hides a user identity, one can message anyone in his contacts without knowing them who is sending messages.- Users can create groups, add or remove members, change profile or group pictures and may more customization.
- Users get
notifications
for private messages but not for anonymous messages. - Users can sync their
contacts
to chat with people who are already using this app. - User
cannot take screenshot
or record screen while app is active, user also cannot copy the text of the chats, adding an additional layer of security of messages. - Messages sent can't be deleted but a user can always push the messages to blockchain.
- Messages can be
pushed
toblockchain
by any user of any group or private room, and once the messages are pushed it will not be accessible by anyone. - Messages can be
pulled
from theblockchain
if and only if all the members of the chat agree. - All the user data is encrypted, the messages are end to end encrypted following
diffie-hellman algorithm
- Messages are encrypted and decrypted on frontend and hence the
backend can't read the messages
and it does not have the nessecary information to decrypt it.
Here are some screenshots of the app.
Note
- It is not possible to take screenshot of this app from a phone so all the screenshots below are taken using android studio and snipping tool.
Yash Aggarwal
- LinkedIn - yashaggarwal85d
- Github - yashaggarwal85d