Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 28-11-2016 17:02:00

Arbi
Membre
Inscription : 28-11-2016
Messages : 3

criptographie AES-128 CTR

Bonjour,
Si quelqu'un peut m'aider à resoudre ce problème de criptographie.

merci d'expliquer en francais c'est plus compréhensible pour moi

merci c'est urgent

l'exercice est en anglais malheuresement:

1. AES-128 CTR misuse scenario
A block cipher such as AES-128 is usually used with a mode of operation. For this project we
will focus on the mode called CTR. The scenario of this project is the following: Alice and Bob
are exchanging messages using AES-128 CTR, however they are always using the same key and
initial value for the counter that is used in the CTR mode.
Here is an example of how Alice uses encryption to send messages to Bob using openssl command
line tool:
openssl enc -aes-128-ctr -kfile secret.key \
-nosalt -iv DEADBEEFCAFEBABEDEADBEEFCAFEBABE \
-in lorem.txt -a -out lorem.enc
File named secret.key contains the secret passphrase that Alice and Bob use to generate the
key. Files lorem.txt, lorem.enc and secret.key that were used for this example are available
with this project description.
In this scenario you do not know the key, but you know that Alice always uses the same value for
the -iv parameter (and all the options that she uses to call openssl are the same for each file that
she encrypts).


2. details

You will be given a zip file that contains a number of secret encrypted messages. Each message
is encrypted with the same secret key and your goal is to crack the code and obtain these secret
messages.
At the end of this project you should deliver a short report (maximum 6 pages excluding bibliographic
references and appendixes). Your report should contain:
1. short description of your code (diagrams) and implementation choices,
2. a description on how you obtained secret messages from ciphertexts (the vulnerability & the
security problem)

Dernière modification par Arbi (28-11-2016 17:03:40)

Hors ligne

#2 29-11-2016 05:11:06

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : criptographie AES-128 CTR

Salut,

si c'est urgent, c'est trop tard. Si je lis bien, il y a pas mal de boulot à faire, non ?


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#3 30-11-2016 09:16:12

Arbi
Membre
Inscription : 28-11-2016
Messages : 3

Re : criptographie AES-128 CTR

Bonjour, urgent c'est a dire jusqu'au week-end ce que vous pouvez résoudre le minimum.
Merci

Hors ligne

#4 30-11-2016 10:39:43

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : criptographie AES-128 CTR

Salut,

t'es Z'Arbi, toi ??? Tu crois qu'on va bosser pour toi, faire ton boulot et tout te donner, comme ça, pour rien, le résultat des efforts que tu pourras donner à je ne sais qui pour te faire valoir ? Perso, je ne sais rien faire en la matière sauf que, comme d'autres, je sais lire l'anglais et je comprends que tu nous prends pour des billes !

Dans le Monde de lundi dernier, rubrique "Improbabologie", il y a un excellent article sur la question : "pourquoi les incompétents se croient-ils si doués ?". La réponse, scientifiquement établie par deux chercheurs américains de Cornell à la fin du siècle dernier, tient en peu de mot : car l'ignorance pousse les incompétents à se surestimer, tandis que la connaissance pousse les autres à se sous-estimer. Le pire, dans la conclusion de ces travaux, et que l'ignorant refusera toujours de croire qu'il est très mauvais, tandis que les autres sont toujours heureux de constater qu'ils ne sont pas si mauvais qu'ils ne le craignaient.

Dans mon environnement professionnel, j'ai une collègue comme ça, elle est d'ailleurs assez insupportable.
Aux USA, ils viennent de mettre la main sur un champion du monde toutes catégories.
Et toi, veux tu être un de ceux-là ici ? Si oui, j'ai un prochain dîner un peu spécial, je veux bien t'y inviter ;-)

PS : oui, je sais, Audiard avait déjà trouvé la formule, énoncée dans une célèbre réplique des "tontons flingueurs", mais cela restait de l'ordre de l'intuition. Depuis 1999, grâce à ces deux chercheurs, on en a une preuve formelle.

Bon courage !


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#5 30-11-2016 13:56:11

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 992

Re : criptographie AES-128 CTR

Bonjour,

Je ne sais pas ce que tu cherches exactement. Si par (ta formulation est un cavalière) :

ce que vous pouvez résoudre le minimum.

tu demandes qu'on fasse ce travail à ta place et que tu n'aies plus qu'à copier/coller alors je rejoins freddy, c'est niet parce que :
-d'une part, ce serait contraire à notre charte de fonctionnement (Lire nos Règles)
- d'autre part, c'est un sujet très pointu, en anglais de surcroît, et que notre compétence en la matière est - hélas - limité. Acquérir cette compétence, demanderait une somme de travail irréalisable d'ici samedi (bénévoles, nous n'avons pas que ça à faire) pour que tu te l'appropries sans sourciller...
Si c'est l'anglais qui te gène, utilise Google traduction : ce n'est pas le top, mais avec un peu de bon sens et de recherche dans les divers dicos du net, tu obtiendras une traduction acceptable.
Si tu as un problème de fond, alors je te renvoie à la lecture de ces pages :
http://www.bibmath.net/forums/misc.php?action=rules
https://www.boxcryptor.com/fr/chiffrement
http://www.di.ens.fr/~fouque/mpri/des-aes.pdf
http://www.emse.fr/~dutertre/documents/synth_AES128.pdf

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#6 30-11-2016 21:28:18

Rossignol
Membre
Inscription : 19-06-2015
Messages : 290

Re : criptographie AES-128 CTR

Bonjour à tous,

Le problème paraît complexe, mais en fait c'est assez simple.
On utilise un chiffrement par bloc (ici c'est AES qui est utilisé parce qu'il est à la mode) en mode CTR :

Si on regarde bien le schéma, on voit que chaque bloc du texte clair est "xoré" avec un bloc qui sert de clé et qui provient du chiffrement par bloc (ici AES).

Compte tenu des conditions données dans le problème, ce bloc qui sert de clé ne dépend que du compteur donc tous les messages sont "xorés" avec le même flux de clés.
Tous ces messages sont "in depth" comme disent les Anglais.

Si on note $AES(i)$ le bloc du flux de clé qui correspond à la valeur $i$ du compteur, l'équation de chiffrement est

$$K(i) = C(i) \oplus AES(i)$$
 
où $K(i)$ est le bloc du crypto qui correspond au bloc du clair $C(i)$.
Notez bien que AES ne sert pas directement au cryptage, il sert à obtenir un flux de clés.

Pour deux messages $C_1$ et$C_2$, on aura deux cryptogrammes $K_1$ et $K_2$ tels que

$K_1(i) = C_1(i) \oplus AES(i)$ 
$K_2(i) = C_2(i) \oplus AES(i)$ 

L'opérateur xor étant nilpotent, on en déduit

$K_1(i)\oplus K_2(i) = C_1(i) \oplus AES(i) \oplus  C_2(i) \oplus AES(i)= C_1(i) \oplus C_2(i)$

On connait donc $C_1(i) \oplus C_2(i)$ : si on connait un mot de $C_1$ on peut en déduire une partie de $C_2$ (et vice versa).

Pour fixer les idées, j'ai chiffré avec openssl deux très courtes phrases en français.
J'ai obtenu les cryptos :

k1 = 'YYADVo556exkMnlOufPHmqOgxAJ75gvxyrbhgcc='
k2 = 'YMIUTYIr7qJiLylHo/aSmr+gwAI87Bj5138='

Les cryptos sont en base64 (c'est l'option -a sur la commande openssl), il faut les convertir en chaines binaires et les xorer :


import base64
k1 = base64.b64decode('YYADVo556exkMnlOufPHmqOgxAJ75gvxyrbhgcc=')
k2 = base64.b64decode('YMIUTYIr7qJiLylHo/aSmr+gwAI87Bj5138=')

xored = [k1[i] ^ k2[i]  for i in range(min(len(k1), len(k2)))]
   
print(xored)
 

On obtient
[1, 66, 23, 27, 12, 82, 7, 78, 6, 29, 80, 9, 26, 5, 85, 0, 28, 0, 4, 0, 71, 10, 19, 8, 29, 201]

La fonction Python suivante fait un xor entre les éléments de cette liste et la liste des codes ascii d'un mot à tester pour tous les décalages.


def cherche_xor(xored, word):
    test = [ord(c) for c in word]
    for i in range(len(xored)-len(word)+1):
        ligne = ''
        for j in range(len(test)):
            ligne += chr(xored[i+j] ^ test[j])
        print(i, ligne)
 

Si on cherche la chaine " est " :


cherche_xor(xored, ' est ')

0 !'do,
1 brhxr
2 7~&'
3 ;i!sn
4 ,7t:&
5 rb=r=
6 '+uip
7 ncn$)
8 &x#}:
9 =5zn%
10 pliqu
11 )v!
12 :`&t<
13 %0sh
14 ueot$
15  ysp
16 <ewtg
17  as3*
18 $e4~3
19  "yg(
20 go`|=
21 *v{ié
 

au décalage 10 on a "pliqu".


     ..........pliqu............
    .......... est .......
 

On peut alors chercher les mots en ...pliqu...
Pour "expliquer " on obtient :


cherche_xor(xored, 'expliquer ')

0 d:gwe#r+t=
1 'ok`;v;cop
2 rc|>n?sx")
3 ~t"k'wh5{:
4 i*w"ol%lh%
5 7>jt!|wu
6 b6vq9xo`'
7 +~m<`kp0r<
8 ce est en
9 x(yvl$uyr$
10 5qji<qiev
11 lbu9imuarg
12 }%luqqe5*
13 `-ppiuu"x3
14 0xllmq2oa(
15 edphi6vz=
16 yxtl.{fmoé
 

En 8 on a une partie significative.


     ........expliquer ...........
    ........ce est en .....
 

Cherchons encore " en "


cherche_xor(xored, ' en ')

0 !'y;
1 bru,
2 7~br
3 ;i<'
4 ,7in
5 rb &
6 '+h=
7 ncsp
8 &x>)
9 =5g:
10 plt%
11 )ku
12 :`;
13 %0n<
14 uer
15  yn$
16 <ej
17  ang
18 $e)*
19  "d3
20 go}(
21 *vf=
22 3msé
 

En 14 on retrouve "uer", la fin de "expliquer".
en 17 on a " ang"


     ........expliquer en ........
    ........ce est en ang..
 

ang = anglais ?


cherche_xor(xored, ' anglais')

0 !#y|`3n=
1 bvuk>f'u
2 7zb5k/on
3 ;m<`"gt#
4 ,3i)j|9z
5 rf aq1`i
6 '/hz<hsv
7 ngs7e{l&
8 &|>nvd<s
9 =1g}i4io
10 phtb9aus
11 ){k2l}iw
12 :d;gpams
13 %4n{lei4
14 uargha.y
15  }ncl&c`
16 <ajg+kz{
17  en fran
18 $a)mitº
 

en 17 on a " en fran"


     ........expliquer en fran....
    ........ce est en anglais
 

fran = français ?   ..etc

Voilà pour le principe.
On peut utiliser une liste de mots courants pour automatiser tout ça.
Si on a plusieurs cryptos, on peut les "xorer" deux à deux et faire le traitement en parallèle...etc

@+

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
vingt cinq moins seize
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums