np1sec

A library for off-the-record (deniable authenticated forward secure confidential) multiparty messaging

  • Owner: equalitie/np1sec
  • Platform:
  • License:: GNU Lesser General Public License v3.0
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

(n+1)sec

(n+1)sec is a Free (libre), end-to-end secure, synchronous, multi-party messaging protocol, authored by eQualit.ie with support from the Open Technology Fund. The (n+1)sec project, similar to the OTR (off-the-record) project, makes it possible to have secure instantaneous communications between people. (n+1)sec extends upon OTR in supporting not just one-to-one chats, but also chats between arbitrary groups of people. Like OTR, (n+1)sec is built on top of arbitrary chat infrastructure systems, such as XMPP, and can be implemented in any client for these systems.

(n+1)sec

The protocol underlying this multiparty communication security is described in this paper. An experimental GUI client, in the form of a Pidgin plugin is here. A command line client, called Jabberite, is included in this repository and described below. This client is used for instance in EchoChamber, a testing platform for the (n+1)sec protocol that simulates network conditions and peer behavior to produce programmer-friendly benchmark data.

Building (n+1)sec

Library dependencies

The (n+1)sec library requires the following dependencies:

  • cmake >= 2.8
  • libgcrypt >= 1.6.0

The (n+1)sec test client, which is built by default but can be disabled, further requires the following libraries:

  • libglib2
  • libpurple
  • libreadline

Installing from source

The (n+1)sec library is built using cmake. To install (n+1)sec from source, run the following in the source directory:

$ cmake .
$ make
# make install

Testing (n+1)sec

To test (n+1)sec in a graphic interface, you can install the (n+1)sec plugin for Pidgin. A comprehensive report of (n+1)sec test results is included in this repository.

Running the jabberite test client

The (n+1)sec library comes with a rudimentary command line chat client used to manually test the np1sec system in practice, called jabberite. The jabberite tool is a basic jabber/XMPP multi-user-chat client that uses (n+1)sec for all its communications, and is built as part of the (n+1)sec test suite.

To run jabberite and connect to a given jabber multi-user chat server, run the following in the (n+1)sec build directory:

./jabberite --account=myusername@myserver.example.com --password=verysecret --server=conference.example.com --room=np1sec-test-room

Running jabberite locally with prosody

The (n+1)sec library can be tested using the jabberite test client by running a jabber server on your local testing machine. For example, it can be run using the prosody jabber server, configured as follows:

After installing prosody, enable the following settings in /etc/prosody/prosody.cfg.lua:

allow_registration = true;

Component "conference.localhost" "muc"

Reload prosody, and create jabber user accounts for a couple of test users:

# prosodyctl adduser alice@localhost
# prosodyctl adduser bob@localhost

When this is done, a secure chat session can be set up by running multiple instances of jabberite in separate terminals:

$ ./jabberite --account=alice@localhost --password="alice-password" --server=conference.localhost --room=np1sec-test-room

$ ./jabberite --account=bob@localhost --password="bob-password" --server=conference.localhost --room=np1sec-test-room

Running unit and integration tests

(n+1)sec unit and integration tests can be found in the tests/echo_chamber directory. They
have additional dependencies to boost-all-dev and g++ version 5.4 or greater. To
compile them, one needs to make them explicitly by running the command

$ make echo_chamber

These tests are self sufficient and don't need a connection to a XMPP server.

To run them one by one, one would execute

$ ./echo_chamber --log_level=test_suite

Or to run a particular test, one would use

$ ./echo_chamber --log_level=test_suite --run_test=<name_of_the_test>

For more ways to tweak the execution of the tests please consult
the documentation on Boost.Test
library.

Main metrics

Overview
Name With Ownerequalitie/np1sec
Primary LanguageC++
Program languageCMake (Language Count: 4)
Platform
License:GNU Lesser General Public License v3.0
所有者活动
Created At2014-07-15 14:00:46
Pushed At2017-08-14 05:12:52
Last Commit At2017-07-27 15:03:19
Release Count4
Last Release Namencc-audit-april-2017 (Posted on )
First Release Name0.0.1 (Posted on )
用户参与
Stargazers Count404
Watchers Count41
Fork Count29
Commits Count544
Has Issues Enabled
Issues Count37
Issue Open Count17
Pull Requests Count16
Pull Requests Open Count2
Pull Requests Close Count8
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private