Expand Spanish DNIe background and versions, mention NFC interface - #35
Expand Spanish DNIe background and versions, mention NFC interface#35AlexTMjugador wants to merge 3 commits into
Conversation
Despite OpenSC working with DNIe 3.0 and 4.0 ID cards when used through their contact interface, the documentation for those versions has not been kept up to date, still referencing first-generation DNIe / DNI 2.0 cards that have not been issued to citizens for more than 10 years. These changes expand the DNIe documentation to mention the newer DNIe 3.0 and 4.0 iterations, which are largely similar in their wire protocol to older DNIe cards, while incorporating a secondary NFC interface that is not functional in OpenSC at the moment and has been quite sparsely documented. These additions summarize the background I've came to know after hands-on testing of a DNIe 4.0 card issued 2 years ago, which I tried to use through its NFC interface with OpenSC to no avail. While at it, I've elevated the support category of the Spanish eID card above unsupported, because I consider that OpenSC's support for its contact interface on its different versions goes beyond "incomplete, broken, or largely useless" and is mostly on par with e.g. that of the Italian eID. In fact, after reverse-engineering the official PKCS#11 DNIe module for contact interface support, I found it matches the almost the same ATRs, with a single extra ATR not covered by OpenSC that doesn't seem relevant in practice to me, and might match the missing uninitialized case mentioned in the DNIe card driver code comments. Moreover, the lack of contactless interface support does not seem to be a reason against this reclassification given that the supported hardware list begins with a disclaimer about OpenSC only working with contact interfaces unless otherwise noted.
frankmorgner
left a comment
There was a problem hiding this comment.
could you clarify the wiki page on what there currently exists (with links), what has been existing and is now not available anymore and what is currently impmenented and supported by OpenSC?
I'd like to provide more concrete evidence here, but unfortunately I don't have a dedicated smart card reader, so I can't inspect my newer DNIe 4.0 card through its contact interface to verify the claims, experiences, and standards conformance statements I've seen online. As a result, I wouldn't feel confident providing an exhaustive description of the technical differences introduced with DNIe 3.0. That said, based on those reports and my birds-eye review of the decompiled PKCS#11 module provided by the DGP, my impression is that the contact interface of DNIe 3.0 is largely similar to that of the previous DNIe / DNI 2.0 generation. As such, most documentation for the first-generation DNIe is probably still relevant, though it could benefit from better framing to explain how the ID card has evolved over time in a largely backwards-compatible manner. I also believe OpenSC implements, at least on paper, the functionality required for operating the DNIe 3.0 contact interface for its intended uses. According to DGP's documentation, the only additional piece of data that OpenSC's Would you be interested in making it more explicit in the wiki that newer DNIe versions are thought to be mostly backwards compatible from OpenSC's perspective, and that no significant functionality is thought to be missing either? On a side note, I found vsmartcard's Remote Smart Card Reader very promising and, aside from OpenSC currently lacking support for the NFC interface of DNIe 3.0 (the emulated ATR of my card's NFC interface is |
frankmorgner
left a comment
There was a problem hiding this comment.
Thanks for taking your time in improving the Wiki. I do understand that this is a time consuming task and cannot always be judged on an object basis. That being said, my impression is that the article should be adressing ordinary users without too much technical knowledge. Their main question typically is, how do I get this running, what is supported, what isn't. Historical background is useful in terms of getting to know stakeholders. reliability over time and possible options if something fails. Please make sure to structure the text so that the structure makes it easy to digest the information.
On second read, the text now is not as problematic as my comments suggest. It could also be merged as is. However, please give it a second thought on what you might want to know if you were a user of that card and how that information could be presented best. Thank you.
| * The official one provided by *Spanish irección General de la policía y de la Guardia Civil (DGP)* was based in OpenSC-0.11.8, released under GPLv3. It's not being currently maintained. | ||
| There were two different OpenSC implementations for first-generation Spanish National eID card (DNIe / DNI 2.0) support: | ||
|
|
||
| * The official one provided by *Spanish Dirección General de la Policía y de la Guardia Civil (DGP)* was based in OpenSC-0.11.8, released under GPLv3. It's not being currently maintained. |
There was a problem hiding this comment.
I find this paragraph confusing: Is DGP still the official driver? If so, why isn't it maintained? Was only the OpenSC release unmaintained, while later releases are proprietary re-implementations? Are there any links to DGP or its OSS release?
| There were two different OpenSC implementations for first-generation Spanish National eID card (DNIe / DNI 2.0) support: | ||
|
|
||
| * The official one provided by *Spanish Dirección General de la Policía y de la Guardia Civil (DGP)* was based in OpenSC-0.11.8, released under GPLv3. It's not being currently maintained. | ||
| * *OpenDNIe* was an alternate LGPL implementation, written from scratch based on several documents and forums around DNIe. |
There was a problem hiding this comment.
Are there any links to OpenDNIe? Is it still supported? As far as i know, this was merged into OpenSC, wasn't it? If the text is structures so that one implementation gets basic info in a dedicated paragraph, this basic info should not appear two paragraphs later.
Despite OpenSC working with DNIe 3.0 and 4.0 ID cards when used through their contact interface, the documentation for those versions has not been kept up to date, still referencing first-generation DNIe / DNI 2.0 cards that have not been issued to citizens for more than 10 years.
These changes expand the DNIe documentation to mention the newer DNIe 3.0 and 4.0 iterations, which are largely similar in their wire protocol to older DNIe cards, while incorporating a secondary NFC interface that is not functional in OpenSC at the moment and has been quite sparsely documented. These additions summarize the background I've came to know after hands-on testing of a DNIe 4.0 card issued 2 years ago, which I tried to use through its NFC interface with OpenSC to no avail.
While at it, I've elevated the support category of the Spanish eID card above unsupported, because I consider that OpenSC's support for its contact interface on its different versions goes beyond "incomplete, broken, or largely useless" and is mostly on par with e.g. that of the Italian eID. In fact, after reverse-engineering the official PKCS#11 DNIe module for contact interface support, I found it matches the almost the same ATRs, with a single extra ATR not covered by OpenSC that doesn't seem relevant in practice to me, and might match the missing uninitialized case mentioned in the DNIe card driver code comments. Moreover, the lack of contactless interface support does not seem to be a reason against this reclassification to me given that the supported hardware list begins with a disclaimer about OpenSC only working with contact interfaces unless otherwise noted. But I'd welcome discussion about whether this reclassification is indeed appropriate.