OK. I think we have all facts. Thanks.
On Thu, Jun 16, 2011 at 1:14 PM, Martin Paljak <mar...@martinpaljak.net> wrote: > > Hello, > > On Wed, Jun 15, 2011 at 14:28, Alon Bar-Lev <alon.bar...@gmail.com> wrote: > > On Wed, Jun 15, 2011 at 2:05 PM, Martin Paljak <mar...@martinpaljak.net> > > wrote: > >> Given that in practice, CKA_ALWAYS_AUTHENTICATE is almost exclusively used > >> with nonrepudiation signature keys and the fact that the usual creation of > >> such keys through PKCS#11 is not a common operation, it sounds like a > >> useful signaling channel. > > > > I disagree of the above statement. > > "practice" is not related to this. > > I use my authentication certificate as always authenticate... > > And I guess people also use this for decryption... > > It has nothing to do with legal, but for people customization and paranoia. > > > > So a much cleaner solution would be to use vendor provided attribute. > > Yes and no. OpenSC does a lot of translation. It translates > non-ISO7816-4-ish commands to generic functions that are expected to > "behave like ISO7816-X" to enable the PKCS#15 support (card drivers). > It translates non-PKCS#15 cards into PKCS#15 terms (PKCS#15 emulation > code), because that's what is used internally by OpenSC (whether it is > the best or most optional abstraction is another question). It > translates PKCS#15 into PKCS#11, because that is what applications > want. It also translates PKCS#15 to Tokend/CDSA or CryptoAPI. > > Because there are so many layer in the real life PKI world, it is a > nightmare. As always with translation - something gets lost and > something gets added by the translator. But the goal of the translator > is to be as exact and as close to the original as possible, but adopt > the sentence so that it makes sense to the target audience. Like > proverbs - you either translate them word by word (like I did) or you > use an equivalent which is known to the native speakers of the target > language in the given locality. PKCS#11 and CryptoAPI are not "just > another interfaces", they have different design philosophies and > goals. It does not make sense to try to extend the PKCS#15 world to > CryptoAPI or implement everything in PKCS#15 layer with only CryptoAPI > usage in mind. Rather the best effort to translate in the spirit of > target audience should be done (both directions) > > CKA_ALWAYS_AUTHENTICATE is a property of PKCS#11 which is most similar > to userConsent property in PKCS#15. Disregarding the properties, > eventually the actual card should behave like advertised. > Do all card drivers support (and enforce) "authentication before > signature" feature? I doubt it. Does OpenSC currently allow setting a > configured userConsent value when generating keys? Will it be > transferred to the card and enforced by the card? AFAIK not (at least > not easily). What about userConsent > 1? Will we disregard > CKA_ALWAYS_AUTHENTICATE, which implies userConsent==1? > > Yes, some of them are shortcomings in OpenSC (and drivers and cards) > and some could be improved (like using userConsent value for PIN cache > TTL) and having explicit attributes would be more precise, but it > would often only support a low value corner case for maybe a few but > maybe zero users. Current CKA_ALWAYS_AUTHENTICATE (and related > userConsent==1) relation comes from real life and has proven to be > useful. > > DWIM is a powerful concept ;) > > > >> You mean admitting that PKCS#11 is limited and making the PKCS#11 > >> personalization mechanism more flexible by endorsing more properties to > >> templates? I don't think it fixes the fundamental issue, that > >> personalization really does not seem to be in the focus of PKCS#11... > > > > Right... so either we open libopensc again to allow personalization > > directly with PKCS#15 as it was before, or we provide some bridge > > between the two. > > I don't think that libopensc was actually used (publicly) for > personalization. The reason for removing libopensc-dev was to > eliminate the "I need access to smart cards... google & find OpenSC, > think 'this is some smart card think, I'll link against it'" habit. > > Up to the point of removing public headers, all users of libopensc > should have either used PKCS#11, had already implemented PKCS#11 > support or had the code to use libopensc long abandoned/not updated. > The main reason of ditching development packages was to draw attention > to the fact that libopensc is not the most appropriate interface for > adding smart card support to enduser applications. > Also, to get rid of the necessity to maintain a kitchen sink API and > related ABI issues and focus on published API-s (PKCS#11, Minidriver, > Tokend). > > If there was to become a new application which would focus on card > *personalization* through libopensc, would help to sanitize the > exported API of libopensc and work with that, it would be most > welcome. > But I don't know of any such effort or people who would be interested > in it. Personalization is often a closed-group hobby or eagerly kept > in house. > > > As most enrollment applications are card specific, A good enrollment > > application should be in control of every aspect of the card. Making > > sure that every byte on card is in place. So if you have PKCS#15 card, > > you probably need to create proper PKCS#15 filesystem directly. > > True. Which means that pkcs15-init should be used. Or something comparable. > > > > Using PKCS#11 for generic type card is good enough as long as you can > > bear the limitation of abstraction. And OpenSC has few of them... > > PKCS#11->PKCS#15->proprietary > > > > So if it is important that OpenSC's PKCS#11 interface enables to be > > used for card specific enrollments, we need to expose the PKCS#15 > > filesystem via the PKCS#11, this is a different ball game. > > True. _______________________________________________ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel