Andre Zepezauer wrote: > On Thu, 2010-11-04 at 09:48 +0100, Viktor TARASOV wrote: > >> Andre Zepezauer wrote: >> >>> On Wed, 2010-11-03 at 18:54 +0100, Viktor TARASOV wrote: >>> >>> >>>> Andre Zepezauer wrote: >>>> >>>> >>>>> On Tue, 2010-11-02 at 09:05 +0100, Ludovic Rousseau wrote: >>>>> >>>>> >>>>> >>>>>> 2010/11/1 Andre Zepezauer <andre.zepeza...@student.uni-halle.de>: >>>>>> >>>>>> >>>>>> >>>>>>> Hello, >>>>>>> >>>>>>> the pkcs15init tool currently writes to cards, even when the profile >>>>>>> indication (3F00/5015/4946) isn't found. That's bad, because it's highly >>>>>>> possible that such a card was personalised with another library or has >>>>>>> an unknown profile. In my opinion there are the following issues: >>>>>>> >>>>>>> 1. opensc isn't smart enough to do such things (see #252) >>>>>>> 2. after a successful write operation the TokenInfo is overridden, which >>>>>>> * is incomplete and >>>>>>> * contains broken ASN1 encoding >>>>>>> >>>>>>> The attached patch prevents that behaviour and fixes #252. It is for >>>>>>> current trunk. But should work for 0.11.13 too. >>>>>>> >>>>>>> >>>>>>> >>>>>> Fixed in revision 4853. >>>>>> >>>>>> I have not closed ticker #252 because I am not sure the problems are >>>>>> related. (and I have not read ticket #252 in detail). >>>>>> >>>>>> >>>>>> >>>> Neither do I. >>>> It would be nice to have full logs and to get know what's going on between >>>> 'Please enter Unspecified PIN ...' >>>> and >>>> '... cardos_check_sw: function/mode not supported' >>>> >>>> >>>> >>>>> The user reporting the bug has a card manufactured by Siemens. >>>>> Personalisation was done by the card vendors software (HiPath). >>>>> Therefore the card doesn't have the file 3F00/5015/4946 on it. With this >>>>> patch applied, the output of pkcs15-init looks like this: >>>>> >>>>> $pkcs15-init --generate-key rsa/1024 --auth-id 01 -v >>>>> Using card driver Siemens CardOS. >>>>> Couldn't bind to the card: File not found >>>>> >>>>> This is the correct behaviour, because the profile indication >>>>> (3F00/5015/4946) is missing. And refusing to modify cards without >>>>> knowing the exact profile, is good practise anyway. >>>>> >>>>> >>>>> >>>> Imho, the main reason to use PKCS#15 is interoperability between different >>>> card and middlewares in the card initialization and card using, and so, >>>> OpenSC should operate with the cards initialized by other middlewares. >>>> >>>> >>> Agreed. >>> >>> >>> >>>> Probably the on-card profile indication should be removed at all >>>> (afais, it's main purpose is to distinguish 'one-pin' and 'normal' >>>> pkcs15 profile). >>>> >>>> >>> Yes, the *current* profile indication should be removed. It should be >>> replaced with the mechanism according iso-7816 >>> (CIAInfo.profileIndication). When doing it the right way, it would >>> benefit interoperability. Let me explain: >>> >>> >> I have no this ISO. >> What's the difference between CIAInfo and TokenInfo? >> > > See yourself: > * pkcs15 v1.2 draft [1] > * iso-7816-15 draft [2] > Thanks.
> >>> For example an implementation with full support of ACR (access control >>> rules) could specify something like this: >>> Access to an object X is granted, if A_01 && A_02 && not(A_03) has been >>> verified. Where A_01 uses pin-authentication and A_02 uses >>> external-authentication and A_03 must not have been verified at all. >>> With different security environments it is even more complicated. >>> >>> >> Until now, in the card specification, I've seen the possibility like this: >> (A_01 && A_02 && ...) || (A_03 && A_04 && ...), >> on the real cards >> (A_01 && A_02) or (A_01 || A_02 || ...) >> >> >> In the real cards I have not seen the authentication objects with >> methods other then PIN to be represented in PKCS#15 structure. >> (There was vague notion 'integrity-protected' in the PinFlags, but no >> the corresponding authentication object) >> >> And so, in my mind: >> -- the upper levels (pkcs#15 and pkcs#11) should deal only with PINs. >> Logical operations with PINs still need to be implemented by >> OpenSC/pkcs#15, >> it needs some clever interaction with pin cache, pin status ('verified', >> 'blocked', ...), ...; >> >> >> -- the other authentication methods are managed by the low card level >> (libopensc). >> It's in this manner the SM (and soon the Ext.Auth) is implemented in the >> IAS/ECC branch. >> >> >> >>> Not every implementation would understand this, for sure. Therefore >>> profile indication could be uses to indicate a specific coverage of >>> features an implementation must understand. Do you know of any such use >>> of profileIndication? I would assume that such things still exists. In >>> example defined by national agencies. >>> >>> >> For me the profile indication is the AID. In the IAS/ECC branch it used >> to find out the particular pkcs15init card profile . >> Strictly speaking, this profile is needed only to fix ACLs for the data >> (EF or SDO) of the new objects. >> >> Until now, in all of these profiles (on-card applications) all the >> needed information could be found in pkcs#15 or in ACLs . >> > > Nevertheless this thread is not on reading of on-card data structures, > instead it's topic is "modification of on-card data structures". > I was talking that, to update the pkcs#15 card contents, there is (practically) no need of the information other then the on-card pkcs#15 and ACLs . It also concerns the composed ACLs -- no need of the extra-card knowledge (CIAInfo.profileIndication -> <profile content>) to get authentication for an operation . And so, no need to restrict OpenSC to the usage of the OpenSC initialized cards. > Therefore please see 1. and 2. at the beginning of this thread. > 1. There is no sufficiently of logs to make any conclusion, it's can a 'local' bug. In any case the solution is excessively 'global'. 2. Should be illustrated by example (with the detailed logs). If the problem really exists, imho, it's rather question of decoder/encoder of tokenInfo. > > In short, opensc is sufficient to do sign/decrypt operations but it is > weak on writing. > I do not see weak on writing . > [1] > ftp://ftp.cert.dfn.de/pub/docs/crypt/PKCS/ftp.rsa.com/pkcs-15/pkcs-15v1_2.doc > [2] http://www.page9.webaxxs.net/iosis/isodrafts/17n2109t.pdf > > -- Viktor Tarasov <viktor.tara...@opentrust.com> _______________________________________________ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel