Existe-t-il un moyen simple, de style liste noire, de désactiver les suites de chiffrement en mode CBC dans les applications qui utilisent une liste de suites de chiffrement openssl? J'espère quelque chose dans le style de !RC4
, cependant, !CBC
n'a aucun effet et autorise toujours les suites telles que TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
.
La seule solution que j'ai trouvée jusqu'à présent est d'utiliser une liste blanche beaucoup plus verbeuse qui n'inclut que des chiffres non CBC. Existe-t-il une alternative plus simple?
Selon la liste des chaînes de chiffrement donnée dans la documentation (chiffrements man) il n'y a pas de chaîne décrivant tous les chiffrements CBC. Cela signifie qu'il n'y a pas de moyen simple de désactiver tous ces éléments (et uniquement ceux-ci) avec un simple !CBC
ou similaire.
Vous pouvez utiliser !SHA1:!SHA256:!SHA384
pour désactiver tous les chiffrements en mode CBC. Certains faux positifs non CBC seront également désactivés (RC4
, NULL
), mais vous voudrez probablement les désactiver quand même.
Notez que tandis que GCM
et CHACHA20
les chiffres ont SHA*
en leur nom, ils ne sont pas désactivés car ils utilisent leur propre algorithme MAC. Le SHA*
dans leur nom est pour le PRF, pas le MAC
J'ai passé pas mal de temps au cours des deux derniers jours à essayer d'obtenir une liste parfaite pour ssllabs. Merci en partie à cela, voici ce qui fonctionne:
SSLCipherSuite ALL:!RSA:!CAMELLIA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SHA1:!SHA256:!SHA384
Il n'y a aucun moyen de le faire directement, mais vous pouvez l'écrire un peu.
Supposons que votre chaîne initiale de suites de chiffrement soit !3DES:HIGH
. (Vous devriez probablement avoir une meilleure chaîne de suites de chiffrement pour commencer, mais c'est un bon point de départ et n'encombrera pas trop cette réponse.)
Maintenant, faites ceci:
$ openssl ciphers '!3DES:HIGH' \
| sed -e 's/:/\n/g' \
| grep -v GCM \
| sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/:!/g' -e 's/^/!/'
Explication, par ligne:
:
- liste séparée en une suite de chiffrement par ligneGCM
:!
, puis ajoutez un !
au tout débutMaintenant, prenez cette sortie et placez-la à l'avant de votre chaîne de suite de chiffrement. Ne jetez pas votre original, car vous voudrez peut-être réexécuter ce processus plus tard lorsque la chaîne de vos suites de chiffrement initiale change, ou si de nouveaux chiffrements sont ajoutés à OpenSSL ou même à leur liste par défaut HIGH
.