Le 12/06/2011 05:29, Douglas E. Engert a écrit : > On 6/11/2011 12:31 PM, Viktor Tarasov wrote: >> Le 10/06/2011 19:06, Martin Paljak a écrit : >>> Hello, >>> >>> >>> 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? > Good question, but I would suggest that I agree with Martin's comments > below, as there is a different answer and conclusion to what you are > proposing. > > 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.
What do you suppose the PKCS#11 usage key CKA_ attributes are existing for? > So the application can always search for all certificates, and find the > one with the non-repudiation bit set. (If the certificate dons not have this > but the PKCS#15 does, the certificate should not be trusted.) > > The application should not depend on the flags in PKCS#15, but only depend on > the certificate or other signed objects that can be read from the card and > the ability > of the card to do the crypto. Application that uses keys and certificates do not depends, it's an application that creates them do (can do). > So I would argue that it is not for OpenSC to to define extensions to PKCS#11 > to > accommodate PKCS#15. I agree with all this when it's going about using of the card -- the card already initialized and personalized -- 'read-only' card. My question is, from your point of view, should the OpenSC PKCS#11 module be used for the card initialization (in lesser manner) and for the card personalization -- generate, import, renewal, etc ... ? >> In PKCS#15 there is 'nonRepudiation' key usage flag. >> >> In PKCS#11 the 'non-repudiation' is mentioned, but there is no dedicated >> attribute and there is no means transfer the 'non-repudiation' key usage to >> the pkcs#11 module. >> >> On the card level (libopensc), for the two operations -- 'signature' >> ('INTERNAL-AUTHENTICATION') >> and 'signature-with-non-repudiation' ('PSO-COMPUTE-DIGITAL-SIGNATURE') >> different mechanisms can be used. >> >> The card (can) make clear distinction between these two operations, with the >> distinct ACLs. >> The card with the pre-allocated key slots may have the different slots for >> these operations. >> >> So, when generating new key, it's important to transfer on the card level >> the information about the future usage of the key. >> It's actually easy to make with the pkcs15 tools (library), but not with the >> pkcs11 tool (library). >> > So why do you assume that you can initialize a PKCS#15 card using PKCS#11? > One is not a super set > of the other. If there are special PKCS#15 flags, ACLs, etc, use a PKCS#15 > tool to initialize > the card. Initialization can be a part of operation with PKCS#11, but essential is not initialization. It's going about card personalization and update. >> This new flag allows to make this distinction for the application that uses >> the PKCS#11 library. >>> 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 . >> >>> Applications that deal with qualified signatures usually depend on certain >>> certificates (and their properties). >> Before it gets the certificate, >> it has to generate the key, and at this stage it can be obliged to indicate >> in somewhat manner the future usage of this key. > But that is part of the card issuing process. How do you classify the card personalization and update process ? Do it make the part of 'post-issuance' process? >>> I would leave the task for the application to figure out instead of >>> inventing nonstandard extensions. > I agree. If I will not arrive to convince our community, I will roll it back. >> 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. >> The applications that do not creates 'qsign' keys, or that uses only the >> standard API, >> will see no difference in the behavior of the OpenSC PKCS#11 module. >> _______________________________________________ >> opensc-commits mailing list >> opensc-comm...@lists.opensc-project.org >> http://www.opensc-project.org/mailman/listinfo/opensc-commits >> >> _______________________________________________ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel