aeris / cryptcheck

Verify some SSL/TLS website or XMPP implementation
GNU Affero General Public License v3.0
185 stars 20 forks source link

Support EC x25519 #30

Open ArchangeGabriel opened 7 years ago

ArchangeGabriel commented 7 years ago

Coucou,

Comme je suis un crypto-anarchiste qui a reçu sa mise à jour OpenSSL 1.1.0, j’ai désactivé toutes les courbes de la NSA, et il ne reste que du x25519 sur mon serveur. Du coup, cryptcheck n’arrive plus à se connecter. Je suppose que ça devra attendre un passage à OpenSSL 1.1.0 côté serveur ?

Et oui, je sais, ça jette 99 % de la planète hors de mon serveur:

Android 2.3.7               Server sent fatal alert: protocol_version
Android 4.0.4               Server sent fatal alert: protocol_version
Android 4.1.1               Server sent fatal alert: protocol_version
Android 4.2.2               Server sent fatal alert: protocol_version
Android 4.3                     Server sent fatal alert: protocol_version
Android 4.4.2               Server sent fatal alert: handshake_failure
Android 5.0.0               Server sent fatal alert: handshake_failure
Android 6.0                     Server sent fatal alert: handshake_failure
Android 7.0                     RSA 4096 (SHA256)       TLS 1.2 > h2    TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256   ECDH x25519  FS
Baidu Jan 2015              Server sent fatal alert: protocol_version
BingPreview Jan 2015        Server sent fatal alert: handshake_failure
Chrome 49 / XP SP3          Server sent fatal alert: handshake_failure
Chrome 51 / Win 7           RSA 4096 (SHA256)       TLS 1.2 > h2    TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256   ECDH x25519  FS
Firefox 31.3.0 ESR / Win 7  Server sent fatal alert: handshake_failure
Firefox 47 / Win 7          Server sent fatal alert: handshake_failure
Firefox 49 / XP SP3             Server sent fatal alert: handshake_failure
Firefox 49 / Win 7          Server sent fatal alert: handshake_failure
Googlebot Feb 2015          Server sent fatal alert: handshake_failure
IE 6 / XP                       Server sent fatal alert: handshake_failure
IE 7 / Vista                    Server sent fatal alert: protocol_version
IE 8 / XP                       Server sent fatal alert: protocol_version
IE 8-10 / Win 7             Server sent fatal alert: protocol_version
IE 11 / Win 7                   Server sent fatal alert: handshake_failure
IE 11 / Win 8.1             Server sent fatal alert: handshake_failure
IE 10 / Win Phone 8.0       Server sent fatal alert: protocol_version
IE 11 / Win Phone 8.1           Server sent fatal alert: handshake_failure
IE 11 / Win Phone 8.1 Update    Server sent fatal alert: handshake_failure
IE 11 / Win 10              Server sent fatal alert: handshake_failure
Edge 13 / Win 10                Server sent fatal alert: handshake_failure
Edge 13 / Win Phone 10      Server sent fatal alert: handshake_failure
Java 6u45                   Server sent fatal alert: protocol_version
Java 7u25                   Server sent fatal alert: protocol_version
Java 8u31                   Server sent fatal alert: handshake_failure
OpenSSL 0.9.8y              Server sent fatal alert: protocol_version
OpenSSL 1.0.1l              Server sent fatal alert: handshake_failure
OpenSSL 1.0.2e              Server sent fatal alert: handshake_failure
Safari 5.1.9 / OS X 10.6.8      Server sent fatal alert: protocol_version
Safari 6 / iOS 6.0.1            Server sent fatal alert: handshake_failure
Safari 6.0.4 / OS X 10.8.4      Server sent fatal alert: protocol_version
Safari 7 / iOS 7.1              Server sent fatal alert: handshake_failure
Safari 7 / OS X 10.9            Server sent fatal alert: handshake_failure
Safari 8 / iOS 8.4              Server sent fatal alert: handshake_failure
Safari 8 / OS X 10.10           Server sent fatal alert: handshake_failure
Safari 9 / iOS 9                Server sent fatal alert: handshake_failure
Safari 9 / OS X 10.11           Server sent fatal alert: handshake_failure
Safari 10 / iOS 10              Server sent fatal alert: handshake_failure
Safari 10 / OS X 10.12          Server sent fatal alert: handshake_failure
Apple ATS 9 / iOS 9         Server sent fatal alert: handshake_failure
Yahoo Slurp Jan 2015        Server sent fatal alert: handshake_failure
YandexBot Jan 2015          Server sent fatal alert: handshake_failure

(d’après SSL Labs, mais Firefox Nightly que j’utilise fonctionne).

Mais ça laisse exactement 100 % de mes utilisateurs, à savoir moi-même. ;)

aeris commented 7 years ago

En fait, ça va être un peu plus compliqué que ça. OpenSSL 1.1.0 a supprimé le support de ce dont j’ai besoin pour CryptCheck (les vieilles suites, les vieux algos…). Impossible donc de migrer en 1.1.0 sans tout casser. Je vais devoir implémenter ma propre stack TLS minimale pour aller plus loin dans les nouveaux protocoles (TLS1.3, x25519…). Et ça va être un sacré boulot.

ArchangeGabriel commented 7 years ago

Ah oui. Ils ont fait du ménage, en effet. Je n’avais pas pensé à ce « détail ». Bon, bah ça attendra…

ArchangeGabriel commented 7 years ago

Question bête : pas possible de faire tourner les deux version en parallèle ? C’est le cas sur mon serveur par exemple, puisque certains softs tournent pas sous OpenSSL 1.1.

aeris commented 7 years ago

Malheureusement non… J’utilise libssl et non openssl directement, et donc je ne peux pas charger 2 bibliothèques TLS dans le même binaire ruby…