Etude comparative de TLS Cipher Suite pris en charge par Java 8

En ce qui concerne la suite de chiffrement TLS prise en charge par Java8, j'ai vérifié s'il existe une différence entre OracleJDK / AdoptOpenJDK / OpenJDK fourni par Linux.

Obtenez une liste des suites de chiffrement TLS prises en charge

J'ai créé l'outil de ligne de commande suivant et j'ai obtenu la liste.

À propos d'OpenJDK8 à comparer

J'ai eu une liste des OpenJDK 8 suivants avec l'outil ci-dessus.

Les détails de la version sont les suivants.

OracleJDK8 for Win64:

> java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

AdoptOpenJDK8 for Win64:

> java -version
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_192-b12)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.192-b12, mixed mode)

CentOS7(64bit):

$ sudo yum install java-1.8.0-openjdk.x86_64
-> java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64 a été installé.

$ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

Amazon Linux 2(64bit):

$ sudo yum install java-1.8.0-openjdk.x86_64
-> java-1.8.0-openjdk-1.8.0.191.b12-0.amzn2.x86_64 a été installé.

$ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

Ubuntu 18.04 Bionic(64bit):

$ sudo apt update
$ sudo apt-get install openjdk-8-jdk
-> openjdk-8-jdk, 8u191-b12-0ubuntu0.18.04.1 a été installé.

$ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

Résultats du sondage

Les résultats de la commande suivants ont été redirigés vers un fichier texte et enregistrés dans chaque environnement.

java -jar java-jsse-cipher-suites-dump-demo-v201901.1.jar
java -Djava.security.properties=java.security.crypto.policy-limited -jar java-jsse-cipher-suites-dump-demo-v201901.1.jar
java -Djava.security.properties=java.security.crypto.policy-unlimited -jar java-jsse-cipher-suites-dump-demo-v201901.1.jar

https://github.com/msakamoto-sf/java-jsse-cipher-suites-dump-demo/tree/v201901.1/2019-01-14_result

En regardant les diffs pour chacun, les résultats suivants ont été obtenus:

  1. Le résultat de ʻunlimited est le même que l'état par défaut sans personnalisation de crypto.policy`.
  2. De plus, les résultats ci-dessus étaient les mêmes dans tous les environnements étudiés.
  3. Le résultat de "limité" était également le même dans tous les environnements étudiés.

Par conséquent, il semble que ce qui suit peut être confirmé.

  1. Dans le dernier JDK8, la valeur par défaut est «crypto.policy = unlimited» et il est dans un état sécurisé.
  2. La même suite de chiffrement peut être utilisée avec les JDK créés par les distributeurs Oracle / Adopt OpenJDK / Linux basés sur OpenJDK.

Sans surprise, JSSE a été implémenté à l'origine en Java 100% pur, et la source est gérée par OpenJDK. Par conséquent, la même suite de chiffrement peut être utilisée avec n'importe quel binaire de construction tant qu'elle est construite à partir d'OpenJDK sans modifier la source.

L'existence de "Cipher Suite qui ne peut être utilisée qu'avec Oracle JDK" est possible, mais en ces jours où l'interopérabilité et la sécurité sont importantes, il est difficile de dire si une telle existence est autorisée dans l'écosystème Java. Sembler. (Il peut s'agir d'une extension spéciale qui ne peut être utilisée que par les utilisateurs payants du JDK Oracle, mais elle est hors de portée compte tenu de l'écosystème OpenJDK.)

Je m'inquiète depuis un moment, "Vraiment? C'est vrai ... ??", donc quand je l'ai essayé brièvement cette fois, j'ai pu confirmer qu'il n'y avait aucune différence. C'était. Pour une vérification plus rigoureuse, il est nécessaire de préparer réellement un socket serveur avec une combinaison de chaque version de protocole x suite de chiffrement unique et de vérifier si la connexion est réellement réussie, mais cette fois ce n'est pas tellement. ... J'ai donc décidé de vérifier la différence dans la plage visible depuis le SSLContext.

Pour le moment, en ce qui concerne SSL / TLS Cipher Suite, j'ai été soulagé car j'ai pu confirmer que "s'il s'agit d'une version OpenJDK, Cipher Suite qui peut être utilisé avec les binaires de n'importe quel fournisseur est le même".

Recommended Posts

Etude comparative de TLS Cipher Suite pris en charge par Java 8
Résumé du package [Java Silver Study]
[Java] DateTimeFormatter sortie par FormatStyle
Résumé de la session d’étude interne des recrues [Java]
9 meilleurs sites pour apprendre Java par auto-apprentissage
[Note] Java: vitesse de traitement de la liste par objectif
Tableau bidimensionnel en commençant tout juste à étudier Java