Search code examples
javaencryptionjava-security

Why JDK doesn't provide IGE block cipher mode


The JDK provides various block cipher modes implementations, e.g. CBC, CTR, ECB.
As per title, is there a (maybe documented somewhere) reason why IGE mode is not provided?


Solution

  • Java contains a lot of cryptography for a standard runtime. However, it is pretty clear that it is still mainly driven by standards, and particularly TLS / X.509. It is pretty easy to see this: key stores used to only store (RSA) private keys with their chains attached. The default certificate store contains all the necessary root certificates etc.

    There are a few more well known block ciphers and modes implemented for secret key encryption. However, these are all modes standardized by NIST and included in most libraries. It doesn't include many other ciphers or modes. Including a mode that has been specifically designed for a niche purpose such as IGE doesn't make sense. Although IGE and specifically bi-IGE make some sense in schemes providing plausible deniability their error propagation properties are kind of lost in the days of authenticated encryption. See also this question and answer (note the person asking the question).

    However, nothing is preventing you to create one in a provider, and define your own mode that way. Note that you may need to sign that provider if you want to include it with specific commercial releases of Java.