A private-chat-only Android App for Secure Scuttlebutt

Overview

Tremola README

Tremola is a Secure Scuttlebutt (SSB) client for Android that only supports private chat.

Val Tremola modern map of Tremola

Tremola aims at having the same functionality as other end-to-end encrypted messenger applications like Signal, Whatsapp or Threema but works in a decentralized way. Why is this important?

Fully Decentralized: no need for Facebook's or Signal's servers to service you

The big difference and asset over traditional end-to-end encrypted messengers is that Tremola follows SSB's decentralized approach of permissionless and trustless operations. Permissionless means that using Tremola does not depend on services provided by others (which could be turned off for you or a whole country): two Tremola-enabled smartphones can work locally even when on an island, so to speak. Trustless means that no trust is needed in auxiliary connectivity services, should you choose to use them.

Easy Onboarding via QR codes

Having a fully decenctralized messenger comes at a price: there is no global user directory and you must know another person's cryptographic identity beforehand, which is also known as the onboarding problem: how can you contact a peer if the peer does not know that you want to contact them nor knows your cryptographic identity? As a comparison: In case of Signal, your device's phone number is used as an identifier and Signal's servers keep track of these numbers and do the match making, while in Threema, the Threema service assigns short names on sign-up and manages them for you, also permitting you to establish contact through them if you know the peer's shortname.

Tremola solves the onboarding problem in the same way Threema works: two peers should -for trust reasons- better meet in physical space and scan a QR code on each other's smartphone to do the bonding. It is also planned that Tremola will offer a "secure wireless pairing mode" that works exactly like pairing two Bluetooth devices.

The following video shows the Tremola onboarding experience for Alice and Bob who just met in a bar and want to establish a trusted SSB channel they can use in the future. The video also shows that they can immediately test their channel via local WiFi.

Onboarding demo (video)

Proof-of-Concept and Experimentation Vehicle

Tremola is a first step towards turning SSB into a true competitor to established end-to-end encrypted messengers. On this journey, Tremola currently serves as experimentation platform both for the apps's software architecture as well as the way SSB data is handled:

  • The core of SSB, namely the replication protocol and wire format, is programmed in the Kotlin language while user interface aspects and rendering is delegated to Android's WebKit module and some JavaScript (instead of hardwiring also these aspects in Kotlin).

  • Tremola will follow a "surf approach" that focuses on the novelty wavefront, keeping only recent messages instead of the full history which can become quite large in SSB. This is made so that smartphones can quickly get into messaging even with peers that have accumulated a huge "append-only log".

  • Tremola currently has a very limited form of secure group communications that is inherited from SSB's current protocol (limit of 7 participants, no dynamic group membership). Implementing SSB's new secure group communication protocol will be a natural evolution step for Tremola.

Why the name "Tremola"?

Crossing the Swiss alps for centuries passed through "Val Tremola", a valley on the north-south connection over the Gotthard pass. The street with the same Name still exists and is well-known for its adventurous hairpin curves. We envisage that the Tremola app also will have to do several turns until it reaches its peak.

old Tremola postcard


You might also like...
Android Combined Application for chat, audio/video calls, and broadcast to millions of web and app users using VdoTok SDK.
Android Combined Application for chat, audio/video calls, and broadcast to millions of web and app users using VdoTok SDK.

Android Combined Application for chat, audio/video calls, and broadcast to millions of web and app users using VdoTok SDK.

A chat app for Android written in Kotlin using MVVM.
A chat app for Android written in Kotlin using MVVM.

Chat App Android About A chat app for Android written in Kotlin using MVVM. Features Authentication: Email and password Google Auth Reset Password Sen

A chat app for Android written in Kotlin using MVVM.
A chat app for Android written in Kotlin using MVVM.

Chat App Android About A chat app for Android written in Kotlin using MVVM. Features Authentication: Email and password Google Auth Reset Password Sen

Jetchat is a sample chat app built with Jetpack Compose.
Jetchat is a sample chat app built with Jetpack Compose.

Jetchat sample Jetchat is a sample chat app built with Jetpack Compose. To try out this sample app, you need to use Android Studio Arctic Fox You can

Android Real Time Chat & Messaging SDK
Android Real Time Chat & Messaging SDK

Android Chat SDK Overview Applozic brings real-time engagement with chat, video, and voice to your web, mobile, and conversational apps. We power emer

Kommunicate.io Android Chat SDK for Customer Support
Kommunicate.io Android Chat SDK for Customer Support

Kommunicate Android Chat SDK for Customer Support An Open Source Android Live Chat SDK for Customer Support Overview Kommunicate provides open source

A hybrid chat android application based on the features of Instagram and Whatsapp having UI just as Telegram.
A hybrid chat android application based on the features of Instagram and Whatsapp having UI just as Telegram.

A hybrid chat android application based on the features of Instagram and Whatsapp having UI just as Telegram.

 AvengersChat is a demo application based on modern Android tech stacks and Stream Chat SDK.
AvengersChat is a demo application based on modern Android tech stacks and Stream Chat SDK.

đź’™ Android sample Avengers chat application using Stream Chat SDK based on MVVM (ViewModel, Coroutines, Room, Hilt, Repository) architecture.

A Chat-Bot Android Application
A Chat-Bot Android Application

Sekobanashi_App A Chat-Bot Android Application. Features Sekobanashi is a chat-bot/assistant android application where the user can chat with one of t

Comments
  • Implemented Double Ratchet algorithm

    Implemented Double Ratchet algorithm

    I implemented the functionality of the Double Ratchet algorithm into Tremola's one-on-one chats. Also, I documented and refactored a large part of the preexisting code.

    opened by LarsWaldvogel 0
  • Meeting Coordination Project Submission

    Meeting Coordination Project Submission

    This pull request functions as an easier to overview source code submission for the project "Tremola Extension Meeting Coordination". It includes the documentation as well. The same code and materials were submitted via mail in form of a zip-Archive.

    opened by josphstar 0
  • Bug in cleartext unicode message validation

    Bug in cleartext unicode message validation

    I tested tremola with a friend, using my old patchwork feed (@p13z..). Their phone stopped replicating my feed on a specific message (39) which happens to contain unicode characters. I was gladly able to glean this exact fact from my local EBT state. I can see how this slipped under the table when testing tremola<>tremola since all the content is neatly hidden inside the ciphertext.

    So if this is just intended for Tremola<>Tremola communication, this might be an non-issue actually but I vaguely recall potential interaction with Manyverse where this will definitely be the case (emojis in public posts, etc.).

    Having written verification code for the classic JSON format myself, I firmly believe these two instructions here are too simple:

    1. https://github.com/cn-uofbasel/tremola/blob/bc9cd86a8095d1855713f17a5145f87162197fd6/app/src/main/java/nz/scuttlebutt/tremola/ssb/SSBmsgTypes.kt#L78

    Annoyingly enough, the JS implementation does not use Buffer(msg, "utf8") when hashing a message to a key but "binary" instead, using the internal v8 string representation utf16 but somehow truncates everything but the first byte when turning it into a buffer again. I so far got away with this hack in my implementation, blowing up the string to utf16 and then copying every other byte.

    1. https://github.com/cn-uofbasel/tremola/blob/bc9cd86a8095d1855713f17a5145f87162197fd6/app/src/main/java/nz/scuttlebutt/tremola/ssb/SSBmsgTypes.kt#L85

    This can also be problematic before checking the signature, it's (again, sadly) paramount especially to escape all the string fields. Aljoscha made a thorough list here. I'd suggest adopting unit tests over the JSON in https://github.com/fraction/ssb-validation-dataset as it contains a good chunk of the gnarly corner cases. And just FYI here and here is what I replace/escape, but the list could be different for other JSON encoders.

    opened by cryptix 0
Releases(v0.1)
  • v0.1(Sep 2, 2021)

    Release v0.1 (unsigned debug mode APK)

    What works:

    • onboarding via QR codes
    • SSB for private chats with up to 7 group members
    • local discovery via WLAN (if it permits UDP broadcasting)
    • small append-only logs and chats
    • first interop with Manyverse for Android
    • some UI sugar (renaming of conversations, contacts, settings)

    What does not work:

    • changes in WiFi connectivity (must restart the app to handle such events)
    • redeeming pub invite codes
    • "wavefront surfing" (only download X hundred last entries)
    • testing with monster feeds
    • truncation of chats
    • threading of a conversation (Manyverse treats each post as a separate thread)
    • and many more things
    Source code(tar.gz)
    Source code(zip)
    tremola-debug-v0.1.apk(11.89 MB)
Owner
Computer Networks Group
Computer Networks Group
This is a Bluetooth operational Chat-App developed using Kotlin which shows the list of available devices nearby and paired devices, upon clicking you can start chat

This is a Bluetooth operational Chat-App developed using Kotlin which shows the list of available devices nearby and paired devices, upon clicking you can start chat ... VOILA ???? It is still in its early stages of development and currently let user to one-time chat at a time. It is under heavy development ??

Shalu Ambasta 3 Jan 10, 2022
Multi Lingual Chat app - A modern chat application that allows users to translate text messages into their preferred language

Multi Lingual Chat app - A modern chat application that allows users to translate text messages into their preferred language

Manjunath Nayak 0 Jan 18, 2022
Chat App is built to demonstrate a simple end-to-end chat encryption using RSA and AES algorithms

End-to-End Encrypted Chat ?? Chat App is built to demonstrate a simple end-to-end chat encryption using RSA and AES algorithms Built With ⚒️ Jetpack C

Team Matrix 6 Dec 23, 2022
đź’™ Android sample Avengers chat application using Stream Chat SDK based on MVVM (ViewModel, Coroutines, Room, Hilt, Repository) architecture.

Avengers Chat AvengersChat is a demo application based on modern Android tech stacks and Stream Chat SDK. Previews Download Go to the Releases to down

Jaewoong Eum 352 Dec 25, 2022
Server/Client Chatting application that allows to choose to chat in a group chat or privately to a specific connected user

ktor_chatting_application Server/Client Chatting application that uses Ktor webs

null 10 Jun 14, 2022
Shit Chat is a realtime chat application made with Kotlin.

Shit Chat Shit Chat is a realtime chat application made with Kotlin. Screeshots : Login UI Sign Up UI User List UI Chat UI Features Store Chat on Fire

Vishal Singh 2 Oct 26, 2022
Signal is a messaging app for simple private communication with friends.

Signal Android Signal is a messaging app for simple private communication with friends. Signal uses your phone's data connection (WiFi/3G/4G) to commu

Signal 23.2k Dec 28, 2022
Jitsi Meet - Secure, Simple and Scalable Video Conferences

Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses Jitsi Videobridge to provide high quality, secure and scalable video conferences.

Jitsi 19.1k Jan 2, 2023
NotiNotes - A simple Notes app for Android which only lives in your QS and notification panel

NotiNotes The Notes app for your notification panel. A simple Notes app for Andr

Yann 25 Dec 11, 2022
Android has a built in microphone through which you can capture audio and store it , or play it in your phone. There are many ways to do that but with this dialog you can do all thats with only one dialog.

# Media Recorder Dialog ![](https://img.shields.io/badge/Platform-Android-brightgreen.svg) ![](https://img.shields.io/badge/Android-CustomView-blue.sv

Abdullah Alhazmy 73 Nov 29, 2022