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]

> > 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".
Therefore please see 1. and 2. at the beginning of this thread.

In short, opensc is sufficient to do sign/decrypt operations but it is
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


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

Reply via email to