Shhh logo

Shhh

  •  0 ratings
In category: Communication / Custom Communication Systems

About Shhh

Keep secrets out of emails or chat logs, share them using secure links with passphrase and expiration dates.

  •   414  
  •   0  
  •   0  
  •   0  
Github stats:
  •  Commits: N/A  
  •   N/A  
  •   N/A  
  •  Latest commit: N/A  

Deploy this app to Linode with a free $100 credit!

Languages/Platforms/Technologies:
Lincenses:

More about Shhh

Keep secrets out of emails and chat logs.

What is it?

Shhh is a tiny Flask app to create encrypted secrets and share them securely with people. The goal of this application is to get rid of plain text sensitive information into emails or chat logs.

Shhh is deployed here (temporary unavailable until new deployment solution), but it's better for organisations and people to deploy it on their own personal / private server for even better security. You can find in this repo everything you need to host the app yourself.

Or you can one-click deploy to Heroku using the below button. It will generate a fully configured private instance of Shhh immediately (using your own server running Flask behind Gunicorn and Nginx, and your own Postgres database, for free).

Deploy

Also, checkout shhh-cli, a Go client to interact with the Shhh API from the command line.

How does it work?

The sender has to set an expiration date along with a passphrase to protect the information he wants to share.

A unique link is generated by Shhh that the sender can share with the receiver in an email, alongside the temporary passphrase he created in order to reveal the secret.

The secret will be permanently removed from the database as soon as one of these events happens:

  • the expiration date has passed.
  • the receiver has decrypted the message.
  • the amount of tries to open the secret has exceeded.

The secrets are encrypted in order to make the data anonymous, especially in the database, and the passphrases are not stored anywhere.

Encryption method used: Fernet with password, random salt value and strong iteration count (100 000).

Tip: for better security, avoid writing any info on how/where to use the secret you're sharing (like urls, websites or emails). Instead, explain this in your email or chat, with the link and passphrase generated from Shhh. So even if someone got access to your secret, there is no way for the attacker to know how and where to use it.

Is there an API?

Yes, you can find some doc here.

How to launch Shhh locally?

These instructions are for development purpose only. For production use you might want to use a more secure configuration.

Launch it natively #### Deps Make sure you have `make`, `yarn`, and obviously `python@3.8` installed on your machine. #### Postgres You will need a Postgres server running locally in the background. Create a database named `shhh`.
CREATE DATABASE shhh;
#### Flask You will need to set up a few environment variables. We use them to configure Flask, as well as the application connection to the database. Rename the file `/environments/local.dev.template` to `/environments/local.dev` and fill in the missing variables (these are the variables needed to connect to your local Postgres database). Once done, from the root of the repository, run:
make local
This command will make sure a virtual environment is created and that all the needed dependencies are installed, and finally launch a flask local server. You can now access the app at http://localhost:5000
Launch it with docker-compose #### Deps Make sure you have `make`, `docker` and `docker-compose` installed on your machine. The application will use the development env variables from [/environments/docker.dev](https://github.com/smallwat3r/shhh/blob/master/environments/docker.dev). #### Docker From the root of the repository, run
make dc-start  # to start the app (or dc-start-adminer to use adminer)
make dc-stop   # to stop the app
Once the container image has finished building and has started, you can access: * Shhh at http://localhost:5000 * (and access the database records using Adminer on port `8080` if you launched Shhh with adminer) Note: When started with the docker-compose set-up, the application is running with Gunicorn.
Run development checks
You can run tests and linting / security reports using the Makefile:
make checks  # run all checks

make tests   # run tests
make pylint  # run Pylint report
make bandit  # run Bandit report
make mypy    # run Mypy report

Environment variables

Bellow is the list of environment variables used by Shhh.

Mandatory * `FLASK_ENV`: the environment config to load (`testing`, `dev-local`, `dev-docker`, `heroku`, `production`). * `POSTGRES_HOST`: Postgresql hostname * `POSTGRES_USER`: Postgresql username * `POSTGRES_PASSWORD`: Postgresql password * `POSTGRES_DB`: Database name
Optional * `SHHH_HOST`: This variable can be used to specify a custom hostname to use as the domain URL when Shhh creates a secret (ex: `https://`). If not set, the hostname defaults to request.url_root, which should be fine in most cases. * `SHHH_SECRET_MAX_LENGTH`: This variable manages how long the secrets your share with Shhh can be. It defaults to 250 characters. * `SHHH_DB_LIVENESS_RETRY_COUNT`: This variable manages the number of tries to reach the database before performing a read or write operation. It could happens that the database is not reachable or is asleep (for instance this happens often on Heroku free plans). The default retry number is 5. * `SHHH_DB_LIVENESS_SLEEP_INTERVAL`: This variable manages the interval in seconds between the database liveness retries. The default value is 1 second.

Acknowledgements

Special thanks: @AustinTSchaffer, @kleinfelter

License

See LICENSE file.

Contact

Please report issues or questions here.

Buy me a coffee

Comments (0)

Please login to join the discussion on this project.

Shhh Reviews (0)

Overall Rating

None

based on 0 ratings

Please login to review this project.

No reviews for this project yet.

↑ back to top

pCloud Lifetime

Popular Projects

FluxBB

in Social Networks and Forums
 33k    0    0    0  

Nextcloud

in File Transfer & Synchronization
 21k    1    1    0  

Libreddit

in Social Networks and Forums
 7k    0    1    0  

Dashboard

in Personal Dashboards
 6k    0    0    0  

Audiobookshelf

in Audio Streaming
 6k    0    1    0  

CasaOS

in Self-hosting Solutions
 5k    0    0    0  

Mediagoblin

in Photo and Video Galleries
 4k    0    0    0  

Most Discussed

Nextcloud

in File Transfer & Synchronization
 21k    1    1    0  

Tube Archivist

in Automation
 3k    0    1    0  

OneDev

in Project Management
 2k    0    0    0  

iodine

in Proxy
 2k    0    0    0  

Alf.io

in Booking and Scheduling
 2k    0    0    0  

sysPass

in Password Managers
 1k    0    0    0  

Misskey

in Social Networks and Forums
 2k    0    0    0  
Linux VPS from $11/yr.
RackNerd VPS for $11.38/mo

Top Rated Projects

Gitea

 1 rating
in Project Management

Bagisto

 1 rating
in E-commerce

LinkAce

 1 rating
in Bookmarks and Link Sharing

Pydio

 1 rating
in File Transfer & Synchronization

Audiobookshelf

 1 rating
in Audio Streaming

Nextcloud

 1 rating
in File Transfer & Synchronization

Seafile

 1 rating
in File Transfer & Synchronization

Categories

You May Also Be Interested In

Tuber logo
Tuber cover

Tuber

Peer-to-peer video chat that works.

Jami logo
Jami cover

Jami

Free and universal communication platform which preserves t…

Synapse logo
Synapse cover

Synapse

Server for Matrix, an open standard for decentralized persi…