Skip to main content

Cloud-hosted IRC with symmetric authenticated encryption

Version

Description and Features

Privacy is at a premium, and the need for a secure means of communication is greater than ever.

  • Wisper messages use Fernet encryption, which employs 128-bit AES in CBC mode, with CMS padding, and HMAC using SHA256 for authentication.

  • Using Wisper requires a mutual secret key, and messages cannot be decoded without one.

  • Messages remain fully encrypted between end-points.

  • The server operates from an AWS EC2 instance and is available at all times. It is automatically started by an AWS Lambda function which is triggered on application start-up.

  • Messages are serialized with Google protocol buffers, enabling both a smaller packet size and an encrypted sender alias.

System Requirements

Installation

$ pip install wisper

Usage

It is a requirement for all users to possess a mutual secret key. This must be negotiated ahead of time. To generate a new key, type y into the Need a new key? (y/n) prompt at start-up.

To start a chat session:

$ wisper
$ Starting EC2 server instance...
$ Need a new key? (y/n): <selection>
$ Enter secret key: <secret-key>
$ Key accepted
$ Enter alias: <alias>
$ Running server checks...
$ Server started
$ Establishing connection with server...
$ Connected to Wisper server
  • Wisper will send a notification when peers are connected/disconnected.

To end a session:

  • Enter exit() or press ^C

Architecture

Connection:

When the Wisper client is started by the user, an HTTP request is made to an AWS API Gateway endpoint. The request triggers a Lambda function which checks to see if any Wisper server EC2 instances are running. If not, one is spun up. The Lambda function returns the instance’s public IP address, relayed to the client via an HTTP response by the API Gateway. The client collects the secret key and user’s alias, and connects to the server.

https://s3.us-east-2.amazonaws.com/wisper-diagrams/wisper-connection-diagram.png

Communication:

Wisper messages are serialized, encrypted, and sent to all connected clients through the server. All client-to-client communication is encrypted between end-points. All server-to-client messages are sent unencrypted.

https://s3.us-east-2.amazonaws.com/wisper-diagrams/wisper-communication-diagram.png

Shutdown:

The server instance detects when all clients are disconnected. This event triggers an HTTP request to API Gateway, invoking a Lambda function, which shuts down the server, and stops the EC2 instance.

https://s3.us-east-2.amazonaws.com/wisper-diagrams/wisper-shutdown-diagram.png

Contribute

Contribution Guideline can be found here. Please feel free to use, share, and extend this project. PR’s welcome.

Release files for wisper 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wisper 1.0.0
File Size Uploaded
wisper-1.0.0.tar.gz 12.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wisper 1.0.0
File Interpreter ABI Platform
wisper-1.0.0-py2-none-any.whl Python 2 none any Details

Total release size: 26.5 kB

Release files / wisper-1.0.0.tar.gz

Download URL wisper-1.0.0.tar.gz
Size 12.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6fb2c216c2d192344a924cd2a1dbf0412373ce0463440056633662a5bf20a111
BLAKE2b-256 checksum
How to use checksums
513e61aae9fb166acd253e7bc442be1cc3f2111a679fb736ef797fe1539cd1b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

Release files / wisper-1.0.0-py2-none-any.whl

Download URL wisper-1.0.0-py2-none-any.whl
Size 14.1 kB
Tags Python 2
SHA-256 checksum
How to use checksums
0c970ae103e7fbfb2682ff3f93d279dc455148b93489e753aea9de24ef0443b7
BLAKE2b-256 checksum
How to use checksums
54c34ef1378787882aa680ff7393e2e1ed8c371e5fc3ed416ce2d9857518586f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page