Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 28-11-2016 16: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 16:03:40)
Hors ligne
#4 30-11-2016 09: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 12:56:11
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 944
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...
En ligne
#6 30-11-2016 20: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
Pages : 1