Vergleichende Studie der von Java 8 unterstützten TLS Cipher Suite

In Bezug auf die von Java8 unterstützte TLS Cipher Suite habe ich untersucht, ob es einen Unterschied zwischen OracleJDK / AdoptOpenJDK / OpenJDK von Linux gibt.

Eine Liste der unterstützten TLS Cipher Suite abrufen

Ich habe das folgende Befehlszeilenprogramm erstellt und die Liste erhalten.

Über OpenJDK8 zu vergleichen

Ich habe eine Liste der folgenden OpenJDK 8 mit dem obigen Tool erhalten.

Details der Version sind wie folgt.

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 wurde installiert.

$ 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 wurde installiert.

$ 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 wurde installiert.

$ 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)

Umfrageergebnisse

Die folgenden Befehlsergebnisse wurden in eine Textdatei umgeleitet und in jeder Umgebung gespeichert.

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

Betrachtet man die Unterschiede für jeden, wurden die folgenden Ergebnisse erhalten:

  1. Das Ergebnis von "unbegrenzt" entspricht dem Standardstatus ohne Anpassung von "crypto.policy".
  2. Darüber hinaus waren die obigen Ergebnisse in allen untersuchten Umgebungen gleich.
  3. Das Ergebnis von "begrenzt" war auch in allen untersuchten Umgebungen gleich.

Daher scheint das Folgende bestätigt werden zu können.

  1. Im neuesten JDK8 lautet der Standardwert "crypto.policy = unlimited" und befindet sich in einem sicheren Zustand.
  2. Dieselbe Cipher Suite kann mit JDKs verwendet werden, die von Oracle / Adopt OpenJDK / Linux-Distributoren basierend auf OpenJDK erstellt wurden.

Es überrascht nicht, dass JSSE ursprünglich in 100% reinem Java implementiert wurde und die Quelle von OpenJDK verwaltet wird. Daher kann dieselbe Cipher Suite mit jeder Build-Binärdatei verwendet werden, solange sie aus OpenJDK erstellt wird, ohne die Quelle zu ändern.

Die Existenz von "Cipher Suite, die nur mit Oracle JDK verwendet werden kann" ist möglich, aber in diesen Tagen, in denen Interoperabilität und Sicherheit wichtig sind, ist es schwierig zu sagen, ob eine solche Existenz im Java-Ökosystem zulässig ist. Scheinen. (Es kann sich um eine spezielle Erweiterung handeln, die nur von bezahlten Benutzern des Oracle JDK verwendet werden kann. Wenn das OpenJDK-Ökosystem angenommen wird, ist dies jedoch nicht möglich.)

Ich habe mir darüber eine Weile Sorgen gemacht: "Wirklich? Es ist wahr ... ??". Als ich es diesmal kurz versuchte, konnte ich bestätigen, dass es keinen Unterschied gab. Es war. Für eine strengere Überprüfung ist es erforderlich, tatsächlich einen Server-Socket mit einer Kombination aus jeder Protokollversion x einer einzelnen Verschlüsselungssuite vorzubereiten und zu überprüfen, ob die Verbindung tatsächlich erfolgreich ist, diesmal jedoch nicht so sehr. ... Also habe ich mich entschlossen, den Unterschied innerhalb des Bereichs zu überprüfen, der aus dem SSLContext ersichtlich ist.

In Bezug auf die SSL / TLS Cipher Suite war ich vorerst erleichtert, weil ich bestätigen konnte, dass "Wenn es sich um ein OpenJDK-basiertes Build handelt, die Cipher Suite, die mit Binärdateien von jedem Anbieter verwendet werden kann, dieselbe ist".

Recommended Posts

Vergleichende Studie der von Java 8 unterstützten TLS Cipher Suite
Zusammenfassung des Pakets [Java Silver Study]
[Java] Ausgabe von DateTimeFormatter durch FormatStyle
Zusammenfassung der internen Rookie-Lernsitzung [Java]
9 stärksten Websites zum Erlernen von Java durch Selbststudium
[Hinweis] Java: Geschwindigkeit der Verarbeitung der Liste nach Zweck
Zweidimensionales Array, indem Sie gerade erst anfangen, Java zu studieren