On Jun 12, 2011, at 06:29 , Douglas E. Engert wrote:
> On 6/11/2011 12:31 PM, Viktor Tarasov wrote:
>> Le 10/06/2011 19:06, Martin Paljak a écrit :
>>> On Jun 10, 2011, at 19:46 , webmas...@opensc-project.org wrote:
>>>> pkcs11: framework-pkcs15: OpenSC specific 'non-repudiation' cryptoki 
>>>> attribute ...
>>>> 
>>>> In PKCS#11 there is no CKA_ attribute dedicated to the NON-REPUDIATION 
>>>> flag.
>>>> We need this flag in PKCS#15/libopensc to make dinstinction between 
>>>> 'signature' and 'qualified signature' key slots.
>>> Why?
> PKCS#15 may have such a flag, but this does not imply that PKCS#11 has to 
> make it available.
> PKCS#11 does not require the use of PKCS#15. And as you point out not all 
> PKCS#15
> information is available via PKCS#11.
> 
> I would argue that with PKCS#11 the source of any such flags, must come from 
> the
> certificate and and the application should verify the certificate, and its 
> flags.
> The application can then select the certificate and issues the required 
> PKCS#11 calls
> to use the private key associated with the certificate.

NonRepudiation is a very tricky property, which has caused a lot of 
misunderstanding and different interpretations before (I never reached a 
consensus with NSS/Mozilla folks in the matter of the interpretation of this 
property, even in the context of *TLS authentication*)

The only time nonrepudiation is mentioned in PKCS#11 is in the context of 
public keys.  As the name (nonrepudiation) implies, it is IMHO more of a 
property of the verification process (meaning when somebody tries to test the 
repudiation) than for actual signing process, even if the underlying technical 
implementation on a smart card differs from the "normal" signature mechanism. 
Figuring out such differences and hiding them from applications in the card 
driver is in fact the purpose of OpenSC.


> So I would argue that it is not for OpenSC to to define extensions to PKCS#11 
> to
> accommodate PKCS#15.
>>> PKCS#11 is an API for accessing cryptographic hardware. From that 
>>> perspective (and from API perspective) there's no difference if a signature 
>>> is "qualified" or "not qualified".
>> 
>> Exact,
>> as I've told above, PKCS#11 knows about 'non-repudiation' but do not make 
>> distinction between 'signature' and 'signature-with-non-repudiation' 
>> ('qualified signature').
>> 
>> PKCS#11 do not make this distinction, but PKCS#15 and libopensc do .

PKCS#11 is a technical software API for accessing keys in HSM-s or smart cards 
or any other "cryptographic device". The resulting signature (the 256 byte 
array if 2048bit RSA keys are used) of a "qualified" key does not differ in 
syntax from a "nonqualified" signature.

Certificates and other higher level (often non-technical) semantics should stay 
separate from that software API. The fact that a certificate (and the 
associated private key) can be used for "qualified signatures" is an 
application (or certificate) -specific semantic property. Even if it seems like 
a generic property, making the precedence would call for "flag that this 
certificate can be used for VPN authentication" and others. Yes, PKCS#11 
defines attributes that could come from the certificate (compare: 
CKA_START_DATE) but they are by no means authoritative. Evaluation of the 
certificate is still done by the calling application.



>>> I would leave the task for the application to figure out instead of 
>>> inventing nonstandard extensions.
> 
> I agree.
> 
>> 
>> To figure out what? The location of the the pkcs15 tools ?
>> 
>> OpenSC is not the first PKCS#11 module with the non-standard extensions.
>> Possibility of these extensions is previewed by the PKCS#11 standard itself.

True. But I have not seen the actual benefit of any of those extensions.
Yet you are right, attributes can be vendor-specific and they are one of the 
designed extensions, as there are much worse abuses of PKCS#11 out there.

Thus if done, I would like to consider careful argumentation for the need of 
the extension and would like to see any deviations to be clearly documented and 
communicated back to the body issuing the "standard".

Martin
-- 
@MartinPaljak.net
+3725156495

_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to