<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://os-vps418.infomaniak.ch:1250/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JorisBodin</id>
	<title>Wiki du LAMA (UMR 5127) - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="http://os-vps418.infomaniak.ch:1250/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JorisBodin"/>
	<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php/Sp%C3%A9cial:Contributions/JorisBodin"/>
	<updated>2026-04-18T15:47:40Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8638</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8638"/>
		<updated>2016-03-12T19:48:02Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* IV. Le hack au fil du temps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
[[Fichier:1.png|thumb|Illustration d&#039;une Xbox 360 elite (gauche) et d&#039;une Xbox 360 S (droite).]]&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur &lt;br /&gt;
 | Xenon triple-coeurs&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | RAM &lt;br /&gt;
 | 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Disque dur&lt;br /&gt;
 | 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur graphique&lt;br /&gt;
 | ATI Xenos 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpu.png|thumb|Illustration du processeur XCPU Xenon]]&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nom&lt;br /&gt;
 | Xenon&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de transistors&lt;br /&gt;
 | 165 millions&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de coeurs&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Vitesse d&#039;horloge&lt;br /&gt;
 | 3,2 GHz&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Mémoire intégrée&lt;br /&gt;
 | ROM et 64Kb de SRAM contenant le Secure Bootloader de la console et l&#039;hyperviseur de cryptage qui génère&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpupllbypass.jpg|thumb|Emplacement du signal CPU_PLL_BYPASS sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpureset.jpg|thumb|Emplacement du signal CPU_RESET sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpupostout.jpg|thumb|Emplacement du signal POST_OUT sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
|+ En résumé&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Point &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Effet &lt;br /&gt;
|-&lt;br /&gt;
| CPU_PLL_BYPASS || Ralentit le CPU à 520kHz&lt;br /&gt;
|-&lt;br /&gt;
| CPU_RESET || Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
|-&lt;br /&gt;
| POST_OUT|| Contrôle l&#039;état du processeur&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Procédure exacte pour les Xbox 360™ Fat :&#039;&#039;&#039;&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxpluspostout.png|thumb|A droite la corona et à gauche la trinity (première slim), on voit bien que la connectivité au POST_OUT a été retirée.]]&lt;br /&gt;
[[Fichier:xboxpostfix.png|thumb|Outil permettant d&#039;accéder au POST_OUT directement sur le processeur.]]&lt;br /&gt;
[[Fichier:xboxpostfixw.jpg|thumb|Nouveau processeur présent sur les nouvelles cartes mères depuis moins de 4 mois. Il est plus petit rendant le POSTFIX actuel obsolète.]]&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Xboxxell.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8637</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8637"/>
		<updated>2016-03-12T19:47:27Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* V. Xellous */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
[[Fichier:1.png|thumb|Illustration d&#039;une Xbox 360 elite (gauche) et d&#039;une Xbox 360 S (droite).]]&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur &lt;br /&gt;
 | Xenon triple-coeurs&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | RAM &lt;br /&gt;
 | 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Disque dur&lt;br /&gt;
 | 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur graphique&lt;br /&gt;
 | ATI Xenos 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpu.png|thumb|Illustration du processeur XCPU Xenon]]&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nom&lt;br /&gt;
 | Xenon&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de transistors&lt;br /&gt;
 | 165 millions&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de coeurs&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Vitesse d&#039;horloge&lt;br /&gt;
 | 3,2 GHz&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Mémoire intégrée&lt;br /&gt;
 | ROM et 64Kb de SRAM contenant le Secure Bootloader de la console et l&#039;hyperviseur de cryptage qui génère&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpupllbypass.jpg|thumb|Emplacement du signal CPU_PLL_BYPASS sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpureset.jpg|thumb|Emplacement du signal CPU_RESET sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpupostout.jpg|thumb|Emplacement du signal POST_OUT sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
|+ En résumé&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Point &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Effet &lt;br /&gt;
|-&lt;br /&gt;
| CPU_PLL_BYPASS || Ralentit le CPU à 520kHz&lt;br /&gt;
|-&lt;br /&gt;
| CPU_RESET || Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
|-&lt;br /&gt;
| POST_OUT|| Contrôle l&#039;état du processeur&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Procédure exacte pour les Xbox 360™ Fat :&#039;&#039;&#039;&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxpluspostout.png|thumb|A droite la corona et à gauche la trinity (première slim), on voit bien que la connectivité au POST_OUT a été retirée.]]&lt;br /&gt;
[[Fichier:xboxpostfix.png|thumb|Outil permettant d&#039;accéder au POST_OUT directement sur le processeur.]]&lt;br /&gt;
[[Fichier:xboxpostfixw.jpg|thumb|Outil permettant d&#039;accéder au POST_OUT directement sur le processeur.]]&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Xboxxell.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8636</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8636"/>
		<updated>2016-03-12T19:47:03Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* IV. Le hack au fil du temps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
[[Fichier:1.png|thumb|Illustration d&#039;une Xbox 360 elite (gauche) et d&#039;une Xbox 360 S (droite).]]&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur &lt;br /&gt;
 | Xenon triple-coeurs&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | RAM &lt;br /&gt;
 | 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Disque dur&lt;br /&gt;
 | 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur graphique&lt;br /&gt;
 | ATI Xenos 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpu.png|thumb|Illustration du processeur XCPU Xenon]]&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nom&lt;br /&gt;
 | Xenon&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de transistors&lt;br /&gt;
 | 165 millions&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de coeurs&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Vitesse d&#039;horloge&lt;br /&gt;
 | 3,2 GHz&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Mémoire intégrée&lt;br /&gt;
 | ROM et 64Kb de SRAM contenant le Secure Bootloader de la console et l&#039;hyperviseur de cryptage qui génère&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpupllbypass.jpg|thumb|Emplacement du signal CPU_PLL_BYPASS sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpureset.jpg|thumb|Emplacement du signal CPU_RESET sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpupostout.jpg|thumb|Emplacement du signal POST_OUT sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
|+ En résumé&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Point &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Effet &lt;br /&gt;
|-&lt;br /&gt;
| CPU_PLL_BYPASS || Ralentit le CPU à 520kHz&lt;br /&gt;
|-&lt;br /&gt;
| CPU_RESET || Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
|-&lt;br /&gt;
| POST_OUT|| Contrôle l&#039;état du processeur&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Procédure exacte pour les Xbox 360™ Fat :&#039;&#039;&#039;&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxpluspostout.png|thumb|A droite la corona et à gauche la trinity (première slim), on voit bien que la connectivité au POST_OUT a été retirée.]]&lt;br /&gt;
[[Fichier:xboxpostfix.png|thumb|Outil permettant d&#039;accéder au POST_OUT directement sur le processeur.]]&lt;br /&gt;
[[Fichier:xboxpostfixw.jpg|thumb|Outil permettant d&#039;accéder au POST_OUT directement sur le processeur.]]&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8635</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8635"/>
		<updated>2016-03-12T19:45:52Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* IV. Le hack au fil du temps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
[[Fichier:1.png|thumb|Illustration d&#039;une Xbox 360 elite (gauche) et d&#039;une Xbox 360 S (droite).]]&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur &lt;br /&gt;
 | Xenon triple-coeurs&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | RAM &lt;br /&gt;
 | 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Disque dur&lt;br /&gt;
 | 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur graphique&lt;br /&gt;
 | ATI Xenos 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpu.png|thumb|Illustration du processeur XCPU Xenon]]&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nom&lt;br /&gt;
 | Xenon&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de transistors&lt;br /&gt;
 | 165 millions&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de coeurs&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Vitesse d&#039;horloge&lt;br /&gt;
 | 3,2 GHz&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Mémoire intégrée&lt;br /&gt;
 | ROM et 64Kb de SRAM contenant le Secure Bootloader de la console et l&#039;hyperviseur de cryptage qui génère&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpupllbypass.jpg|thumb|Emplacement du signal CPU_PLL_BYPASS sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpureset.jpg|thumb|Emplacement du signal CPU_RESET sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpupostout.jpg|thumb|Emplacement du signal POST_OUT sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
|+ En résumé&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Point &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Effet &lt;br /&gt;
|-&lt;br /&gt;
| CPU_PLL_BYPASS || Ralentit le CPU à 520kHz&lt;br /&gt;
|-&lt;br /&gt;
| CPU_RESET || Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
|-&lt;br /&gt;
| POST_OUT|| Contrôle l&#039;état du processeur&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Procédure exacte pour les Xbox 360™ Fat :&#039;&#039;&#039;&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxpluspostout.png|thumb|A droite la corona et à gauche la trinity (première slim), on voit bien que la connectivité au POST_OUT a été retirée.]]&lt;br /&gt;
[[Fichier:xboxpostfix.png|thumb|Outil permettant d&#039;accéder au POST_OUT directement sur le processeur.]]&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
[[Fichier:xboxpostfixw.png|thumb|Outil permettant d&#039;accéder au POST_OUT directement sur le processeur.]]&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxxell.png&amp;diff=8634</id>
		<title>Fichier:Xboxxell.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxxell.png&amp;diff=8634"/>
		<updated>2016-03-12T19:45:34Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxpostfixw.jpg&amp;diff=8633</id>
		<title>Fichier:Xboxpostfixw.jpg</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxpostfixw.jpg&amp;diff=8633"/>
		<updated>2016-03-12T19:45:19Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxpostfix.png&amp;diff=8632</id>
		<title>Fichier:Xboxpostfix.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxpostfix.png&amp;diff=8632"/>
		<updated>2016-03-12T19:41:43Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxpluspostout.png&amp;diff=8631</id>
		<title>Fichier:Xboxpluspostout.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxpluspostout.png&amp;diff=8631"/>
		<updated>2016-03-12T19:41:24Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8630</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8630"/>
		<updated>2016-03-12T19:39:19Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* III. Présentation du Reset Glitch Hack (RGH) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
[[Fichier:1.png|thumb|Illustration d&#039;une Xbox 360 elite (gauche) et d&#039;une Xbox 360 S (droite).]]&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur &lt;br /&gt;
 | Xenon triple-coeurs&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | RAM &lt;br /&gt;
 | 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Disque dur&lt;br /&gt;
 | 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur graphique&lt;br /&gt;
 | ATI Xenos 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpu.png|thumb|Illustration du processeur XCPU Xenon]]&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nom&lt;br /&gt;
 | Xenon&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de transistors&lt;br /&gt;
 | 165 millions&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de coeurs&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Vitesse d&#039;horloge&lt;br /&gt;
 | 3,2 GHz&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Mémoire intégrée&lt;br /&gt;
 | ROM et 64Kb de SRAM contenant le Secure Bootloader de la console et l&#039;hyperviseur de cryptage qui génère&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpupllbypass.jpg|thumb|Emplacement du signal CPU_PLL_BYPASS sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpureset.jpg|thumb|Emplacement du signal CPU_RESET sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpupostout.jpg|thumb|Emplacement du signal POST_OUT sur la carte mère.]]&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
|+ En résumé&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Point &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Effet &lt;br /&gt;
|-&lt;br /&gt;
| CPU_PLL_BYPASS || Ralentit le CPU à 520kHz&lt;br /&gt;
|-&lt;br /&gt;
| CPU_RESET || Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
|-&lt;br /&gt;
| POST_OUT|| Contrôle l&#039;état du processeur&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Procédure exacte pour les Xbox 360™ Fat :&#039;&#039;&#039;&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8629</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8629"/>
		<updated>2016-03-12T19:38:57Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* IV. Le hack au fil du temps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
[[Fichier:1.png|thumb|Illustration d&#039;une Xbox 360 elite (gauche) et d&#039;une Xbox 360 S (droite).]]&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur &lt;br /&gt;
 | Xenon triple-coeurs&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | RAM &lt;br /&gt;
 | 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Disque dur&lt;br /&gt;
 | 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur graphique&lt;br /&gt;
 | ATI Xenos 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpu.png|thumb|Illustration du processeur XCPU Xenon]]&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nom&lt;br /&gt;
 | Xenon&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de transistors&lt;br /&gt;
 | 165 millions&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de coeurs&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Vitesse d&#039;horloge&lt;br /&gt;
 | 3,2 GHz&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Mémoire intégrée&lt;br /&gt;
 | ROM et 64Kb de SRAM contenant le Secure Bootloader de la console et l&#039;hyperviseur de cryptage qui génère&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé :&lt;br /&gt;
&lt;br /&gt;
Point :	        Effet :&lt;br /&gt;
&lt;br /&gt;
CPU_PLL_BYPASS	Ralentit le CPU à 520kHz&lt;br /&gt;
&lt;br /&gt;
CPU_RESET	Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
&lt;br /&gt;
POST_OUT	Contrôle l&#039;état du processeur&lt;br /&gt;
&lt;br /&gt;
Procédure exacte pour les Xbox 360™ Fat :&lt;br /&gt;
&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxcpupostout.jpg&amp;diff=8628</id>
		<title>Fichier:Xboxcpupostout.jpg</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxcpupostout.jpg&amp;diff=8628"/>
		<updated>2016-03-12T19:32:49Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxcpupllbypass.jpg&amp;diff=8627</id>
		<title>Fichier:Xboxcpupllbypass.jpg</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxcpupllbypass.jpg&amp;diff=8627"/>
		<updated>2016-03-12T19:28:55Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxcpureset.jpg&amp;diff=8626</id>
		<title>Fichier:Xboxcpureset.jpg</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxcpureset.jpg&amp;diff=8626"/>
		<updated>2016-03-12T19:28:15Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8625</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8625"/>
		<updated>2016-03-12T19:25:05Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* II. Présentation du CPU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
[[Fichier:1.png|thumb|Illustration d&#039;une Xbox 360 elite (gauche) et d&#039;une Xbox 360 S (droite).]]&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur &lt;br /&gt;
 | Xenon triple-coeurs&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | RAM &lt;br /&gt;
 | 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Disque dur&lt;br /&gt;
 | 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur graphique&lt;br /&gt;
 | ATI Xenos 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:xboxcpu.png|thumb|Illustration du processeur XCPU Xenon]]&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nom&lt;br /&gt;
 | Xenon&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de transistors&lt;br /&gt;
 | 165 millions&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de coeurs&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Vitesse d&#039;horloge&lt;br /&gt;
 | 3,2 GHz&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Mémoire intégrée&lt;br /&gt;
 | ROM et 64Kb de SRAM contenant le Secure Bootloader de la console et l&#039;hyperviseur de cryptage qui génère&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé :&lt;br /&gt;
&lt;br /&gt;
Point :	        Effet :&lt;br /&gt;
&lt;br /&gt;
CPU_PLL_BYPASS	Ralentit le CPU à 520kHz&lt;br /&gt;
&lt;br /&gt;
CPU_RESET	Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
&lt;br /&gt;
POST_OUT	Contrôle l&#039;état du processeur&lt;br /&gt;
&lt;br /&gt;
Procédure exacte pour les Xbox 360™ Fat :&lt;br /&gt;
&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8624</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8624"/>
		<updated>2016-03-12T19:24:24Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* II. Présentation du CPU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
[[Fichier:1.png|thumb|Illustration d&#039;une Xbox 360 elite (gauche) et d&#039;une Xbox 360 S (droite).]]&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur &lt;br /&gt;
 | Xenon triple-coeurs&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | RAM &lt;br /&gt;
 | 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Disque dur&lt;br /&gt;
 | 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur graphique&lt;br /&gt;
 | ATI Xenos 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nom&lt;br /&gt;
 | Xenon&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de transistors&lt;br /&gt;
 | 165 millions&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Nombre de coeurs&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Vitesse d&#039;horloge&lt;br /&gt;
 | 3,2 GHz&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Mémoire intégrée&lt;br /&gt;
 | ROM et 64Kb de SRAM contenant le Secure Bootloader de la console et l&#039;hyperviseur de cryptage qui génère&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé :&lt;br /&gt;
&lt;br /&gt;
Point :	        Effet :&lt;br /&gt;
&lt;br /&gt;
CPU_PLL_BYPASS	Ralentit le CPU à 520kHz&lt;br /&gt;
&lt;br /&gt;
CPU_RESET	Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
&lt;br /&gt;
POST_OUT	Contrôle l&#039;état du processeur&lt;br /&gt;
&lt;br /&gt;
Procédure exacte pour les Xbox 360™ Fat :&lt;br /&gt;
&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxcpu.png&amp;diff=8623</id>
		<title>Fichier:Xboxcpu.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Xboxcpu.png&amp;diff=8623"/>
		<updated>2016-03-12T19:24:10Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8622</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8622"/>
		<updated>2016-03-12T19:19:11Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* I. Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
[[Fichier:1.png|thumb|Illustration d&#039;une Xbox 360 elite (gauche) et d&#039;une Xbox 360 S (droite).]]&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur &lt;br /&gt;
 | Xenon triple-coeurs&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | RAM &lt;br /&gt;
 | 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Disque dur&lt;br /&gt;
 | 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur graphique&lt;br /&gt;
 | ATI Xenos 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé :&lt;br /&gt;
&lt;br /&gt;
Point :	        Effet :&lt;br /&gt;
&lt;br /&gt;
CPU_PLL_BYPASS	Ralentit le CPU à 520kHz&lt;br /&gt;
&lt;br /&gt;
CPU_RESET	Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
&lt;br /&gt;
POST_OUT	Contrôle l&#039;état du processeur&lt;br /&gt;
&lt;br /&gt;
Procédure exacte pour les Xbox 360™ Fat :&lt;br /&gt;
&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:1.png&amp;diff=8621</id>
		<title>Fichier:1.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:1.png&amp;diff=8621"/>
		<updated>2016-03-12T19:16:09Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8620</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8620"/>
		<updated>2016-03-12T19:13:24Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* I. Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable alternance centre&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur &lt;br /&gt;
 | Xenon triple-coeurs&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | RAM &lt;br /&gt;
 | 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Disque dur&lt;br /&gt;
 | 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
 |-&lt;br /&gt;
 ! scope=&amp;quot;row&amp;quot; | Processeur graphique&lt;br /&gt;
 | ATI Xenos 512MB&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé :&lt;br /&gt;
&lt;br /&gt;
Point :	        Effet :&lt;br /&gt;
&lt;br /&gt;
CPU_PLL_BYPASS	Ralentit le CPU à 520kHz&lt;br /&gt;
&lt;br /&gt;
CPU_RESET	Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
&lt;br /&gt;
POST_OUT	Contrôle l&#039;état du processeur&lt;br /&gt;
&lt;br /&gt;
Procédure exacte pour les Xbox 360™ Fat :&lt;br /&gt;
&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8619</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8619"/>
		<updated>2016-03-12T19:08:29Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé :&lt;br /&gt;
&lt;br /&gt;
Point :	        Effet :&lt;br /&gt;
&lt;br /&gt;
CPU_PLL_BYPASS	Ralentit le CPU à 520kHz&lt;br /&gt;
&lt;br /&gt;
CPU_RESET	Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
&lt;br /&gt;
POST_OUT	Contrôle l&#039;état du processeur&lt;br /&gt;
&lt;br /&gt;
Procédure exacte pour les Xbox 360™ Fat :&lt;br /&gt;
&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;br /&gt;
&lt;br /&gt;
==V. Xellous==&lt;br /&gt;
&lt;br /&gt;
Le xellous souvent appelé « xell », est un petit OS (environ 1mo) basé sur linux qui permet de récupéré les clés de cryptage de la nand et du lecteur de la console, mais surtout pour exécuter des applications compilé avec la librairie « libxenon ».&lt;br /&gt;
&lt;br /&gt;
==VI. Conclusion==&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des applications créées avec la bibliothèque libre “libXenon” qui s’exécute grâce à un os ultra simplifié sur la base UNIX, on parle donc ici de “homebrew”, des logiciels non certifié par Microsoft©, mais en aucun cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas beaucoup répandu à ses débuts. Par la suite une autre équipe de hackers a réussi à rendre compatible l’OS de la console modifiée avec ce hack, depuis il est devenu extrêmement populaire car il permet de lancer des jeux non-officiels.&lt;br /&gt;
&lt;br /&gt;
Microsoft© a déjà essayé d’améliorer la protection du mécanisme de vérification de Xbox 360™, alors que le principe du hack n’a pas changé (et ne changera pas), car l’architecture du processeur ne peut être changée, Microsoft© fait à chaque fois des petits changements pour empêcher le hack actuel d’être fonctionnel, mais il existera toujours une solution pour le rendre de nouveau fonctionnel. Pourquoi Microsoft© ne corrige-t’il pas le bug de ce processeur?&lt;br /&gt;
&lt;br /&gt;
Il faudrait modifier complètement l’architecture du processeur pour cela, outre le coût important de cette modification, il rendrait tous les jeux sorti jusqu’à ce jour obsolète, changerais complètement la console. Depuis la nouvelle Xbox est sorti, la Xbox One™ basé sur une architecture beaucoup plus classique, la x86. Il ne reste maintenant plus qu’au hacker à trouver une nouvelle faille dans cette nouvelle console.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Références :&#039;&#039;&lt;br /&gt;
www.logic-sunrise.com&lt;br /&gt;
free60.org&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8618</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8618"/>
		<updated>2016-03-12T19:07:13Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* IV. Le hack au fil du temps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé :&lt;br /&gt;
&lt;br /&gt;
Point :	        Effet :&lt;br /&gt;
&lt;br /&gt;
CPU_PLL_BYPASS	Ralentit le CPU à 520kHz&lt;br /&gt;
&lt;br /&gt;
CPU_RESET	Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
&lt;br /&gt;
POST_OUT	Contrôle l&#039;état du processeur&lt;br /&gt;
&lt;br /&gt;
Procédure exacte pour les Xbox 360™ Fat :&lt;br /&gt;
&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;br /&gt;
&lt;br /&gt;
Il y a eu énormément de révision de la carte mère de la Xbox 360™ depuis sa sortie, ce qui fait que le hack n&#039;est pas tout à fait le même suivant ces révisions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Xbox 360™ fat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La première version du hack sur les Xbox 360™ fat a été décrit dans le détail le chapitre précédent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Xbox 360™ slim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les slim sorties après les fat, ne proposent plus le point de signal CPU_PLL_BYPASS, donc le hack des slim est un peu différent :&lt;br /&gt;
&lt;br /&gt;
Les hackers ont découvert que sur la puce HANA (HDMI scaler chip), la fréquence d&#039;horloge peut être contrôlée par le registre programmable PLL, et ce registre peut être réécrit par un bus I²C. Ainsi la puce HANA devient leur arme de choix pour ralentir le CPU, mais cette fois ci c’est seulement à 100Mhz.&lt;br /&gt;
&lt;br /&gt;
Par rapport au hack des fat, la seule chose qui change, est ce qu’on utilise pour ralentir le CPU, Pour les fat c’est un signal CPU_PLL_BYPASS de CPU, et pour les slim c’est la puce HANA, par contre avec la puce HANA, nous ne pouvons pas baisser la fréquence jusqu’à 520Khz (mais 100Mhz), donc pour les slim, le taux de réussite est généralement plus bas que chez les fat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;La procédure exacte pour les Xbox 360™ Slim :&#039;&#039;&#039;&lt;br /&gt;
*1. Envoyer une commande I²C vers l&#039;HANA afin de ralentir le CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute.&lt;br /&gt;
*3. Envoyer une pulsation de 20ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un moment et ensuite envoyer une commande i2c en direction de l&#039;HANA afin que l&#039;horloge du CPU revienne à son état normal.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit et et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Xbox 360™ corona&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une version plus récente de la génération des slim n’a plus la puce HANA, l&#039;horloge est maintenant intégrée directement dans le southbridge. Un contre de Microsoft© qui s’est avéré être un échec, puisque un quartz en bonne qualité sur le circuit qui envoie les impulsions suffit pour remplacer le HANA.&lt;br /&gt;
&lt;br /&gt;
Depuis plusieurs amélioration du hack ont été effectuées, déjà le quartz permet un hack plus fiable, la dimension des câbles utilisé aussi a une importance, mais aussi les interférences qui pourrait être causé par les bobines ou la cage de faraday de la console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour effectuer ce hack nous avons besoin d’un circuit logique programmable qui permet de générer des impulsions, on va l&#039;appeler générateur d&#039;impulsions pour le moment.&lt;br /&gt;
&lt;br /&gt;
Normalement sur un générateur d&#039;impulsions à 5 points de signal, mais maintenant ils en ont plus que 4 avec le remplacement par le quartz du point “STBY_48M” qui était connecté à la puce HANA (qui depuis à même été retiré par Microsoft©, mais sans effet).&lt;br /&gt;
&lt;br /&gt;
Il y a donc le :&lt;br /&gt;
* Point CPU_reset : Il envoi le signal CPU_reset sur l’un des pins du processeur pour faire s’effondrer le mécanisme de vérification du BOOTLOADER, ainsi on peut charger le bootloader officieux.&lt;br /&gt;
* Point POST_OUT1 : Ce point surveille le statut du système, il va donc faire stopper les envois de CPU_reset en cas de succès.&lt;br /&gt;
* Points bus I²C (2 points) : Envoie le signal pour baisser la fréquence de CPU.&lt;br /&gt;
* Il faut aussi alimenter la puce, on utilise du 3.3v fourni par la console pour ça.&lt;br /&gt;
Le CPU_reset a tout simplement changé de place avec les dernières révisions des cartes mères, pas très efficace encore une fois. Puis Microsoft a carrément retirer la piste qui reliait le POST_OUT au processeur, il était donc impossible de connaître si le boot était un succes ou pas, mais un outil qui enfonce une aiguille sous le processeur pour atteindre directement le pin du processeur POST_OUT est sorti pour résoudre ce problème.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;4) Xbox 360™ Winchester&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La version plus récente de la Xbox 360™ à été modifiée. En effet, Microsoft© à modifier la taille du CPU rendant l&#039;outil permettant d&#039;accéder au POST_OUT incompatible, de plus la NAND est différente et illisible par les méthodes actuelles. Les hackers sont au travail.&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8617</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8617"/>
		<updated>2016-03-12T18:58:46Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé :&lt;br /&gt;
&lt;br /&gt;
Point :	        Effet :&lt;br /&gt;
&lt;br /&gt;
CPU_PLL_BYPASS	Ralentit le CPU à 520kHz&lt;br /&gt;
&lt;br /&gt;
CPU_RESET	Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
&lt;br /&gt;
POST_OUT	Contrôle l&#039;état du processeur&lt;br /&gt;
&lt;br /&gt;
Procédure exacte pour les Xbox 360™ Fat :&lt;br /&gt;
&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;br /&gt;
&lt;br /&gt;
==IV. Le hack au fil du temps==&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8616</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8616"/>
		<updated>2016-03-12T18:58:15Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* III. Présentation du Reset Glitch Hack (RGH) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le principe du Reset Glitch Hack est assez simple : il permet, plutôt que d&#039;avoir à connaître le procédé de fonctionnement du superviseur de cryptage, de passer outre celui-ci en rendant la fonction qui vérifie si les données sont bien signées obsolète.&lt;br /&gt;
&lt;br /&gt;
Pour faire simple, nous avons besoin de :&lt;br /&gt;
*a) Ralentir le CPU&lt;br /&gt;
*b) Envoyer le signal RESET au processeur durant un temps précis pendant la comparaison des données.&lt;br /&gt;
*c) Vérifier l&#039;état du boot (pour vérifier si le hack a fonctionné)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Détails du hack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Ralentir le CPU&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un internaute un nom de &amp;quot;Cjak&amp;quot; à découvert qu&#039;en activant le signal CPU_PLL_BYPASS de la carte mère, l&#039;horloge du CPU ralentissait énormément, il y a un point de test sur la carte mère qui permet de connaître la vitesse du CPU, il est à 200Mhz lorsque l&#039;os de la Xbox 360™ est lancé, 66.6Mhz lorsque la console démarre et 520kHz lorsque le signal est activé.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;b) Envoyer le signal RESET au processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il faut se connecter au signal CPU_RESET de la carte mère pour envoyer ce signal. Celui-ci fait &amp;quot;glitcher&amp;quot; le processus de comparaison du boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;c) Vérifier l&#039;état du processeur&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier l&#039;état du processeur il faut pouvoir accéder au signal POST_OUT de la carte mère.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En résumé :&lt;br /&gt;
&lt;br /&gt;
Point :	        Effet :&lt;br /&gt;
&lt;br /&gt;
CPU_PLL_BYPASS	Ralentit le CPU à 520kHz&lt;br /&gt;
&lt;br /&gt;
CPU_RESET	Envoie le signal de reset au processeur, à basse fréquence celui-ci se comporte différemment et les fonctions memcmp retournent toujours l&#039;information pas de différences&lt;br /&gt;
&lt;br /&gt;
POST_OUT	Contrôle l&#039;état du processeur&lt;br /&gt;
&lt;br /&gt;
Procédure exacte pour les Xbox 360™ Fat :&lt;br /&gt;
&lt;br /&gt;
*1. Activation du CPU_PLL_BYPASS pour baisser la fréquence du CPU.&lt;br /&gt;
*2. Attendre que le comparateur de mémoire s&#039;exécute jusqu’à 62% de la longueur totale.&lt;br /&gt;
*3. Envoyer une pulsation de 100ns sur le CPU_RESET.&lt;br /&gt;
*4. Attendre un certain timing puis désactiver le CPU_PLL_BYPASS.&lt;br /&gt;
*5. La vitesse du CPU redevient normal, et avec un peu de chance, à la place d&#039;obtenir une erreur, le processus de boot se poursuit, et lance le code modifié.&lt;br /&gt;
*6. Si le processus de boot ne se poursuit pas, on recommence la procédure.&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8615</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8615"/>
		<updated>2016-03-12T18:43:40Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* III. Présentation du Reset Glitch Hack (RGH) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
On a vu précédemment que le bootloader joue un rôle essentiel pour le démarrage de la console et permet à lui seul de charger l&#039;OS, si on parvient à passer la sécurité du bootloader on est en théorie maître de notre console et on peut lancer n&#039;importe quel code dessus.&lt;br /&gt;
&lt;br /&gt;
En août 2011 un français dont le pseudo est &amp;quot;GliGli&amp;quot; a dévoilé un bug permettant de contourner la protection mise en place par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack (méthode d’impulsion):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8614</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8614"/>
		<updated>2016-03-12T18:41:42Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* II. Présentation du CPU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une machine, permet de charger un système d’exploitation plus complexe. Il a plusieurs tâches à accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un boot-loader classique à la différence que le kernel est signé. Plus précisément, il charge les données de l&#039;OS présentes sur la mémoire interne de la console (la nand) puis les hash à l&#039;aide du SHA (Secure Hash Algorithm) en les comparants à des hash obtenu grâce à l&#039;hyperviseur de cryptage contenu dans la ROM du processeur. Microsoft© a mis en place cette protection dans le but de rendre la console incompatible avec toutes autres OS que ceux déployé par eux même. Il est ainsi en théorie impossible de lancer autre chose qu&#039;un OS signée par Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Les informations concernant la méthode de génération du hash à partir de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas souhaité dévoiler le processus exact de fonctionnement de son Secure Boot-loader.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*1. Lancement de la console,&lt;br /&gt;
*2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
*3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
*4. Hashage des données de l&#039;OS à l&#039;aide du SHA,&lt;br /&gt;
*5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
*6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
&lt;br /&gt;
	→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
	&lt;br /&gt;
	→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
La XBOX 360 est sorti il y a maintenant 9 ans, Microsoft au fil des&lt;br /&gt;
années a amélioré et changer plusieurs fois les nombreuses protections&lt;br /&gt;
et mécanisme de vérification dans le but de contrer tous les hacks sortis&lt;br /&gt;
sur la 360, mais le reset glitch hack, un hack dévoilé en aout 2011 par le&lt;br /&gt;
français “GliGli” sur le site Logic-sunrise ne peu de par sa conception&lt;br /&gt;
même etre contré et donne beaucoup de fil à retordre pour Microsoft.&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des&lt;br /&gt;
application créées avec la bibliothèque libre “libXenon” qui s’execute&lt;br /&gt;
grace à un os ultra simplifié sur une UNIX, on parle donc ici de&lt;br /&gt;
“homebrew”, des logiciels non certifié par microsoft, mais dans aucun&lt;br /&gt;
cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas&lt;br /&gt;
beaucoup répandu les premiers temps, puis une autre équipe de hacker&lt;br /&gt;
à réussi à rendre compatible l’OS de la console modifié avec ce hack,&lt;br /&gt;
depuis il est devenu extrêmement populaire.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack (méthode d’impulsion):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8613</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8613"/>
		<updated>2016-03-12T18:35:37Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* II. Présentation du CPU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le cœur du système. Crée  par IBM© et Microsoft© à partir de la série POWER (Performance Optimization With Enhanced RISC), le Xenon est composé de 3 cœurs compatible SMT 2 voies capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été amélioré durant la période de commercialisation de Xbox 360™ afin de résoudre les problèmes de température de la console. Le processeur est passé d&#039;une finesse de gravure de 90nm en 2005, à 60nm en 2007 (Falcon), puis à 45nm en 2010 (Trinity).&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées par IBM qui permettent de vérifier la version du Kernel : à chaque modification / mise à jour du Kernel, un eFUSE est détruit empêchant toute rétrocompatibilité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une&lt;br /&gt;
machine, permet de charger un système d’exploitation plus complexe.&lt;br /&gt;
Il à plusieurs tâches a accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un&lt;br /&gt;
boot-loader classique a la différence que le kernel est signé. Plus&lt;br /&gt;
précisément, il charge les données de l&#039;OS présentes sur le disque dur&lt;br /&gt;
interne de la console puis les hash à l&#039;aide du SHA (Secure Hash&lt;br /&gt;
Algorithm) en les comparant à des hash obtenu grâce à l&#039;hyperviseur&lt;br /&gt;
de cryptage contenu dans la ROM du processeur. Microsoft© à mit en&lt;br /&gt;
place cette protection dans le but de rendre la console incompatible&lt;br /&gt;
avec toutes autres OS que celles éditées par eux même. Il est ainsi en&lt;br /&gt;
théorie impossible de lancer autre chose qu&#039;une OS signée par&lt;br /&gt;
Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les informations concernant la méthode de génération du hash à partir&lt;br /&gt;
de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas&lt;br /&gt;
souhaité dévoiler le processus exact de fonctionnement de son Secure&lt;br /&gt;
Boot-loader.&lt;br /&gt;
&lt;br /&gt;
1. Lancement de la console,&lt;br /&gt;
2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
4. Hashage des données de l&#039;OS à l&#039;aide du SAH,&lt;br /&gt;
5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
La XBOX 360 est sorti il y a maintenant 9 ans, Microsoft au fil des&lt;br /&gt;
années a amélioré et changer plusieurs fois les nombreuses protections&lt;br /&gt;
et mécanisme de vérification dans le but de contrer tous les hacks sortis&lt;br /&gt;
sur la 360, mais le reset glitch hack, un hack dévoilé en aout 2011 par le&lt;br /&gt;
français “GliGli” sur le site Logic-sunrise ne peu de par sa conception&lt;br /&gt;
même etre contré et donne beaucoup de fil à retordre pour Microsoft.&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des&lt;br /&gt;
application créées avec la bibliothèque libre “libXenon” qui s’execute&lt;br /&gt;
grace à un os ultra simplifié sur une UNIX, on parle donc ici de&lt;br /&gt;
“homebrew”, des logiciels non certifié par microsoft, mais dans aucun&lt;br /&gt;
cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas&lt;br /&gt;
beaucoup répandu les premiers temps, puis une autre équipe de hacker&lt;br /&gt;
à réussi à rendre compatible l’OS de la console modifié avec ce hack,&lt;br /&gt;
depuis il est devenu extrêmement populaire.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack (méthode d’impulsion):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8612</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8612"/>
		<updated>2016-03-12T18:34:26Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* I. Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsables de l&#039;utilisation frauduleuse des informations présentes dans ce document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La Xbox 360™ est une console de salon développée par Microsoft© et commercialisée entre 2005 et 2006 partout dans le monde. Depuis son lancement, la console a été écoulée a plus de 83 millions d&#039;exemplaires faisant de cette console la sixième plus vendue de tous les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée sur une carte mère avec les composants classiques : un CPU (Central Processing Unit), une GPU (Graphics Processing Unit), de la RAM GDDR3, un décodeur audio XMA, … La console de Microsoft© a été optimisée afin de faire fonctionner des applications graphiques exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des jeux au graphismes étonnant sont encore développés sur cette plateforme.&lt;br /&gt;
&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le coeur du système. Crée par&lt;br /&gt;
IBM© et Microsoft© à partir de la série POWER (Performance Optimization With&lt;br /&gt;
Enhanced RISC), le Xenon est composé de 3 coeurs compatible SMT 2 voies&lt;br /&gt;
capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été&lt;br /&gt;
améliorer durant la période de commercialisation de Xbox 360™ afin de résoudre&lt;br /&gt;
les problèmes de température de la console. Le processeur est passé d&#039;une&lt;br /&gt;
finesse de gravure de 90nm en 2005, à 60nm en 2007 (Xenon Falcon), puis à&lt;br /&gt;
45nm en 2010 (Xenon Trinity).&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées&lt;br /&gt;
par IBM qui permettent de vérifier la version du Kernel : à chaque modification /&lt;br /&gt;
mise à jour du Kernel, un eFUSE est détruit empêchant toute rétro-compatibilité.&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une&lt;br /&gt;
machine, permet de charger un système d’exploitation plus complexe.&lt;br /&gt;
Il à plusieurs tâches a accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un&lt;br /&gt;
boot-loader classique a la différence que le kernel est signé. Plus&lt;br /&gt;
précisément, il charge les données de l&#039;OS présentes sur le disque dur&lt;br /&gt;
interne de la console puis les hash à l&#039;aide du SHA (Secure Hash&lt;br /&gt;
Algorithm) en les comparant à des hash obtenu grâce à l&#039;hyperviseur&lt;br /&gt;
de cryptage contenu dans la ROM du processeur. Microsoft© à mit en&lt;br /&gt;
place cette protection dans le but de rendre la console incompatible&lt;br /&gt;
avec toutes autres OS que celles éditées par eux même. Il est ainsi en&lt;br /&gt;
théorie impossible de lancer autre chose qu&#039;une OS signée par&lt;br /&gt;
Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les informations concernant la méthode de génération du hash à partir&lt;br /&gt;
de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas&lt;br /&gt;
souhaité dévoiler le processus exact de fonctionnement de son Secure&lt;br /&gt;
Boot-loader.&lt;br /&gt;
&lt;br /&gt;
1. Lancement de la console,&lt;br /&gt;
2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
4. Hashage des données de l&#039;OS à l&#039;aide du SAH,&lt;br /&gt;
5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
La XBOX 360 est sorti il y a maintenant 9 ans, Microsoft au fil des&lt;br /&gt;
années a amélioré et changer plusieurs fois les nombreuses protections&lt;br /&gt;
et mécanisme de vérification dans le but de contrer tous les hacks sortis&lt;br /&gt;
sur la 360, mais le reset glitch hack, un hack dévoilé en aout 2011 par le&lt;br /&gt;
français “GliGli” sur le site Logic-sunrise ne peu de par sa conception&lt;br /&gt;
même etre contré et donne beaucoup de fil à retordre pour Microsoft.&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des&lt;br /&gt;
application créées avec la bibliothèque libre “libXenon” qui s’execute&lt;br /&gt;
grace à un os ultra simplifié sur une UNIX, on parle donc ici de&lt;br /&gt;
“homebrew”, des logiciels non certifié par microsoft, mais dans aucun&lt;br /&gt;
cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas&lt;br /&gt;
beaucoup répandu les premiers temps, puis une autre équipe de hacker&lt;br /&gt;
à réussi à rendre compatible l’OS de la console modifié avec ce hack,&lt;br /&gt;
depuis il est devenu extrêmement populaire.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack (méthode d’impulsion):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8611</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8611"/>
		<updated>2016-03-12T13:06:03Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
De document est destiné à un usage éducatif uniquement. Nous&lt;br /&gt;
ne sommes pas responsable de l&#039;utilisation frauduleuse des informations&lt;br /&gt;
présentes dans ce document.&lt;br /&gt;
La Xbox 360™ est une console de salon développée par&lt;br /&gt;
Microsoft© et commercialisée entre 2005 et 2006 partout dans le&lt;br /&gt;
monde. Depuis son lancement, la console a été écoulée a plus de 83&lt;br /&gt;
millions d&#039;exemplaires faisant de cette console la sixième plus vendue&lt;br /&gt;
de tout les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée&lt;br /&gt;
sur une carte mère avec les composants classiques : un CPU (Central&lt;br /&gt;
Processing Unit), une GPU (Graphics Processing Unit), de la RAM&lt;br /&gt;
GDDR3, un décodeur audio XMA, … La console de Microsoft© a été&lt;br /&gt;
optimisée afin de faire fonctionner des applications graphiques&lt;br /&gt;
exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des&lt;br /&gt;
jeux au graphismes étonnant sont encore développés sur cette plate&lt;br /&gt;
forme.&lt;br /&gt;
&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le coeur du système. Crée par&lt;br /&gt;
IBM© et Microsoft© à partir de la série POWER (Performance Optimization With&lt;br /&gt;
Enhanced RISC), le Xenon est composé de 3 coeurs compatible SMT 2 voies&lt;br /&gt;
capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été&lt;br /&gt;
améliorer durant la période de commercialisation de Xbox 360™ afin de résoudre&lt;br /&gt;
les problèmes de température de la console. Le processeur est passé d&#039;une&lt;br /&gt;
finesse de gravure de 90nm en 2005, à 60nm en 2007 (Xenon Falcon), puis à&lt;br /&gt;
45nm en 2010 (Xenon Trinity).&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées&lt;br /&gt;
par IBM qui permettent de vérifier la version du Kernel : à chaque modification /&lt;br /&gt;
mise à jour du Kernel, un eFUSE est détruit empêchant toute rétro-compatibilité.&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une&lt;br /&gt;
machine, permet de charger un système d’exploitation plus complexe.&lt;br /&gt;
Il à plusieurs tâches a accomplir :&lt;br /&gt;
* Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
* Donner à celui-ci les informations dont il a besoin pour fonctionner correctement,&lt;br /&gt;
* Changer l’environnement pour quelque chose de convenable au système,&lt;br /&gt;
* Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un&lt;br /&gt;
boot-loader classique a la différence que le kernel est signé. Plus&lt;br /&gt;
précisément, il charge les données de l&#039;OS présentes sur le disque dur&lt;br /&gt;
interne de la console puis les hash à l&#039;aide du SHA (Secure Hash&lt;br /&gt;
Algorithm) en les comparant à des hash obtenu grâce à l&#039;hyperviseur&lt;br /&gt;
de cryptage contenu dans la ROM du processeur. Microsoft© à mit en&lt;br /&gt;
place cette protection dans le but de rendre la console incompatible&lt;br /&gt;
avec toutes autres OS que celles éditées par eux même. Il est ainsi en&lt;br /&gt;
théorie impossible de lancer autre chose qu&#039;une OS signée par&lt;br /&gt;
Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les informations concernant la méthode de génération du hash à partir&lt;br /&gt;
de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas&lt;br /&gt;
souhaité dévoiler le processus exact de fonctionnement de son Secure&lt;br /&gt;
Boot-loader.&lt;br /&gt;
&lt;br /&gt;
1. Lancement de la console,&lt;br /&gt;
2. Le processeur exécute les premières instructions présentes dans sa ROM : le Secure Boot-loader,&lt;br /&gt;
3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
4. Hashage des données de l&#039;OS à l&#039;aide du SAH,&lt;br /&gt;
5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
→ Si les deux hash correspondent, alors le boot peut se poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
→ Si les deux hash sont différents, alors le boot est arrêter et la procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problématique&#039;&#039;&#039; : Comment contrer cette protection et parvenir à lancer un OS quelconque depuis une Xbox 360 ?&lt;br /&gt;
&lt;br /&gt;
== III. Présentation du Reset Glitch Hack (RGH) ==&lt;br /&gt;
&lt;br /&gt;
La XBOX 360 est sorti il y a maintenant 9 ans, Microsoft au fil des&lt;br /&gt;
années a amélioré et changer plusieurs fois les nombreuses protections&lt;br /&gt;
et mécanisme de vérification dans le but de contrer tous les hacks sortis&lt;br /&gt;
sur la 360, mais le reset glitch hack, un hack dévoilé en aout 2011 par le&lt;br /&gt;
français “GliGli” sur le site Logic-sunrise ne peu de par sa conception&lt;br /&gt;
même etre contré et donne beaucoup de fil à retordre pour Microsoft.&lt;br /&gt;
Le RGH a été créé dans un premier temps pour lancer des&lt;br /&gt;
application créées avec la bibliothèque libre “libXenon” qui s’execute&lt;br /&gt;
grace à un os ultra simplifié sur une UNIX, on parle donc ici de&lt;br /&gt;
“homebrew”, des logiciels non certifié par microsoft, mais dans aucun&lt;br /&gt;
cas de piratage. C’est d’ailleurs pour cette raison que le hack ne s’est pas&lt;br /&gt;
beaucoup répandu les premiers temps, puis une autre équipe de hacker&lt;br /&gt;
à réussi à rendre compatible l’OS de la console modifié avec ce hack,&lt;br /&gt;
depuis il est devenu extrêmement populaire.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Principe du reset glitch hack (méthode d’impulsion):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Texte original écrit par GliGli :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;We found that by sending a tiny reset pulse to the processor&lt;br /&gt;
while it is slowed down does not reset it but instead changes the way&lt;br /&gt;
the code runs, it seems it&#039;s very efficient at making bootloaders&lt;br /&gt;
memcmp functions always return &amp;quot;no differences&amp;quot;. memcmp is often&lt;br /&gt;
used to check the next bootloader SHA hash against a stored one,&lt;br /&gt;
allowing it to run if they are the same. So we can put a bootloader that&lt;br /&gt;
would fail hash check in NAND, glitch the previous one and that&lt;br /&gt;
bootloader will run, allowing almost any code to run.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Traduction en français :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nous avons découvert qu&#039;en envoyant de petites impulsions de&lt;br /&gt;
reset au processeur pendant qu&#039;il était ralenti ne le remettait pas à zéro,&lt;br /&gt;
mais changeait plutôt la manière dont le code tournait. Il semble que&lt;br /&gt;
ceci soit très efficace pour que les fonctions comparatrices de mémoires&lt;br /&gt;
des bootloaders renvoient toujours l&#039;information &amp;quot;pas de différence&amp;quot;.&lt;br /&gt;
Les fonctions comparatrices de mémoires sont utilisées entre-autres&lt;br /&gt;
pour comparer le hash SHA du bootloader suivant avec celui stocké, et&lt;br /&gt;
permettant s&#039;ils sont identiques de le lancer. Nous pouvons ainsi mettre&lt;br /&gt;
un bootloader qui ne passera pas la vérification de hash dans la NAND,&lt;br /&gt;
glitcher le précédent et ce bootloader se lancera permettant le&lt;br /&gt;
lancement de presque tout code.&amp;quot;&lt;br /&gt;
Donc le principe du RGH est très simple, il est de faire buguer&lt;br /&gt;
(glitcher) le processus de boot de la console, pour qu’il fasse croire que&lt;br /&gt;
le bootloader injecté auparavant dans la nand soit un officiel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(référence http://free60.org/Reset_Glitch_Hack)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8610</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8610"/>
		<updated>2016-03-12T12:57:14Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Joris BODIN et Tim DE WINTER ===&lt;br /&gt;
&lt;br /&gt;
== I. Introduction ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Présentation du &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 permettant l&#039;exécution de code non signé par Microsoft &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
De document est destiné à un usage éducatif uniquement. Nous&lt;br /&gt;
ne sommes pas responsable de l&#039;utilisation frauduleuse des informations&lt;br /&gt;
présentes dans ce document.&lt;br /&gt;
La Xbox 360™ est une console de salon développée par&lt;br /&gt;
Microsoft© et commercialisée entre 2005 et 2006 partout dans le&lt;br /&gt;
monde. Depuis son lancement, la console a été écoulée a plus de 83&lt;br /&gt;
millions d&#039;exemplaires faisant de cette console la sixième plus vendue&lt;br /&gt;
de tout les temps.&lt;br /&gt;
&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée&lt;br /&gt;
sur une carte mère avec les composants classiques : un CPU (Central&lt;br /&gt;
Processing Unit), une GPU (Graphics Processing Unit), de la RAM&lt;br /&gt;
GDDR3, un décodeur audio XMA, … La console de Microsoft© a été&lt;br /&gt;
optimisée afin de faire fonctionner des applications graphiques&lt;br /&gt;
exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des&lt;br /&gt;
jeux au graphismes étonnant sont encore développés sur cette plate&lt;br /&gt;
forme.&lt;br /&gt;
&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;br /&gt;
&lt;br /&gt;
== II. Présentation du CPU ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 1) Caractéristiques techniques &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le processeur Microsoft XCPU ou Xenon est le coeur du système. Crée par&lt;br /&gt;
IBM© et Microsoft© à partir de la série POWER (Performance Optimization With&lt;br /&gt;
Enhanced RISC), le Xenon est composé de 3 coeurs compatible SMT 2 voies&lt;br /&gt;
capable de virtualiser 6 processeurs. Le procédé de fabrication du Xenon a été&lt;br /&gt;
améliorer durant la période de commercialisation de Xbox 360™ afin de résoudre&lt;br /&gt;
les problèmes de température de la console. Le processeur est passé d&#039;une&lt;br /&gt;
finesse de gravure de 90nm en 2005, à 60nm en 2007 (Xenon Falcon), puis à&lt;br /&gt;
45nm en 2010 (Xenon Trinity).&lt;br /&gt;
Le Xenon est munis de 128 bits de eFUSE, des &amp;quot;fusibles électronique&amp;quot; crées&lt;br /&gt;
par IBM qui permettent de vérifier la version du Kernel : à chaque modification /&lt;br /&gt;
mise à jour du Kernel, un eFUSE est détruit empêchant toute rétro-compatibilité.&lt;br /&gt;
&lt;br /&gt;
Nom : Xenon&lt;br /&gt;
Nombre de transistors : 165 millions&lt;br /&gt;
Nombre de coeurs : 3&lt;br /&gt;
Vitesse d&#039;horloge : 3,2 GHz&lt;br /&gt;
Mémoire intégrée : ROM et 64Kb de SRAM contenant le Secure&lt;br /&gt;
Bootloader de la console et l&#039;hyperviseur de&lt;br /&gt;
cryptage qui génère&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 2) Processus de lancement le l&#039;OS : Secure Boot-loader &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; a) Qu&#039;est-ce qu&#039;un Boot-loader ? &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un Boot-loader est un programme écrit qui, au démarrage d&#039;une&lt;br /&gt;
machine, permet de charger un système d’exploitation plus complexe.&lt;br /&gt;
Il à plusieurs tâches a accomplir :&lt;br /&gt;
• Intégrer le système d&#039;exploitation dans la mémoire,&lt;br /&gt;
• Donner à celui-ci les informations dont il a besoin pour&lt;br /&gt;
fonctionner correctement,&lt;br /&gt;
• Changer l’environnement pour quelque chose de convenable&lt;br /&gt;
au système,&lt;br /&gt;
• Enfin il transfert le contrôle au système d’exploitation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; b) Le Secure Boot-loader de la Xbox 360 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le Secure Boot-loader de la Xbox 360™ fonctionne comme un&lt;br /&gt;
boot-loader classique a la différence que le kernel est signé. Plus&lt;br /&gt;
précisément, il charge les données de l&#039;OS présentes sur le disque dur&lt;br /&gt;
interne de la console puis les hash à l&#039;aide du SHA (Secure Hash&lt;br /&gt;
Algorithm) en les comparant à des hash obtenu grâce à l&#039;hyperviseur&lt;br /&gt;
de cryptage contenu dans la ROM du processeur. Microsoft© à mit en&lt;br /&gt;
place cette protection dans le but de rendre la console incompatible&lt;br /&gt;
avec toutes autres OS que celles éditées par eux même. Il est ainsi en&lt;br /&gt;
théorie impossible de lancer autre chose qu&#039;une OS signée par&lt;br /&gt;
Microsoft©.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; c) Processus de lancement supposé du kernel &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les informations concernant la méthode de génération du hash à partir&lt;br /&gt;
de l&#039;hyperviseur de cryptage sont un peu floues car Microsoft© n&#039;as pas&lt;br /&gt;
souhaité dévoiler le processus exact de fonctionnement de son Secure&lt;br /&gt;
Boot-loader.&lt;br /&gt;
&lt;br /&gt;
1. Lancement de la console,&lt;br /&gt;
2. Le processeur exécute les premières instructions présentes dans sa&lt;br /&gt;
ROM : le Secure Boot-loader,&lt;br /&gt;
3. Copie des données de l&#039;OS dans la RAM,&lt;br /&gt;
4. Hashage des données de l&#039;OS à l&#039;aide du SAH,&lt;br /&gt;
5. Génération d&#039;un hash à l&#039;aide de l&#039;hyperviseur de cryptage de la ROM,&lt;br /&gt;
6. Comparaison des deux hash obtenu à l&#039;aide de memcmp :&lt;br /&gt;
→ Si les deux hash correspondent, alors le boot peut se&lt;br /&gt;
poursuivre : On transfert le contrôle du système au kernel.&lt;br /&gt;
→ Si les deux hash sont différents, alors le boot est arrêter et la&lt;br /&gt;
procédure de lancement plante.&lt;br /&gt;
&lt;br /&gt;
Problématique : Comment contrer cette protection et parvenir à lancer&lt;br /&gt;
un OS quelconque depuis une Xbox 360 ?&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8609</id>
		<title>Projets étudiants cryptographie et sécurité/BodinDeWinter XBOX RGH</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH&amp;diff=8609"/>
		<updated>2016-03-12T12:26:57Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : Page créée avec « I. Introduction De document est destiné à un usage éducatif uniquement. Nous ne sommes pas responsable de l&amp;#039;utilisation frauduleuse des informations présentes dans ce ... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I. Introduction&lt;br /&gt;
De document est destiné à un usage éducatif uniquement. Nous&lt;br /&gt;
ne sommes pas responsable de l&#039;utilisation frauduleuse des informations&lt;br /&gt;
présentes dans ce document.&lt;br /&gt;
La Xbox 360™ est une console de salon développée par&lt;br /&gt;
Microsoft© et commercialisée entre 2005 et 2006 partout dans le&lt;br /&gt;
monde. Depuis son lancement, la console a été écoulée a plus de 83&lt;br /&gt;
millions d&#039;exemplaires faisant de cette console la sixième plus vendue&lt;br /&gt;
de tout les temps.&lt;br /&gt;
Tout comme un ordinateur classique, la Xbox 360™ est assemblée&lt;br /&gt;
sur une carte mère avec les composants classiques : un CPU (Central&lt;br /&gt;
Processing Unit), une GPU (Graphics Processing Unit), de la RAM&lt;br /&gt;
GDDR3, un décodeur audio XMA, … La console de Microsoft© a été&lt;br /&gt;
optimisée afin de faire fonctionner des applications graphiques&lt;br /&gt;
exigeantes, or encore aujourd&#039;hui, près de 10ans après sa sortie, des&lt;br /&gt;
jeux au graphismes étonnant sont encore développés sur cette plate&lt;br /&gt;
forme.&lt;br /&gt;
Processeur : Xenon triple-coeurs&lt;br /&gt;
RAM : 512MB (2005)&lt;br /&gt;
4GB (2010)&lt;br /&gt;
Disque dur : 20, 60, 120, 250, ou 320 GB&lt;br /&gt;
Processeur graphique : ATI Xenos 512MB&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9&amp;diff=8608</id>
		<title>Projets étudiants cryptographie et sécurité</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9&amp;diff=8608"/>
		<updated>2016-03-12T12:25:09Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* Attaques, exploit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Sécurité informatique =&lt;br /&gt;
&lt;br /&gt;
== Logiciels malveillants ==&lt;br /&gt;
&lt;br /&gt;
# le virus &amp;quot;stuxnet&amp;quot; { N. Challut et T. Chisci }&lt;br /&gt;
# Cryptolocker { W. Lecable, M. Genovese }&lt;br /&gt;
# Octobre Rouge { REGAZZONI Rudy et LOMBARD Adrien } (ok)&lt;br /&gt;
# Virus et antivirus (ok) {EL AZHAR Said}&lt;br /&gt;
# Présentation et explication de l&#039;attaque par le virus Stuxnet (ok) {PIRAT Victor et MENDES Etienne}&lt;br /&gt;
# Virus et antivirus { Mehdi M. et Christophe M. }&lt;br /&gt;
# Virus et Antivirus {L Burnet et Y Bouklinam } [[Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BouklinamBurnet_Virus_Antivirus]]&lt;br /&gt;
&lt;br /&gt;
== Attaques, exploit ==&lt;br /&gt;
&lt;br /&gt;
# Présentation et explication d&#039;une attaque historique (laquelle ?) { FLEUTIAUX Marc et AGUETTAZ Cédric}&lt;br /&gt;
# Tour d&#039;horizon des attaques par Injection SQL. (ok) {MILLER Lucas et VIONNET Jean}&lt;br /&gt;
# Attaques sur SSL. (ok) {Ferlay Mathieu et Six Lancelot}&lt;br /&gt;
# Le Phreaking, piratage téléphonique (ok) {Rey Myriam}&lt;br /&gt;
# IP Spoofing et DNS Spoofing { Alberic Martel &amp;amp; Fabien Dezempte ) [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2008-2009/ip-dns-spoofing.ppt PPT]&lt;br /&gt;
# Les attaques médiatisées sur les systèmes informatiques {Renneville Guybert et Fabrice Noraz}&lt;br /&gt;
# Les attaques médiatisées sur les systèmes informatiques : Attaque de Mitnick, Morris Worm, DDOS Mafia Boy, etc   &amp;lt;&amp;lt;&amp;lt;&amp;lt; { PIPARO, HUMBERT } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Les_attaques_mediatisees_-_PIPARO_HUMBERT.pdf PDF]&lt;br /&gt;
# Attaques par injection de code XSS, parades &amp;lt;&amp;lt;&amp;lt;&amp;lt; { SERRA &amp;amp; ROCHE ) [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Expose_securite_sur_le_XSS_-_Roche_et_Serra.pdf PDF]&lt;br /&gt;
# IP Spoofing et DNS Spoofing &amp;lt;&amp;lt;&amp;lt;&amp;lt; { DEMOLIS &amp;amp; JUMEAU )&lt;br /&gt;
# &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 {Joris et Tim} [[Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/BodinDeWinter_XBOX_RGH]]&lt;br /&gt;
&lt;br /&gt;
== Sécurité applicative ==&lt;br /&gt;
&lt;br /&gt;
# Comparaison de différents logiciels de crackage (ok) { AMBLARD Mathieu }&lt;br /&gt;
# Construire des bons mots de passe { Liu Siqi }&lt;br /&gt;
# Sécurité anti-piratage (ok) {CHEVALIER Daniel et REIGNIER David}&lt;br /&gt;
&lt;br /&gt;
== Sécurité réseaux ==&lt;br /&gt;
&lt;br /&gt;
# La sécurité et les chaines TV cryptées { CINDOLO Giuseppe &amp;amp; NARETTO Benjamin }&lt;br /&gt;
# Tunneling TCP/IP via SSH {RAHARISON Laurent &amp;amp; JEAN FRANÇOIS Michael}&lt;br /&gt;
# HTTPS et SSL { ASSIER Aymeric et ROLLINGER Claire } (ok)&lt;br /&gt;
# DMZ { COLLOMB Camille et LAURENT Corantin } (ok)&lt;br /&gt;
# Sécurité des réseaux sans fils (ok) { ZHONG Jie et GONZALEZ Miguel }&lt;br /&gt;
# Le principe de VPN et les attaques de VPN (ok) { DU Peng }&lt;br /&gt;
# Présentation de quelques attaques informatiques et quelques solutions proposées pour y remédier dans les réseaux P2P (ok) { Lila Zane et Ouhemmi }&lt;br /&gt;
# Comment Aircrack trouve les clés WEP des réseaux wifi (ok) { LANOISELIER Aurélien et MARCHANOFF Jérôme}&lt;br /&gt;
# Tunneling, sécurisation et piratage (ok). {COLLEN Cyril et LAQUA Johann}&lt;br /&gt;
# Securité des réseaux sans fils (ok) {Tounkara Mounina et Philippe Monteiro}&lt;br /&gt;
# Les Protocoles de sécurité dans les réseaux WiFi (WEP et WPA) &amp;lt;&amp;lt;&amp;lt;&amp;lt; { Mickaël Wang &amp;amp; Arnaud Villevieille } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2008-2009/Securite-wifi.pdf PDF]&lt;br /&gt;
# Les outils d&#039;analyse de la sécurité des réseaux : renifleur, scanneurs de ports, outils de détection d&#039;intruison { Anis HADJALI &amp;amp; Vlad VESA } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2008-2009/analyse-securite.pdf PDF]&lt;br /&gt;
# L&#039;introduction SSL,SSH { Julien Roche &amp;amp; Yi Wang }&lt;br /&gt;
# Secure shell (SSH) : protocole, applications, tunnelling &amp;lt;&amp;lt;&amp;lt;&amp;lt; {BODIN}&lt;br /&gt;
# Sécurité des réseaux sans fil : authentification, chiffrement, WEP, WPA =&amp;gt;Bugnard/Berthet&lt;br /&gt;
# Sécuriser un réseau : pare-feu, zone démilitarisée, protection des serveurs, adressage local &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; {FOLLIET et VIALA} [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/presentation_VIALA_FOLLIET.pdf PDF]&lt;br /&gt;
# IPsec&lt;br /&gt;
&lt;br /&gt;
== Sécurité de l&#039;hôte ==&lt;br /&gt;
&lt;br /&gt;
# La sécurité dans les box de FAI { Charron Thomas &amp;amp; Mesurolle Anthony }&lt;br /&gt;
# Failles de sécurité des systèmes informatiques de grandes entreprises (LinkedIn, Apple, Sony, ...) { ARNOULD Mickaël et LEMAIRE Noémie } (ok)&lt;br /&gt;
# La virtualisation, facteur de sécurité ou de vulnérabilité (ok) { DIMIER Cédric et CARRIE Antoine }&lt;br /&gt;
# Sécurité sous Linux en entreprise { Joël Leroy  Ebouele &amp;amp; Barbier Keller }&lt;br /&gt;
# Techniques et outils de chiffrements de partitions [Valat Sebastien &amp;amp; Bouleis Romain]&lt;br /&gt;
# OpenBSD : aspects sécurité &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; (REVELIN et ERROCHDI) [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/OpenBSD_-_Revelin-Errochdi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
== Sécurité et web ==&lt;br /&gt;
&lt;br /&gt;
# Google Recaptcha { A. SAYAH, A. EL-HARRAS }&lt;br /&gt;
# Le Cloud et la Cryptologie { Capellaro Alexandre &amp;amp; Chabert Cédric }&lt;br /&gt;
# Sécurité atypique et empreintes des navigateurs {FONTANA Antonin}&lt;br /&gt;
# Injections SQL &amp;amp; faille XSS { GUILLOT Pierre &amp;amp; KRATTINGER Thibaut }&lt;br /&gt;
# Nouvelle philosophie de partage de fichiers avec MEGA { WAYNTAL David et DOMINATI Nicolas } (ok)&lt;br /&gt;
# La sécurité sur les sites Web (ok) {RABARIJAONA Domoina et BERTHET Vincent}&lt;br /&gt;
# Présentation des Honeypots (ok) {Adiche Rafik et Jean-François Michel-Patrique}&lt;br /&gt;
# Google Hacking { Julien ARNOUX &amp;amp; Jeremy DEPOIL } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2008-2009/ghack.pptx PPTX]&lt;br /&gt;
&lt;br /&gt;
== Sécurité des mobiles et informatique ambiante ==&lt;br /&gt;
&lt;br /&gt;
# Sécurité et mobile : nouvelle cible des pirates { GEVET Gwénaël et YANG Yang } (ok)&lt;br /&gt;
# Vulnérabilités des smartphones (ok) {Titouan VAN BELLE et Jean-Baptiste PAUMIER}&lt;br /&gt;
# L&#039;Informatique Ambiante et La Sécurité:Quel Protocole? (ok) {Marclin LEON et Farid BOUKHEDDAD}&lt;br /&gt;
# Vulnérabilité du protocole A5/1 des mobiles GSM. &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; {FERNANDES} [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Cryptologie_et_securite_informatique_-_Fernandes.pdf PDF]&lt;br /&gt;
# Sécurité GPRS &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; (PEHME et REY) [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Securite_GPRS_-PEHME_REY.pdf PDF]&lt;br /&gt;
# Sécurité Bluetooth 4.X  ( Treboux Jérome ) [[Projets_étudiants_cryptographie_et_sécurité/Treboux_jerome_Securite_Bluetooth_4X]]&lt;br /&gt;
&lt;br /&gt;
== Politique de sécurité ==&lt;br /&gt;
&lt;br /&gt;
# Sécurité et [http://www.infosafe.fr/Armoirefortedin/Armoirefortedin.htm armoire forte ignifuge] pour les sauvegardes de données&lt;br /&gt;
# Fuites de donnée en entreprise (ok) {Tounkara Mounina et Philippe Monteiro}&lt;br /&gt;
# PRA le Plan de Reprise d&#039;Activité {Achraf AMEUR}&lt;br /&gt;
# La mise en place de la sécurité informatique au niveau national et international : CERTs, sites AntiSPAM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cryptographie =&lt;br /&gt;
&lt;br /&gt;
== Génération aléatoire ==&lt;br /&gt;
&lt;br /&gt;
# Principes et techniques de génération de nombres aléatoires {BERTHON Yohann &amp;amp; KELFANI Hugo &amp;amp; REY Anthony}&lt;br /&gt;
# Systèmes physiques de génération de nombres aléatoires : principes et avantages. (ok) {Florent Carral et Julie Tacheau}&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique (à clé secrète partagée) ==&lt;br /&gt;
&lt;br /&gt;
# AES { Avet Anthony &amp;amp; Duraz Aurélien }&lt;br /&gt;
# IDEA { Caillet François &amp;amp; Di Lisio Anthony } [[Projets_étudiants_cryptographie_et_sécurité/Caillet_DiLisio_IDEA]]&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique (à clé publique) ==&lt;br /&gt;
&lt;br /&gt;
# PGP et la sécurité de l&#039;information {Cyrille Mortier}&lt;br /&gt;
&lt;br /&gt;
== Signature, certificats ==&lt;br /&gt;
&lt;br /&gt;
# La signature numérique (ok) { DJEDDI Abdelkader }&lt;br /&gt;
# Les certificats (PGP, X509) et les infrastructures de gestion de clés &lt;br /&gt;
&lt;br /&gt;
== Empreintes et fonctions de hachage ==&lt;br /&gt;
&lt;br /&gt;
== Cryptanalyse ==&lt;br /&gt;
&lt;br /&gt;
# Le craquage de la cryptographie quantique ? { D. Cauwet, A. Hauguel }&lt;br /&gt;
# Calculateurs quantiques et applications en cryptographie { BORCARD Justine et CATHELIN Gaël }&lt;br /&gt;
# Vulnérabilité du protocole WEP et de RC4 pour les réseaux WiFi   &amp;lt;&amp;lt;&amp;lt;&amp;lt; { PAVLOU, DALLACOSTA } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Presentation_cryptologie_PAVLOU_DALLA_COSTA_512.mov MOV]&lt;br /&gt;
&lt;br /&gt;
== Tatouage, watermarking, biométrie, DRM ==&lt;br /&gt;
&lt;br /&gt;
# La stéganographie { K. Deléglise, Y. Rakotonanahary }&lt;br /&gt;
# La stéganographie { Bosviel Thomas &amp;amp; Tolron Sebastien}&lt;br /&gt;
# Biométrie { BACART Aurélien et BAH Abdoulaye } (ok)&lt;br /&gt;
# Biométrie (ok) { ZANE Bania et MENTDAHI Houda }&lt;br /&gt;
# Stéganographie(ok) { PONCET Johan et MARTIN Romain}&lt;br /&gt;
# Stéganographie ou les signatures numériques (ok) { TARDY Camille et CASSAGNERES Pierre-André}&lt;br /&gt;
# La biométrie, une solution miracle pour l&#039;authentification ? (ok) { FERNANDES PIRES Anthony et GAYET Eric}&lt;br /&gt;
# La gestion des DRM  {Petithory Thomas &amp;amp; Paccard Charléric}&lt;br /&gt;
# Le tatouage d&#039;image et de document (watermarking) &amp;lt;&amp;lt;&amp;lt;&amp;lt; {MAESEELE, CIMINERA } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Watermarking_Ciminera_Maeseele.pdf PDF]&lt;br /&gt;
# Watermarking et steganographie { Adrien DETRAZ et Julien CABALLOL } [https://lama.univ-savoie.fr/mediawiki/index.php/Projets_étudiants_cryptographie_et_sécurité/Detraz_Caballol_Watermarking_Steganographie Projets_étudiants_cryptographie_et_sécurité/Caballol-Detraz_Watermarking_Steganographie]&lt;br /&gt;
&lt;br /&gt;
== Cryptographie quantique ==&lt;br /&gt;
&lt;br /&gt;
# Principes de cryptographie quantique (DE ROLAND Céline, LECLAIRE Juliana) [[Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique]]&lt;br /&gt;
# Cryptographie quantique: Vulnérabilités ( DCHAR Ahmed, AMJAD Nassif ) [[Projets_étudiants_cryptographie_et_sécurité/Dchar-Amjad_Cryptographie_Quantique_Vulnerabilités]]&lt;br /&gt;
&lt;br /&gt;
= Sécurité, cryptographie dans la société =&lt;br /&gt;
&lt;br /&gt;
== Cryptographie historique ==&lt;br /&gt;
&lt;br /&gt;
# La cryptographie dans l&#039;antiquité { Y. Lombardi, G. Badin }&lt;br /&gt;
# La machine de Turing et ses variantes { C. Laignel, P.E. Roux }&lt;br /&gt;
# La machine ENIGMA { B. Da Silva, G. Ply }&lt;br /&gt;
# L&#039;histoire de la cryptographie (ok) {Costa Jean-Philippe et Morel Julien}&lt;br /&gt;
# Evolution de la cryptologie à travers les âges (ok, mais vaste !) { DEBAENE Aurélien et VINCENT Christophe }&lt;br /&gt;
# La Machine Enigma (ok) { JULLIAN-DESAYES Jeremy et GARDET Nicolas }&lt;br /&gt;
&lt;br /&gt;
== Cyberguerre ==&lt;br /&gt;
&lt;br /&gt;
# Cryptologie VS NSA { H. Ramamonjy, N.E. Ould Kadi }&lt;br /&gt;
# La cyberguerre { COLIN François et APPREDERISSE Benjamin } (ok)&lt;br /&gt;
# La cryptographie militaire { GIUNCHI Ryan &amp;amp; CIMINERA Lary }&lt;br /&gt;
# La cyberguerre (ok) {MAIRE Cyril et MONTCHAL Justine}&lt;br /&gt;
# La cyberguerre (ok) { SOUBEYRAND Martin et ROBART Laetitia }&lt;br /&gt;
&lt;br /&gt;
== Monnaies électroniques ==&lt;br /&gt;
&lt;br /&gt;
# le Bitcoin { H. Helbawi, A. Tang, J. }&lt;br /&gt;
# Le cryptosystème Bitcoin { Johanny Clerc-Renaud &amp;amp; Clément Montigny }&lt;br /&gt;
# La sécurité des monnaies électroniques {BUISSON Valentin &amp;amp; GENY-DUMONT Rémi}&lt;br /&gt;
&lt;br /&gt;
== Cartes bancaires ==&lt;br /&gt;
&lt;br /&gt;
# La sécurité des cartes bancaires { M. Salvat, Y. Salti }&lt;br /&gt;
# Sécurité des cartes bancaires { A. Bigane, F. Way }&lt;br /&gt;
# Le paiement par NFC { J. Maurice, S. Zehnder }&lt;br /&gt;
# Payement NFC { Montouchet Raphaël &amp;amp; Marois Jeremy }&lt;br /&gt;
# La technologie RFID et la sécurité { CHANTREL Thierry &amp;amp; SEZILLE Aurélien }&lt;br /&gt;
# La sécurité des cartes bancaires (ok) { DORIEN Christophe et LAPIERRE Rémy }&lt;br /&gt;
# Sécurité dans les cartes à puce (ok) { LAGHA Youssef et Nodari }&lt;br /&gt;
# 3DSecure { Natalia Lecoeur &amp;amp; Cindy Chiaberto } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2008-2009/3D_Secure.pdf PDF]&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9&amp;diff=8550</id>
		<title>Projets étudiants cryptographie et sécurité</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9&amp;diff=8550"/>
		<updated>2016-02-16T15:17:46Z</updated>

		<summary type="html">&lt;p&gt;JorisBodin : /* attaques, exploit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Sécurité informatique =&lt;br /&gt;
&lt;br /&gt;
== Logiciels malveillants ==&lt;br /&gt;
&lt;br /&gt;
# le virus &amp;quot;stuxnet&amp;quot; { N. Challut et T. Chisci }&lt;br /&gt;
# Cryptolocker { W. Lecable, M. Genovese }&lt;br /&gt;
# Octobre Rouge { REGAZZONI Rudy et LOMBARD Adrien } (ok)&lt;br /&gt;
# Virus et antivirus (ok) {EL AZHAR Said}&lt;br /&gt;
# Présentation et explication de l&#039;attaque par le virus Stuxnet (ok) {PIRAT Victor et MENDES Etienne}&lt;br /&gt;
# Virus et antivirus { Mehdi M. et Christophe M. }&lt;br /&gt;
&lt;br /&gt;
== Attaques, exploit ==&lt;br /&gt;
&lt;br /&gt;
# Présentation et explication d&#039;une attaque historique (laquelle ?) { FLEUTIAUX Marc et AGUETTAZ Cédric}&lt;br /&gt;
# Tour d&#039;horizon des attaques par Injection SQL. (ok) {MILLER Lucas et VIONNET Jean}&lt;br /&gt;
# Attaques sur SSL. (ok) {Ferlay Mathieu et Six Lancelot}&lt;br /&gt;
# Le Phreaking, piratage téléphonique (ok) {Rey Myriam}&lt;br /&gt;
# IP Spoofing et DNS Spoofing { Alberic Martel &amp;amp; Fabien Dezempte ) [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2008-2009/ip-dns-spoofing.ppt PPT]&lt;br /&gt;
# Les attaques médiatisées sur les systèmes informatiques {Renneville Guybert et Fabrice Noraz}&lt;br /&gt;
# Les attaques médiatisées sur les systèmes informatiques : Attaque de Mitnick, Morris Worm, DDOS Mafia Boy, etc   &amp;lt;&amp;lt;&amp;lt;&amp;lt; { PIPARO, HUMBERT } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Les_attaques_mediatisees_-_PIPARO_HUMBERT.pdf PDF]&lt;br /&gt;
# Attaques par injection de code XSS, parades &amp;lt;&amp;lt;&amp;lt;&amp;lt; { SERRA &amp;amp; ROCHE ) [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Expose_securite_sur_le_XSS_-_Roche_et_Serra.pdf PDF]&lt;br /&gt;
# IP Spoofing et DNS Spoofing &amp;lt;&amp;lt;&amp;lt;&amp;lt; { DEMOLIS &amp;amp; JUMEAU )&lt;br /&gt;
# &amp;quot;Reset Glitch Hack&amp;quot; Xbox 360 {Joris et Tim}&lt;br /&gt;
&lt;br /&gt;
== Sécurité applicative ==&lt;br /&gt;
&lt;br /&gt;
# Comparaison de différents logiciels de crackage (ok) { AMBLARD Mathieu }&lt;br /&gt;
# Construire des bons mots de passe { Liu Siqi }&lt;br /&gt;
# Sécurité anti-piratage (ok) {CHEVALIER Daniel et REIGNIER David}&lt;br /&gt;
&lt;br /&gt;
== Sécurité réseaux ==&lt;br /&gt;
&lt;br /&gt;
# La sécurité et les chaines TV cryptées { CINDOLO Giuseppe &amp;amp; NARETTO Benjamin }&lt;br /&gt;
# Tunneling TCP/IP via SSH {RAHARISON Laurent &amp;amp; JEAN FRANÇOIS Michael}&lt;br /&gt;
# HTTPS et SSL { ASSIER Aymeric et ROLLINGER Claire } (ok)&lt;br /&gt;
# DMZ { COLLOMB Camille et LAURENT Corantin } (ok)&lt;br /&gt;
# Sécurité des réseaux sans fils (ok) { ZHONG Jie et GONZALEZ Miguel }&lt;br /&gt;
# Le principe de VPN et les attaques de VPN (ok) { DU Peng }&lt;br /&gt;
# Présentation de quelques attaques informatiques et quelques solutions proposées pour y remédier dans les réseaux P2P (ok) { Lila Zane et Ouhemmi }&lt;br /&gt;
# Comment Aircrack trouve les clés WEP des réseaux wifi (ok) { LANOISELIER Aurélien et MARCHANOFF Jérôme}&lt;br /&gt;
# Tunneling, sécurisation et piratage (ok). {COLLEN Cyril et LAQUA Johann}&lt;br /&gt;
# Securité des réseaux sans fils (ok) {Tounkara Mounina et Philippe Monteiro}&lt;br /&gt;
# Les Protocoles de sécurité dans les réseaux WiFi (WEP et WPA) &amp;lt;&amp;lt;&amp;lt;&amp;lt; { Mickaël Wang &amp;amp; Arnaud Villevieille } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2008-2009/Securite-wifi.pdf PDF]&lt;br /&gt;
# Les outils d&#039;analyse de la sécurité des réseaux : renifleur, scanneurs de ports, outils de détection d&#039;intruison { Anis HADJALI &amp;amp; Vlad VESA } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2008-2009/analyse-securite.pdf PDF]&lt;br /&gt;
# L&#039;introduction SSL,SSH { Julien Roche &amp;amp; Yi Wang }&lt;br /&gt;
# Secure shell (SSH) : protocole, applications, tunnelling &amp;lt;&amp;lt;&amp;lt;&amp;lt; {BODIN}&lt;br /&gt;
# Sécurité des réseaux sans fil : authentification, chiffrement, WEP, WPA =&amp;gt;Bugnard/Berthet&lt;br /&gt;
# Sécuriser un réseau : pare-feu, zone démilitarisée, protection des serveurs, adressage local &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; {FOLLIET et VIALA} [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/presentation_VIALA_FOLLIET.pdf PDF]&lt;br /&gt;
# IPsec&lt;br /&gt;
&lt;br /&gt;
== Sécurité de l&#039;hôte ==&lt;br /&gt;
&lt;br /&gt;
# La sécurité dans les box de FAI { Charron Thomas &amp;amp; Mesurolle Anthony }&lt;br /&gt;
# Failles de sécurité des systèmes informatiques de grandes entreprises (LinkedIn, Apple, Sony, ...) { ARNOULD Mickaël et LEMAIRE Noémie } (ok)&lt;br /&gt;
# La virtualisation, facteur de sécurité ou de vulnérabilité (ok) { DIMIER Cédric et CARRIE Antoine }&lt;br /&gt;
# Sécurité sous Linux en entreprise { Joël Leroy  Ebouele &amp;amp; Barbier Keller }&lt;br /&gt;
# Techniques et outils de chiffrements de partitions [Valat Sebastien &amp;amp; Bouleis Romain]&lt;br /&gt;
# OpenBSD : aspects sécurité &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; (REVELIN et ERROCHDI) [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/OpenBSD_-_Revelin-Errochdi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
== Sécurité et web ==&lt;br /&gt;
&lt;br /&gt;
# Google Recaptcha { A. SAYAH, A. EL-HARRAS }&lt;br /&gt;
# Le Cloud et la Cryptologie { Capellaro Alexandre &amp;amp; Chabert Cédric }&lt;br /&gt;
# Sécurité atypique et empreintes des navigateurs {FONTANA Antonin}&lt;br /&gt;
# Injections SQL &amp;amp; faille XSS { GUILLOT Pierre &amp;amp; KRATTINGER Thibaut }&lt;br /&gt;
# Nouvelle philosophie de partage de fichiers avec MEGA { WAYNTAL David et DOMINATI Nicolas } (ok)&lt;br /&gt;
# La sécurité sur les sites Web (ok) {RABARIJAONA Domoina et BERTHET Vincent}&lt;br /&gt;
# Présentation des Honeypots (ok) {Adiche Rafik et Jean-François Michel-Patrique}&lt;br /&gt;
# Google Hacking { Julien ARNOUX &amp;amp; Jeremy DEPOIL } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2008-2009/ghack.pptx PPTX]&lt;br /&gt;
&lt;br /&gt;
== Sécurité des mobiles et informatique ambiante ==&lt;br /&gt;
&lt;br /&gt;
# Sécurité et mobile : nouvelle cible des pirates { GEVET Gwénaël et YANG Yang } (ok)&lt;br /&gt;
# Vulnérabilités des smartphones (ok) {Titouan VAN BELLE et Jean-Baptiste PAUMIER}&lt;br /&gt;
# L&#039;Informatique Ambiante et La Sécurité:Quel Protocole? (ok) {Marclin LEON et Farid BOUKHEDDAD}&lt;br /&gt;
# Vulnérabilité du protocole A5/1 des mobiles GSM. &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; {FERNANDES} [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Cryptologie_et_securite_informatique_-_Fernandes.pdf PDF]&lt;br /&gt;
# Sécurité GPRS &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; (PEHME et REY) [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Securite_GPRS_-PEHME_REY.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
== Politique de sécurité ==&lt;br /&gt;
&lt;br /&gt;
# Sécurité et [http://www.infosafe.fr/Armoirefortedin/Armoirefortedin.htm armoire forte ignifuge] pour les sauvegardes de données&lt;br /&gt;
# Fuites de donnée en entreprise (ok) {Tounkara Mounina et Philippe Monteiro}&lt;br /&gt;
# PRA le Plan de Reprise d&#039;Activité {Achraf AMEUR}&lt;br /&gt;
# La mise en place de la sécurité informatique au niveau national et international : CERTs, sites AntiSPAM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cryptographie =&lt;br /&gt;
&lt;br /&gt;
== Génération aléatoire ==&lt;br /&gt;
&lt;br /&gt;
# Principes et techniques de génération de nombres aléatoires {BERTHON Yohann &amp;amp; KELFANI Hugo &amp;amp; REY Anthony}&lt;br /&gt;
# Systèmes physiques de génération de nombres aléatoires : principes et avantages. (ok) {Florent Carral et Julie Tacheau}&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique (à clé secrète partagée) ==&lt;br /&gt;
&lt;br /&gt;
# AES { Avet Anthony &amp;amp; Duraz Aurélien }&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique (à clé publique) ==&lt;br /&gt;
&lt;br /&gt;
# PGP et la sécurité de l&#039;information {Cyrille Mortier}&lt;br /&gt;
&lt;br /&gt;
== Signature, certificats ==&lt;br /&gt;
&lt;br /&gt;
# La signature numérique (ok) { DJEDDI Abdelkader }&lt;br /&gt;
# Les certificats (PGP, X509) et les infrastructures de gestion de clés &lt;br /&gt;
&lt;br /&gt;
== Empreintes et fonctions de hachage ==&lt;br /&gt;
&lt;br /&gt;
== Cryptanalyse ==&lt;br /&gt;
&lt;br /&gt;
# Le craquage de la cryptographie quantique ? { D. Cauwet, A. Hauguel }&lt;br /&gt;
# Calculateurs quantiques et applications en cryptographie { BORCARD Justine et CATHELIN Gaël }&lt;br /&gt;
# Vulnérabilité du protocole WEP et de RC4 pour les réseaux WiFi   &amp;lt;&amp;lt;&amp;lt;&amp;lt; { PAVLOU, DALLACOSTA } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Presentation_cryptologie_PAVLOU_DALLA_COSTA_512.mov MOV]&lt;br /&gt;
&lt;br /&gt;
== Tatouage, watermarking, biométrie, DRM ==&lt;br /&gt;
&lt;br /&gt;
# La stéganographie { K. Deléglise, Y. Rakotonanahary }&lt;br /&gt;
# La stéganographie { Bosviel Thomas &amp;amp; Tolron Sebastien}&lt;br /&gt;
# Biométrie { BACART Aurélien et BAH Abdoulaye } (ok)&lt;br /&gt;
# Biométrie (ok) { ZANE Bania et MENTDAHI Houda }&lt;br /&gt;
# Stéganographie(ok) { PONCET Johan et MARTIN Romain}&lt;br /&gt;
# Stéganographie ou les signatures numériques (ok) { TARDY Camille et CASSAGNERES Pierre-André}&lt;br /&gt;
# La biométrie, une solution miracle pour l&#039;authentification ? (ok) { FERNANDES PIRES Anthony et GAYET Eric}&lt;br /&gt;
# La gestion des DRM  {Petithory Thomas &amp;amp; Paccard Charléric}&lt;br /&gt;
# Le tatouage d&#039;image et de document (watermarking) &amp;lt;&amp;lt;&amp;lt;&amp;lt; {MAESEELE, CIMINERA } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2007/Watermarking_Ciminera_Maeseele.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
== Cryptographie quantique ==&lt;br /&gt;
&lt;br /&gt;
# Principes de cryptographie quantique (DE ROLAND Céline, LECLAIRE Juliana) [[Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique]]&lt;br /&gt;
&lt;br /&gt;
= Sécurité, cryptographie dans la société =&lt;br /&gt;
&lt;br /&gt;
== Cryptographie historique ==&lt;br /&gt;
&lt;br /&gt;
# La cryptographie dans l&#039;antiquité { Y. Lombardi, G. Badin }&lt;br /&gt;
# La machine de Turing et ses variantes { C. Laignel, P.E. Roux }&lt;br /&gt;
# La machine ENIGMA { B. Da Silva, G. Ply }&lt;br /&gt;
# L&#039;histoire de la cryptographie (ok) {Costa Jean-Philippe et Morel Julien}&lt;br /&gt;
# Evolution de la cryptologie à travers les âges (ok, mais vaste !) { DEBAENE Aurélien et VINCENT Christophe }&lt;br /&gt;
# La Machine Enigma (ok) { JULLIAN-DESAYES Jeremy et GARDET Nicolas }&lt;br /&gt;
&lt;br /&gt;
== Cyberguerre ==&lt;br /&gt;
&lt;br /&gt;
# Cryptologie VS NSA { H. Ramamonjy, N.E. Ould Kadi }&lt;br /&gt;
# La cyberguerre { COLIN François et APPREDERISSE Benjamin } (ok)&lt;br /&gt;
# La cryptographie militaire { GIUNCHI Ryan &amp;amp; CIMINERA Lary }&lt;br /&gt;
# La cyberguerre (ok) {MAIRE Cyril et MONTCHAL Justine}&lt;br /&gt;
# La cyberguerre (ok) { SOUBEYRAND Martin et ROBART Laetitia }&lt;br /&gt;
&lt;br /&gt;
== Monnaies électroniques ==&lt;br /&gt;
&lt;br /&gt;
# le Bitcoin { H. Helbawi, A. Tang, J. }&lt;br /&gt;
# Le cryptosystème Bitcoin { Johanny Clerc-Renaud &amp;amp; Clément Montigny }&lt;br /&gt;
# La sécurité des monnaies électroniques {BUISSON Valentin &amp;amp; GENY-DUMONT Rémi}&lt;br /&gt;
&lt;br /&gt;
== Cartes bancaires ==&lt;br /&gt;
&lt;br /&gt;
# La sécurité des cartes bancaires { M. Salvat, Y. Salti }&lt;br /&gt;
# Sécurité des cartes bancaires { A. Bigane, F. Way }&lt;br /&gt;
# Le paiement par NFC { J. Maurice, S. Zehnder }&lt;br /&gt;
# Payement NFC { Montouchet Raphaël &amp;amp; Marois Jeremy }&lt;br /&gt;
# La technologie RFID et la sécurité { CHANTREL Thierry &amp;amp; SEZILLE Aurélien }&lt;br /&gt;
# La sécurité des cartes bancaires (ok) { DORIEN Christophe et LAPIERRE Rémy }&lt;br /&gt;
# Sécurité dans les cartes à puce (ok) { LAGHA Youssef et Nodari }&lt;br /&gt;
# 3DSecure { Natalia Lecoeur &amp;amp; Cindy Chiaberto } [http://www.lama.univ-savoie.fr/~lachaud/Cours/INFO913/Prez-2008-2009/3D_Secure.pdf PDF]&lt;/div&gt;</summary>
		<author><name>JorisBodin</name></author>
	</entry>
</feed>