Skip to main content

A command-line tool that can encrypt/decrypt secrets using the AWS Encryption SDK for use in multiple AWS KMS regions.

Project description

mrcrypt: Multi-Region Encryption

https://img.shields.io/pypi/v/mrcrypt.svg https://img.shields.io/pypi/pyversions/mrcrypt.svg https://travis-ci.org/aol/mrcrypt.svg?branch=master https://codecov.io/gh/aol/mrcrypt/branch/master/graph/badge.svg

mrcrypt is a command-line tool which encrypts secrets that conform to the AWS Encryption SDK’s message format for envelope encryption. As of v2.0, mrcrypt now wraps the aws-encryption-sdk-cli.

For more information about the AWS Encryption SDK see https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html.

Installation

You can install the latest release of mrcrypt with pip:

pip install mrcrypt

Quick Start

Encrypt a file for use in 3 regions (NOTE: Key alias must exist in specified regions):

mrcrypt encrypt -r us-east-1 us-west-2 eu-west-1 -- alias/master-key secrets.txt

Decrypt the file:

mrcrypt decrypt secrets.txt.encrypted

Usage

usage: mrcrypt [-h] [-p PROFILE] [-v] [-q] [-o OUTFILE] {encrypt,decrypt} ...

Multi Region Encryption. A tool for managing secrets across multiple AWS
regions.

positional arguments:
  {encrypt,decrypt}

optional arguments:
  -h, --help            show this help message and exit
  -p PROFILE, --profile PROFILE
                        The profile to use
  -v, --verbose         More verbose output (ignored if --quiet)
  -q, --quiet           Quiet all output
  -o OUTFILE, --outfile OUTFILE
                        The file to write the results to (use "-" to write to
                        stdout

Both the encrypt, and decrypt commands can encrypt and decrypt files in directories recursively.

Named Profiles

If you have multiple named profiles in your ~/.aws/credentials file, you can specify one using the -p argument.

mrcrypt -p my_profile encrypt alias/master-key secrets.txt

Encryption Context

You can specify an encryption context using the -e argument. This flag takes a JSON object with no spaces:

# encrypt
mrcrypt -e '{"key":"value","key2":"value2"}' encrypt alias/master-key secrets.txt

# decrypt
mrcrypt -e '{"key":"value","key2":"value2"}' decrypt secrets.txt.encrypted

Output file name

If you want to specify the output filename, you can use the -o argument.

::

# Encrypt ‘file.txt’ writing the output into ‘encrypted-file.txt’ mrcrypt -o encrypted-file.txt encrypt alias/master-key file.txt

To write to stdout, you can use -

::

# Encrypt ‘file.txt’ writing the output to stdout mrcrypt -o - encrypt alias/master-key file.txt

When the output filename argument is not specified, mrcrypt will use the input filename as a base and add a suffix. On encrypt this suffix is .encrypted and on decrypt this suffix is .decrypted.

Encryption

usage: mrcrypt encrypt [-h] [-r REGIONS [REGIONS ...]] [-e ENCRYPTION_CONTEXT]
                       key_id filename

Encrypts a file or directory recursively

positional arguments:
  key_id                An identifier for a customer master key.
  filename              The file or directory to encrypt. Use "-" to read from
                        stdin

optional arguments:
  -h, --help            show this help message and exit
  -r REGIONS [REGIONS ...], --regions REGIONS [REGIONS ...]
                        A list of regions to encrypt with KMS. End the list
                        with --
  -e ENCRYPTION_CONTEXT, --encryption_context ENCRYPTION_CONTEXT
                        An encryption context to use

Example: Encrypt secrets.txt with the key alias alias/master-key in the regions us-east-1 and us-west-2:

mrcrypt encrypt -r us-east-1 us-west-2 -- alias/master-key secrets.txt

Note: In this example, the key alias alias/master-key exists in both the us-east-1, and us-west-2 regions.

Decryption

usage: mrcrypt decrypt [-h] filename

Decrypts a file

positional arguments:
  filename    The file or directory to decrypt. Use "-" to read from stdin

optional arguments:
  -h, --help  show this help message and exit

Example: To decrypt secrets.txt.encrypted:

mrcrypt decrypt secrets.txt.encrypted

Note: Be careful when decrypting a directory. If the directory contains files that are not encrypted, it will fail.

Testing

Running tests for mrcrypt is easy if you have tox installed. Simply run tox at the project’s root.

If you have an AWS account with a KMS key, you can run the integration tests using

AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_KEY_ID=<my-key-arn> tox -e py{27,34,35,36}-{local,integ}

Note about files created with mrcrypt before v2.0

Upon the release of v2.0, mrcrypt started wrapping the aws-encryption-sdk-cli. Wrapping the aws-encryption-sdk-cli means that mrcrypt now fully conforms to the AWS Encryption SDK’s message format and uses compressed points when encrypting files. Before v2.0, mrcrypt did not use compressed points, and while still secure, it lead to compatibility issues with other AWS Encryption SDK implementations. To update your pre-2.0 mrcrypt encrypted files, and improve compatibility with the AWS Encryption SDK, simply decrypt and re-encrypt your file with the latest version of mrcrypt.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mrcrypt-2.0.0.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

mrcrypt-2.0.0-py2.py3-none-any.whl (14.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file mrcrypt-2.0.0.tar.gz.

File metadata

  • Download URL: mrcrypt-2.0.0.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for mrcrypt-2.0.0.tar.gz
Algorithm Hash digest
SHA256 6f4c31a1467ad78bebd73ac33078fe69d405a641ef5f4fae76678d47428f813e
MD5 9111fc3f455ffe5fc8d121d0ce0fc0d2
BLAKE2b-256 49570c96558fc5775c134526e18e34ed87192fae703a453be8b8d01a4e8b8e57

See more details on using hashes here.

File details

Details for the file mrcrypt-2.0.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for mrcrypt-2.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4f94a9b41b8ceabbb3ca210d2bfd5a2624dd2f7af73c8f53d33e1a7412e26238
MD5 af022205375cc46d73a1ecd1db820a68
BLAKE2b-256 e2e21d9cb843470a37385d85478fba14966ea234dceb913c94d949474b4265e1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page