Java: FIPS mit Bouncy Castle

Disclaimer: Der Post ist 100 Jahre alt, aber wo ich ihn nun gerade in den Entwürfen finde…:

The Legion of the Bouncy Castle bietet mit bc-fips FIPS 140-2-zertifizierte Security Provider an, und zu der umfangreichen Dokumentation gibt es ein paar Good-to-knows:

  • der Provider muss per Security.addProvider(new BouncyCastleFipsProvider()); hinzugefügt werden; per Security.insertProviderAt(new BouncyCastleFipsProvider(), 1) (die Position ist 1-based) gibt es eine RuntimeException: “Could not merge Java truststore with system truststore”
  • im o.g. PDF liest man häufig EC.generateKeyPair(), die Methode gibt es so nicht. Stattdessen gibt es eine generateKeyPair() unter Beispiel 31 im selben PDF:

  • Speziell unter Linux kann das Hochfahren der App sehr lange dauern, der Grund scheint /dev/random zu sein; ein apt install haveged hilft
  • Die Beispiele basieren auf EC(DSA), es geht aber auch RSA. Dazu nehme man (ansonsten analog):

  • PS: Bei einem uninitialized KeyStore hilft vermutlich ein keyStore.load(null, null); (Danke, Nils!)

HTH