III) L'algorithme Seca-Mediaguard
L'algorithme Seca-Mediaguard est basé sur une clé
codée sur 8 octets que l'on appelle le mot de contrôle
crypté (Crypted Controlword). De ce mot de contrôle crypté,
on calcule le mot de contrôle décrypté. Pour ce calcul, on
a besoin d'une clé de 16 octets, composée de deux clés de
8 octets, appelées respectivement, Clé primaire (Primary Key ou
PK) et Clé secondaire (Secundary Key ou SK).
Il y a deux jeux de clés, des plus importants à
signaler: Les Clés opérationnelles (Operational Keys ou OK) et
les Clés de management (Management Keys ou MK). Les OK sont les
clés de décodage en cours. Les MK sont les clés qui
permettront au fournisseur de modifier les OK.
Enfin il faut mentionner les Clés fournisseur (Provider
Keys) et les Clés Seca (Seca
Keys):
? Les Clés fournisseur lui permettent d'activer, de
modifier ou de désactiver une
carte. Elles permettent des opérations ne portant que sur
1 fournisseur.
? Les Clés Seca autorisent des modifications à
tous les niveaux de la carte. Par
exemple elles permettent d'ajouter ou de retirer des
fournisseurs sur la carte.
IV) fonctionnement de la communication
Quand le protocole de communication de la carte est connu du CAM,
suite à la réception de l'ATR, le CAM commencera à donner
des instructions et demander des informations. Les instructions que le CAM
envoie à la carte sont appelés octets d'INStruction ou en
abrégé INS. Une liste complète de tous les INS se trouve
dans la section Téléchargements (Seca FAQ Duits.zip), c'est en
allemand. Moins complet mais intéressant pour démarrer vous y
trouverez en anglais Mediaguard Musings Engels.zip.
Parmi les premières informations que le CAM demandera
à la carte il y aura le nombre et le nom des fournisseurs
supportés et les droits pour un fournisseur donné. ..
V) Exemple de communication
Une des requêtes du CAM concerne les fournisseurs
supportés par la carte.
Le code de l'INS correspondant est 12 (hex). En notation standard
hexadécimale hex 12 sera écrit 0x12.
La syntaxe complète de l'INS 12 sera: C1 12 xx 00 yy
où:
Rédigé et présenté par : Keuambou
Fouolap Yannick Page 41
RAPPORT DE STAGE
- C1 12 veut dire INS 0x12
- xx est le numéro du fournisseur pour lequel on demande
l'information, 00 désigne le fournisseur SECA.
- yy donne le nombre d'octets de la réponse.
C1 12 00 00 19
C1 12 00 00 19 12 00 00 53 45 43 41 20 20 20 20 20 20 20 20 20
20 20 20 00 00 00 00 00 00 00 90 00
Etudions la réponse de la carte:
La syntaxe de la réponse est: 12 bb bb cc cc cc cc cc cc
cc cc cc cc cc cc cc cc cc cc 00 dd dd
ee ff ff 90 00 où:
- 12 est l'INS qui identifie la réponse. (En clair,
ça veut dire "c'est une réponse à la requête
12).
- le 90 00 à la fin est en standard Seca et veut dire que
"tout is OK".
- entre les deux il y a exactement le nombre d'octets
spécifié dans l'INS (donc yy octets, voir
ci-dessus)
- bb bb est le numéro de fournisseur (Provider ID).
- cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc est le nom du
fournisseur en Ascii codé
hexadécimal.
- dd dd est l'adresse de la carte.
- ee est encore inconnu.
- ff ff contient la date de fin d'abonnement.
Ainsi,l'INS suivant:
C1 12 01 00 19 veut dire:
- donner l'information sur le fournisseur 1 - réponse
attendue en 25 octets (19 hex).
La réponse pourrait être:
12 00 04 43 41 4E 41 4C 53 41 54 45 4C 4C 49 54 45 20 20 00 FF FF
FF 0B CF 90 00
Qui veut dire:
- la réponse à l'INS 0x12 est
- Prov.ID est 00 04
- Le nom est CANALSATELLITE
- L'adresse carte est FF FF
- L'abonnement se termine le 31.12.2001
Rédigé et présenté par : Keuambou
Fouolap Yannick Page 42
RAPPORT DE STAGE
VI)
|