Viaccess ->Etude du système

soleildemo

DZSatien V.I.P
Inscrit
25/8/07
Messages
597
Viaccess est un standard de gestion des droits d'accès développé par le C.C.E.T.T (http://www.ccett.fr/05a1.htm) il constitue la déclinaison numérique de l'eurocrypt utilisé par les opérateurs satellite pour la gestion des droits d'accès des chaînes de télévision au standard D2MAC.
Les informations contenues dans ce document sont issues de diverses faq en langue anglaise en particulier les documents viaccesenglishfaq et du document de référence sur l'eurocrypt publié par john mac Donald.
1)ATR

L' ATR est le message de présentation de la carte auprès du démodulateur. Ce message est envoyé à la mise sous tension de la carte ou lors d'une demande de réinitialisation de celle ci par le démodulateur. Il permet de définir le protocole à utiliser lors de la transmission des données .
ATR Classique:

3F 77 18 25 00 29 14 00 62 68 90 00

Cette réponse est utilisées par les cartes sur les démodulateurs sagem utilisés par TPS; sur les demodulateurs vendus dans le commerce et sur ceux utilisés en suisse pour capter les émissions de SSR/SRG.

3F Inverse convention

77 7 historical bytes - TA1, TB1, TC1 transmitted - TD1 not transmitted.

18 TA1 --- F=372 D=Reserved for further usage

25 TB1 - Vpp = 5 V, 50 mA max

00 TC1 - Guard delay / 2 bits

TD1 not transmitted - Protocole T=0 asynchrone in half-duplex 9600 bds

29 14 00 62 68 historical bytes

90 00 End of transmission - ok

ATR spécifique:

3F 27 17 C4 01 2C 29 14 00 62 68 90 00

Cet ATR a été observé uniquement sur un démodulateur Thomson utilisé dans le cadre d'un abonnement a TPS

3F Inverse convention
27 TB1 transmitted, 7 historical bytes
TA1 Non transmis - F=372 D=1
17 TB1 - Vpp = 23 V, 25 mA
TC1 Non transmis - Guard Delay=0
TD1 Non transmis - Protocole T=0 asynchrone in half-duplex 9600 bds
C4 01 2C 29 14 00 62 68 historical bytes
90 00 End of transmission - ok

2)Format de dates
Les dates de validité sont stockées sur un mot deux octets soit 16 bits.
Les 5 bits de poids faible (les bits les plus à droite du mot) codent le jour.
Les 4 bits suivants codent le mois.
Les 7 bits de poids fort codent l'année à partir de 1980.

Exemple :

2A 23 ?00101010 00100011
?0010101 0001 00011
?16+4+1=21 1 2+1=3
soit le 3 janvier 2001 (1980+21)


3)Les instructions VIACCESS
Elles sont composées de 5 octets
CLASS INS P1 P2 P3

CLASS défini la classe des instructions deux classes seront présentées dans ce document la classe 87 (données générales) et la classe CA (classe d'exécution, gestion des droit d'accès)
INS instruction chaque classe comporte un certain nombre d'instructions 255 au maximum
P1 P2 paramètres généraux ils complètent l'instruction
P3 longueur du champ de données la commande est généralement suivie de données utiles à son traitement ou constituant la réponse de la carte à la commande, P3 indique le nombre d'octets constituant cette zone de données.
Pour la plupart des commandes après émission de ces 5 octets le décodeur attend un accusé de réception, constitué de l'octet INS, avant d'envoyer le champ de données.

31)Classe 87

Les commandes de cette classe suivent immédiatement l'initialisation de la carte
Commande 87 02 00 00 03 Préparation des données
Le décodeur indique qu'il souhaite acquérir une donnée de référence dont l'adresse va être fournie sur 3 octets dans le champ de données. Après transmission de la commande le décodeur attend l'accusé de réception 02 avant de transmettre le champ de données. Celui ci peut avoir les valeurs suivantes :

00 00 28 dans ce cas la carte répond 90 00
40 00 28 dans ce cas la carte répond 90 08
00 40 28 dans ce cas la carte répond 90 08
00 00 2A dans ce cas la carte répond 90 08

Commande 87 04 00 00 07 demande des caractéristiques du bloc
Cette commande suit immédiatement la commande précédente. Après émission de la commande le décodeur attend l'octet d'accusé de réception 04 suivi de 07 octets constitués par l'adresse relative du bloc sur deux octets (généralement 00 00) la longueur du bloc (variable souvent égal à 04 ou 09(tps)) sur deux octets et 3 octets de valeur 00 qui remplissent le champ. Finalement la carte envoie 90 00 pour indiquer la fin de traitement de la commande.
Une réponse à cette commande admise par l'ensemble des décodeurs est :

87 04 00 00 07 04 00 00 00 09 00 00 00 90 00
Commande 87 06 P1 P2 P3 lecture des données
Cette commande suit la précédente la valeur de P3 correspond a la longueur renvoyée (04 dans notre exemple) P1 et P2 contiennent eux l'adresse relative obtenue.
La réponse à retourner est 06 10 02 CA 20 11 03 54 50 53
Exemple log TPS de la séquence complète

87 02 00 00 03 02 00 00 28 90 00
87 04 00 00 07 04 00 00 00 04 00 00 00 90 00
87 06 00 00 09 06 10 02 CA 20 11 03 54 50 53 90 00 (Cette réponse est obligatoire pour que la carte soit reconnue par décodeur de location de l'opérateur TPS)
87 02 00 00 03 02 40 00 28 90 08

32)Classe CA

Commande CA 18 P1 P2 P3
La commande CA 18 permet la gestion de dates de souscription , des classes de souscription ainsi que l'actualisation des clefs.
Les abonnés sont répartis en plusieurs groupes ; chaque groupe est identifié par un numéro sur trois octets nommé shared. Chaque groupe est composé de 255 membres potentiels un membre est alors identifié par son numéro personnel ou custpw codé sur un octet. L'association de ces deux identificateurs (shared + custpw) est nomme ppua
Paramètres de la commande
P1 audience concernée ce paramètre permet de définir les destinataires de la commande il peut prendre la valeur 0 1 ou 2
? P1=00 la commande s'adresse à toutes les cartes (tous les abonnés) cette valeur n'a jamais été observée dans les log Viaccess
? P1=01 la commande s'adresse à un groupe de cartes. Le groupe de carte concerné est celui dont le custpw correspond aux custpw activés par la commande CAF0 précédant la commande CA18 Donc pour obtenir une réponse correcte à CA 18, il faut d'abord se positionner sur le bon provider et envoyer la commande CA F0, c'est les données de cette commande qui initialisent la signature et seulement ensuite la commande CA 18.
Si la commande CA 18 est correcte, on obtient en retour 60 et 90 00 et non pas 90 00, en tout cas pour une carte SRGSSR (je ne sais pas pour TPS).
Si l'on ne mets pas de commande CA F0 avant CA 18, on obtient 92 00 en retour. Enfin si la date ou signature est fausse dans CA 18 ou si l'on est pas sur le bon provider, on obtient 94 00.
? P1=02 la commande s'adresse a une carte unique définie par son ppua. Cette valeur n'a jusqu'à présent pas été observée lors de logs par contre elle pourrait très bien être utilisée lors d'une modification de souscription faite par un abonné Par exemple souscription a l'option arabesque. Il est clair que pour valider l'option chez cet abonné on émettra une commande a destination de sa carte uniquement.

P2 numéro de la clef utilisée pour le décodage de la commande et la vérification de la signature
P3 longueur du champ de données.
Paramètres du champ de données
La commande permettant la gestion de nombreux paramètres de la carte le champ de données contiendra des paramètres permettant de définir les données à mettre à jour. Les paramètres du champ de données sont identifiés par un entête composé d'un octet d'identification et d'un octet de longueur.

Ent Long Nature Exemple Note
A1 03 Chanid +key utilise pour spécifier la mise à jour de la clef Key du provider Chanid 00 94 0D Clef 0D de SSR/SRG
EF 10 Précède les deux cw (cryted words)
A9 X Précède les données de souscription par classe 1
F0 08 Précède la signature
A8 06 Précède les données de souscription par thème/niveau 2
A0 01 Paramètre de contrôle 3
Note 1 Entête A9

Les données de souscriptions par classes contiennent
2 octet donnant la date de début
2 octets donnant la date de fin
un nombre variable d'octets indiquant la ou les classes souscrites. Chaque bit de ces octets correspondant a une classe la classe 0 est repérée par le bit le plus à droite.
01 indique la classe 0
80 indique la classe 7
81 indique les classes 0 et 7
01 00 indique la classe 8 etc

exemple
A9 …..
Note 2 Entête A8
Les données de souscriptions par thèmes et niveaux contiennent
2 octet donnant la date de début
2 octets donnant la date de fin
1 octet indiquant le thème
1 octet indiquant le niveau
Note 3 Entête A0
paramètre de contrôle il est composé d'un octet pouvant prendre les valeurs
00 Entrer nouvelle souscription
10 Entrer souscription gratuite
2x Annule souscription
4x détruit souscription
x=0 entite
x=2 FAC Data
x=4 Key Data
Après vérification de la signature la carte répond 90 00 si la signature est valide et 91 00 dans le cas contraire. Ces accusés de réception peuvent être précédés d'un octet 60 dont la signification reste assez obscure (remise a zéro timer dans la norme ISO 7816 - 4 définissant le protocole de communication des cartes à puce)
mise à de clef: (log SRGSSR)
CA 18 01 04 19 Mise à jour destinée à un groupe de cartes utilise la clef 04
18 accusé de récepion
A1 03 00 94 0F provider 00 94 00
EF 08 9C 70 77 97 12 15 ED 6E nouvelle clef cryptée
F0 08 ED FE 9C 0A 9A 41 F0 23 signature
60 91 00 reset timer et erreur signature
Commande CA 24 00 00 P3
Cette commande permet la gestion des codes pins de la carte la commande de base est
CA 24 00 00 09 24 00 00 00 00 00 00 00 00 0F 90 00
Cette commande permet de vérifier si la chaîne actuellement sélectionnée est verrouillée par code parental ou non.
Une carte d'émulation peut se contenté de lire les octets de données et de reourner la valeur 90 00
La modification des codes pin sera étudiée lors d'une mise à jour ultérieure.
Commande CA 88 00 P2 P3
Cette commande transmet les deux mots cryptes à la carte. Le paramètre P2 indique le numéro de la clef à utiliser pour le décryptage. La zone de données est de taille variable en fonction du provider. Elle contient outre les mots cryptes annoncés par l'entête EA 10 une signature sur 8 octets annoncée par l'entête F0 08 et des informations de date et classe de souscription précédés de l'entête E2 03.

Exemple

CA 88 00 08 26 Transmission mots cryptes a décoder avec clef 8
88 accusé de réception
E2 03 annonce paramètre date classe longueur 3 octets
28 E2 00 date 2 juillet 2000 classe 00
E2 03 annonce paramètre date classe longueur 3 octets
28 E2 07 date 2 juillet 2000 classe 0 1 et 2
EA 10 annonce mots cryptes sur 10 (décimal 16) octets
66 E6 C1 27 CF FA 3B 82 premier mot crypte
3D B1 AA D3 C9 3B 3B BC second mot crypte
F0 08 annonce la signature sur 8 octets
F9 36 F3 B0 3D D6 DB FE signature
90 00 fin de la commande signature acceptée
La longueur du champ de données varie d'un provider à l'autre pour SSR/SRG il fait 21 octets pour TPS entre 26 et 2B octets. Les différences se situent dans le nombre de champs date-classe présents dans la commande.
SSR/SRG ne propose qu'une seule option de souscription une seule classe
TPS propose plusieurs options de souscription certaines chaînes (TF1 ) sont disponibles dans les différentes classes ce qui peut expliquer la présence de plusieurs champs date-classe.
En fin de document un paragraphe traite de l'algorithme de cryptage et du calcul de signature.
Si la signature est valide la carte termine la commande en renvoyant 90 00 si la signature est fausse la carte termine la commande par 91 00
Lecture des données accusé de réception
La lecture du champ de données peu se faire de manière continue dans ce cas l'accusé de réception à la commande C88 est 88 le décodeur envoie alors les 22 octets du champ de données.
La lecture des données peut aussi se faire octet par octet. Dans ce cas l'accusé de réception est 77 le décodeur envoie alors un octet à la fois attendant à chaque fois un accusé de réception 77.
Commande CA AC P1 00 P3
La commande CA AC P1 00 P3 demande à la carte de préparer des données. Celles ci seront retournée en réponse à la commande CA B8 00 00 P3. P1 précise la nature des données à préparer (numéro série de la carte …) Si P3 = 0 la carte répond AC 90 00 si P3 # 0 la carte répond AC lit le champ de données de longueur P3 puis retourne 90 00. Lorsque la commande n'est pas implantée dans la carte celle ci répond AC 90 08.
Les différentes valeurs de P1 et de P3 correspondantes seront précisée dans le paragraphe suivant.
Commande CA B8 00 00 P3
Cette commande demande à la carte de transmettre les données en réponse à la requête CA AC précédente. Cette commande peut être utilisée sous deux formes distinctes.
Lorsque P3 >= longueur totale de la réponse celle ci est renvoyée en une seule fois et la commande est terminée par 90 08
Exemple 1

CA AC A4 00 00 AC 90 00
CA B8 00 00 07
B8 accusé de réception
A4 en réponse a A4
05 5 octets de données (numéro série carte)
00 02 0E B4 9B numéro série
90 08 fin de la commande
Lorsque P3 < longueur totale de la réponse la commande retourne P3 octets la terminaison dans ce cas es 90 00. Ceci est utilisé par certains décodeurs pour déterminer la longueur de la réponse puis les données par une seconde interrogation.

Exemple 2

CA AC A7 00 00 AC 90 00
CA B8 00 00 02
B8 accusé de réception B8
A7 en réponse a A7
03 longueur 3 caratères
90 00 indique qu'il y a encore des infos à lire
CA B8 00 00 03 on retrouve l'information de longueur
B8
54 50 53 nom du provider (TPS)
90 08 cette fois la commande est terminée
Lorsque la commande CAB8 est envoyée à la suite d'une ins CAAC non implantée la carte répond 90 02
Dans la suite du paragraphe les réponses à la commande B8 sont présentées sous la première forme sans accusé de réception ni l'octet de longueur ni la terminaison 90 08.
Réponses aux requêtes CA AC P1 00 P3
P1 P3 Fonction Réponse a CAAC Réponse à CAB8 Note
04 00 AC 90 00 XX XX XX FF FF FF FF
avec XX XX XX = ChanId
06 00 Niveau contrôle parental AC 90 00 07
07 00 AC 90 00 00 00 00 00
08 00 Lock status AC 90 00 00
09 00 AC 90 00 00 00
A1 00 Liste des ChanID AC 90 00 A1 03 FF F4 00 …… 1
A2
A3 00 AC 90 00 00 28
A4 00 N° Série carte (UA) AC 90 00 XX XX XX XX XX
A5 00 Shared + custpw AC 90 00 XX XX XX YY
XX XX XX = shared
YY =custpw 2
A6 00 Code Géographique
(Non implanté sur la majorité des cartes) AC 90 00
AC 90 08 si non implanté XX XX XX YY
XX XX XX code pays
YY code region
A7 00 Nom du provider AC 90 00 54 50 53 (TPS)
A8 04 Thèmes souscrits AC lire P3 octets 90 00 XX XX YY YY TT LL 3
A9 04 Classes souscrites AC lire P3 octets 90 00 XX XX YY YY Class 4
AA 06 PPV prépayé 00 00 00 FF FF FF 5
AB 00 00 00 00
AC Nombre total de jetons payés XX XX 00 FF
XX XX date 00 FF credits 6
AD Overdraft ? retourner longueur 00
AE retourner longueur 00
B1 Nombre de jetons utilisés (1) 00 57 00 00 7
B2 Nombre de jetons utilisés (2) 00 1D 00 00
B3 00 00 00 00 00 00
B4 06 00 00 00 00 00 00 00
B5 retourner longueur 00
B6 FF FF FF FF FF FF FF
B7 retourner longueur 00
B8 retourner longueur 00
B9 retourner longueur 00
E4 06 retourner longueur 00
Notes :
Nano 06 le niveau de contrôle parental est indiqué par un age la valeur retournée par cette commande est age-3
00 ? 3ans OF ? 18 ans.
1 Nano A1 La réponse présente la liste des ChanId de tous les providers présents sur la carte, précédé a chaque fois de A1 03 par exemple pour une carte valide pour TPS (00 70 00) et ABSAT (00 7C 00) la réponse sera A1 03 FF F4 00 A1 03 00 70 00 A1 03 00 7C 00
2 Nano A5
3 Nano A8
CA AC A8 00 04
AC accusé de récepion
00 21 FF 9F paramètre transmis à la carte
90 00 Ok
CA B8 00 00 02 B8 A8 06 90 00 récupère longueur du champ de données 6 octets
CA B8 00 00 06
B8
21 9F date debut
2C 23 date fin
FF FF theme/niveau
90 08 fin du message
4 Nano A9
CA AC A9 00 04
AC accusé de réception
00 21 FF 9F paramètre transmis à a la carte
90 00 Ok
CA B8 00 00 02 B8 A9 06 90 00 récupère longueur du champ de données 6 octets
CA B8 00 00 06
B8
21 9F date debut
2C 23 date de fin
81 03 classes concernées 15 8 1 0 (les masques de classe ont été expliqués dans le § sur CA18)
90 08 fin du message
Commande CA C0 00 00 P3
Cette commande permet de récupérer trois types d'information en fonction de la valeur du paramètre P3
P3=3
La carte renvoie l'accusé de réception C0 puis le numéro ID du provider actif combiné avec le numéro de la clef de décryptage
Exemple
CA C0 00 00 03 C0 00 7C 08 90 00 provider ID 00 7C 00 clef 8
P3=12
Cette commande suit une commande CA8800P2P3. Le décodeur demande à la carte de lui retourner les deux mots de contrôle décryptés. La carte renvoie l'accusé de réception C0 puis l'entête EA 10 et enfin les deux mots de contrôle décryptés.
Exemple
CA CO 00 00 12
C0 accusé de réception
EA 10 mots cryptes sur 10 (décimal 16) octets
BA 4E 9C 1B 6B 9A D2 78 premier mot crypté
CD F8 13 62 53 EF 72 BC second mot crypté
90 00 fin de la commande
P3=1A
Cette commande émise lors de la phase d'initialisation retourne les informations sur le numéro ID du provider actif le numéro de la clef de décryptage les clefs utilisées par le provider et d'autres informations qui restent encore obscures. La réponse de la carte est ici encore précédé de l'accusé de réception C0.
Exemple
CA C0 00 00 1A
C0 accusé de réception
00 94 08 ID provider et N° de clef
20 00 BF 1F 6A 1A B2 ???
00 01 FF FF 04 FF FF FF 08 FF FF FF 0C 0D 0E 0F Clefs utilisables ( 00 01 04 08 0C 0D 0E 0F)
90 00 fin de la commande
Commande CA F0 00 P2 22
Les commandes CA18 de mise à jour sont généralement adressées à un groupe de cartes les cartes concernée sont spécifiées par le champ de données de cette commande. Ce champ de donnée contient les Custpw valides. Le custpw est stocké sur un octet et peut donc avoir une valeur entre 0 et FF (255). Le champ data contient 256 bits soit 20 (32) octets et est précédé de l'entête 9E 20 (adress data field de logueur 20). Chaque bit représente donc un custpw si le bit est à un le custpw est concerné par la mise à jour si le bit est à zéro il n'est pas concerné.
Le bit correspondant au cutspw 00 est le bit le plus à droite du champ de données le bit correspondant au custpw FF est le bit le plus à gauche du champ de données.
Le paramètre P2 indique la clef utilisée pour le calcul de signature. En effet le groupe de carte conserné par la mise à jour est spécifié au moyen du custpw défini dans CAF0 mais aussi mais aussi par le numéro de groupe partagé (shared) celui ci est testé au moyen du contrôle de signature. Celle ci figure à la fin de l'instruction CA18 et est calculée en utilisant les données de l'instruction CAF0 et CA18.
Exemples de champs de données
9E 20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
-? concerne tous les custpw
9E 20 C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
-? concerne les custpw FF FE et 00
Lecture des données accusé de reception
La lecture du champ de données peu se faire de manière continue dans ce cas l'accusé de réception à la commande CAF0 est FO le décodeur envoie alors les 22 octets du champ de données.
La lecture des données peut aussi se faire octet par octet. Dans ce cas l'accusé de réception est 0F le décodeur envoie alors un octet à la fois attendant à chaque fois un accusé de réception 0F.
Commande CA C4 00 00 10
Lit une série d'octets sur la carte les huit octets après 9008 sont toujours différents à tester
4)Algorithmes Eurocrypt.
L' algorithme de base utilisé en eurocrypt est le DES il a été utilisé sous trois variantes celle présentée ici est l'eurocrypt M considéré souvent comme étant à la base du Viaccess. Le paragraphes qui suivent sont la traduction d'un document rédigé par John Macdonald. Les nombres dans les paragraphes suivant sont exprimés en décimal sauf mention spécifique.
Les étapes principales du processus sont:
-la préparation de la clef
-traitement des données
-itération
En d'autre termes, nous procéderons à certaines opérations sur la clef, puis sur les mots cryptés et finalement combinerons les deux éléments (Ou exclusif) .
Ce processus sera répété 16 fois (on dira qu'il y a 16 passes) pour décrypter un mot.
41 Préparation de la clef
Nous disposons d'une clef sur 7 octets soit 56 bits que nous séparerons en deux bloc de 28 bits sur lesquels nous opéreront une permutation circulaire de 1 ou 2 bits vers la gauche. Le nombre de bits de permutation dépendant du numéro d'ordre de la passe que nous somme entrain de traiter (1 a 16) conformément à la table:
passe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Nb permutations 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Puis les deux blocs sont à nouveau assemblés pour former un mot de 56 bits dont nous allons extraire 48 bits en les réorganisant en fonction de la table suivante :
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Ceci signifie que bit 1 du nouveau bloc est le bit 14 de l'ancien bloc, le bit 2 du nouveau bloc est le bit 17 de l'ancien bloc et ainsi de suite pour finir par le bit 48 du nouveau bloc est le bit 32 de l'ancien bloc.
On remarquera que les anciens bits 9 18 22 25 38 43 54 ne sont pas utilises Cette opération est nommée Permutated Choice 2 ou PC-2 dans la terminologie DES .
La préparation de la clef est maintenant terminée pour une passe. Le résultat est une nouvelle clef sur 48 bits que nous utiliserons ultérieurement.
42 Traitement des données
Les mots cryptes ont une longueur de 8 octets soit 64 bits. La première opération consiste a séparer ce mot en deux blocs de 32 bits nommés L et R. Puis nous construisons un nouveau bloc R1 d'une longueur de 48 bits en utilisant la table suivante:
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
Ceci signifie que le premier bit de R1 est le 32 ème de R, le deuxième de R1 le 1 er de R ……pour finir avec le 48 ème bit de R1 est le premier de R.
On remarquera que certains bits de R sont utilisés plusieurs fois. La table est nommée table d'Expansion ou Table-E
Nous effectuons maintenant un OU exclusif entre les 48 bits de R1 et les 48 bits de la clef préparée précédemment.
Le résultat est décomposé en 8 blocs de 6 bits; chaque bloc est utilisé pour trouver une valeur dans une des huits tables ci dessous nommées tables de Substitution ou S-Boxes.

Substitution Box 1
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 12 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13


Substitution Box 2
15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 7 7 12 0 5 14 9
Substitution Box 3
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

Substitution Box 4
7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

Substitution Box 5
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

Substitution Box 6
12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

Substitution Box 7
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

Substitution Box 8
13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

La ligne de la S-Box est calculée en utilisant le premier et le sixième bit (0 1 2 3 4) pour chaque bloc de six bits la colonne est déterminée avec les 4 bits au milieu de chaque bloc (0 -15).
On utilisera le premier bloc de 6 bits avec S1 le second avec S2 et ainsi de suite le huitième utilisant S8.
Toutes les valeurs dans les S-Box sont comprises entre 0 et 15 et donc codées sur 4 bits. On substitue donc une valeur sur 4 bits a une valeur sur 6 bits.
On construit ainsi une chaîne R2 sur 32 bits (8x4 bits)
Pour finir on utilise la table de permutation suivante pour créer la chaîne R3 a partir de R2.
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
Le premier bit de R3 sera le 16 ème de R2 le 2 de R3 est 7 ème de R2 et ainsi de suite le 32 ème de R3 est le 25 ème de R2.
43) ITERATION DU PROCESSUS
Résumé nous avons donc séparé le mot crypté en deux parties L et R ; créer un nouveau mot R3 à partir de R et conservé L.
L'étape suivante consiste à faire un OU exclusif entre L et R3 ceci terminera la première passe du processus de décodage
Pour la prochaine passe nous remplaçons L par R3 et R par le résultat de la fonction OU précédente. Nous répétons alors les opérations de préparation de la clef et de traitement des données.
Nous répétons tout ceci 16 fois et in fine sommes en présence de deux mots un gauche L final et un droit R3 final de 32 bits chacun
Il reste a assembler les deux mots pour obtenir le premier mot décrypté sur 64 bits (8 octets)
On décrypte ensuite le second mot transmis par CA88 et on renvoie les deux mots décryptés en réponse à CACO ce qui autorisera l'affichage de l'image.
44)EUROCRYPT-S2
Il y a trois différences entre Eurocrypt-M et Eurocrypt-S2.
PREPARATION de la clef
Comme en Eurocrypt M la clef est divisée en deux moitiés mais aucune permutation à gauche n'est effectuée avant la modification par PC-2. Onréalise une permutation à droite après ces modifications.
Traitement des données
Avant d'utiliser la table d'expansion on crée un nouveau mot en uilisant la table de permutation:
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Cette permutation est nommée permutation initiale ou IP
On procède ensuite au décryptage comme en Eurocrypt M puis le résultat est transformé en utilisant la table inverse de la table précédente
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 56 26
33 1 41 9 49 17 57 25
Cette table est nommée Permutation Inverse Initiale ou IP**-1.
5)CALCUL DE SIGNATURE
Le système Eurocrypt comporte une fonction permettant a la carte de vérifier que les données cryptées qui lui parviennent lui sont bien destinées et qu'elles ne sont pas altérées. Cette fonction le calcul de signature aussi nommée HASCH
Toutes les instructions contenant une donnée cryptée (18 et 88) se terminent par une chaîne de dix caractères :
f0 08 < 8 octets en hexa >
Les 8 octets placés après F008 constituent les données de la signature. Lorsque la carte traite les données cryptée elle effectue un calcul de signature. Le résultat de ce calcul est comparé avec les huit bits qui suivent l'entête F008 si il y a concordance la carte renvoie 90 00 sinon elle retourne la réponse 91 00
L'algorithme est basé sur un tampon de 8 octets initialisé a zéro a la réception du champ de données pour le traitement d'une instruction 88 et à la réception du champ de donnée de l'instruction F0 précédente pour le calcul de signature pour l'instruction 18.
On récupère ensuite les huit premiers octets du champ de données en faisant un ou exclusif avec le contenu du tampon de signature. La fonction HASH est ensuite appliquée au contenu du tampon. Le résultat remplace alors les données du tampon.
Les huit données suivantes sont récupérées en faisant un ou exclusif avec le contenu du tampon (on commence a l'octet 1).
Ce processus se poursuit jusqu'à arriver de l'entête F008 si le résultat du calcul précédent correspond aux données qui suivent cette entête la signature est acceptée
En quoi consiste la fonction HASH ?
On utilise le même algorithme que pour la fonction DES (M ou S) utilisée pour le décryptage des mots de contrôle excepté que a la fin de chacune des 16 itérations les deux premiers octets du mot R3 sont intervertis avant de faire le OU exclusif avec le mot L .
5)Algorithme Viaccess.
On a vu dans le paragraphe précédent que le passage lors de la définition de l'eurocrypt S2 une grande partie de l'algorithme avait été conservé Il en a été de même lors de l'introduction du 3DES .
Je pense que l'algorithme de base a également été conservé lors du passage au viaccess en particulier toutes les tables S boxes.
6)Terminaisons
90 00 terminaison normale commande acceptée et executée
90 08 fin des données (B8) instruction non implantée (AC) erreur
6B 00 mauvais paramètres (INS P1 ou P2)
6C 00
90 02 instruction AC non implantée
 
Bonjour
91 00 commandes déja exécutée
 
Retour
Haut