esup-nfc-tag-server est compatible avec l'ensemble des chiffrements proposés dans Mifare Desfire : DES, 3DES, 3K3DES et AES.
Le chiffrement recommandé cependant (c'est à dire à utiliser) est AES.
DES (et ses dérivés) est en effet considéré comme trop faible d'un point de vue sécurité ; aussi, les différents éditeurs/prestataires semblent tous accordés sur cet état de fait : utiliser AES et ne pas/plus utiliser DES et dérivés.
esup-nfc-tag supporte l'ensemble des chiffrements pour :
Suivant le chiffrement utilisé, la longueur des clefs diffère (on donne aussi ici au passage les différents appellations pour ces chiffrements) :
La master-key de la carte correspond à une configuration spécifique au niveau même du bean représentatn le TAG.
Une configuration classique pourra être de partir de la clef DES par défaut pour aller vers une clef AES (encodage de carte vierge)
<bean id="desfireComueTagUpdateEsupSgc" class="org.esupportail.nfctag.beans.DesfireTag" p:keyStart="0000000000000000" p:keyTypeStart="DES" p:keyFinish="33333333333333333333333333333333" p:keyTypeFinish="AES" p:keyVersionFinish="03"> ... |
Ou encore de partir d'une clef AES pour aller vers une autre clef AES (encodage de carte préencodée)
<bean id="desfireComueTagUpdateEsupSgc" class="org.esupportail.nfctag.beans.DesfireTag" p:keyStart="22222222222222222222222222222222" p:keyTypeStart="AES" p:keyFinish="33333333333333333333333333333333" p:keyTypeFinish="AES" p:keyVersionFinish="03"> ... |
On peut aussi laisser la clef AES telle quelle, il faudra alors simplement la spécifier comme étant celle de départ :
<bean id="desfireComueTagUpdateEsupSgc" class="org.esupportail.nfctag.beans.DesfireTag" p:keyStart="33333333333333333333333333333333" p:keyTypeStart="AES"> ... |
Le nok permet de définir le type de clefs et le nombre de clefs pour chaque application (il peut permettre également de proposer le support de la norme ISO/IEC 7816-4, esup-nfc-tag attendra alors en propriétés un isoId et un isoName, cf par exemple Carte étudiante européenne#ESUP-NFC-TAG).
En hexadécimal,
On rappelle ici que c'est l'AES qui est recommandé
<bean id="desfireTagExample" class="org.esupportail.nfctag.beans.DesfireTag" p:formatBeforeWrite="true"> <property name="applications"> <util:list> <!-- nok=02 correspond 2 clefs (T)DES - longueur clef de 8 bytes correspond à du DES --> <bean class="org.esupportail.nfctag.beans.DesfireApplication" p:desfireAppId="F12340" p:amks="0B" p:nok="02"> <property name="files"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireFile" p:fileNumber="00" p:communicationSettings="03" p:accessRights="1111" p:tagWriteApi-ref="idp2sTagWriteEsupSgc"/> </util:list> </property> <property name="keys"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="00" p:keyVer="01" p:key="1000000000000000"/> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="01" p:keyVer="01" p:key="1000000000000000"/> </util:list> </property> </bean> <!-- nok=02 correspond 2 clefs (T)DES - longueur clef de 16 bytes correspond à du TDES --> <bean class="org.esupportail.nfctag.beans.DesfireApplication" p:desfireAppId="F12341" p:amks="0B" p:nok="02"> <property name="files"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireFile" p:fileNumber="00" p:communicationSettings="03" p:accessRights="1111" p:tagWriteApi-ref="idp2sTagWriteEsupSgc"/> </util:list> </property> <property name="keys"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="00" p:keyVer="01" p:key="10000000000000000000000000000000"/> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="01" p:keyVer="01" p:key="10000000000000000000000000000000"/> </util:list> </property> </bean> <!-- nok=42 correspond 2 clefs TKTDES - longueur clef de 24 bytes --> <bean class="org.esupportail.nfctag.beans.DesfireApplication" p:desfireAppId="F12342" p:amks="0B" p:nok="42"> <property name="files"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireFile" p:fileNumber="00" p:communicationSettings="03" p:accessRights="1111" p:tagWriteApi-ref="idp2sTagWriteEsupSgc"/> </util:list> </property> <property name="keys"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="00" p:keyVer="01" p:key="100000000000000000000000000000000000000000000000"/> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="01" p:keyVer="01" p:key="100000000000000000000000000000000000000000000000"/> </util:list> </property> </bean> <!-- nok=82 correspond 2 clefs AES - longueur clef de 16 bytes --> <bean class="org.esupportail.nfctag.beans.DesfireApplication" p:desfireAppId="F12343" p:amks="0B" p:nok="82"> <property name="files"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireFile" p:fileNumber="00" p:communicationSettings="03" p:accessRights="1111" p:tagWriteApi-ref="idp2sTagWriteEsupSgc"/> </util:list> </property> <property name="keys"> <util:list> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="00" p:keyVer="01" p:key="10000000000000000000000000000000"/> <bean class="org.esupportail.nfctag.beans.DesfireKey" p:keyNo="01" p:keyVer="01" p:key="10000000000000000000000000000000"/> </util:list> </property> </bean> </util:list> </property> </bean> |