PKCS#11, is a security API for cryptographic tokens. It is known to be vulner- able to attacks which can directly extract, as cleartext, the value of sensitive keys. In particular, the API does not impose any limitation on the different roles a key can assume, and it permits to perform conflicting operations such as asking the token to wrap a key with another one and then to decrypt it. Fixes proposed in the literature, or implemented in real devices, impose policies restricting key roles and token functionalities. In this paper we define a simple imperative programming language, suitable to code PKCS#11 symmetric key management, and we develop a type-based analysis to prove that the secrecy of sensitive keys is preserved under a certain policy. We formally analyse existing fixes for PKCS#11 and we propose a new one, which is type-checkable and prevents conflicting roles by deriving dif- ferent keys for different roles. We develop a prototype type-checker for a software token emulator written in C and we experiment on various working configurations.
Type-based Analysis of Key Management in PKCS#11 cryptographic devices
CENTENARO, MATTEO;FOCARDI, Riccardo;LUCCIO, Flaminia
2013-01-01
Abstract
PKCS#11, is a security API for cryptographic tokens. It is known to be vulner- able to attacks which can directly extract, as cleartext, the value of sensitive keys. In particular, the API does not impose any limitation on the different roles a key can assume, and it permits to perform conflicting operations such as asking the token to wrap a key with another one and then to decrypt it. Fixes proposed in the literature, or implemented in real devices, impose policies restricting key roles and token functionalities. In this paper we define a simple imperative programming language, suitable to code PKCS#11 symmetric key management, and we develop a type-based analysis to prove that the secrecy of sensitive keys is preserved under a certain policy. We formally analyse existing fixes for PKCS#11 and we propose a new one, which is type-checkable and prevents conflicting roles by deriving dif- ferent keys for different roles. We develop a prototype type-checker for a software token emulator written in C and we experiment on various working configurations.File | Dimensione | Formato | |
---|---|---|---|
JCS479.pdf
non disponibili
Tipologia:
Documento in Post-print
Licenza:
Accesso chiuso-personale
Dimensione
558.79 kB
Formato
Adobe PDF
|
558.79 kB | Adobe PDF | Visualizza/Apri |
I documenti in ARCA sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.