Le 05/04/2011 16:42, Frank Morgner a écrit : > Hi! > >>>>> AFAIK, ISO 7816 defines data encoding, input for the cryptographic >>>>> layer and some padding methods. Everything you listed would be >>>>> part of the crypto layer which is not fixed by ISO 7816. >>>> Can you explain yourself ? >>>> Yes, it's another crypto layer, that sits beside the ISO-7816's one >>>> and that uses the common 'involved cryptography' library. Which >>>> layer to use is defined by the card-driver/opensc-configuration >>>> during the initialization of the SM context. >>> It is common to confuse or mix encoding with encryption. ISO 7816 >>> defines encoding, nothing more. It says that SM also involves some >>> sort of encryption. How encryption looks like is not part of 7816. >>> The things you listed are not subject to 7816, which leaves my >>> question unanswered if GP uses a different SM protocol as the one >>> defined in 7816. >> Yes, it uses different SM protocol. Look annex D of the Global >> Platform v2.2 specification . >> >> How do you define 'SM protocol' ? For me it's a sum of data format, >> encryption and authentication rules. Internally these rules can be >> presented as pile of 'encoding' and 'encryption' layer, >> 'authentication' clearly separated from 'encryption', ... as you like >> . Two different SM protocols can use the same 'involved >> cryptography', authentication scheme, ... > I am always referring to ISO-7816: Here Encoding is standardized and in > addition the data is encrypted/authenticated "somehow". So yes, SM > involves encryption, but it doesn't standardize the means to this (which > is what I call the crypto layer). One SM protocol is defined by > ISO-7816, where the cryptographic protocols used can differ from card to > card. For me SM is a specific encoding with unspecific cryptography. So > two cards conforming to ISO-7816 that use different cryptography still > use the same protocol. Ok, return to the begin, we have two different SM encodings, so we have two different SM protocols -- GP and ISO-7816.
>>> What I am aiming at is modularity and reuse of code. This should not be >>> only done by coding functions which are used by different card drivers. >>> This should be reflected by the software architecture to achieve >>> separation of concerns. Two main concerns are encoding and encryption: >>> >>> Encoding layer: >>> - pad data for authentication/encryption >>> - encode clear apdu for encryption >>> - encode cryptogram/clear apdu for authentication >>> - encode cryptogram and mac for transmission >>> Crypto layer: >>> - encrypt data >>> - decrypt data >>> - authenticate data >>> >>> I separated the crypto layer via callback functions. This could also >>> be done with the encoding layer (which I didn't because I thought >>> that every card uses 7816). >> Where the crypto layer callback should be called? In encoding layer? >> In the non-SM part (libopensc?, pcsc?) ? > The former, the encoding layer triggers cryptographic operations. First > encode plain APDU, then encrypt data, then authenticate data, then > encode encrypted/authenticated APDU. > >> For me the SM related callbacks represents the external API of the SM >> module (static or dynamic). These callbacks are called in the non-SM >> part (libopensc). Internal architecture of SM module is not exposed >> to the libopensc level . In this module are linked together encoding >> and crypto layers . >> >> There are only few SM callbacks: initialize, get-secured-apdus, >> decode-answer, finalize, init/close-module . > Agreed, I don't think more callbacks are needed. When splitting encoding > from encryption, I am talking of the structure of the SM-Module. Ok. Have you any consideration about the general schema of the interactions between SM module and OpenSC, as it exposed on the wiki page ? > Cheers, > Frank. Kind wishes, Viktor. > > _______________________________________________ > opensc-devel mailing list > opensc-devel@lists.opensc-project.org > http://www.opensc-project.org/mailman/listinfo/opensc-devel -- 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