From c2a3518e96ca90ecdf2159c4bd4ccbe200a2110b Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Mon, 17 May 2021 21:58:52 -0700 Subject: [PATCH] Adding REM Mixer Concept + Stub Code --- .gitignore | 1 + .idea/.gitignore | 8 ++ .idea/modules.xml | 8 ++ .idea/niwl.iml | 15 +++ .idea/sqldialects.xml | 6 ++ .idea/vcs.xml | 6 ++ Cargo.lock | 71 ++++++++++++- Cargo.toml | 2 +- README.md | 94 ++++++++++++++++- niwl-client/Cargo.toml | 2 +- niwl-client/src/main.rs | 114 +++++++++++++------- niwl-rem/Cargo.toml | 19 ++++ niwl-rem/src/lib.rs | 58 ++++++++++ niwl-rem/src/main.rs | 135 ++++++++++++++++++++++++ niwl-server/Cargo.toml | 5 +- niwl-server/sql/create.sql | 9 +- niwl-server/src/main.rs | 152 ++++++++++++++++++++------- niwl/Cargo.toml | 8 +- niwl/src/encrypt.rs | 120 +++++++++++++++++++++ niwl/src/lib.rs | 210 ++++++++++++++++++++++++++++--------- references/heartbeat.pdf | Bin 0 -> 135081 bytes 21 files changed, 908 insertions(+), 135 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/modules.xml create mode 100644 .idea/niwl.iml create mode 100644 .idea/sqldialects.xml create mode 100644 .idea/vcs.xml create mode 100644 niwl-rem/Cargo.toml create mode 100644 niwl-rem/src/lib.rs create mode 100644 niwl-rem/src/main.rs create mode 100644 niwl/src/encrypt.rs create mode 100644 references/heartbeat.pdf diff --git a/.gitignore b/.gitignore index 8c68b38..21b757b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /target *.profile *.sqlite +*.niwl diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..692fc1b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/niwl.iml b/.idea/niwl.iml new file mode 100644 index 0000000..7af36cb --- /dev/null +++ b/.idea/niwl.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..95e4605 --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index e9aabd7..c9c57e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "aead" version = "0.2.0" @@ -219,6 +221,7 @@ dependencies = [ "libc", "num-integer", "num-traits", + "serde", "time", "winapi 0.3.9", ] @@ -287,6 +290,12 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-mac" version = "0.7.0" @@ -495,7 +504,9 @@ dependencies = [ [[package]] name = "fuzzytags" -version = "0.4.0" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0621e31a90168e36ecbba544f42ec8f4078db50272abdbbe172a1af9f5ea5e28" dependencies = [ "bit-vec", "curve25519-dalek", @@ -1031,11 +1042,15 @@ version = "0.1.0" dependencies = [ "base32", "bincode", + "curve25519-dalek", "fuzzytags", "hex", + "rand 0.7.3", "reqwest", + "secretbox", "serde", "serde_json", + "sha3", ] [[package]] @@ -1054,14 +1069,32 @@ dependencies = [ "tokio", ] +[[package]] +name = "niwl-rem" +version = "0.1.0" +dependencies = [ + "base32", + "bincode", + "chrono", + "clap", + "fuzzytags", + "hex", + "niwl", + "reqwest", + "serde", + "serde_json", + "tokio", +] + [[package]] name = "niwl-server" version = "0.1.0" dependencies = [ - "chrono", "fuzzytags", + "niwl", "rocket", "rocket_contrib", + "serde_json", ] [[package]] @@ -1619,6 +1652,12 @@ dependencies = [ "time", ] +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + [[package]] name = "ryu" version = "1.0.5" @@ -1665,6 +1704,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "secretbox" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55405b834101c4f14b3a1c35c0bc426ee41ff31ffe04f18a0575786b5c807c7" +dependencies = [ + "rand 0.7.3", + "uint", +] + [[package]] name = "security-framework" version = "2.0.0" @@ -1784,6 +1833,12 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3015a7d0a5fd5105c91c3710d42f9ccf0abfb287d62206484dcc67f9569a6483" +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "strsim" version = "0.10.0" @@ -1989,6 +2044,18 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" +[[package]] +name = "uint" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9db035e67dfaf7edd9aebfe8676afcd63eed53c8a4044fed514c8cccf1835177" +dependencies = [ + "byteorder", + "crunchy", + "rustc-hex", + "static_assertions", +] + [[package]] name = "unicase" version = "1.4.2" diff --git a/Cargo.toml b/Cargo.toml index b2645c7..adeca61 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,2 +1,2 @@ [workspace] -members=["./niwl", "niwl-client","niwl-server"] \ No newline at end of file +members=["niwl", "niwl-client","niwl-server","niwl-rem"] \ No newline at end of file diff --git a/README.md b/README.md index 5316ac7..8b2faf7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# niwl - a prototype system for metadata resistant notifications +# niwl - a prototype system for open, decentralized, metadata resistant communication **niwl** (_/nɪu̯l/_) - fog, mist or haze (Welsh). @@ -8,13 +8,97 @@ event has happened e.g. a new group message, a payment etc. **niwl** provides a set of libraries, clients and servers to provide this in a metadata resistant, bandwidth efficient way based on [fuzzytags](https://crates.io/crates/fuzzytags). -# Overview +# How Niwl Works + +A Niwl system relies on a single, untrusted routing server that acts as a bulletin board. + +Niwl clients can post and fetch messages to and from the server. When posting a message a client attaches a fuzzytag +generated for the receiver that allows the receiver to not only identify the message, but also to restrict the number +of other messages they have to download (see [Fuzzytags](https://docs.openprivacy.ca/fuzzytags-book/introduction.html) and [Fuzzy Message Detection](https://eprint.iacr.org/2021/089)) + +In order to provide statistical anonymity , the above base functionality is extended by a special class of client +called `random ejection mixers` or `REMs` for short. + +`REMs` reinforce the anonymity of the system in two ways: + +1. `REMs` download all the of messages from the server. Thus providing cover for receivers who download only a fraction + of the messages. A Niwl server cannot distinguish between a message intended for a REM from a message intended for an + ordinary client. + +2. Clients can wrap messages to other clients in a message that is first forwarded to a `REM`. The `REM` then decrypts + the message and adds it to a store of messages - ejecting a previously stored message (at random) first to make space. + + +## Random Ejection Mixers (REMs) + +A REM starts with a store of `n` randomly generated messages with randomly generated fuzzytags. These messages are +for all intents and purposes "noise". Each REM also generates a TaggingKey that it can provide (publicly or privately) +to other clients who wish to use the REMs services. + +Each REM constantly checks the Niwl Server for messages. It checks each message it downloads against its RootSecret +and if the FuzzyTag verifies then it proceeds to decrypt the message. + +The primary service a REM provides is anonymous mixing. A decrypted mixpacket contains 2 fields: + +1. The fuzzytag of the message to forward. +2. The message itself, which we will assume to be encrypted by some out-of-scope process. + +Once a message is decrypted, an existing message from the store is randomly chosen to be ejected by the mix - and is +posted to the Niwl Server. The new decrypted message takes its place in the message store. + +### On the Privacy of REMs + +Fuzzytags themselves can only be linked to receivers via those in position of a RootSecret *or* Niwl Servers who +possess the `VerificationKey` - as such, assuming that there is no collusion between a particular REM and a Niwl Server +there is no mechanism through which a REM can associate message with a (set of) receiver(s). + +Further, (again assuming no collusion between a particular REM and a Niwl Server), there is no mechanism for a REM to associate +a message with a particular sender. + +Finally, and perhaps most importantly, there is no limit on the number of REMs permitted in a particular system. Different +parties can select different REMs with different trust valuations. REMs can join the system at any time without permission +from any other entity. In other words, unlike traditional mixnets or onion routing, the system does not rely on consensus +regarding the mixing entities to ensure privacy. + +### On the Security of REMS + +`n-1 attacks` / `flooding attacks` and other active attacks on mixers are a valid concern with any mixing strategy. + +This broad genre of attacks can be generalized as follows: + +1. REMs start with a pool of randomly generated messages, this protected initial messages sent to the REM. +2. Over time this pool is probabilistically replaced by messages from the network. +3. A malicious Niwl server, having identified a REM, can flood the REM with its own messages. +4. At a certain number of messages, the probability that a REM store contains only messages from the Niwl server approaches 1.0. +5. A Niwl server can then delay every other message sent to it by other clients one-by-one. + 1. If the message isn't for the REM then nothing will happen. + 2. If the message is for the REM then the REM will either eject a message known to the Niwl Server, or it will eject + an unknown message than the Niwl Server can then correlate with a Sender and a set of Receivers. + +First, we should note that Niwl is less prone to these kinds of attacks because: + +1. REMs are not, a-priori, known to the Niwl Server and such are more difficult to target than mixers in traditional mixnets. +2. Different parties can rely on different REMs without compromising metadata privacy. + +As such targeting a particular mix is not an effective strategy for undermining the anonymity set of the entire system. + +Further, REMs employ [heartbeat messages](references/heartbeat.pdf) (messages periodically sent to the Niwl server addressed to the REM) +to detect such attacks. If a REM does not receive its own heartbeat message shortly after it is sent, it begins injecting random messages + into its pool to thwart mixers. It can also display this status publicly and/or include the status in legitimate messages alerting + other clients to the malicious Niwl Server + + +# Code Overview + +**niwl** provides common library functions useful to all other packages. **niwl-server** provides a web server with a json API for posting new tags and querying the tags database. **niwl-client** provides a command-line application for managing secrets, tagging keys of parties and posting / querying for new tags. +**niwl-rem** provides an implementation of the random ejection mixer. + For a more detailed overview please check out each individual crate. # Example @@ -32,4 +116,8 @@ For a more detailed overview please check out each individual crate. Tag for bob 7e441275a5c3f88606c34c3451a44eaeaa025680cfcb3d9db53992501cc22134 4f7a7f961bc19297fee98da5f8601aa8373429b80b10c55dbe8116aa8c497a0e 71d8da niwl-client bob.profile detect 10 - 7e441275a5c3f88606c34c3451a44eaeaa025680cfcb3d9db53992501cc22134 4f7a7f961bc19297fee98da5f8601aa8373429b80b10c55dbe8116aa8c497a0e 71d8da \ No newline at end of file + 7e441275a5c3f88606c34c3451a44eaeaa025680cfcb3d9db53992501cc22134 4f7a7f961bc19297fee98da5f8601aa8373429b80b10c55dbe8116aa8c497a0e 71d8da + +## References + +* Danezis, George, and Len Sassaman. "Heartbeat traffic to counter (n-1) attacks: red-green-black mixes." Proceedings of the 2003 ACM workshop on Privacy in the electronic society. 2003. \ No newline at end of file diff --git a/niwl-client/Cargo.toml b/niwl-client/Cargo.toml index cf03c4c..2661cbe 100644 --- a/niwl-client/Cargo.toml +++ b/niwl-client/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" [dependencies] niwl = {path="../niwl"} -fuzzytags = {path="../../fuzzymetatag"} +fuzzytags = "0.4.2" clap = "3.0.0-beta.2" serde = {version="1.0.123", features=["derive"]} serde_json = "1.0.61" diff --git a/niwl-client/src/main.rs b/niwl-client/src/main.rs index 40da673..5c5be6a 100644 --- a/niwl-client/src/main.rs +++ b/niwl-client/src/main.rs @@ -1,13 +1,11 @@ use clap::Clap; -use std::fs; -use niwl::{Profile}; +use niwl::Profile; #[derive(Clap)] #[clap(version = "1.0", author = "Sarah Jamie Lewis ")] struct Opts { - #[clap(default_value = "niwl.profile")] - profile_filename: String, + profile: String, #[clap(default_value = "http://localhost:8000")] niwl_server: String, @@ -21,27 +19,27 @@ enum SubCommand { Generate(Generate), ImportTaggingKey(ImportTaggingKey), TagAndSend(TagAndSend), - Detect(Detect) + TagAndMix(TagAndMix), + Detect(Detect), } /// Generate a new niwl.profile file #[derive(Clap)] struct Generate { - name: String + name: String, + #[clap(default_value = "2")] + length: usize, } /// Import a friends tagging key into this profile so you can send messages to them #[derive(Clap)] struct ImportTaggingKey { - key: String + key: String, } /// Connect to a server and check for new notifications #[derive(Clap)] -struct Detect { - #[clap(default_value = "2")] - length: u8 -} +struct Detect {} /// Send a message to a friend tagged with their niwl key #[derive(Clap)] @@ -52,33 +50,50 @@ struct TagAndSend { message: String, } -fn get_profile(profile_filename: &String) -> Profile { - match fs::read_to_string(profile_filename) { - Ok(json) => serde_json::from_str(json.as_str()).unwrap(), - Err(why) => { - panic!("couldn't read orb.profile : {}", why); - } - } +/// Send a message to a friend tagged with their niwl key +#[derive(Clap)] +struct TagAndMix { + /// the id of the mix + mix: String, + /// the id of the friend e.g. "alice" + id: String, + /// the message you want to send. + message: String, } - - fn main() { let opts: Opts = Opts::parse(); match opts.subcmd { SubCommand::Generate(g) => { - let profile = Profile::new(g.name.clone()); - let hotk = profile.human_readable_tagging_key(); - println!("Tagging Key: {}", base32::encode(base32::Alphabet::RFC4648{padding:false} ,bincode::serialize(&hotk).unwrap().as_slice()).to_ascii_lowercase()); - profile.save(&opts.profile_filename); + let profile = Profile::new(g.name.clone(), g.length); + let hotk = profile.keyset(); + println!( + "Tagging Key: {}", + base32::encode( + base32::Alphabet::RFC4648 { padding: false }, + bincode::serialize(&hotk).unwrap().as_slice() + ) + .to_ascii_lowercase() + ); + match profile.save(&opts.profile) { + Err(e) => { + println!("[ERROR] {}", e) + } + _ => {} + } } SubCommand::ImportTaggingKey(cmd) => { - let mut profile = get_profile(&opts.profile_filename); + let mut profile = Profile::get_profile(&opts.profile); profile.import_tagging_key(&cmd.key); - profile.save(&opts.profile_filename); - }, + match profile.save(&opts.profile) { + Err(e) => { + println!("[ERROR] {}", e) + } + _ => {} + } + } SubCommand::TagAndSend(cmd) => { - let mut profile = get_profile(&opts.profile_filename); + let profile = Profile::get_profile(&opts.profile); let server = opts.niwl_server.clone(); let contact = cmd.id.clone(); tokio::runtime::Builder::new_current_thread() @@ -86,12 +101,28 @@ fn main() { .build() .unwrap() .block_on(async { - let result = profile.tag_and_send(server, contact).await; + let result = profile.tag_and_send(server, contact, &cmd.message).await; println!("{}", result.unwrap().text().await.unwrap()); }); - }, - SubCommand::Detect(cmd) => { - let mut profile = get_profile(&opts.profile_filename); + } + SubCommand::TagAndMix(cmd) => { + let profile = Profile::get_profile(&opts.profile); + let server = opts.niwl_server.clone(); + let contact = cmd.id.clone(); + let mix = cmd.mix.clone(); + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + let result = profile + .tag_and_mix(server, mix, contact, &cmd.message) + .await; + println!("{}", result.unwrap().text().await.unwrap()); + }); + } + SubCommand::Detect(_cmd) => { + let mut profile = Profile::get_profile(&opts.profile); let server = opts.niwl_server.clone(); tokio::runtime::Builder::new_current_thread() .enable_all() @@ -100,15 +131,28 @@ fn main() { .block_on(async { match profile.detect_tags(server).await { Ok(detected_tags) => { - for tag in detected_tags.detected_tags { - println!("{}", tag); + for (tag, ciphertext) in detected_tags.detected_tags.iter() { + match profile.private_key.decrypt(ciphertext) { + Some(message) => { + println!("message: {}", message) + } + _ => {} + } + profile.update_previously_seen_tag(tag); } - }, + } Err(err) => { println!("Error: {}", err) } } }); + + match profile.save(&opts.profile) { + Err(e) => { + println!("[ERROR] {}", e) + } + _ => {} + } } } } diff --git a/niwl-rem/Cargo.toml b/niwl-rem/Cargo.toml new file mode 100644 index 0000000..30886bd --- /dev/null +++ b/niwl-rem/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "niwl-rem" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +niwl = {path="../niwl"} +fuzzytags = "0.4.2" +clap = "3.0.0-beta.2" +serde = {version="1.0.123", features=["derive"]} +serde_json = "1.0.61" +bincode = "1.3.1" +hex = "0.4.2" +base32 = "0.4.0" +reqwest = {version="0.11.0", features=["json"]} +tokio = "1.2.0" +chrono = {version="0.4.19", features=["serde"]} \ No newline at end of file diff --git a/niwl-rem/src/lib.rs b/niwl-rem/src/lib.rs new file mode 100644 index 0000000..f72d92b --- /dev/null +++ b/niwl-rem/src/lib.rs @@ -0,0 +1,58 @@ +use crate::MixMessage::{Forward, Heartbeat}; +use chrono::{DateTime, Duration, Local, NaiveDateTime}; +use fuzzytags::{RootSecret, Tag, TaggingKey}; +use niwl::encrypt::{PrivateKey, TaggedCiphertext}; +use niwl::Profile; +use serde::{Deserialize, Serialize}; +use std::fmt::Error; + +#[derive(Serialize, Deserialize)] +pub enum MixMessage { + Heartbeat(Tag<24>, DateTime), + Forward(TaggedCiphertext), +} + +pub struct RandomEjectionMix { + heartbeat_id: Tag<24>, +} + +impl RandomEjectionMix { + pub fn init(tag: Tag<24>) -> RandomEjectionMix { + RandomEjectionMix { heartbeat_id: tag } + } + + pub fn push(&mut self, tag: &Tag<24>, plaintext: &String) -> Option { + // The plaintext can either be a TaggedCiphertext OR a HeartBeat + let message: serde_json::Result = + serde_json::from_str(plaintext.as_str()); + match &message { + Ok(ciphertext) => return Some(Forward(self.random_ejection_mix(ciphertext))), + Err(_) => { + // Assume this is a Mix Message + let message: serde_json::Result = + serde_json::from_str(plaintext.as_str()); + match &message { + Ok(mixMessage) => match mixMessage { + Heartbeat(id, time) => self.process_heartbeat(id, time), + _ => None, + }, + Err(_) => None, + } + } + } + } + + fn process_heartbeat(&self, tag: &Tag<24>, heartbeat: &DateTime) -> Option { + if tag == &self.heartbeat_id { + println!("Received HeartBeat @ {}", heartbeat); + let new_heartbeat = Heartbeat(self.heartbeat_id.clone(), Local::now()); + return Some(new_heartbeat); + } + None + } + + // Actually do the Random Ejection Mixing... + fn random_ejection_mix(&mut self, ciphertext: &TaggedCiphertext) -> TaggedCiphertext { + ciphertext.clone() + } +} diff --git a/niwl-rem/src/main.rs b/niwl-rem/src/main.rs new file mode 100644 index 0000000..52b0226 --- /dev/null +++ b/niwl-rem/src/main.rs @@ -0,0 +1,135 @@ +use chrono::Local; +use clap::Clap; +use niwl::Profile; +use niwl_rem::MixMessage::Heartbeat; +use niwl_rem::{MixMessage, RandomEjectionMix}; +use std::time::Duration; + +#[derive(Clap)] +#[clap(version = "1.0", author = "Sarah Jamie Lewis ")] +struct Opts { + #[clap(default_value = "niwl.profile")] + profile_filename: String, + + #[clap(default_value = "http://localhost:8000")] + niwl_server: String, + + #[clap(subcommand)] + subcmd: SubCommand, +} + +#[derive(Clap)] +enum SubCommand { + Generate(Generate), + Run(Run), +} + +/// Generate a new niwl.profile file +#[derive(Clap)] +struct Generate { + name: String, +} + +/// Run a Random Ejection Mix +#[derive(Clap)] +struct Run {} + +fn main() { + let opts: Opts = Opts::parse(); + match opts.subcmd { + SubCommand::Generate(g) => { + let profile = Profile::new(g.name.clone(), 0); + let hotk = profile.keyset(); + println!( + "Tagging Key: {}", + base32::encode( + base32::Alphabet::RFC4648 { padding: false }, + bincode::serialize(&hotk).unwrap().as_slice() + ) + .to_ascii_lowercase() + ); + profile.save(&opts.profile_filename); + } + SubCommand::Run(_cmd) => { + let mut profile = Profile::get_profile(&opts.profile_filename); + let server = opts.niwl_server.clone(); + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap() + .block_on(async { + let random_tag = profile.root_secret.tagging_key().generate_tag(); + let mut rem = RandomEjectionMix::init(random_tag.clone()); + println!("kicking off initial heartbeat..."); + profile + .send_to_self( + &server, + &serde_json::to_string(&Heartbeat(random_tag.clone(), Local::now())) + .unwrap(), + ) + .await; + println!("starting.."); + let detection_key = profile.root_secret.extract_detection_key(24); + + loop { + match profile.detect_tags(&server).await { + Ok(detected_tags) => { + let mut latest_tag = None; + for (tag, ciphertext) in detected_tags.detected_tags.iter() { + if detection_key.test_tag(&tag) { + let plaintext = profile.private_key.decrypt(ciphertext); + match plaintext { + Some(plaintext) => match rem.push(tag, &plaintext) { + None => {} + Some(message) => { + let response = match &message { + MixMessage::Heartbeat(_, _) => { + profile + .send_to_self( + &server, + &serde_json::to_string( + &message, + ) + .unwrap(), + ) + .await + } + MixMessage::Forward(ciphertext) => { + profile + .forward(&server, ciphertext) + .await + } + }; + + match response { + Err(err) => { + println!("[ERROR] {:?}", err); + } + _ => {} + } + } + }, + _ => {} + } + } + latest_tag = Some(tag.clone()); + } + println!("Updating..."); + match &latest_tag { + Some(tag) => { + profile.update_previously_seen_tag(tag); + } + _ => {} + } + } + Err(err) => { + println!("Error: {}", err) + } + } + println!("sleeping.."); + tokio::time::sleep(Duration::new(5, 0)).await; + } + }); + } + } +} diff --git a/niwl-server/Cargo.toml b/niwl-server/Cargo.toml index 3bae9bf..0a3e93f 100644 --- a/niwl-server/Cargo.toml +++ b/niwl-server/Cargo.toml @@ -7,7 +7,8 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -fuzzytags = {path="../../fuzzymetatag"} +niwl = {path="../niwl"} +fuzzytags = "0.4.2" rocket = "0.4.6" rocket_contrib = {version="0.4.6", features=["sqlite_pool"]} -chrono = "0.4.19" \ No newline at end of file +serde_json = "1.0.61" \ No newline at end of file diff --git a/niwl-server/sql/create.sql b/niwl-server/sql/create.sql index 67b6d0b..72f00db 100644 --- a/niwl-server/sql/create.sql +++ b/niwl-server/sql/create.sql @@ -1,4 +1,5 @@ -create table if not exists tags ( - id text primary key, - tag blob not null unique - ) \ No newline at end of file +CREATE TABLE IF NOT EXISTS tags ( + id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + tag BLOB NOT NULL UNIQUE, + message TEXT NOT NULL +) \ No newline at end of file diff --git a/niwl-server/src/main.rs b/niwl-server/src/main.rs index 6c37c59..f9c017b 100644 --- a/niwl-server/src/main.rs +++ b/niwl-server/src/main.rs @@ -1,55 +1,131 @@ #![feature(proc_macro_hygiene, decl_macro)] -#[macro_use] extern crate rocket; -#[macro_use] extern crate rocket_contrib; +#[macro_use] +extern crate rocket; +#[macro_use] +extern crate rocket_contrib; -use rocket_contrib::json; use fuzzytags::{DetectionKey, Tag}; -use rocket_contrib::json::{Json, JsonValue}; +use niwl::encrypt::TaggedCiphertext; +use niwl::{FetchMessagesRequest, PostMessageRequest}; use rocket_contrib::databases::rusqlite; use rocket_contrib::databases::rusqlite::types::ToSql; -use chrono::{Utc, Duration}; -use std::ops::Sub; +use rocket_contrib::json; +use rocket_contrib::json::{Json, JsonValue}; #[database("tags")] struct TagsDbConn(rusqlite::Connection); -#[post("/new", format = "application/json", data = "")] -fn new(conn:TagsDbConn, tag: Json>) -> JsonValue { - conn.0.execute( - "INSERT INTO tags (id, tag) VALUES (strftime('%Y-%m-%d %H:%M:%S:%f', 'now'), ?1)", - &[&tag.0.compress() as &dyn ToSql], - ).unwrap(); - json!({"tag" : tag.to_string()}) -} - -#[post("/tags", format = "application/json", data = "")] -fn tags(conn:TagsDbConn, detection_key: Json>) -> JsonValue { - - let mut stmt = conn.0.prepare( - "SELECT tag FROM tags WHERE id > (?1) AND id < (?2)", - ).unwrap(); - - let now = Utc::now(); - let after = now.sub(Duration::days(1)).format("%Y-%m-%d %H:%M:%S:%f").to_string(); - let before = now.format("%Y-%m-%d %H:%M:%S:%f").to_string(); - let selected_tags = stmt.query_map(&[&after, &before], |row| { - let tag_bytes : Vec = row.get(0); - let tag = Tag::<24>::decompress(tag_bytes.as_slice()).unwrap(); - tag - }).unwrap(); - - let mut detected_tags : Vec> = vec![]; - for tag in selected_tags { - let tag : Tag<24> = tag.unwrap(); - if detection_key.0.test_tag(&tag) { - detected_tags.push(tag); +#[post("/new", format = "application/json", data = "")] +fn new(conn: TagsDbConn, post_message_request: Json) -> JsonValue { + match serde_json::to_string(&post_message_request.ciphertext) { + Ok(ciphertext) => { + match conn.0.execute( + "INSERT INTO tags (tag, message) VALUES (?1, ?2);", + &[ + &post_message_request.tag.compress() as &dyn ToSql, + &ciphertext, + ], + ) { + Ok(_) => { + json!({"tag" : post_message_request.tag.to_string()}) + } + Err(_) => { + json!({"tag" : "error"}) + } + } + } + _ => { + json!({"tag" : "error"}) } } +} - json!({"detected_tags" : detected_tags}) +#[post("/tags", format = "application/json", data = "")] +fn tags(conn: TagsDbConn, fetch_message_request: Json) -> JsonValue { + let mut detected_tags: Vec<(Tag<24>, TaggedCiphertext)> = vec![]; + + let mut select = conn + .0 + .prepare("SELECT tag,message FROM tags WHERE id>(SELECT id FROM tags WHERE tag=(?));") + .unwrap(); + + let mut select_all = conn.0.prepare("SELECT tag,message FROM tags;").unwrap(); + + let all = match &fetch_message_request.reference_tag { + Some(tag) => { + let mut stmt = conn + .0 + .prepare("SELECT COUNT(*) FROM tags WHERE tag=(?);") + .unwrap(); + let count = stmt.query_row(&[&tag.compress() as &dyn ToSql], |row| { + let count: i32 = row.get(0); + return count; + }); + match count { + Ok(count) => count == 0, + _ => true, + } + } + None => true, + }; + + match all { + false => { + let ref_tag = fetch_message_request.reference_tag.clone().unwrap(); + let selected_tags = select + .query_map(&[&ref_tag.compress() as &dyn ToSql], |row| { + let tag_bytes: Vec = row.get(0); + let tag = Tag::<24>::decompress(tag_bytes.as_slice()).unwrap(); + + let ciphertext_json: String = row.get(1); + let message: TaggedCiphertext = + serde_json::from_str(ciphertext_json.as_str()).unwrap(); + (tag, message) + }) + .unwrap(); + for result in selected_tags { + match result { + Ok((tag, ciphertext)) => { + if fetch_message_request.detection_key.test_tag(&tag) { + detected_tags.push((tag, ciphertext)); + } + } + _ => {} + } + } + } + true => { + let selected_tags = select_all + .query_map(&[], |row| { + let tag_bytes: Vec = row.get(0); + let tag = Tag::<24>::decompress(tag_bytes.as_slice()).unwrap(); + + let ciphertext_json: String = row.get(1); + let message: TaggedCiphertext = + serde_json::from_str(ciphertext_json.as_str()).unwrap(); + (tag, message) + }) + .unwrap(); + for result in selected_tags { + match result { + Ok((tag, ciphertext)) => { + if fetch_message_request.detection_key.test_tag(&tag) { + detected_tags.push((tag, ciphertext)); + } + } + _ => {} + } + } + } + }; + + json!({ "detected_tags": detected_tags }) } fn main() { - rocket::ignite().attach(TagsDbConn::fairing()).mount("/", routes![tags, new]).launch(); + rocket::ignite() + .attach(TagsDbConn::fairing()) + .mount("/", routes![tags, new]) + .launch(); } diff --git a/niwl/Cargo.toml b/niwl/Cargo.toml index d962810..295d1b7 100644 --- a/niwl/Cargo.toml +++ b/niwl/Cargo.toml @@ -7,10 +7,14 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -fuzzytags = {path="../../fuzzymetatag"} +fuzzytags = "0.4.2" serde = {version="1.0.123", features=["derive"]} serde_json = "1.0.61" bincode = "1.3.1" hex = "0.4.2" base32 = "0.4.0" -reqwest = {version="0.11.0", features=["json"]} \ No newline at end of file +rand = "0.7.3" +curve25519-dalek = {version="3.0.0", features=["serde"]} +sha3 = "0.9.1" +reqwest = {version="0.11.0", features=["json"]} +secretbox = {version="0.1.2"} \ No newline at end of file diff --git a/niwl/src/encrypt.rs b/niwl/src/encrypt.rs new file mode 100644 index 0000000..7dad9b1 --- /dev/null +++ b/niwl/src/encrypt.rs @@ -0,0 +1,120 @@ +use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT; +use curve25519_dalek::digest::Digest; +use curve25519_dalek::ristretto::RistrettoPoint; +use curve25519_dalek::scalar::Scalar; +use fuzzytags::Tag; +use rand::rngs::OsRng; +use secretbox::CipherType::Salsa20; +use secretbox::SecretBox; +use serde::{Deserialize, Serialize}; +use std::ops::Mul; + +/// TaggedCiphertext is a wrapper around a Tag and an encrypted payload (in addition to a +/// nonce value). +#[derive(Serialize, Deserialize, Clone)] +pub struct TaggedCiphertext { + pub tag: Tag<24>, + nonce: RistrettoPoint, + ciphertext: Vec, +} + +/// A Private Key used when encrypting to a niwl client +#[derive(Serialize, Deserialize)] +pub struct PrivateKey(Scalar); + +/// A Public Key derived from a niwl PrivateKey +#[derive(Serialize, Deserialize)] +pub struct PublicKey(RistrettoPoint); + +impl PublicKey { + /// Encrypt to Tag provides uni-directional encrypted + pub fn encrypt(&self, tag: &Tag<24>, message: &String) -> TaggedCiphertext { + // Generate a random point. We will use the public part as a nonce + // And the private part to generate a key. + let mut rng = OsRng::default(); + let r = Scalar::random(&mut rng); + let z = RISTRETTO_BASEPOINT_POINT.mul(r); + + // Compile our (public) nonce...we derive a new random nonce by hashing + // the public z parameter with the tag. + let mut nonce_hash = sha3::Sha3_256::new(); + nonce_hash.update(z.compress().as_bytes()); + nonce_hash.update(tag.compress()); + let mut nonce = [0u8; 24]; + nonce[..].copy_from_slice(&nonce_hash.finalize().as_slice()[0..24]); + + // Calculate the key by multiplying part of the tagging key by our private 'r' + let mut hash = sha3::Sha3_256::new(); + hash.update(self.0.mul(r).compress().as_bytes()); + hash.update(tag.compress()); + let key = hash.finalize().to_vec(); + let secret_box = SecretBox::new(key, Salsa20).unwrap(); + + let ciphertext = secret_box.seal(message.as_bytes(), nonce); + TaggedCiphertext { + tag: tag.clone(), + nonce: z, + ciphertext, + } + } +} + +impl PrivateKey { + pub fn generate() -> PrivateKey { + let mut rng = OsRng::default(); + let r = Scalar::random(&mut rng); + PrivateKey { 0: r } + } + + pub fn public_key(&self) -> PublicKey { + PublicKey { + 0: RISTRETTO_BASEPOINT_POINT.mul(self.0), + } + } + + /// Decrypt a tagged ciphertext + pub fn decrypt(&self, ciphertext: &TaggedCiphertext) -> Option { + // Derive the public nonce... + let mut nonce_hash = sha3::Sha3_256::new(); + nonce_hash.update(ciphertext.nonce.compress().as_bytes()); + nonce_hash.update(ciphertext.tag.compress()); + let mut nonce = [0u8; 24]; + nonce[..].copy_from_slice(&nonce_hash.finalize().as_slice()[0..24]); + + // Calculate the key by multiplying the public point with our private 'x' + let mut hash = sha3::Sha3_256::new(); + hash.update(ciphertext.nonce.mul(self.0).compress().as_bytes()); + hash.update(ciphertext.tag.compress()); + let key = hash.finalize().to_vec(); + + let secret_box = SecretBox::new(key, Salsa20).unwrap(); + match secret_box.unseal(ciphertext.ciphertext.as_slice(), nonce) { + Some(plaintext) => match String::from_utf8(plaintext) { + Ok(plaintext) => Some(plaintext), + Err(_) => None, + }, + None => None, + } + } +} + +#[cfg(test)] +mod tests { + use crate::encrypt::PrivateKey; + use fuzzytags::RootSecret; + + #[test] + fn test_encrypt_to_tag() { + let secret = PrivateKey::generate(); + let public_key = secret.public_key(); + + let root_secret = RootSecret::<24>::generate(); + let tagging_key = root_secret.tagging_key(); + + let ciphertext = + public_key.encrypt(&tagging_key.generate_tag(), &String::from("Hello World")); + + let plaintext = secret.decrypt(&ciphertext); + assert_eq!(plaintext.unwrap(), String::from("Hello World")) + } +} diff --git a/niwl/src/lib.rs b/niwl/src/lib.rs index 58d37a8..27e14d1 100644 --- a/niwl/src/lib.rs +++ b/niwl/src/lib.rs @@ -1,51 +1,88 @@ #![feature(into_future)] -use fuzzytags::{RootSecret, TaggingKey, Tag}; -use std::fs::File; -use std::io::Write; +use crate::encrypt::{PrivateKey, PublicKey, TaggedCiphertext}; +use fuzzytags::{DetectionKey, RootSecret, Tag, TaggingKey}; +use reqwest::{Error, Response}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; -use reqwest::{Response, Error}; -use std::future::{Future, IntoFuture}; +use std::fs; +use std::fs::File; +use std::io::Write; + +pub mod encrypt; #[derive(Debug)] pub enum NiwlError { NoKnownContactError(String), - RemoteServerError(String) + RemoteServerError(String), } -#[derive(Serialize,Deserialize)] +#[derive(Serialize, Deserialize)] pub struct Profile { profile_name: String, - root_secret: RootSecret<24>, - tagging_keys: HashMap>, + pub root_secret: RootSecret<24>, + pub private_key: PrivateKey, + tagging_keys: HashMap, PublicKey)>, + detection_key_length: usize, + last_seen_tag: Option>, } -#[derive(Serialize,Deserialize)] -pub struct HumanOrientedTaggingKey { +#[derive(Serialize, Deserialize)] +pub struct KeySet { profile_name: String, tagging_key: TaggingKey<24>, + public_key: PublicKey, } #[derive(Deserialize)] pub struct DetectedTags { - pub detected_tags: Vec>, + pub detected_tags: Vec<(Tag<24>, TaggedCiphertext)>, +} + +#[derive(Serialize, Deserialize)] +pub struct FetchMessagesRequest { + // The last tag this client downloaded to use as a reference when fetching new messages + // If None, then the server will check *all* messages. + pub reference_tag: Option>, + // The detection key to use to fetch new messages + pub detection_key: DetectionKey<24>, +} + +#[derive(Serialize, Deserialize)] +pub struct PostMessageRequest { + pub tag: Tag<24>, + pub ciphertext: TaggedCiphertext, } impl Profile { - pub fn new(profile_name: String) -> Profile { - let root_secret = RootSecret::<24>::generate(); - Profile { - profile_name, - root_secret, - tagging_keys: Default::default() + pub fn get_profile(profile_filename: &String) -> Profile { + match fs::read_to_string(profile_filename) { + Ok(json) => serde_json::from_str(json.as_str()).unwrap(), + Err(why) => { + panic!("couldn't read orb.profile : {}", why); + } } } - pub fn human_readable_tagging_key(&self) -> HumanOrientedTaggingKey { + pub fn new(profile_name: String, detection_key_length: usize) -> Profile { + let root_secret = RootSecret::<24>::generate(); + let private_key = PrivateKey::generate(); + Profile { + profile_name, + root_secret, + private_key, + tagging_keys: Default::default(), + detection_key_length, + last_seen_tag: None, + } + } + + pub fn keyset(&self) -> KeySet { let tagging_key = self.root_secret.tagging_key(); - HumanOrientedTaggingKey { + let public_key = self.private_key.public_key(); + KeySet { profile_name: self.profile_name.clone(), - tagging_key + tagging_key, + public_key, } } @@ -60,62 +97,141 @@ impl Profile { pub fn generate_tag(&self, id: &String) -> Result, NiwlError> { if self.tagging_keys.contains_key(id) { - let tag = self.tagging_keys[id].generate_tag(); + let tag = self.tagging_keys[id].0.generate_tag(); println!("Tag for {} {}", id, tag.to_string()); - return Ok(tag) + return Ok(tag); } - Err(NiwlError::NoKnownContactError(format!("No known friend {}. Perhaps you need to import-tagging-key first?", id))) + Err(NiwlError::NoKnownContactError(format!( + "No known friend {}. Perhaps you need to import-tagging-key first?", + id + ))) } pub fn import_tagging_key(&mut self, key: &String) { match base32::decode(base32::Alphabet::RFC4648 { padding: false }, key.as_str()) { Some(data) => { - let tagging_key_result: Result = bincode::deserialize(&data); + let tagging_key_result: Result = + bincode::deserialize(&data); match tagging_key_result { Ok(hotk) => { println!("Got: {}: {}", hotk.profile_name, hotk.tagging_key.id()); if self.tagging_keys.contains_key(&hotk.profile_name) == false { - self.tagging_keys.insert(hotk.profile_name, hotk.tagging_key); + self.tagging_keys + .insert(hotk.profile_name, (hotk.tagging_key, hotk.public_key)); } else { println!("There is already an entry for {}", hotk.profile_name) } - return + return; } Err(err) => { println!("Error: {}", err.to_string()); } } - }, + } _ => {} }; println!("Error Reporting Tagging Key") } - pub async fn tag_and_send(&self, server: String, contact: String) -> Result { - let client = reqwest::Client::new(); + pub async fn tag_and_mix( + &self, + server: String, + mix: String, + contact: String, + message: &String, + ) -> Result { match self.generate_tag(&contact) { Ok(tag) => { - let result = client. - post(&String::from(server + "/new")) - .json(&tag) - .send().await; - match result { - Ok(response) => Ok(response), - Err(err) => Err(NiwlError::RemoteServerError(err.to_string())) - } - } - Err(err) => { - Err(err) + let ciphertext = self.tagging_keys[&contact].1.encrypt(&tag, message); + let ciphertext_json = serde_json::to_string(&ciphertext).unwrap(); + return self.tag_and_send(&server, mix, &ciphertext_json).await; } + Err(err) => Err(err), } } - pub async fn detect_tags(&mut self, server: String) -> Result { + pub async fn send_to_self( + &self, + server: &String, + message: &String, + ) -> Result { let client = reqwest::Client::new(); - let detection_key = self.root_secret.extract_detection_key(1); - let result = client.post(&String::from(server + "/tags")) - .json(&detection_key) - .send().await; + let tag = self.root_secret.tagging_key().generate_tag(); + let ciphertext = self.private_key.public_key().encrypt(&tag, message); + + let result = client + .post(&format!("{}/new", server)) + .json(&PostMessageRequest { tag, ciphertext }) + .send() + .await; + match result { + Ok(response) => Ok(response), + Err(err) => Err(NiwlError::RemoteServerError(err.to_string())), + } + } + + pub async fn forward( + &self, + server: &String, + message: &TaggedCiphertext, + ) -> Result { + let client = reqwest::Client::new(); + let tag = message.tag.clone(); + let ciphertext = message.clone(); + + let result = client + .post(&format!("{}/new", server)) + .json(&PostMessageRequest { tag, ciphertext }) + .send() + .await; + match result { + Ok(response) => Ok(response), + Err(err) => Err(NiwlError::RemoteServerError(err.to_string())), + } + } + + pub async fn tag_and_send( + &self, + server: &String, + contact: String, + message: &String, + ) -> Result { + let client = reqwest::Client::new(); + match self.generate_tag(&contact) { + Ok(tag) => { + let ciphertext = self.tagging_keys[&contact].1.encrypt(&tag, message); + + let result = client + .post(&format!("{}/new", server)) + .json(&PostMessageRequest { tag, ciphertext }) + .send() + .await; + match result { + Ok(response) => Ok(response), + Err(err) => Err(NiwlError::RemoteServerError(err.to_string())), + } + } + Err(err) => Err(err), + } + } + + pub async fn detect_tags(&mut self, server: &String) -> Result { + let client = reqwest::Client::new(); + let detection_key = self + .root_secret + .extract_detection_key(self.detection_key_length); + let result = client + .post(&format!("{}/tags", server)) + .json(&FetchMessagesRequest { + reference_tag: self.last_seen_tag.clone(), + detection_key, + }) + .send() + .await; result.unwrap().json().await } -} \ No newline at end of file + + pub fn update_previously_seen_tag(&mut self, tag: &Tag<24>) { + self.last_seen_tag = Some(tag.clone()); + } +} diff --git a/references/heartbeat.pdf b/references/heartbeat.pdf new file mode 100644 index 0000000000000000000000000000000000000000..745a0e2c395b5188c2660f3792efbcbd9fd32b1f GIT binary patch literal 135081 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%0Ds-BOQ%7k;90b)Z>yEch(D@sRsbx~We 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

5H>jW1Nu^QQl8Z&o%^TdFg|h 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