==Phrack Inc.== Volume 0x0c, Issue 0x41, Phile #0x06 of 0x0f |=-----------------------------------------------------------------------=| |=--------=[ The only laws on the Internet are assembly and RFCs ]=------=| |=-----------------------------------------------------------------------=| |=-------------------=[ By julia@winstonsmith.info ]=--------------------=| |=-----------------------------------------------------------------------=| |=--------------=[ Traduit par aryliin pour arsouyes.org ]=--------------=| ------[ Index 0 - Point de départ, notre monde et l'internet 1 - Qu'est ce qu'une loi incohérente ? 2 - APPROFONDISSEMENT ET VÉRITABLE CIBLE : RIPA III 3 - Elettra 4 - L'IDENTITÉ ANONYME: julia@winstonsmith.info 5 - RÉFÉRENCES ------[ 0. Point de départ, notre monde et l'internet 2008: Depuis 10 an, la valeur d'internet s'est accrue à un point qui n'était pas prévisible. Un grand nombre de joueurs essaient d'en tirer profit : Les labels et l'industrie du cinéma, les gouvernements, les vendeurs de logiciels. Huit, dix an plus tôt, notre approche du net était le plaisir du hacking; maintenant, les techniques de piratage sont réutilisées par les sociétés de sécurité pour leur services de sécurité. Avant, la diffusion d'un crack était une preuve de valeur, maintenant, c'est juste un risque d'être busté. Beaucoup de choses ont changé, et pour certaines, c'est une opportunité de reconsidérer et éventuellement changer à la fois sa manière d'agir et ses priorités. L'esprit a changé : les forces pourront-elles être réorganisées ? Y a-t-il de la place pour le plaisir, encore maintenant, et où ? Le jeu devient maintenant difficile. Les outils dans nos mains ont changés et les risques sont encore plus réels. Le piratage est un jeu, mais maintenant, le niveau de risque doit sérieusement être pris en considération pour se protéger soi et les personnes qui nous entourent, pour éviter la prison ou d'être exploités. Les médias, les entités politiques et les vendeurs essaient toutes les possibilités de mettre leur pied la où ils peuvent avoir un minimum de contrôle sur les usagers. C'est pourquoi le contrôle, même partiel, signifie le pouvoir. Nous pouvons imaginer comment l'internet, ses systèmes d'exploitation et ses logiciels opèrent. Nous pouvons clairement voir ce qu'il se passe, et pourquoi ça marche de cette manière et pas autrement. Et ceux qui essaient de mettre la main sur le réseau et sur les utilisateurs d'Internet n'ont souvent pas (et heureusement) les capacités nécessaires pour comprendre les concepts sur lesquels sont basés le réseau. Le fait que l'Internet est basé sur des règles techniques avant les règles morales nous est d'une certaine façon moins naturel à appréhender. Il advient donc que les ordinateurs et l'internet sont sujets à la législation, le contrôle et les restrictions gouvernementales, bien que l'Internet et les ordinateurs soient par définition les mêmes partout dans le monde et que l'Internet soit crée par tous les utilisateurs de manière égale. Si ça parle d'ordinateurs, de disques dur, d'analyse technico-légale, de censure ou d'écoute téléphonique, les choses sont toujours les mêmes. Nous pouvont comprendre cela, alors que les politiciens ont tous dans les 50 ans et qu'ils en ont passé presque 30 dans la carrière politique. Les technologies de l'information ont fait un sérieux bond pendant les 15 dernières années, et donc il est normal que les politiciens ne comprenne rien aux technologies de l'information et ce qu'il en retourne. Autre chose, les choix politiques doivent avoir le support du peuple, mais le peuple n'a pas une meilleure compréhension des technologies de l'information que les politiciens. Cela explique pourquoi personne encore n'a vu une loi avec un véritable sens du point de vu technologique et atteindre son but (qui généralement consiste à augmenter la sensation de la sécurité). Nous pensons que nous sommes ceux qui démontrent que l'Internet suit des lois différentes. C'est parce que nous sommes la génération née avec Internet et que nous sommes capables avec enthousiasme de parler le langage de l'Internet. Nous, en tant que développeurs, ne pouvons pas écrire les lois ni directement les changer, mais nous pouvons développer des logiciels démontrant de manière pratique à quel point ces lois sont dans l'erreur. Il semblerait que ce soit pour nous la manière la plus efficace et la moins douloureuse de montrer leurs erreurs aux politiciens et de donner aux citoyens leur liberté, gouvernée sur Internet par des logiques mathématiques. C'est dit dans la Conscience d'un Hacker: "J'ai fait une découverte aujourd'hui. J'ai trouvé un ordinateur. Attends une minute, c'est cool. Ça fait ce que je veux. Si ça fait une erreur, c'est parce que je me suis planté. Pas parce qu'il ne m'aime pas... Ni parce qu'il se sent menacé par moi... Ni parce qu'il pense que je suis un petit filou... Ni parce qu'il n'aime pas enseigner et qu'il ne devrait pas être là..." L'idée de Mentor en 1986, et nos idées depuis, sont encore les mêmes pour tout l'internet, même maintenant. Si cette liberté d'agir est dérangeante pour quelqu'un, c'est notre devoir de rappeler que cette liberté ne peut pas être supprimée. Les raisons du hacking ont changé, s'exposer est devenu embarrassant... et les identités anonymes ont augmentée : julia@winstonsmith.info, dédiée à l'expension des logiciels écrit pour démontrer l'incompatibilité des lois pour le contrôle et la limitation des utilisateurs et de l'Internet. ------[ 1. Qu'est ce qu'une loi incohérente ? Comme la tendance à créer des lois inadéquates est en hausse, pour ce qui concerne le contrôle de l'internet et de ses utilisateurs, nous ressentons le besoin de remettre en question ce modus operandi [NDT : Mode opératoire en latin]. Le but est de créer un logiciel conçu pour démontrer que la plupart des lois qui restreignent et contrôlent l'Internet sont inadéquates (pas nécessaires, contre-productives et risquées). Vous, plus que toutes autre communauté, avez la chance de démontrer que toute loi essayant de : - réguler l'Internet ou l'utilisation des ordinateurs d'un point de vue gouvernemental - contrôler les communications des usagers (en les filtrant et les limitant) ne sont pas applicables d'un point de vue scientifique, car elles sont de simple transpositions des lois de la vie réel dans la dimension numérique. En général, notre ligne d'action peut se résoudre à cette logique : - Une loi est promulguée (détention de données, recherche de profils, interdiction de publier...) - Nous analysons deux aspects : 1) la structure logique de la loi, pour comprendre ses bases 2) les implémentations techniques de la loi - A partir de (1), nous cherchons et développons les idées non considérées - De (2) nous développons des solutions techniques - La nouvelle comme quoi la loi est un échec doit être diffusée. En fait, notre savoir n'a pas d'impact sur les politiciens, l'audience et les usagers s'il reste dans nos mains. Un exemple de loi-renversée-et-attaque peut être: 1) Point de vue humain : Un état déploie une loi interdisant de parler de cryptographie. 2) Point de vue technique : Être le propriétaire d'un nom de domaine d'un site parlant de cryptographie vous envoie en prison 3) Implémentation Technique : Une fois que la police connaît l'existence d'un serveur dans ses frontières contenant du contenu illégal, un mail est envoyé pour demander de retirer les pages, ou dans un temps assez court, le propriétaire du domaine sera arrête et le serveur éteint. Contre-mesures Humaines : 1a) Migrer vers un blog/site gratuit hors de votre pays Contremesures d'un Hacker : 1a) Utiliser le service de serveurs anonymes de TOR, joignables à travers l'internet grâce à un proxy dans un autre pays.[1] 1b) Utiliser un site FreeNET [2] 1c) Poster votre contenu avec un remailer anonyme sur une mailing liste [3] 1d) Publier votre contenu via le réseau pair à pair en utilisant une signature numérique pour les téléchargements de confiance, avec le premier noeud publiant les données hors du pays 1e) utiliser un site qui se déchiffre lui-même par javascript, capable de se protéger la couche session et évitant les bots qui ne supportent pas le javascript (-> Les Renseignement de sources ouvertes aussi [NDT "Renseignement de sources ouvertes" est la traduction française consacrée de "Open source intelligence"]), dans un blog libre en dehors de votre pays 1f) Un serveur distribué, comme le "Projet R*", de "Autistici/Inventati" [5] 1g) Utiliser une de l'infinité des autres solutions, car nous devons nous mouvoir à travers les RFCs, disséminer automatiquement les logiciels, et toujours trouver de nouveaux moyen d'outrepasser les descriptions des lois. L'Internet pour les simples utilisateurs est seulement "le web", même si nous avons plus de possibilités. Mais nous n'arrivons pas à garder en ligne nos serveurs, ou a publier des informations sans problèmes, car nous n'utilisons pas les meilleures solutions de chiffrement fort et de distribution réseau. ------[ 2. APPROFONDISSEMENT ET VÉRITABLE CIBLE : RIPA III RIPA (Investigation de données électroniques protégées par un chiffrement - a le pouvoir de demander la divulgation, [6]). En d'autres termes, il est possible pour un enquêteur du Royaume Uni de demander le mot de passe protégeant un fichier chiffré : en cas de refus ou d'impossibilité de donner le mot de passe, l'utilisateur est punissable jusqu'a deux ans d'emprisonnement. Comparé à la vie réelle, c'est l'équivalent d'une loi exigeant d'un suspect qu'il ouvre son coffre fort aux enquêteurs. Mais les ordinateurs et l'Internet suivent d'autres procédés. De plus, cette loi rend spécifiquement moins sûr le Royaume Uni. Voyons pourquoi : - Une personne chiffrant une archive contenant des secrets l'incriminant pour une peine de plus de deux ans va préférer 2 ans d'emprisonnement plutôt que révéler son mot de passe. - Celui qui chiffre une archive ne contenant pas de secrets compromettant, mais sensibles d'un point de vue politique, ou des informations personnelles, le donnera à la police (ou, plus souvent, à des consultants privés qui vont procéder à une recherche d'informations). - La sécurité théorique n'est pas accomplie en déléguant le pouvoir de contrôle à une institution, car si elle est corrompue, ça peut être la porte de toute sorte d'abus. La sécurité théorique peut s'accomplir en empêchant de futurs crime, non en appliquant des contrôles dans un but dissuasif. En suivant la logique présentée dans le point 2 de ce document, le moyen le plus sûr d'éviter RIPA-III est d'utiliser un moyen plus sophistiqué de protection. Les modèles de chiffrement habituels définissent des acteurs (Alice et Bob) et des scénarios (Avec Mallory, Eve et la famille Attack). Le modèle de chiffrement requit pour cacher des données et la présence de données chiffrées est la steganographie [7]. Dans notre scénario, cela suffit pour démontrer l'absence de données chiffrées, et la cryptographie offrant un "Déni plausible" est notre solution. [NDT: Le déni plausible est "la possibilité pour une personne soupçonnée d'utiliser un logiciel de chiffrement de nier de manière tout à fait plausible l'existence d'un fichier chiffré créé par ce logiciel." C'est le terme consacré]. La "Deniable Cryptography" [NDT : Par contre, il n'y a pas de terme consacré pour "deniable cryptography"] permet à un utilisateur de protéger ses données en niant de manière plausible l'existence de données cachées dans un fichier chiffré. Ce moyen de protection est très utile quand un utilisateur est forcé de donner son mot de passe par des méthodes violentes ou intimidantes [8]. Les différentes formes de "Deniable Cryptography" utilisées actuellement sont : - TrueCrypt [9] implémente un chiffrement du disque complet. L'image d'un second disque chiffré est caché dans les secteurs libres du système de fichier. Comme un disque TrueCrypt est d'abord rempli avec des données aléatoires, il n'est pas possible de différencier les secteurs libres contenant des données aléatoires par rapport à des secteurs contenant des données chiffrées du volume caché. En conséquent, un utilisateur de TrueCrypt peut plausiblement nier l'existence d'un disque caché. - OTR (Off-the-Record Courriel) [10] est un protocole cryptographique fournissant un chiffrement fort pour la messagerie instantanée. Après authentification de l'utilisateur (par comparaison de l'empreinte de la clé) il chiffre les messages sans vérifier leur signature numérique. Ce manque de vérification d'intégrité permet à l'expéditeur du message de nier de manière plausible l'envoi du message puisqu'un autre utilisateur pourrait en être à l'origine. - 2c2/4c [11]: Il prend en entrée deux fichier et génère un autre en sortie. Suivant le mot de passe utilisé, il décrypte l'un ou l'autre des fichiers. Le but de la "deniable cryptography" est de nier l'existence elle-même d'une quelconque information. La stéganographie a le même but (la stéganalyse est efficace uniquement après que l'existence de données cachées ai été prouvée), mais elle est plus ambitieuse dans la dissimulation de donnée à l'adversaire car elle choisi prudement un conteneur qui empêche un analyste de réaliser que ce conteneur couvre des informations cachées. Dans le cas de fichiers chiffrés, l'attaquant sait déjà que le fichier risque de contenir des informations valables; le but devient maintenant de nier l'existence des données dans le conteneur exposé : dans une telle situation, la "deniable cryptography" un un meilleur ratio signal-à-données-protégées que la stéganographie. ------[ 3. Elettra Elettra peut générer des archives de plusieurs fichiers où un fichier différent est extrait suivant le mot de passe fourni. Cela vient du fait que le mot de passe utilisé pour le chiffrement n'est pas seulement une "information requise pour déchiffrer" un des fichiers de l'archive, mais également une "information requise pour trouver" un fichier dans une archive. Chaque fichier est chiffré avec son mot de passe propre. Chaque mot de passe déverouille un seul fichier. Comme Elettra peut faire du remplissage aléatoire de l'archive, il est impossible de savoir combien de fichier elle contient. Le "déni plausible" consiste en permettant à l'utilisateur de nier l'existence des autres fichiers que celui dont il aura révéler le mot de passe. Elettra base sa sécurité sur des principes mathématiques dérivés du reverse engineering sur RIPA et de ses interprétations possibles. Elettra est un programme en ligne de commande développé pour les systèmes POSIX (testé sous Linux, cygwin et MacOSX). Une interface graphique développée en wxWidgets a été développée et chaque logiciel, avec la signature gpg suivante, est disponibles a l'adresse suivante: https://www.winstonsmith.info/julia/elettra Malgré le fait que l'interface ai été codée en un dixième du temps passé à développer Elettra, elle aide de façon significative un grand nombre d'utilisateurs à comprendre et utiliser le programme. La facilité d'utilisation d'une distribution d'un logiciel à rarement été le but des Hackers, mais cette fois, nous voulons surligner et propager un principe d'action/réaction rendu possible par les technologies open source et la capacité des réseaux de communiquer rapidement leur contenu. L'interface graphique est un compromis nécessaire entre service et usabilité :) Comment utiliser Elettra: user@linz:~/elettra/src/build$ ./elettra ./elettra by julia@winstonsmith.info, http://www.winstonsmith.info/julia You should improve the quality of life, using privacy enhancing technology! ./elettra encrypt outputfile [size increment]% plainfile[::password] ./elettra decrypt cipherfile [password] [output directory] ./elettra checkpass password(s) ./elettra example (show examples of use) - passwords, if not available, is ask with echo off Elettra en mode chiffrement : user@linz:/tmp$ ./elettra encrypt output 10% file1::passwd1 file1::passwd2 user@linz:/tmp$ ls -l file1 file2 output -rw-r--r-- 1 user user 7132 Jan 15 18:35 file1 -rw-r--r-- 1 user user 36287 Jan 15 18:35 file2 -rw-r--r-- 1 user user 29027 Jan 17 10:35 output Plusieurs générations du fichier /tmp/output, avec le même fichier/mot de passe: -rw-r--r-- 1 user user 30744 Jan 17 10:36 output -rw-r--r-- 1 user user 32018 Jan 17 10:36 output -rw-r--r-- 1 user user 29533 Jan 17 10:36 output Un des buts de l'algorithme est que la sortie est différentes pour la même entrée. En pratique, vous pouvez garder la plus petite sortie. Voici quelques sorties avec des bourrages de 100% -rw-r--r-- 1 user user 65198 Jan 17 11:43 output -rw-r--r-- 1 user user 54336 Jan 17 11:43 output -rw-r--r-- 1 user user 57579 Jan 17 11:43 output -rw-r--r-- 1 user user 64938 Jan 17 11:43 output -rw-r--r-- 1 user user 67284 Jan 17 11:43 output -rw-r--r-- 1 user user 29219 Jan 17 11:43 output -rw-r--r-- 1 user user 48946 Jan 17 11:43 output -rw-r--r-- 1 user user 37260 Jan 17 11:43 output et quelques uns avec 1000% -rw-r--r-- 1 user user 247351 Jan 17 11:43 output -rw-r--r-- 1 user user 109079 Jan 17 11:43 output -rw-r--r-- 1 user user 303188 Jan 17 11:43 output -rw-r--r-- 1 user user 301261 Jan 17 11:44 output -rw-r--r-- 1 user user 290419 Jan 17 11:44 output -rw-r--r-- 1 user user 288720 Jan 17 11:48 output -rw-r--r-- 1 user user 114376 Jan 17 11:48 output -rw-r--r-- 1 user user 169173 Jan 17 11:48 output -rw-r--r-- 1 user user 197720 Jan 17 11:48 output -rw-r--r-- 1 user user 114376 Jan 17 11:48 output -rw-r--r-- 1 user user 266452 Jan 17 11:48 output Le troisième argument est le nom de l'archive qui va être créée. Le quatrième argument (optionnel) est le taux de bourrage aléatoire qui va être inséré au début ou a la fin de l'archive compressée. Le bourrage peut varier entre 10% et 1000%. voici comment le chiffrement marche avec Elettra : Elettra a cinq commandes : encrypt, decrypt, checkpass, help et example. exécutées de la manière suivante : elettra command [args] Nous voulons chiffrer les fichiers /tmp/ls-manpage et /tmp/ps-manpage. Deux fichiers = deux mots de passe, nous utilisons "weirdness" et "foxnewsshower", dans l'ordre suivant: ls-manpage (weirdness) ps-manpage (foxnewsshower) $ ./elettra encrypt /dev/shm/output 15% /tmp/ls-manpage::weirdness \ /tmp/ps-manpage::foxnewsshower Les tailles de nos fichiers sources sont : $ ls -l /tmp/ls-manpage /tmp/ps-manpage -rw-r--r-- 1 user user 7132 Jan 8 05:57 /tmp/ls-manpage -rw-r--r-- 1 user user 36287 Jan 8 05:57 /tmp/ps-manpage La ligne de commande spécifie 15% de bourrage aléatoire. Les arguments obligatoires pour la commande "encrypt" sont le fichier de sortie, les fichiers d'entrée et les mots de passe. Si les mots de passer ne sont pas insérés via la ligne de commande, ils sont demandés interactivement sur l'invite de commande. Avant le chiffrement la compression gzip est effectuée, le fichier de sortie est : $ ls -l /dev/shm/output -rw-r--r-- 1 user user 42615 Jan 8 06:13 /dev/shm/output Maintenant nous avons une archive chiffrée. La routine de déchiffrement d'Elettra prend un mot de passe, et éventuellement le répertoire d'arrivée : $ ./elettra decrypt /dev/shm/output weirdness /dev/shm/ $ ls -l /dev/shm/ -rw-r--r-- 1 user user 7132 Jan 8 06:32 ls-manpage -rw-r--r-- 1 user user 42615 Jan 8 06:13 output Si vous voulez vérifier vos mots de passe, utilisez la commande "checkpass" : ./elettra checkpass actresss weirdness shoeless password(s) combinations work ok, with password block of 512 bytes, use it. Si les commandes checkpass ou encrypt reçoivent une mauvaise séquence de mot de passe, c'est notifié aux utilisateurs. Voilà à quoi un fichier de sortie Elettra ressemble: RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRKKKKKKKKKKKKKKKKKKKKKKKKCCCCRRRRRRRRRRRRRRR RRRRRRRRRRRRRRRRRRRRRRKKKKKKKKKKKKKKKKKKKKKKKKCCCCRRRRRRRRRRRRRRRRRRRRRRR RRRRRRKKKKKKKKKKKKKKKKKKKKKKKKCCCCRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR /-- end of initial keyblock, start of data section --/ RRrrrrccccllllddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddffffFILE1PPPPPRRRRRRRRRRRRRRRRRRRRRRrrrrcc ccllllddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddffffFILE2PPPPPRRRRRRRRRRRRRRRrrrrccccllllddddddddd ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd ddddddddffffFILE3PPPPPRRRRRRRRRRRR K = Clé C = checksum de mots de passe R = Bourrage aléatoire (Avant le début) r = Octets chiffrés aléatories (AES CBC) c = checksum de mots de passe l = Longueur du fichier compressé d = Données compréssées f = Longueur du fichier FILE1, FILE2, FILE3 Nom des fichiers décryptés P = Bourrage chiffré pour remplir le bloc AES-128 minimal Le bourrage aléatoire est généré avec des fonctions cycliques SHA256. K et C sont dans le premier segment, appelés "Bloc initial", les autres composants sont les données de l'archive elettra. Voilà comment le fichier est crée: encrypt prend les arguments OUTPUT PADDING FILE[1..N] PASSWORD[1..N] try for n in [1 .. N] HASHp_n =hash(PASSWORD_n) Chacun de ces hashes est requis pour obtenir un nombre unique dépendant du mot de passe. Ce nombre unique (qui est le modulo de la taille du 'Bloc Initial') est appelé "point d'entrée", et par conséquent permet d'obtenir un point d'entrée pour tous les fichiers de l'archive. Il est appelé point d'entrée car il identifie le point de départ d'où la lecture va démarrer lors du déchiffrement. bloc initial: /----------------- keyblock length: 512 + (x * 256) ----------------/ +--------------+--+----+--+--------+--+----------------------+--+---+ | | | | | | | | | | | Aléatoire | | R | | R | | Aléatoire | | | | | | | | | | | | | +--------------+--+----+--+--------+--+----------------------+--+---+ ^ ^ | | point d'entrée --+ | +- structure de mot de passe (32 byte) La longueur du bloc n'est pas codée en dur, mais sa valeur est choisie de manière adaptative afin d'éviter la collision des blocs de mot de passe. Une collision arrive si deux blocs de mots de passe se chevauchent. Évidement, une collision peut désorganiser les informations contenues dans le bloc initial et donc doit être évitée. Le bloc de structure de mot de passe est chiffré avec PASSWORD[1..N], et contient un checksum (entier non signé) et une KEY[1..N] 28 octets. Cela signifie que chaque calcul de mot de passe identifie un point d'entrée dans le bloc initial où la clé est chiffrée dans 28 des 32 octets du bloc de structure du mot de passe. Les autres données du bloc initial sont aléatoires. Algorithme, donné en pseudo code : for x in [1..12]: { size = (random_between(1, 12) * 256 ) + 512 size = size + ( N * 256 ) create keyblock[size] for n in [1..N] add_password_hash_to_keyblock(HASHp_n); if keyblock[size] has collision continue; else use size as good value } Quand la taille d'un bloc est trouvé, continuer jusqu'a l'étape d'après : la création de la section de données. for n in [1..N]: { GZ-FILE-LEN_n = gzip(FILE_n) } totalsize = keyblock size for n in [1..N]: { MIN-EP_n = totalsize; totalsize = totalsize + (GZ-FILE-LEN_n * PADDINDG% ) MAX-EP_n = totalsize; totalsize = totalsize + GZ-FILE-LEN_n } Dans cette étape, nous allons prendre la longueur totale de l'archive Elettra pour terminer en utilisant les deux tableaux MIN-EP[1..N], MAX-EP[1..N] défini plus loin. Supposons chiffrer deux éléments: /----- GZ-FILE-LEN 1 ------/ /----- GZ-FILE-LEN 2 -----/ +-------+--------------------------+-------+-------------------------+ | | | | | | R1 | GZ-FILE1 | R2 | GZ-FILE2 | | | | | | +-------+--------------------------+-------+-------------------------+ ^ ^ ^ ^ | +--- MAX-EP1 MIN-EP2 + | +- MIN-EP1 +-- MAX-EP2 R1 et R2 sont deux blocs de bourrage. La dimension de ces blocs dépend de la valeur en % de bourrage, la taille du fichier compressé et un peu d'aléatoire. Le point d'entrée pour identifier la position de FILE DOIT se trouver entre MIN-EP_n et MAX-EP_n. Ce deuxième point d'entrée est dérivé de KEY_n et donc les clés KEY[1..N] sont choisies pour satisfaire les besoins de l'algorithme ci dessous: for n in [1..N]: { for x in [1..10000]: { KEY_n = random() HASHk_n = HASH(KEY_n) EP_n = HASHk_n % totalsize if( MIN-EP_n < EP_n < MAX-EP_n) return KEY_n; } } /----- GZ-FILE-LEN 1 -----/ /----- GZ-FILE-LEN 2 -----/ +---+-------------------------+----+---+-------------------------+---+ | | | | | | | | R | GZ-FILE1 | R | R | GZ-FILE2 | R | | 1 | | 2 | 3 | | 4 | +---+-------------------------+----+---+-------------------------+---+ ^ ^ ^ ^ | | | | +--EP1 MIN-EP2--+ + EP2 + B R1 est le premier bloc de bourrage (de MIN-EP1 à EP1) R2 est le bourrage d'après fichier(de EP1 + GZ-FILE-LEN à MIN-EP2) Chaque fichier est écrit entre deux séquences aléatoires de blocs de bourrage. La longueur de ces séquences est aléatoire. Chaque longueur est possible avant et après le fichier donné, parce que l'attaquant ne connaît pas le pourcentage de bourrage requit au moment du chiffrement. Maintenant l'algorithme à récupéré: 1) La longueur du bloc initial 2) Les points d'entrée issus des mots de passe 3) Les clés 4) Les sections de bourrage 5) La structure interne utilisée pour garder le nom des fichiers, leur longueur et les checksums sauvegardés avant les données du fichier, juste après EP_n. Maintenant il s'agit juste d'ouvrir un fichier, écrire le bloc initial et la section de données, puis sauvegarder. Séquence de déchiffrement d'Elettra: 1) Les mots de passe et fichiers d'entrées sont donnés 2) Le mot de passe est hashé et cette valeur (appelée HASHp) est utilisée pour récupérer la taille du bloc initial. Les valeurs possibles sont récupérées avec l'algorithme suivant : for x in [1..80]: try_size = 512 + ( 256 * x ); Quand le mot de passe est capable de déchiffrer les 32 octets pointés par HASHp modulo try_size et de vérifier le checksum interne, la taille du bloc initial est identifiée. 3) Lecture de la clé à partir du bloc initial, déchiffrement et évaluation de son hash modulo la longueur totale du fichier. 4) Déchiffrement des 32 premiers octets. Si le checksum est correct, déchiffre la longueur du fichier, le décompresse et le renomme avec son nom original. Conclusions à propos de cet algorithme: Un analyse qui doit analyser des fichiers chiffrés avec Elettra ne sera pas capable à priori d'émettre de supposition, puisque cet algorithme vise à se comporter de manière aléatoire, afin de rendre plausible toute sortie. Chaque fichier de sortie de Elettra peut contenir un ou plusieurs fichiers et il est plausible d'affirmer que c'est le seul fichier chiffré, car le bourrage en début et en fin de fichier déchiffré ressemble à du bourrage aléatoire plausible. La sécurité de cet algorithme est basée sur la propriété des données chiffrées d'apparaître entièrement comme aléatoire par une analyse statistique. Une attaque qui serait capable de détecter les différences entre données compressées et chiffrées et données aléatoires pourrait exploiter Elettra. Un exemple de déni plausible : Un analyste à trouver un fichier de 1.4Mo, chiffré avec Elettra. En utilisant le mot de passe fournit par l'utilisateur, il extrait un .pdf de 2Mo. Puis les cas suivants sont possibles : A: L'utilisateur a utilisé Elettra avec un bourrage de 40% proportionnel. La taille du fichier était 2Mo et il a été compressé en 1Mo. Avant le début et la fin du fichier, un total de 400ko de bourrage aléatoire a été rajouté. Mais il se pourrait aussi que : B: L'utilisateur a utilisé un .pdf de 2Mo comme fichier de couverture, et un fichier de 200k de données secrètes. La taille compressée du .pdf est de 1Mo, mais l'autre fichier ne peut pas être compressé plus, donc sa taille reste 200K. Du fichier .pdf compressé a 1Mo + 200k de fichier secret, et 16 % de bourrage proportionnel, on obtient un fichier résultat de 1,4Mo. Les deux cas sont plausibles : même si l'analyste a le mot de passe qui extrait un .pdf de 2Mo compressé en 1Mo. L'analyste peut inspecter chaque morceau du fichier déchiffré, mais la position d'un fichier chiffré dans l'archive ne donne aucune information, comme il est possible qu'il y ai des données aléatoires en début et en fin de chaque fichier de l'archive. Elettra a été développé avec ces attaques et contre-mesures en tête: 1) Les fichiers sont chiffrés avec AES-128, le bourrage aléatoire est une sortie d'une fonction SHA, et il est mathématiquement impossible de dire si c'est des données chiffrées ou simplement du bruit; 2) Il n'est pas possible d'émettre des hypothèse basées sur la taille finale de l'archive (i.e. vérifier si le bourrage est une valeur entière ou une fraction est inutile car le pourcentage fourni par l'utilisateur n'est pas utilisé tel quel, mais une nouvelle valeur en est dérivée; 3) Les checksums utilisés pour vérifier l'intégrité des mots de passe sont implémentés et vérifiés avant le déchiffrement des fichiers; 4) Dans un algorithme fonctionnant en mode CBC, les premiers octets sont initialisés avec des valeurs aléatoires, ce qui rend la cryptographie plus forte. 5) La distribution probabiliste des données aléatoires est égale au début et à la fin du fichier chiffré. 6) La taille minimale des mots de passe est de 6 octets. 7) La découverte d'un mot de passe ou d'une clé ne donne aucune information utile à un attaquant pour ses attaques. Elettra comprend plus ou moins 1600 lignes de code. Chaque autre codeur peut trouver une manière différente d'accomplir la même tâche, même de manière moins complexe que celle présenté dans cet article, qui requiert de se rappeler de multiples mots de passe. Dans ce genre de programme, il y a toujours de la place pour les améliorations. Il est important de garder à l'esprit que dans quelques semaines, quelqu'un peut développer quelque chose d'inopiné et d'imprévu par la loi, mais cependant totalement légal. ------[ 4. L'IDENTITÉ ANONYME: julia@winstonsmith.info Le nom "Julia" vient de la nouvelle "1984", ainsi que tout le projet Winston Smith. Julia montre le chemin à Winnie, les outils et les motivations pour la liberté. Par conséquent, cette Julia - Juste quand l'Internet se bat pour sa liberté - veut être celle qui démontrera combien les lois écrite par les politiciens sont incohérentes, contradictoires et inutiles. Disséminer des techniques ayant pour but la protection des droits de l'homme sur l'internet est un but qui n'est pas apparenté à une visibilité personnelle. Au contraire, dans certains cas, la sécurité personnelle peut être mise en danger par la propagation de techniques. Et donc, d'autre moyens de propagation ont été évalués. Nous avons crée une identité anonyme de groupe pour avoir un point de référence unique (un nom, un mot clé, un idéal). Cette expérience apporte quelques avantages: - La visibilité est obtenue comme un effort collectif, et peut survivre au travail personnel. - Les développeurs minimisent les risques légaux et personnels. - La comparaison et la conservation de l'identité de chacun au sein du groupe est réduite - Pour le moment, il n'y a pas de blog ou de site web central, car centraliser signifier le risque d'être censuré, attaqué ou d'attirer des attentions non désirées. - L'identité collective est identifiée par une signature numérique, et les média peuvent être distribués en utilisant le p2p, les sites web, blogs, usenet. Au plus de choix nous avons, au plus d'options nous pouvons considérer. - Nous somme un réseau fait de gens autour du monde, avec des talents, des savoir et des capacités à véritablement comprendre les problèmes apparentés à nos pays. Ceux qui veulent rejoindre l'équipe de julia@winstonsmith.info peuvent écrire un mail (nous conseillons vivement l'utilisation d'un remailer anonyme ou de TOR et de jeter son adresse mail.) L'identité anonyme n'aura pas de site web dédié, Elettra peut être récupéré à partir de l'URL http://www.winstonsmith.info/julia/elettra. Notez que c'est juste pour la commodité, et que ça n'a aucun lien avec l'identité anonyme. La seule manière de vérifier l'authenticité de la source est la signature numérique du média, utilisant la clé suivante : -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.7 (Darwin) mQGiBEdqIL0RBAChcjI1XSCY6uBj8tt822t3QAIrbUgIL1f+fknclPHPQqjyv+DI H793WaP2TlJ0mPNJqK2D8pyhO1l8MMzZIzNq+86zblogLklYUo68LbznUPJYNl0f 5Idg6DoNHO7JyXxU1aKq15sLD92izRX5g6Jx7V14DTP/gIB+vZjtcykBZwCgmqC1 YZv/KKVtoSyX/QR0YdJk5ecEAJPurJEm82wshma7RxuOL5UDBhRR4WUBquYa5L35 rTeswSZ/5MFAX4G3VWNb28RZMcDKrd2XIbPA/NI8uVNPEmtmdrF4bA7IGYYPmwuz SsL3MN0YcDdh8slrqNBuBFNsH95xm4FQKWc+rPPYvZVSsLBosJz9OXPJJYVh61X8 KDSzA/9bovS6D8e02en5t3XScUSBdU4GCHqqgRLpbfTECSXm2KhA2TtnSQ84lqCL eKs4i955xmF6vQ3bZIATpohSPBz/CdvVPcwNIffVxAwX4bDJDdkXkvd2prWibBJ4 VSzcNVfyvRgYGbrTjq7Aok1f3d/GCQz0oMzGLhs8ZY0xkRNJD7Q0anVsaWEgKGFu b255bW91cyBpZGVudGl0eSkgPGp1bGlhQHdpbnN0b25zbWl0aC5pbmZvPohgBBMR AgAgBQJHaiC9AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ83466PEEGF9S BgCeIrFkSGSUlOYhXZCNcGmmMrB1h1wAnRUL6+VOQ0SxbYTnTpDIMgGwA3byuQL1 BEdqIL0QC6C3T5hpVjgCTHUjbhu/gql/hHQV0u6av5fDGAYZmQPcDRYb5FP76+Kp 6DDLsSDo95DG1STO8QjRNrrz8tOftC6+F4kMxh1KvcyWEeam8GxYMytpQwDN2Nqr J3tV9Q24Nv4wUd7vHNqBlcJKeWyQGxBzebelBgAOyMb4YsIGEZJgR4F+o1R2jQYW rcNPp11aJtxyl2dApaHulzEjMCIDNKnJpbi4lLuqGVaht5NMypxsRnclb1Nw87VY jrhyJNGT4tojm7ERzJjNLUenTgda788ivWIse68t5WHh7BIGMyNiMKMGjI2R81ei c+M+O/wL59eh6EGv7V3nZz6qB07f8i3fsNgUF1YFrB2nHtEQTWvb62oGZG+OP5Fp tGyNhH3HN1VhBRg0eGSEZCGFHZU2chGyOPMqynfsf7o8dkNi8+Ydd0eIn3TlH6of Xy/TqlQAWS5BUhBX7CEpiO1XPh07o2FLyRPQiElSJ3inCh4sOde/vuFp7RMAAwYL n3i13almOtHB4qz0J4h/J8TgDaHYmAidYRpr9m6LpKysomHNrtj2U0Am2DmjI25H LvkOECX9x9yp98WGlzOllZA++YnCSpuG4b03VsLPqmD/r/VdcXrli5cs+UB7O8L2 2P19L+RO89+SieDEKHrKbfkkM3w4OJ+5/mfxejNfoRh0/GBJgoWGj+h/dChmvE7O alCFDJ5q8Q1QyHMNbMuZxfub+TnpINeHkwiMeaFZRcmaBtjb7T3J+EPf0dUtxXBQ 0F8RzypLEI8FLV/SU+pkynCkp2o6wnRVs8Lms6xci1WE1asr+2Xp9vLN4ppIfo6x reYKegPcFAw21UuBx6c7OKzEwRFB0OUSGS1Mdzt0ekq2j6Axk5WVShsDcdW+SI5N fKKqSCWSQE9dbekHUXpBkkbI85uJ2F6QOtMFEJGlw5XTAvJyuamVqXyq6SE5AyVL bQ9bfCtizrCOn3h547m7nm6RQ+3JfnCVjJqB9eFtP6WFIsDKKIhJBBgRAgAJBQJH aiC9AhsMAAoJEPN+OujxBBhf16YAnRJLQTTY6JiJGDJG4f2JJFUxereAAJ9hXs0P /yO+HtkGHnfSuwoaRvSQdw== =+vKf -----END PGP PUBLIC KEY BLOCK----- Toute personnes partageant les objectifs du projet de Julia peut contacter l'adresse julia@winstonsmith.info (de manière anonyme ou non). Les futurs objectifs ne sont pas encore clairs. Il pourrait être intéressant de rassembler une liste des lois du monde et des technologies qui les rendent inutiles. Cette activité peut être quelque part considéré comme un délit, c'est pour cela que nous choisissons une identité anonyme, et aucun média fixe pour publier notre materiel. Julia n'est pas née de la volonté d'une seule personnes, mais parce que nous ressentions le besoin d'autres personnes d'être capable de partager, et donner des informations et du savoir technologique. Julia est juste un repère, toute personne partageant le même but peut les suivre sans lui. Aucun vendeur ni État, même si nous les respectons, ne peut régir Internet. Les technologies du libre appartiennent à tout le monde. -------[ 5. RÉFÉRENCES [1] http://www.torproject.org/docs/tor-hidden-service.html.en [2] http://en.wikipedia.org/wiki/Freenet [3] http://www.andrebacard.com/remail.html [4] http://pajhome.org.uk/crypt/sda/index.html [5] http://www.autistici.org/en/who/rplan/index.html http://dev.autistici.org/orangebook/ [6] http://www.opsi.gov.uk/acts/acts2000/ukpga_20000023_en_8 [7] http://www.cl.cam.ac.uk/~rja14/Papers/jsac98-limsteg.pdf [8] http://en.wikipedia.org/wiki/Rubber-hose_cryptanalysis [9] http://en.wikipedia.org/wiki/TrueCrypt [10] http://en.wikipedia.org/wiki/Off-the-Record_Messaging [11] http://lcamtuf.coredump.cx/soft/2c2.tgz