Java 23, publié il y a un peu plus d'une semaine, présente une douzaine de caractéristiques officielles, allant d'un deuxième aperçu de l'API de fichiers de classe à un autre incubateur d'API vectorielle, mais il est également doté de diverses fonctions de sécurité. Les améliorations en la matière comprennent des mises à jour des performances de chiffrement et l'ajout du support de Kerberos et PKI. Lors de son lancement, Sean Mullan, responsable technique de l'équipe chargée des bibliothèques de sécurité Java chez Oracle, a énuméré les fonctionnalités de la boite à outils pour développeurs de la dernière itération de ce langage, JDK 23. Pour javax.crypto, la taille de la mémoire tampon de CipherInputStream a été augmentée de 512 octets à 8 192 octets. Cela peut améliorer les performances et est plus cohérent avec les tailles de tampon pour d'autres API telles que java.io.FileInputStream. Les performances de la construction d'un objet java.security.SecureRandom via new SecureRandom() ont également été améliorées. Pour l'API de chiffrement un nouvel attribut de configuration PKS11 nommé allowLegacy a été introduit. Les applications peuvent définir cette valeur sur "true" pour contourner les vérifications de l'héritage. La valeur par défaut est "false."
Concernant PKI, de nouveaux certificats d'autorité racine ont été ajoutés au magasin de clés cacerts, notamment CN=Certainly Root R1, 0=Certainly, C=US et CN=Certainly Root E1, O=Certainly, C=US. Deux certificats au niveau racine GlobalSign sont également disponibles : CN=GlobalSign Root R46, O=GlobalSign nv-sa, C=BE et CN=GlobalSign Root E46, O=GlobalSign nv-sa, C=BE. En outre, un magasin de clés javasecurity.Keystore nommé KeychainStore-ROOT a été ajouté pour Apple. Ce keystore contient les certificats racine stockés dans le trousseau du système sur les systèmes macOS. Deux keystores sont désormais supportés : KeychainStore-Root et KeychainStore qui contient les clés privées et les certificats du trousseau de l'utilisateur. Cette amélioration corrige les problèmes qui provoquaient l'échec des connexions HTTP parce que le JDK n'était pas en mesure de trouver un certificat racine pour établir la confiance dans la chaîne de certificats de l'homologue.
Des méthodes d'accès mémoire bientôt supprimées
Kerberos dans JDK 23 ajoute une propriété de sécurité, nommée jdk.security.krb5.name.case.sensitive, pour permettre la vérification de la sensibilité à la casse des noms des principaux Kerberos dans les fichiers keytab et credential cache. En outre, le débogage output du composant Kerberos est désormais traitée comme erreur standard et non en tant qu'output standard. En termes d'autorisation relatives à JDK 23, la fonction getSubject lève désormais une exception de type UnsupportedOperationException à moins qu'un gestionnaire de sécurité ne soit autorisé ou activé. Cette modification a été effectuée pour préparer les utilisateurs à une future version dans laquelle cette méthode sera modifiée de manière à ce qu'elle génère toujours une exception de type "UnsupportedOperationException". De nouvelles options "thread" et "timestamp" ont été ajoutées à la propriété système java.security.debug pour faciliter le débogage des applications. Sean Mullan note également la dépréciation des méthodes d'accès à la mémoire dans sun.misc.Unsafe dont la suppression est prévue, ce qui est l'une des 12 fonctions établies dans le JDK 23. Le JEP (JDK Enhancement Proposal) indique que l'effacement de ces méthodes fait partie d'un effort à long terme pour garantir l'intégrité par défaut de la plateforme Java.