dimanche 18 février 2007

Un nombre premier illégal

Voici l'homme :

4856507896573978293098418946942861377074420873513579240196520736 6869851340104723744696879743992611751097377770102744752804905883 1384037549709987909653955227011712157025974666993240226834596619 6060348517424977358468518855674570257125474999648219418465571008 4119086259716947970799152004866709975923596061320725973797993618 8606316914473588300245336972781813914797955513399949394882899846 9178361001825978901031601961835034344895687053845208538045842415 6548248893338047475871128339598968522325446084089711197712769412 0795862440547161321005006459820176961771809478113622002723448272 2493232595472346880029277764979061481298404283457201463489685471 6908235473783566197218622496943162271666393905543024156473292485 5248991225739466548627140482117138124388217717602984125524464744 5055834628144883356319027253195904392838737640739168912579240550 1562088978716337599910788708490815909754801928576845198859630532 3823490558092032999603234471140776019847163531161713078576084862 23637028357010496125956818467859653331007701799

Ce nombre (qui est premier) a été recherché par le FBI en son temps (et l'est encore, sauf que maintenant c'est plus possible d'en freiner la diffusion).

En effet, ce nombre contient une implémentation du décrypteur de DVD. Plus précisément, les implémentations les plus courtes du crack de DVD (celles qui permettent de lire des DVD sous Linux [1] ) tiennent en quelque lignes, lesquelles compressées donnent un nombre. Il a fallu trouver des méthode pour diffuser le code du crack discrètement. Une des nombreuses méthodes fut de le déguiser dans un nombre premier.
Voila pourquoi il est illégal de posséder ce nombre premier.



Edit :
On peut trouver un code C complèt pour décrypter des DVD sur ce site :
http://www.mail-archive.com/cryptography@c2.net/msg04508.html
#include 
#define K(i) (k[i]^s[i+84])
u_int r(u_int);int main(){u_char*x="\331\231\321\0I\tA\220&\6\202\0$\4\200\2",y
=0,z,t[256],k[5],s[2048];do z=x[y&7]^x[y>>4|8]^(y/8&17)*11&161,t[y]=z^(z&z*2&34
)*6;while(++y);read(0,k,5);while(read(0,s,2048)){if(s[20]&48){u_int a=r(K(1)<<9
^256^K(0))>>15,b=r((K(4)<<17^k(3)<<9^k(2)*2)+8-(k(2)&7))>>7,c=0,i=128;for(;i<
2048;i++){y=a^a>>14;y^=y*8^y<<6;z=b^b/8^b>>4^b>>12;a=a>>8|y<<9;b=b>>8|z<<17;s[i
]=t[s[i]]^z+c+~y;c=z+c>y;}s[20]&=143;}write(1,s,2048);}}

Aucun commentaire: