The only laws on the Internet are assembly and RFCs

                             ==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