All Projects → aeris → Cryptcheck

aeris / Cryptcheck

Licence: agpl-3.0
Verify some SSL/TLS website or XMPP implementation

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Cryptcheck

Diffie Hellman backdoor
How to backdoor Diffie-Hellman
Stars: ✭ 559 (+253.8%)
Mutual labels:  crypto, openssl
Cryptojs.swift
Cross-platform cryptographic functions in swift
Stars: ✭ 42 (-73.42%)
Mutual labels:  crypto, openssl
Certigo
A utility to examine and validate certificates in a variety of formats
Stars: ✭ 662 (+318.99%)
Mutual labels:  crypto, tls
Forge
A native implementation of TLS in Javascript and tools to write crypto-based and network-heavy webapps
Stars: ✭ 4,204 (+2560.76%)
Mutual labels:  crypto, tls
Tls Channel
A Java library that implements a ByteChannel interface over SSLEngine, enabling easy-to-use (socket-like) TLS for Java applications.
Stars: ✭ 113 (-28.48%)
Mutual labels:  tls, openssl
S2n Tls
s2n : an implementation of the TLS/SSL protocols
Stars: ✭ 4,029 (+2450%)
Mutual labels:  crypto, tls
Easy Crypto
A WIP module aimed at providing a safer, easier to use and beginner friendly crypto API for Node.js
Stars: ✭ 21 (-86.71%)
Mutual labels:  crypto, openssl
dtls
Datagram Transport Layer Security (DTLS) client.
Stars: ✭ 72 (-54.43%)
Mutual labels:  tls, crypto
Ssl Checker
Python script that collects SSL/TLS information from hosts
Stars: ✭ 94 (-40.51%)
Mutual labels:  tls, openssl
Ghostunnel
A simple SSL/TLS proxy with mutual authentication for securing non-TLS services
Stars: ✭ 1,296 (+720.25%)
Mutual labels:  crypto, tls
Utls
Fork of the Go standard TLS library, providing low-level access to the ClientHello for mimicry purposes.
Stars: ✭ 306 (+93.67%)
Mutual labels:  crypto, tls
Qtnetworkng
QtNetwork Next Generation. A coroutine based network framework for Qt/C++, with more simpler API than boost::asio.
Stars: ✭ 125 (-20.89%)
Mutual labels:  crypto, openssl
Mbedtls
An open source, portable, easy to use, readable and flexible SSL library
Stars: ✭ 3,282 (+1977.22%)
Mutual labels:  crypto, tls
Testssl.sh
Testing TLS/SSL encryption anywhere on any port
Stars: ✭ 5,676 (+3492.41%)
Mutual labels:  tls, openssl
openssl-certificate-authority-guide
Bu kılavuz, OpenSSL komut satırı araçlarını kullanarak kendi sertifika yetkilinizi (CA) kurup nasıl kullanacağınızı gösterir.
Stars: ✭ 17 (-89.24%)
Mutual labels:  tls, openssl
Pyopenssl
A Python wrapper around the OpenSSL library
Stars: ✭ 701 (+343.67%)
Mutual labels:  tls, openssl
openssl-RPM-Builder
Build latest OpenSSL binary
Stars: ✭ 46 (-70.89%)
Mutual labels:  tls, openssl
qsslcaudit
test SSL/TLS clients how secure they are
Stars: ✭ 22 (-86.08%)
Mutual labels:  tls, openssl
Wolfssl
wolfSSL (formerly CyaSSL) is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3!
Stars: ✭ 1,098 (+594.94%)
Mutual labels:  tls, openssl
Certstrap
Tools to bootstrap CAs, certificate requests, and signed certificates.
Stars: ✭ 1,689 (+968.99%)
Mutual labels:  crypto, tls

Introduction

CryptCheck is a Ruby toolbox that help anybody to check for cryptography security level and best practices compliance.

CryptCheck is released under AGPLv3+ license.

Preliminary warning

**/!\ This tool use custom weak builds of OpenSSL library and OpenSSL Ruby extension /!**.

Those builds are cryptographically weaken to be able to test for (very) weak and today totally deprecated ciphers.

Don’t deploy it on production machine to avoid any security troubles, or use VM to isolate them !

Setup

Ruby

You need a fully operationnal Ruby stack. Because of the warning above, don’t use your system Ruby.

I recommend to use RBEnv and it Ruby-build plugin to build a new ruby environment instead of your system one.

Currently supported Ruby stack is v2.2.2.

OpenSSL library and Ruby extension

To be able to test for (very) weak ciphers and to have access to DH parameters, CryptCheck need custom build of OpenSSL library and patched build of OpenSSL Ruby extension.

Once you have cloned CryptCheck repository, just run make inside to build the needed libraries.

If make fails with the following error :

make: *** No rule to make target 'lib/libssl.so.1.0.0', needed by 'libs'.  Stop.

just run again make (if you understand this problem, contact me !).

The built libraries (libcrypto.so, libssl.so and openssl.so) are located under the lib directory.
CryptCheck use LD_LIBRARY_PATH and Ruby load path hack to inject those weaken libraries instead of the system ones.

Ruby dependencies

CryptCheck relies on few Ruby libraries, managed with Bundler.

To fetch and install them, just run bundle install.

Usage

Simply run the corresponding runner of what you want to test :

  • HTTPS : bin/check_https example.org
  • XMPP : bin/check_xmpp example.org
  • SMTP : bin/check_smtp example.org

If you want more information of what is going on under the hood, run the command with debug enabled, like bin/check_https example.org debug

Understanding results

Rank goes from "A+" (perfect) to "F" (very weak).
"M" means your certificate and your hostname mismatch.
"T" means your certificate is not issued by a valid root certificate authority.

Only a perfect setup gets a perfect score and a "A" rank :).
"A" score is based on RFC 7525 recommandations.

  • Protocol

    • SSL (v2 and v3) are totally deprecated now, because of very serious known vulnerabilities (Poodle…). Using one of them cap your rank to "F".
    • TLSv1 and TLSv1.1 suffer of the Poodle TLS vulnerability.
    • TLSv1.2 is the only remaining protocol with no known vulnerabilities, so if you don’t support it, your rank is cap to "B".
  • Key size

    • If you use certificate key less than 2048 bits, your rank is cap to "B".
  • Ciphers

    • Very weak ciphers, including MD5 hash, anonymous DH parameters, NULL ciphers (yes, it exits…), export ciphers (Freak) or weak ciphers (RC4, DES…) cap your rank to "F".
    • 3DES is considered weak and must be avoided, using it cap your score to "C".
  • Score

    • Protocol score is based on the weakest protocol you support :
      SSLv2 = 0, SSLv3 = 20, TLSv1 = 60, TLSv1.1 = 80, TLSv1.2 = 100.
    • Key score is based on your certificate key size :
      <512 = 10, <1024 = 20, <2048 = 50, <4096 = 90, ≥4096 = 100.
    • Cipher score is based on the weakest cipher you support :
      0 = 0, <112 = 10, <128 = 50, <256 = 90, ≥256 = 100.
    • Overall score is based on the other scores :
      overall = 0.3 * protocol + 0.3 * key + 0.4 * cipher
  • Best practices

    • PFS : you gain this flag when you support only perfect forward secrecy ciphers (DHE or ECDHE)
    • HSTS : you gain this flag when you protect yourself with HTTP Strict Transport Security.
    • Long HSTS : you gain this flag when you support HSTS with a duration of at least 6 monthes.
  • Rank

    • Rank is based on your overall score and above caps :
      <20 = F, <35 = E, <50 = D, <65 = C, <80 = B, ≥80 = A.
    • If you get an "A" and you have all the best practices above, you get "A+".
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].