Arborescence des pages

DES, 3DES, 3K3DES et AES

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 :

  • permettre de positionner une master-key de carte personnalisée (en AES) sur une carte Mifare Desfire vierge (la master-key par défaut étant alors un clef DES 0000000000000000) ;
  • permettre à des établissements qui devraient encore supporter un autre chiffrement que AES sur des applications Desfire, pour des raisons historiques, de le faire via esup-nfc-tag (même si il reste recommandé de migrer vers AES).

Longueur des clefs

Suivant le chiffrement utilisé, la longueur des clefs diffère (on donne aussi ici au passage les différents appellations pour ces chiffrements)  :

  • DES : 8 octets (bytes), soit 16 caractères en hexadécimal ;
  • TDES (3DES, 2K3DES) : 16 octets, soit 32 caractères en hexadécimal ;
  • TKTDES (3K3DES) : 24 octets, soit 48 caractères en hexadécimal ;
  • AES : 16 octets, soit32 caractères en hexadécimal.

Master-key de la carte

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">
...

Chiffrement des applications

nok

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,

  • le premier caractère correspond à (on rajoute 2 si on veut l'ISO) 
    • 0 pour DES comme pour TDES (2 avec l'iso)
    • 4 pour TKTDES (6 avec l'iso)
    • 8 pour AES (A avec l'iso)
  • et le deucième caractère au nombre de clefs

Exemple de configuration

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>



  • Aucune étiquette