 Donc, voici à présent notre taux que suivant, ce soir, si vous êtes à niveau de votre téléphone DECT et que vous êtes rempli d'impression diverse sur ce jour, il se pourrait que vous désiriez regarder la télé, mais ce serait cool d'avoir la télé payante. Et donc, nous avons Chris Galinsky qui se pose la même question, comment avoir la télé gratuite décodée à la masse, à la façon des hackers. Donc il a fait du reverse sur la crypto et le format d'un standard qui n'a pas été décoté depuis la fin des années 90. Je vous prie de bien vouloir accueillir Chris Galinsky sous vos appellations. Bon, bonjour à tous, je suis Chris Galinsky, je suis un hacker canadien et je vais vous parler aujourd'hui de comment j'ai craqué la sécurité des réseaux digitaux cable et télé. J'ai étudié un système, une plateforme très utilisée au Canada et aux États-Unis, une des plateformes les plus communes utilisées dans la télécablée, qui est aussi utilisée pour la télé satellite par un des deux principaux providers canadiens. Selon moi, le système restait sécurisé depuis son introduction à la fin des années 90. Je t'ai curieux de savoir si je pourrais comprendre ce système en étudiant des vieilles box qui ont à peu près 15 ans et qui sont toujours utilisés de nos jours et qui n'ont pas reçu de grade de sécurité depuis cette époque. Donc j'ai regardé comment ça marchait. Avant de rentrer dans le reverse, j'aimerais décrire brièvement comment est-ce qu'on envoie de la télé digitale sur le satellite ou le câble. Donc les deux sont assez semblables. Il y a beaucoup de modulation de signal qui sont employés. Ici on va parler du QPSK à peu près 27 Mbps et de LightPSK TurboFac à peu près 38 Mbps sur satellite et du QAM 256 à 38 Mbps sur le câble. On a aussi un canot Warband qui est utilisé par le câble du QPSK modulé à 2 Mbps. Ce canal permet de faire des mises à jour système, le guide des programmes etc. Quand on change les chaînes etc. ce canal reste le seul donc la box c'est en permanence quel est le programme si vous êtes abonné etc. Pour le cas du satellite c'est inclus dans le transport stream au lieu d'être orband. La vidéo est envoyée en MPEG 2 ou en H264. C'est un format de transport standard pour les stream vidéo. Donc à peu près tous les décoders hardware ou software comme VLC peuvent le lire. Par contre le système de chiffrement est DigiCypher 2. Il ne suit pas les standards DVB que le reste du monde utilise. Le flux de transport MPEG est composé de paquets de 188 octets chacun. Chaque paquet a un PID qui permet de faire la différence entre les différents types de data. Les PID sont entre 0 à 0x. Chaque PID a un stream élémentaire paquetisé MPEG. C'est un stream vidéo audio. Ou alors le PID peut également... Tables d'information de service. La table 0 est la table d'assession des programmes qui contient la liste des programmes qui sont transportés sur ce flux de transport. La table d'assession des programmes est toujours trouvée sur le PID 0. La table 2 est la table de ma page programme qui contient une liste des PID pour chacun. Et aussi le PID pour le SM. Le PID pour le SM, c'est où il y a le Entitlement Control Message qui sont envoyés, qui contiennent les informations, qui sont utilisées pour généraliser un clé pour décrypter les paquets de stream. Le système utilise deux types de SM. La table 0x40 qui l'appelle ECM 40 et la table 0x41 qui l'appellera ECM 41. Sur le PID 1, il peut y avoir une ou plusieurs tables d'accès conditionnel. La table ID 0, cette table identifie un PID qui contient des AMM. Donc les Entitlement Management Messages et ces messages sont utilisés pour définir les droits d'accès pour les 7 boxes individuelles. Donc... Le... Et donc le support de la modulation turbofaite PSK est encore moins commun dans le hardware courant. Un device qui supporte tous ces signaux, c'est le Genpix Skywalker 1 qui utilise un PCM 4500, un démodulateur PCM 4500, qui supporte le DC2 QPSK et le 8PSK. Ça fonctionne assez bien, mais les driver linux ont besoin d'être recompilés pour pouvoir supporter les modes DC2 QPSK. Et Update.ly a publié des patchs qui font ça. Donc pour ce qui est du câble, il y a pas mal d'adaptateurs qui supportent le QM256. J'ai utilisé un Hopage HVR 250Q en USB. Malheureusement, s'accorder sur le canal Orband n'est pas supporté en général par les interfaces. Sur une boîte câble, c'est géré par le chipset intégré. Et pour les appareils style USB, qu'on dit ClearQM, l'accès à la donnée Orband n'est pas requis, donc vu que c'est uniquement utilisé pour la télépayante et pas le QM en clair. Pour les interfaces satellite et interface, on peut des fois utiliser d'IVS Snoop pour voir les informations concernant le stream de transport. Beaucoup d'informations, c'est un peu trop. Ce qu'il faut faire, c'est filtrer la sortie et trouver les infos intéressants. DVB Snoop ne reconnaît pas toute l'étape DC2, parce que DCD n'est pas un système standard et que DVB Snoop cible les systèmes standards. Donc DVB Snoop ne pourra pas tout vous dire sur le flux de transport, mais c'est toujours un de qui est très utile pour l'information qu'il permet d'accéder. DVB Snoop est la plupart des autres outils et documentation designés pour le standard DVB, les autres standard comme ATSC. Donc DCCypher, câble et satellite utilisent beaucoup de tables non standard pour transporter l'information CTI. Pour la câble TV, certaines tables sont standardisées par le SCTE 65. Il n'y a pas de BAT ou de LCDT comme on pourrait attendre dans le DVB. Au lieu, il y a un virtual channel table qui map et transport stream les programmes sur des niveaux de chaîne. Donc le PG n'est pas non plus au standard DVB. Donc il n'y a même pas une information courante pour le prochain programme. Donc il y a un autre device, le HDOMRE Prime, qu'on peut connecter au réseau qui a 3 tunneurs et qui chère les cartes câble-card. Les 7 inbox que j'ai utilisés d'avant cette époque, bien que des nouvelles boxes, se l'utilisent et supportent le DC2. Malgré tout, on ne peut même pas utiliser la donnée rebonde. Enfin, elle n'est pas accessible directement avec le HDOMRE Prime. Autrement que par la interface cable-card. Donc il a utilisé un analyseur logique qu'il a inséré dans la carte câble-card pour avoir les signaux de données et de cloques. Et il a écrit un software en utilisant le SDK de Salier pour capturer le flux démodilé QPSK, faire du désentrelacement, de la dérandomisation et de la correction d'erreur en avant et obtenir un flux transport MPEG. Donc finalement, il obtient bien avec sa configuration un flux de transport à 2 Mbps qui a l'air standard, qui se comportent normalement et dans lequel on trouve les messages d'accès conditionnel, les informations sur les guides des programmes, etc. Tout ce qu'on n'a pas dans le flux de transport QM principal. Donc il y a deux bits dans chaque paquet qui indiquent si le paquet est scamblé avec la clé PER, la clé IPER ou pas scamblé. La clé est changée assez souvent. Le système d'AVB change typiquement toutes les 5-30 secondes. Le DC2, toutes les 133 000 secondes ou toutes les secondes. Et la clé alterne entre PER et IPER. La clé IPER est utilisée quand on met à jour la clé PER et vice-versa. Pardon. Un flux de transport chiffré est envoyé par le câble et le satellite. Ça passe par le descambleur dans le processur d'accès conditionnel et le résultat est un flux décrypté de transport qui peut être lu par le décoder MPEG. Le descambleur utilise une clé de travail, une clé 56 bits en DES, qui change tous les 133 000 secondes ou des fois toutes les secondes. Cette clé travail est générée pour chiffrer le nombre de champs des paquets ECM par la clé de programme. La clé de programme en DES aussi provient du paquet ECM 41 et est chiffrée avec la clé de catégorie. La clé de programme est unique à chaque canal et change tous les jours ou pour chaque événement de pay per view. La clé de catégorie également en DES est partagée par tous les setup box qui sont autorisés pour telle ou telle chaîne. La clé de catégorie est envoyée à chaque setup box individuellement dans un message EM-95. Cette clé change typiquement tous les mois mais beaucoup d'opérateurs changent beaucoup moins souvent que ça de clé de catégorie. Pour décrypter le même, afin d'avoir la clé de catégorie, des SILKY sont utilisés. Chaque STB a un set de clés 56 bits DES qui sont dans une RAM à batterie qui sont initialisés durant la manufacture de la box. Pour la durée de vie de la STB, ces clés sont utilisés pour créer des EMM sécurisés. Donc ça crée une chaîne entre les SILKY initialisés à la manufacture, à la décription du flux MPEG. A l'intérieur d'une STB satellite, on peut voir les principaux compagnons du système. Le signal entre dans le tuner et passe à travers le démulateur qui sort un flux transport. Le flux transport passe à travers le processeur d'accès conditionnel et ensuite envoyé au décodeur MPEG afin d'être sorti sur la TV. Un microcontroller 68K, enfin utilisé comme le contrôleur principal de la setup box, qui communique avec le décodeur MPEG, ainsi qu'avec le processeur d'accès conditionnel à travers un bus SPI. Une batterie provoie de l'électricité à la STP afin qu'il garde son STETRAM. Et puis, il y a un slot TVPASS près de la LIM. C'est un slot de mise à jour avec un connecteur pour card qui permettrait des mises à jour de sécurité qui n'a jamais utilisé vu que le système est resté sécurisé jusqu'à présent. Et maintenant, il n'y a plus le slot. Donc ces clés sont probablement jamais utilisés. Et dans une boîte câble, c'est un peu comme dans une boîte satellite, mais elles sont plus intégrées en général. Le signal entre dans le tuner, passe dans un chip Broadcom, qui fait la démodulation, et qui gère aussi le décodage MPEG après que le flux de transport s'est envoyé à la CP pour la décryption. On a aussi un 68K qui est utilisé comme contrôleur principal de la Sectobox, qui parle toujours en SPI, à l'ACP. On a toujours une batterie pour que l'ACP garde son statut et on a... et de la NVRAM également utilisée. Il y a un slot TVPASS sous la carte mer qu'on ne peut pas voir sur cette photo. Dans les boîtes câbles, il y a un deuxième tuner qui permet de recevoir la donnée hors-bande et il est donc indépendant du tuner principal sur une bande de fréquences différentes. Il est utilisé pour fournir le flux de transport qui contient les informations au système, le guide des programmes, les mises à jour au système, les IMM, etc. Donc là, on voit le chip qui fait l'accès conditionnel. C'est un TQFP à 100 pins. Donc on peut voir de ce qui en est marqué que c'est un système on-chip que STOM qui est fabriqué par General Instruments Corporation, DIC. Tout le déchiffrement est fait dans l'ACP et toutes les clés sont uniquement contenus à l'intérieur de ce chip. Les boxes plus récentes utilisent des versions plus récentes de l'ACP. Mon étude a été... se concentre sur la version originale, donc le chip qu'on voit ici et tant qu'on utilisera des set-up box avec ce chip dedans, ça reste une cible intéressante. On ne sait pas si les nouveaux ACP inclut des features plus avancées de sécurité ou si c'est juste des mesures de coups qui les rendent plus petits, ça. Ils séparent. Donc on a des pins intéressantes que j'ai étiquetées ici. La pin 1 est en haut à gauche. Il y a une interface SLAV SPI sur la pin 1 à 5 qui est utilisée pour la communication avec le contrôleur principal de la set-up box. Il y a un pin de batterie backup qui est connecté à une batterie 3V pour l'acte quand on débrouche la set-up box. Il y a une entrée pour le flux série transport sur les pins 88 à 92 qui reçoivent la donnée du démodulateur et une sortie de flux série sur les pins 28 à 33 qui envoient le cartex au décoder Ampeg pour l'affichage sur la télévision. Donc à un moment donné j'ai écrit un software pour un AVER 32 que je ne vous montre pas ici qui a un PerfectSeries Synchron qui supporte l'envoi pour donner au 27 megabits du flux transport. Donc c'était assez dégueulasse mais au lieu de la nettoyer je l'ai utilisé telle qu'elle. Elle était limitée à 64 kilo octets de replay et juste du logging. Ce que ça m'a montré c'est que le flux transport passe à l'intérieur de la CP que les piadies sélectionnées sont déchiffrées et qu'on a un flux de transport complet qui sort mais avec uniquement le programme sélectionné qui est déchiffré. Donc cette interface pas très utile plus tard quand je veux faire des choses des recherches plus poussées j'ai fait ça en utilisant un SCP que j'ai mis sur une brède et sur laquelle je pouvais contrôler la clock série donc c'était facile pour moi d'utiliser un XMega EVR pour envoyer et recevoir le transport stream par la CP beaucoup plus lentement. Donc voilà ce que j'ai utilisé comme XMega pour l'espierre et le transport stream. Pour monitorer la data transférée entre le contrôleur principal de la box et la CP sur le bus SPI il a utilisé la TML XMega bord de développement donc il a configuré deux ports SPI comme esclave avec un signal MOSI connecté sur un miso connecté sur le MOSI input du deuxième port donc il reçoit des bytes de la CP sur un port envoyé par le contrôleur de la CP de l'autre port envoyé par le contrôleur de la CP donc dans le cas où il veut parler directement de la CP ou du contrôleur principal de la box c'était uniquement nécessaire de connecter à la fois le MOSI et le signal miso d'une des interfaces SPI donc en logant le bus SPI entre la box enfin le contrôleur principal de la box et la CP on voit que l'information du niveau courant d'accès envoyé depuis la CP la CP reçoit aussi des AMMs depuis le bus SPI les AMMs sont filtrées par UA afin que la CP reçoit seulement des messages dessinés par le bus SPI donc la CP reçoit seulement des messages dessinés à la CP donc commande 0 au 4 inclut la catégorie actuelle de clé d'époque qui est sélect en cours d'utilisation la commande 0 au 5 contient les UA la commande 13 retourne les solutions autorisées tiers donc à travers l'interface SPI le contrôleur de la box dit à la CP à décrypter avec quelle cmpd donc toutes les données vraiment intéressantes sont contues à l'intérieur de la CP et le chip lui-même ne dit jamais au bus donc ensuite j'ai commencé à faire une de l'étude invasive du chip sous un microscope donc le coût des microscopes peut aller de quelques centaines à des dizaines de milliers de dollars ou même plus pour des microscopes donc j'en utilise différents types ça c'est un mi-toutoyo FS-70 donc ils sont souvent utilisés pour micro probing mais c'est aussi utile pour d'autres choses pour ce projet j'ai pas fait de micro probing mais j'ai utilisé ce microscope parce que je pouvais l'utiliser disponible et pour utiliser ça de l'équipement corpore basique peut être utilisé mais bon si vous avez de l'équipement de gamme ça peut être plus sympa de s'en servir et j'utilise aussi un DICE axiotron qui sert à l'inspection de wafer qui a une qualité optique vraiment très bonne donc j'ai dit qu'on peut utiliser de l'équipement plus basique c'est vrai mais quand on rentre dans ce genre de domaines il vaut mieux avoir de l'équipement meilleur donc j'ai à peu près 10 000 dollars de setup entre le microscope, la caméra le scan XY etc donc pour regarder sous le microscope il faut désencapsuler en utilisant de l'acide nitrique féminin donc on met de l'acide chauffée on le laisse tromper dedans ça réagit après on le rince dans l'acétonne bon l'acide nitrique c'est super agressive c'est important de faire attention comme on s'en sert mais c'est assez facile la plupart des gens il faut pas faire ça chez soi alors il faut avoir un casque à fumer une fois qu'on a décapsulé le chip on a le chip avec les bonny wires on les enlève avec des pensées épilées on peut ensuite voir les grandes structures du chip la moitié couvert par un plan de métal et l'autre moitié on arrive à voir la circuite dessus donc ceci est une image du chip sous le microscope qui a été créée à partir de plus petites images assemblées donc en regardant le chip décapsulé sous le microscope on voit le plan de métal sur le chip les fils sur le dessous du chip et le gigant spaghettique les lignes sur tout le chip pour délérer le chip il a utilisé de l'acide hydropurique donc il a acheté quelque chose dans un magasin brico aux Etats-Unis donc c'est très utile pour délérer des chips donc il a utilisé du wink dans un bêcheur qu'il a chauffé, agité afin que le chip soit touché de manière plus régulière donc le décapement est pas parfait mais c'est toujours utile on a toujours des résultats utiles avec cette technique il ne faut vraiment pas respirer les fumées faites ça dans votre garage mais avec une protection donc après un moment dans la solution wink chauffante j'ai rincé et mis sous le microscope donc on a donc enlevé le plan métallique du haut et on peut voir ce qu'il y a dessous donc on peut voir des effets visuels du fait que le décapage soit pas parfait mais bon c'est suffisant pour pouvoir regarder donc en haut à gauche les grands rectangles c'est la rame les quatre blocs en haut à droite c'est la rame et on a de la logique qui relisait blocs à la zone logique qui est plus bas je voulais savoir ce qui était en côté dans la rame donc j'ai continué à enlever des couches je les remis dans wink et ça enlève une nouvelle course de métal on ne peut toujours pas voir les bits de la rame donc une nouvelle étape et là on voit davantage d'effets du fait que le décapement soit pas parfait mais bon on peut toujours s'en servir pour l'analyse après la troisième trempette dans wink on enlève encore plus de métal et à ce point c'est très inégal on peut voir que les blocs de rame ont été à un moitié décapé sur une couche et sur l'autre moitié la couche reste c'est difficile de faire ça de manière totalement consistante si on n'a pas d'étape telle que le polissage entre les... et j'avais pas de policeur à cette époque donc je fais comme j'ai pu et on arrive maintenant à voir certains bits dans certaines zones de la rame donc j'ai continué à être chez pour essayer d'avoir une rame clean donc à présent on peut voir assez clairement les bits de la rame ils sont arrangés en colon et dans cette image un point noir qui est visible la qualité d'image est très importante plus la photo est bonne, plus les bits vont être visibles mais bon c'est pas nécessaire il n'y a pas besoin que ce soit parfait, il y a des softwares qui améliorent ça et on peut faire du stitching et de la correction d'image au final on peut arriver à tout avoir une fois que les bits visibles sont exposés et qu'on prend des photos on peut écrire les bits en utilisant un software d'un ex-image ou on peut aussi les extraire manuellement mais cet homme fait 32 cas, plus de 268 000 bits donc une ex-action manuelle, c'est beaucoup de travail il faut, c'est plus efficace d'utiliser un software donc j'ai écrit un software pour analyser les images, identifier les 0 et 1 les bits qui sont marqués par une boîte jaune sont des 0 et boîtes bleues sont des bleues j'utilise le software pour analyser les images ensuite je peux facilement identifier des erreurs manuellement enfin visuellement, dans les résultats une fois que j'extrais les bits des photographes, j'ai une version binaire de la Rome donc c'est une représentation visuelle des bits extraits que vous voyez là les boîtes noires cd1, les boîtes blanches cdbits à 0 et donc dans cette image, à présent vous voyez les 13 colonnes inférieures des bits de la photographe on peut y distinguer des patterns visuelles ce qui est une bonne indication comme que la Rome n'a pas été scremblée cette image montre la fin de la Rome où on voit un pattern vu qu'il y a des octets de remplissage de padding qui remplissent l'espace inutilisé et tout à la fin de la Rome, le pattern est interrompu c'est là où la table de vecteurs existe qui indique l'adresse d'endleur de risettes et d'interruption donc on a des filler bytes et après entre fff6 et ffff on a notre table de vecteurs une fois qu'on a décodé les bits en octets on peut étudier l'xdub donc on a une string de copyright 97 CHCC on a ce qui qui permet de nous montrer qu'on a décodé correctement si on peut rire à la ski, c'est que les bits sont dans le bonheur donc dans ce cas, le décodage c'est juste organiser les bits en octets et c'est fait de manière vraiment simple il n'y a pas de scambling ou d'autres complexités une fois qu'on a extrait le contenu de Rome on peut désassembler, analyser le logiciel donc la première étape, l'identification de l'architecture du CPU carrément c'est un 8 bit, mais c'était ni un 8051 ni un 6805Q ou un autre que j'ai essayé d'avoir même, puis j'ai essayé en 6502 et là le code avait l'air de faire sens ensuite, je me suis souvenir que j'avais regardé un access controller plus ancien qui a été utilisé dans le video cipher 2 un ancêtre du DJ cipher et on pouvait voir un copyright string de WDC qui licence la propriété intellectuelle de Core 6502 donc, ça aurait été un bon indispo l'architecture CPU si, je m'en n'étais rendu compte plutôt pour le désassemblage, j'ai utilisé iDAC qui supporte le 6502 qui est très puissant en plus des assemblements, il est utilisé des simulations du 6502 pour étudier la structure dans un processeur virtuel donc la simulation était vraiment utile pour désassembler le software parce qu'il a bien vu ce qui se passait à l'intérieur du software donc comme le 6502 c'est un architecteur bien connu c'était pas difficile de trouver un simulateur même Open avec du code sourd donc le 6502 était utilisé dans des ordinateurs 8 bits comme l'Apple Dole, Commodore 64 donc il y a beaucoup d'enthousiasse et beaucoup d'informations sur cette architecture donc quand il a commencé à comprendre cette architecture du System Manager chip en désassemblant le software il a inventé quelques features au simulator pour émuler quelques propriétés du hardware donc une des premières choses qu'il a trouvé en désassemblant c'est qu'il y avait deux modes d'opération pendant le startup les valeurs en RAM étaient checkées et si l'ACP n'avait pas été initialisé il entre dans un mode de personnalisation utilisé pour la manufacture pour assigner une adresse d'unité et des sit keys donc dans des conditions normales le software de personnalisation est contourné puis l'ACP lancera toujours l'application principale donc il y a 8 tâches qui sont faites en exécutif en parallèle pour décrypter jusqu'à deux chaînes en même temps on a deux tâches pour gérer les messages ECM 40 et la génération de clés de travail pour la déconfression du flux transport et deux tâches pour gérer les ECM 41 et la génération des clés de programme qui sont utilisés ensuite pour traiter les ECM 40 on a une autre tâche qui utilise le processing de l'AMM il y a une tâche pour communiquer avec l'interface TP-pass pour les mises à l'eau de cq et une tâche pour gérer les messages de l'interface SPI comme l'ACP a un system chip propriétaire il n'y a pas de documentation disponible qui décrit les KBC hardware donc les assemblages qui ont été étudiés et les registres high ont dû être devinés basés sur leur utilisation en cette heure donc il y a un esclave SPI périphérique qui communique avec le contrôleur de la box donc le SPI périphérique envoie et reçoit directement des données depuis la RAM, le signal et 7 pour montrer qu'il y a un transfert à complet donc il y a un discriminateur de flux transport donc la clé de travail est définie dans la hardware et le descambleur va sortir le flux sorti, descamblez sur le port il y a des filtres pour l'identifiant de programmes qui sont définis en SPI par le contrôleur principal de la box ces filtres sélectionnent quel flux audio et vidéo déchiffraient et quel paquet ECM doit être reçu par les CPI les ECM qui sont reçus sont placés dans la RAM et le 6502 est notifié, qu'il y en a un nouveau par un bit dans un registre à ce point j'ai commencé à avoir une idée de comment le système fonctionne il a étudié le flux transport MPEG et logué des ECM et des EMM il a logué le bus SPI et compris les messages entre le contrôleur de la box et le SPI il a été capable d'extraire toute la ROM et il a désemplé le software et lancé dans la simulation il y a des clés fixe qui ne changent jamais et qui sont utilisés quand une chaîne a un prévu gratuit par exemple pendant week-end donc chaque ECB qui a n'importe quelle autorisation dans le passé est capable de décrypter ces chaînes qui sont en crypté utilisant une clé fixe donc à ce moment-là il lui manque encore une information importante de la CPI donc les clés de seed, les clés de clé d'oreille et les programmes de clé qui existent seulement dans la RAM donc pour décrypter des chaînes qui ne sont pas en accès gratuit ce n'est pas possible le message de CM40 est utilisé pour gérer les clés de travail et utiliser pour décrypter le flux transport MPEG donc il y a une idée de service utilisé pour identifier chaque chaîne et un compteur de frame qui est utilisé avec la clé de programme pour calculer la clé de travail donc la mode de chiffrage identifie si la chaîne est en train de fonctionner en mode clair ou crypté vous trouverez les slides le CM41 contient la clé de programme chiffrée qui est nécessaire pour processer le message CM40 il y a un ID provider qui indique les abonnés de quel opérateur ont accès au message et c'est le même service ID que pour les ECM40 la période de catégorie dit quelle est la clé de catégorie utilisée il y a aussi des informations sur la durée de validité de cette clé le CM41 contient une ou plusieurs types d'abonnements qu'on doit trouver dans l'ACP pour permettre de lire le message ce slide montre à quoi ressemble une demi seconde de CM40 et de CM41 pour arriver à décombrer le programme, le ACP doit processer le CM courant pour avoir la clé de programme et ensuite processer un ECM40 pour avoir la clé de travail donc la clé de travail est utilisé ensuite par le descrameleur pour décrypter le flux de transport jusqu'à ce que le CP reçoit le CM41 avec la clé courante ainsi que le CM avec le compteur de frame, c'est pas encore possible de décrypter le flux de transport donc la clé de travail en un lifetime assez court de seulement 133 ms, une série de CM montré ici se passerait dans une période de demi seconde les EMM sont divisées en quatre parties, chacune qui contient une portion de la subscription pour cette box précise une clé de carrière est calculée pour chacune des quatre parties et cette clé est calculée pour chaque partie donc chaque partie doit matcher où le EMM va être rejeté, l'autorisation et la clé de carrière ne vont pas être utilisé par l'ACP contre le premier ECM donc la part 0 est reçue, l'autorisation donnée à l'intérieur de l'ACP est recettée et va être remplacée avec l'autorisation enfin, la dedeux de l'orisation contre le suivant de l'EMM donc la part 1 est reçue l'autorisation actuelle à l'intérieur de l'ACP donc de la part 1 est achée avec la data de l'EMM par 1 donc si le résultat est correct, donc l'autorisation, la donnée d'autorisation de l'EMM par 1 est copiée dans l'ACP avec l'autorisation existante de la donnée d'autorisation de l'EMM par 0 donc si le résultat est incorrect, l'autorisation de l'ACP va être effacée donc ça c'est un exemple d'EMM chacun des quatre EMM contient de l'information sur, enfin tel que l'adris unité, quelle catégorie l'EMM contient deux clés de catégorie, une pour l'époque actuelle et aussi celle pour l'époque suivante donc quand on change d'époque, l'ACP a déjà la nouvelle clé les clés de catégorie de l'EMM, la clé racine contenue dans l'ACP est utilisée les clés racines sont uniques à chaque ACP et sont assignées lors de la fabrication les EMM sont transmis hors bandes sur les systèmes câbles mais ils sont passés dans le flux standard pour les systèmes satellites donc au niveau de l'ACP, il n'y a aucune différence entre les systèmes câbles et les systèmes satellites donc à présent ça devrait être possible de déchiffrer des chaînes qui utilisent une clé fixe l'analyse de la ROM m'a montré que les algorithmes utilisés pour gérer les ECM et générer la clé les clés flics sont connues parce qu'elles sont en ROM on pourrait se demander s'il y a des possibilités d'erreur sur des bits, vu le process qu'on a utilisé de reconnaissance optique mais ces clés sont confirmés comme corrects parce que le software en ROM fait un checksum sur les clés et vu que le checksum a réussi, bah ça indique que les clés sont corrects, probablement corrects mais quand j'ai essayé de déchiffrer une clé fixe, il y avait un problème, ça fonctionnait pas alors je ne savais pas si c'était un problème dans mon implementation de déchiffrage ou quelque chose d'autre par contre j'ai remarqué qu'il y a un bit dans le ECM qui quand il était 7 provoqué un bit dans le périphérique hardware de l'ACP A-R7 ou également le but de ce bit n'était pas très clair mais son adresse est assez proche de celle de la clé de descrombling du transport cip donc je me disais qu'il y a peut-être quelque chose d'autre que du standard IES au niveau chiffrement donc pour en apprendre davantage j'ai commencé à faire du glitching si je peux glitcher le chip je peux trouver comment lire et créer de la mémoire faire plein de trucs bizarres exécuter mon propre software donc le VCC a une cloque interne donc ça semblait intéressant de glitcher le VCC et il est probablement susceptible vu son âge parce que c'est plus récent le protection sur le VCC glitching donc mon design de glitching est assez simple donc il est basé sur le développement de bord de XMega donc il utilise le XMega pour communiquer avec l'ACP à travers le SPI et contrôler le glitch une série 74 40 53 analog switch à DJ pour switcher rapidement entre l'ACP VCC et entre deux niveaux de voltage différents donc une autre partie du breadboard est un oscillateur pour apporter des inputs cloques c'est nécessaire pour l'ACP pour apparaître un avertisseur et un gate-nand pour couper le CLK pendant le glitch donc pour simplifier le setup de test l'ACP a été enlevé de la set-box et c'est soudé sur une break-up board donc dans le process la ram sur batterie a été déconnectée, les clés sont perdus pour dans le but de développer un glitch qui fonctionne qui est ok donc ce setup assez simple de glitching est très flexible le breadboard peut être modifié pour tester différentes idées et peut être reconnu rapidement pour tester le glitcher pour trouver si ça va fonctionner et quel niveau de voltage ça fonctionne on peut envoyer une commande à l'ACP suite de glitcher voire si la réponse de l'ACP est anormale donc la stratégie générale est de baisser le voltage jusqu'au point où le chip va parfois recéder à cause du glitch en ajustant les niveaux de voltage et la longueur de glitch, le timing quand le glitch va arriver il a réussi à créer des réponses à l'ACP alterer le checksum sur les packets SPI est très utile parce que quand il y a des données unusuales qui sont reçues de l'ACP avec une checksum valide c'est un bon signe que le glitch a causé une faute temporaire avec le CPU ensuite puis continuer son épargation d'ormel donc en fonction du glitch à partir du moment où j'ai eu un glitch qui marchait, j'ai pris ce circuit et j'ai fait un PCB que je pouvais brancher directement sur ma quartise XMega ça fait la même chose que le breadboard moins de risques d'accident, de débranchement, etc le circuit était assez simple pour faire du simple face donc j'ai pu le DKP à la maison maintenant mon but c'est de faire exécuter le code de mon choix par l'ACP vu que le 65.02 est une architecture de Von Neumann le code et la mémoire sont dans le même espace mémoire en désassemblant le software, je me suis rendu compte qu'il n'y a pas l'air d'avoir de pagination mémoire ou de MMU le software dans la ROM est complet on n'utilise jamais la RAM ou les promes pour contenir de l'exécutable donc il n'y a pas de jump dans ces zones à exploiter il y a peut-être des features qui empêchent d'exécuter les codes pour de la RAM donc j'ai voulu voir si la RAM était exécutable donc je vais envoyer un message dans ce pays je sais que ce message va être stocké dans la RAM ce message contient du code exécutable 65.02 qui va se copier dans une zone de la RAM non utilisée s'exécuter depuis cette zone et envoyer un ACK si ça fonctionne vu que j'avais étudié l'emploi de l'interface SPI dans le code de la ROM j'ai été capable de créer une PLO d'exécutable qui allait continuer à recevoir des commandes après qu'il ait pris le contrôle de l'ACP donc j'ai regardé s'il y avait des instructions multibytes dans le code de la ROM qui contenaient au sein d'elles si on les décomposait un jump vers une opcode qui enverrait sur ma PLO vu qu'on a un seul espace d'adresse sur l'ACP on a beaucoup d'opportunités pour glitcher pour créer de l'exécution pour atteindre la payload donc il y a plusieurs scénarios on peut corrompre la pile et n'importe quel flux à normal de programme a une possibilité d'atterrir dans mon code une architecture de Von Neumann sans une gestion mémoire forte et un terrain fertile pour le glitching tout ce qui en aura peut-être potentiellement exécuté donc à ce point il y avait encore des trucs que je savais pas trop mais c'était possible que j'ai réussi l'ACP fonctionne par une cloque interne et le task switching basé sur les interruptions rajoute des divergences de timing donc si j'envoie la payload que je décale, que je glitch parce que ça marche pas, je change le délai, je réessaye j'essaie de viser une instruction que j'ai identifiée comme possiblement corruptible vers un jump mais il y a beaucoup d'inconnus, c'est comme la pêche j'ai une cible mais je sais pas si je vais vraiment l'atteindre ou si je vais... donc parfois la pêche est bien donc assez rapidement l'ACP a retourné à un ACK qui a démontré un glitch successful le premier glitch qui a réussi a appris quelques heures pour être trouvé et c'était possible de faire marcher de manière répétée en quelques minutes ou même quelques secondes maintenant il avait son code qui s'exécutait en RAM il était capable d'envoyer l'ACP plus de code qu'il devra exécuter donc ça lui permet de lire des adresses de mémoire donc il a écrit une application simple pour faire des glitch assez simples et interagir ensuite avec le code Taylor qui l'a installé en backdoor dans la RAM donc ce programme lui a permis d'entrer une adresse et de longueur et d'avoir des data en retour ou d'écrire en mémoire donc il y a aussi un support pour définir les clés et faire des décriptions d'es et des inscriptions d'es en utilisant l'hardware d'es périphérique de l'ACP donc quelque chose qui a remarqué c'est qu'il y avait deux kilobytes dans la RAM qui quand il essayait de lire il y avait le chip qui se recétait donc c'est à réad de RAM continuer les routiers de personalisation qui ne sont jamais utilisés après que les devices qui le cuisinent Il y a aussi une protection qui évite de modifier les clés seed si on essaye d'écrire à cet endroit ça ne fait rien donc il y a des adresses spécifiques dans la RAM qui ne peuvent pas être lues ou sinon le chip se verrouille donc il y a des pièges qui ont été mis en place comme feature de sécurité donc son truc peut uniquement résider dans la RAM on ne peut pas mettre de backdoor permanente et vu qu'on peut exécuter du code sur les cp et recevoir une réponse on peut lire la ROM pour avoir ses contenus sans les erreurs du processus optique d'extraction et si on compare on peut voir combien d'erreurs on a eu avec l'extraction optique donc c'est pas trop mal c'est assez bon pour comprendre le software et arriver jusqu'à la RAM il y a juste un octet dans lequel il y a plus de un byte incorrect la plupart des erreurs étaient assez obliouces quand on a des aspects du software une instruction ne fait pas sens mais quand je suis changeant à un simple bit c'est probablement une erreur j'ai pas maintenu un compte détaillé mais je crois que j'ai attrapé la moitié des erreurs de bit de la ROM quand je l'ai désassemblé avant de commencer le leaching les clés intéressantes dans la cp sont tout stockés uniquement en RAM donc la clé travaille, la clé de programme de catégorie et la clé racine les clés sont protégés par batterie donc si on perd les clés pour tournir c'est possible c'est possible de le leachier la cp et de lire de la mémoire mais le leacheur travaille une fois qu'on a enlevé le chip de la cp par contre faire ça dans le circuit ça pose problème avec tous les pins connectés il faut le déconnecter d'autres parties donc une alternative c'est d'enlever l'ACP de la cp sans débrancher la batterie et effacer la RAM plutôt que de modifier la cp où c'est que chacun des différents modèles devraient avoir des modifications uniques il a décidé d'enlever la cp avec une batterie encore attachée donc le plan était d'enlever la cp avec la batterie pendant que la cp c'était encore allumé qui provoquait du vcc donc en utilisant un petit tool qu'il a créé à partir d'une lame de rasoir et puis un Dremel qui a ensuite attaché sur le manche d'un tournevis il a pu enlever les pins attaché une batterie externe donc après avoir attaché une batterie externe la cp est débranchée la cp peut être enlevé sans perdre l'éteint interne la cp peut être enlevé, glitché et replacé même sur la setup box une fois que l'éteint est resté extrète ce ne serait même plus nécessaire de replacer la cp dans la cp la cp est maintenant placé sur une board break out et connecté sur le glitcher donc pas tous les pins doivent être connectés jusqu'à quelques pins sont utilisés en fait par le glitcher on peut aussi voir à ce point que le glitcher du project box a un setup bien amélioré depuis le setup breakbox donc le timing des réponses à cp est différent sur un chip avec une RAM valide comparée au chip d'avant que la glitcher avec la RAM corrompue confirmé que la cause du timing enfin la différence de timing donc si c'était à cause d'un oscillateur différent ou juste une base de software différent donc maintenant on peut lire le contenu de la RAM d'un acp valide qui comprenant notamment les clés de clés de clés avec sa naturalisation courante et ainsi que les CQIs utilisés par cet acp pour décrypter les AMM donc avec une clé valide de caterelle les ECM peuvent être décryptées et une clé de travail correcte peut être calculée pour n'importe quelle chaîne donc maintenant que je pouvais faire tourner mon propre code sur la cp regardons le descomplic du flux transport il y a un registre matériel qui est set ou unset selon un bit dans les messages ECM 40 on utilise du DS standard et sinon le DS cam doit faire des choses un peu différemment un autre registre de 8 bits au niveau de la zone du périphérique DS quand c'est à 0 c'est du DS standard sinon il fait des choses différentes donc je vais voulu regarder faire du reverse au niveau des portes logiques du chip pour comprendre et donc il utilise de la vieille technologie donc ça devrait être possible de faire ça j'aimerais bien éviter ce travail supplémentaire c'est possible ça prendrait beaucoup de temps et donner des résultats imparfaits donc j'ai essayé de caractériser les modes de scambling donc dans un paquet du transport c'est qu'on a un header de 4 bits et 23 blocks de 8 bits chacun donc le DS opère sur ces blocs de 64 bits ici je flip un bit dans l'entrée chiffrée on peut faire la différence entre le CB du CBC et de l'OFB donc si on flip un bit et que le bloc correspond dans le bloc suivant est flippé ça veut dire qu'on utilise du CBC donc j'ai aussi fait des études du timing en fonction des différents switches de mode de décryptage ça n'a rien changé donc apparemment les propriétés internes du DS n'ont pas changé en utilisant les cps comme oracle de déchiffrement j'ai pu déterminer que les customizations affectaient chacun des 23 blocs du paquet de transport ensuite il a utilisé des clés des DS faibles donc c'est des clés qu'ils n'ont pas recommandé parce que leurs propriétés affaiblissent la force cryptographique donc une clé avec tous des 0s et tous des 1s va faire que DS va encrypter ou décrypter avec un résultat identique donc passant les mêmes données à travers l'exclusion et l'expression donc en utilisant ça sur le cp confiré pour les DS standard et les DS il y a eu un comportement de wiki donc en regardant le registre hardware en testant le périphérique DS avec différentes valeurs pour le registre 8 bits et on utilise les clés faibles montre que le standard DS a un comportement attendu pour les clés faibles sur l'idée que la customisation hardware va uniquement affecter la clé donc la customisation la plus simple c'est un mask XOR appliqué sur la clé avant qu'elle ait utilisé la customisation DS XOR a une customisation d'un seul gate en série avec le moteur DS donc en utilisant une seule clé peut causer les effets observés donc flipper plus que 28 bits donc c'est celle la même que d'invertir toute la clé et ensuite appliquer un mask XOR pour flipper moins de bits donc j'ai écrit une boucle de force fantastique de 16 niveaux de profondeur pour tester toutes les possibilités en flippant 1 bit plus 2 bits 3 bits etc pour tester toutes les clés ça prend peu de temps et donc j'ai eu assez rapidement des résultats assez prometteurs donc ma théorie était bonne et certains blocs ont aussi peu que 3 flippes ça prend quelques secondes pour identifier donc j'ai identifié les masks XOR qui correspondaient et j'ai fait tourner le software jusqu'à ce que j'ai trouvé tous les 23 masques XOR donc j'ai fait un bruit de force pendant quelques jours et en analysant qu'est ce qui flippait quoi on peut trouver en fait le pattern et j'aurais pu faire ça en une seconde qui est tous les masques après avoir résolu le premier problème de customisation du matériel donc la théorie comme quoi la seconde customisation c'est un mask XOR sur la donnée et tous ces prometteurs ça fait sens qu'on fasse du XOR en utilisant la cp comme oracle une clé connue et de la data ont été déchiffrées avec toutes les valeurs du registre 8 bits donc une attaque logicielle de cette fonction on a identifié de 255 masques XOR et le comportement attendue fonctionnel donc en fait j'ai jamais vu cette customisation de deuxième niveau utilisé ça a été gardé comme contre mesure au cas où la première était piratée mais ça n'a jamais été rendu nécessaire vu que j'ai jamais eu de failles de sécurité sur ce système on a implementé une softcam donc une implementation d'un discrambleur qui doit être identifié donc à ce point elle avait tous les outils pour faire le vecteur d'initiation utilisé pour le cbc peut être trouvé à travers un simple XOR et avec les blocs courts donc moins que le bloc de 64 bits peut être identifié de manière identique donc avec tous ces détails une implementation software d'une écription de DMM avec les clés de curie et une description d'ECM avec les clés de programme et des clés de travail peut être fait donc maintenant tout fonctionne il a été capable de tester et ça fonctionne complètement sur les systèmes câbles c'était lit donc ça c'est un screen qui a broadcasté avant qu'un event pay-per-view est live avec les algorithmes SM et EMM et les silki pour Inbox les clés de curie peuvent être décryptés et ensuite utilisés pour décrypter n'importe toutes les chaînes qui sont broadcastées donc quelques faiblesses que j'ai identifiées dans le système les cp est relativement ancien presque 20 ans donc c'était plus facile de faire de l'analyse invasive sur des périphériques récents avec la technologie d'époque le format de pqlge tqfp 100 est assez pratique d'emploi par rapport aux alternatives modernes le chip est susceptible au leaching en tension c'est une architecture de Vannemen sans protection de MMU forte qui protège l'exécution de code depuis la RAM ils ont laissé aucune possibilité pour la mise à jour du code ou l'exécution dynamique de code pour contre mesure le software est uniquement en ROM sans mécanisme pour les mises à jour de software sur le terrain l'accustomisation du matériel crypto est plutôt simple et n'a pas nécessité je ne gêne rien vers la logique du chip j'ai pu la deviner j'ai été vraiment impressionné par le design de ce système c'était plus fort que ce à quoi je m'attendais quand j'ai commencé toute la gestion des clés, le déchiffrement est contenu dans un simple chip ce qui rend possible de faire du partage de clés comme avec les systèmes de smartcard des fois l'interface l'intervalle de changement de clés de seulement 133ms rend aussi difficile le partage de clés et la durée de vie courte de la clé rend le cracking en real time peu réaliste l'absence de code dans la mémoire réécrivable signifie qu'il n'y a nulle part pour écrire un code pour une backdoor permanente pour désassembler les contrôles d'accès j'ai listé ça aussi dans les faiblesses mais c'est aussi une force ça limite la possibilité d'un attaqueur pour installer une backdoor persissante le chip fonctionne sur une clock interne ce qui élimine les attaques de glitching de la clock c'est plus difficile les adresses mortes au milieu des clés évite de les lire de manière linéaire si on essaie de faire une boucle pour lire la donnée et que ça sort des bounds le chip va se risattre avant d'avoir lu une clé entière après quelques octets on atteint une adresse morte qui fait un risat si on l'accède donc on ne peut pas utiliser la rame de personnalisation on n'est pas accessible les clés racines ne peuvent pas être changés de manière trivial donc c'est difficile de plonner la cette box la clé est uniquement en rame donc il faut maintenir la lime de la rame tout le temps il n'y a pas de clés de groupes utilisés dans les IMM toutes les unités sont adressées donc il faut les chopper d'une box qui est active en ce moment pour avoir des clés actifs si on a une clé d'une box qui est abonnée à une chaîne on va avoir un IMM avec la clé de catégorie qui peut déchiffrer toutes les chaînes donc on n'a pas besoin d'être abonnés à toutes les chaînes qu'on veut décrypter tant qu'on est autorisés sur au moins une des chaînes du système en général le système est plutôt bien design et écrit je n'ai pas vu de gros bugs bien que le desse soit employé la décryption il y a même 3 clés desse et il y a pas mal de rounds qui sont utilisés quand on déchive les IMM et les ICM donc c'est pas aussi simple que craquer juste une clé de 56 bits et le bruit de force en partant du flux transport chiffré nécessite de craquer la clé de travail puis la clé de programme, puis la clé de catégorie finalement les 3 clés racines vous pouvez vous demander combien j'ai eu à tuer de cette box pour réussir ce projet en vérité j'ai juste besoin de une camionnée il y a certaines boxes qui avaient des versions différentes du chip la plupart avaient des layouts de PCB différents c'était assez intéressant de regarder diverses boxes le prix de cette box d'occasion à peu près à 20 balles pour cette recherche je m'intéressais à la sécurité du signal je n'ai pas besoin de PIVIR on peut trouver d'autres plus chers un message rapide je ne vous recommande pas de pirater la télé satélite il n'y a jamais de rien de bon à l'antenne donc peu importe combien de canaux vous déchiffrez j'ai regardé croyez moi ça vaut pas la peine de s'y mettre vous pouvez donc probablement retrouver les slides donc avant nous des questions de la part de la salle s'il vous plaît utilisez les micros je sais qu'il y a une question des interwebs ok bonjour, est-ce que ça fonctionne ? alors la première question d'internet est combien de chips avez-vous tué ou rendu utilisable et comment avez-vous reçu toutes ces deux boxes ? vu que le coût des boxes d'occasion est assez faible j'avais pas peur de détruire une poignée de chips pas autant que ce soit quoi je me serais attendu au début 2 ou 3 chips ont été utilisés pour la décapsulation pour la décapsulation et enlever les couches finalement j'ai extracté toute la rame d'un seul chip et en ce qui concerne le leaching et 3 ou 4 chips que j'ai enlevés dont j'ai effacé la rame pour les glitchs et quand j'ai finalement pu en arriver à extracter avec les valides il y a eu quelques victimes avant d'arriver à ce stade merci le microphone 3 combien d'années ce projet a pris je travaillais pour quelques semaines puis je faisais autre chose, je faisais un break la plupart du travail a été fait sur une période de 2 ans merci merci merci pour cette lecture comment ça se fait que la direction de contenu est des et pas du dvb sis parce que normalement le contenu est cryptique du dvb sis en amérique du nord on ne croit pas dans les standards merci merci le timing l'époque à laquelle ça a été développé a aussi une explication ça a été développé avant la standardisation du dvb et plutôt qu'à la fin de la standardisation ils ont fait leur propre source merci et une autre du cybersibersps une autre question de internet c'est vous avez tous ce techniquement de laboratoire comment avez-vous réussi à payer tout ce techniquement ça m'intéresse pas mal donc j'ai acheté tout ça sur plusieurs années et je fais aussi du travail professionnellement en ingénieur inverse c'est possible d'utiliser l'argent des clients pour acheter de l'équipement pour le laboratoire aussi pour faire ça pour utiliser de l'équipement plus basique vu que le type d'assentir pour utiliser un microscope qu'on peut trouver facilement un ou deux mille dollars peut-être même pas trivial mais c'est pas non plus une grosse grosse somme note that huge microphone 2 s'il vous plaît qu'est ce que vous faites comme travail à côté du reverse du reverse question d'internet ok prochaine question quelqu'un veut savoir comment quel software avez-vous utilisé pour l'analyse de l'image donc comme tous les gens de je connaisse qui ont fait de l'extraction type de Rome j'ai écrit mon propre type tout le monde fait ça j'ai utilisé processing assez simple pas d'algorithme avancé ou de tout du slip j'utilise du software que j'ai développé moi-même et que je n'ai pas réalisé comment avez-vous fait que les box c'est encore sous-crit qu'est ce que j'ai appelé chaque semaine pour dire oh ma box est cassée pour la plupart d'avant-chir j'ai pas besoin d'une box active j'ai utilisé des boxes qui avaient été activées qui avaient perdu leur autorisation à partir du moment où j'ai compris comment exerder des boxes du sole box est-ce qu'on vous a répondu est-ce que les providers ont vu des réflexions non rien du tout merci beaucoup pour cette lecture comment est-ce que le glitching l'attaque de glitch le glitcher était assez simple j'ai fait tomber l'attention pendant une période très brève assez longtemps il y a au moins une instruction qui ne s'exécute pas de manière standard mais trop peu de temps pour qu'on atteinte un retoc donc en général je corrompe une instruction et je sais pas vraiment si je vais atteindre l'adresse en rame que je visais je peux relancer ça a l'air d'exécuter mon code ça me va merci Chris s'il vous plaît donnez des applaudissements d'anniversaire à Chris cher public