All Projects → aarmea → noise

aarmea / noise

Licence: MIT license
A chat app for the end of the world.

Programming Languages

kotlin
9241 projects
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to noise

redux-bluetooth
Redux middleware to dispatch actions via bluetooth to a peripheral store
Stars: ✭ 17 (-37.04%)
Mutual labels:  bluetooth
mi-lamp-re
💡 Reverse Engineering Notes for the Yeelight Bedside Lamp (BLE)
Stars: ✭ 35 (+29.63%)
Mutual labels:  bluetooth
bluetooth-iot-service-python
This application connects two devices over Bluetooth and allows one to send messages to the other using json. Raspberry Pi Bluetooth interfacing with Linux via RFCOMM BT network
Stars: ✭ 23 (-14.81%)
Mutual labels:  bluetooth
ChromeBluetooth
Demo of a "Stress Display" using Chrome Bluetooth. Reads Heart-rate data, and displays "stress" colors to a smart bulb. (Uses a SBT5007 smart bulb)
Stars: ✭ 14 (-48.15%)
Mutual labels:  bluetooth
ESP32BleAdvertise
Simple library for BLE advertise using ESP32 in Arduino
Stars: ✭ 39 (+44.44%)
Mutual labels:  bluetooth
GoFIT SDK Android
GoFIT SDK for Android — GOLiFE 手環 App 介接 SDK
Stars: ✭ 32 (+18.52%)
Mutual labels:  bluetooth
drivecommand
A communication library which connects a robot (EV3, NXT, etc.) and a device (Android, PC, etc.)
Stars: ✭ 13 (-51.85%)
Mutual labels:  bluetooth
react-native-google-nearby-messages
📲 Communicate with nearby devices using Bluetooth, BLE, WiFi and near-ultrasonic audio. Broadcast and receive small payloads (like strings) using the easy-to-use React Native API!
Stars: ✭ 143 (+429.63%)
Mutual labels:  bluetooth
alfred bluetooth controller
Alfred workflow for managing bluetooth settings and -connections
Stars: ✭ 63 (+133.33%)
Mutual labels:  bluetooth
easyble
A simple framework for Android Bluetooth Low Energy (BLE)
Stars: ✭ 43 (+59.26%)
Mutual labels:  bluetooth
android-bluetooth-serial
A library for Android to simplify basic serial communication over Bluetooth, for example when communicating with Arduinos.
Stars: ✭ 120 (+344.44%)
Mutual labels:  bluetooth
BetterJoyForDolphin
Allows the Nintendo Switch Pro Controller and Joycons to be used with the Dolphin Emulator
Stars: ✭ 44 (+62.96%)
Mutual labels:  bluetooth
ruuvidriver
Serves your Ruuvitag Weather Station data over HTTP.
Stars: ✭ 13 (-51.85%)
Mutual labels:  bluetooth
cloudbbq
A Bluetooth to MQTT bridge for the Tenergy Solis Digital Meat Thermometer and other similar devices.
Stars: ✭ 36 (+33.33%)
Mutual labels:  bluetooth
Blueborne-CVE-2017-1000251
Blueborne CVE-2017-1000251 PoC for linux machines
Stars: ✭ 14 (-48.15%)
Mutual labels:  bluetooth
ble2mqtt
A BLE to MQTT bridge
Stars: ✭ 60 (+122.22%)
Mutual labels:  bluetooth
PiBeacon
Low-cost iBeacon using Raspberry Pi
Stars: ✭ 41 (+51.85%)
Mutual labels:  bluetooth
pymetawear
Community developed SDK around the Python bindings for the C++ SDK
Stars: ✭ 42 (+55.56%)
Mutual labels:  bluetooth
BlueRetro
Multiplayer Bluetooth controllers adapter for retro video game consoles
Stars: ✭ 520 (+1825.93%)
Mutual labels:  bluetooth
openEMSstim
openEMSstim: open-hardware module to adjust the intensity of EMS/TENS stimulators.
Stars: ✭ 90 (+233.33%)
Mutual labels:  bluetooth

Noise

A chat app for the end of the world.

Build Status

What's wrong with chat today

On traditional chat platforms, mobile devices connect over the Internet to a central server which is responsible for relaying messages to their destinations. This has a few problems:

  • Cell phone towers and the servers implementing chat services are single points of failure.
  • Natural disasters can easily wipe out infrastructure. In Puerto Rico, it took months to restore cell phone service after Hurricane Maria.
  • Cell phone service tends to be unreliable in sparsely populated areas.
  • At concerts, conventions, protests, or similar situations, cell phone towers can be overloaded making it difficult to get packets through.
  • In China, North Korea, Turkey, and anywhere else that freedom of speech is not respected, existing communications infrastructure is monitored and censored.

How Noise will fix this

A formal paper describing Noise could be titled: "Adapting epidemic routing for commodity phones in adversarial conditions". Let's unwrap this:

  • Epidemic routing is a store-and-forward protocol that allows messages to travel long distances over random connections between any two nodes. These connections can happen if two Noise users enter each other's vicinity. When this happens, the app will automatically connect and sync messages as long as they are close enough.
  • To enable this as a plug-and-play solution, I implemented a battery-efficient way for Android apps to automatically discover and connect to nearby devices over Bluetooth. Once you install Noise, your phone is part of the network and can send and receive messages. No extra hardware is needed.
  • To prevent spam and jamming, individual messages require a proof-of-work. This makes it computationally difficult to create new messages but easy to verify them while syncing. Messages that fail this check are discarded.
  • The proof-of-work is also used to assign importance to an individual message. While syncing, more recent and more important messages are sent first, and less important messages are deleted first when the database exceeds its preset size limit. In this way, the proof-of-work also establishes a pseudo-TTL.

This provides a prioritized flat database of cleartext messages. Two-way chat can be implemented on top of this:

  • Identity announcement can just be a message with high importance. By including a public key here, others will be able to send messages to this identity.
  • The Signal protocol was originally designed to provide end-to-end encrypted chat on top of SMS. As a result, it works on top of asynchronous links.
  • When syncing, Noise can check if any of its private keys can decrypt the message. If it can, then the message has reached its destination.

I also plan on making this database available as a local API to allow developers to build robust communications into their apps.

What works so far

  • Epidemic routing over Bluetooth
  • Proof-of-work for message validation

Legal

Cryptography notice

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

Experimental software

This project has not been reviewed by a security expert. If you entrust Noise with sensitive information, you are doing so at your own risk.

License

You may use Noise under the terms of the MIT license. See LICENSE for more details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].