3 The Interface: The Key to the Application
PKCS#11 Cryptographic Token Interface Standard
This standard (also called Cryptoki) is an API for HSMs (in a broad sense) that
store cryptographic information and run cryptographic operations.
PKCS are essentially Public Key Cryptography Standards developed from 1991
onwards by the RSA Laboratories. PKCS#11 was developed up to Version 2.30 by
RSA Labs. The Organization for Advancement of Structured Information Standards
(OASIS) took over the development in 2013. This interface is currently the
most widely used generic interface for accessing security modules.
Benefits
One of the key benefits of the PKCS#11 interface is interoperability between application
and security module. PKCS#11 also offers a universal approach for
symmetric as well as asymmetric cryptographic methods.
Downsides
However great the aforementioned interoperability may be, many manufacturers
have installed enhancements, or vendor defined mechanisms, in their PKCS#11
implementation, and so have reduced the benefit of manufacturer neutrality to
absurdity. The standard has also developed such a high level of complexity that
attacks on the interface in particular have very high success rates with sequences
of commands. Take a look at this article, http://www.dsi.unive.it/
~focardi/Articoli/bmfs-ASA09.pdf, which describes the problem very
well.
JCE: Java Cryptography Extension
The Java Cryptography Extension (JCE) is an interface of the Java programming
language, and at the same time a framework for cryptographic tasks such as encryption,
signature generation and key management. It’s been part of the Java
platform since JDK 1.4.
The JCE is part of the Java Cryptography Architecture (JCA). The split
into JCE and JCA meant that in the past the API could comply with US
restrictions for cryptography. Because the JCA contains only hash
functions, key generators and so on, they could be freely exported.
The JCE is based on a provider model that enables programmers to link in different
cryptographic models. The JCE is independent of the implementation of the
23
/bmfs-ASA09.pdf