TiTs isn’t Tits, sorry 

Telegram implementation

Tit is a kind of bird!

official name: ω IM

prototype

https://github.com/lug-tw/TiTs

http://gitlab.gg-in.in/ronmi/TiTs

UI

Satisfy Taiwanese user habits

architecture

Client + server cloud, the could architecture should be flexible and scalable.

A server should connect with at least 3 servers in the cloud.

When a server wants to join the cloud, the topology of the cloud should be bridgeless.

Each server will remember available server list (topology of the network).

A connection between two servers should be a directed-or-forwarded.

Shortest path routing is recommended but optional for servers.

We should display the active user-proxy list on dbs’ website

XXX: routing algorithms: ronmi’s job

Take GPG fingerprint as identity of a user.

messages

Text messages should be signed and encrypted in client with public key algorithm (GnuPG) and a session key, respectively.

All media (including pictures, stickers or any kind of files) will **not** be encrypted (in any cases).

Media are recommended but optional to be signed by sender’s private key.

chatting

Group id: nothing to do with servers, it’s just a identity for clients.

Do not provide any guarantee about security.

Speed is No. 1.

secure chatting

All secure chatting are encrypted by a session key.

Key-exchanging is done by GPG (using GPG to protect the session key).

All data (including text messages and media) are signed by sender’s private key before transmission.

The session is generated by the inviter’s client, in group chatting case, more key-exchanging to multiple members in the chatting room.

C-C header and payload are encrypted by shared session key.

The session key should be revoked in a time period.

Security is No. 1.

 the protocol

login

client use his private key and server’s public key to encrypt "e2014b07b02c3359a370343edc03b0808b129892"

server use client’s public key and it’s private key to decrypt that -> "I love big tits"

    Client sends: my_private_key( server_public_key( MAGIC_WORD ) )

    Server decodes: client_public_key( my_private_key( PACKET_DATA ) )

 To fix

multiple device

Key Server

We should build our own key server in order not to impact original PGP network. Existing public key server might be queried as a fallback, but PROXIES AND CLIENTS MUST NOT UPLOAD ANY KEY TO PUBLIC KEY SERVER.

TODO & wish list

stickers

theme

slash command

tag people (@)

beware of fake-clients/implementation