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).

#276 Re : Cryptographie » Décryptage de hash 128 bits » 26-09-2016 21:37:30

Bonjour Alcibiade,

Pas facile votre problème !

Vous pouvez tester les fonctions de hachage classiques de 128 bits: voir la liste.

Pour augmenter les chances de réussite, vous pouvez aussi utiliser une liste de prénoms plus complète, par exemple la liste Wikipédia.

Dernier point : êtes-vous sûr que vos hashs n'ont pas été salés ? Auquel cas votre problème est pratiquement insoluble.

#277 Re : Cryptographie » Forme du texte à décrypter » 30-08-2016 11:59:54

Est-ce que votre crypto est (ou est censé être) militaire ?
Il provient d'un jeu, d'une énigme ?
Vous n'avez qu'un seul message ?
Vous connaissez la langue utilisée ?
Vous avez une idée du contenu du message (mots probables) ?

En règle générale, on ne peut pas déterminer la méthode de chiffrement de la forme du crypto.

Pour les cryptos de type militaire, le problème de Zendia est un bon exemple.

Le message donné en échantillon sur la page Wikipédia est constitué d'un en-tête et du corps du message formé de 68 groupes.
On voit facilement que le nombre de groupes est dans l'en-tête et que les deux premiers groupes sont identiques aux deux derniers (on peut vérifier ces hypothèses sur les 375 messages du problème).
Le "vrai" crypto est compris entre ces deux groupes répétés.

La méthode de chiffrement est indiquée par le premier des groupes redoublés (mais on ne le sait pas au début du problème).
Les 375 messages ont la même forme bien que les méthodes de chiffrement soient diverses et variées.

Si on fait l'hypothèse que votre message a une structure du même genre, il faudrait faire les tests classiques (indice de coïncidence, présence, fréquences... etc.) sur la partie comprise entre les deux groupes répétés.

Si ça ne donne rien, il faut essayer les différentes méthodes de chiffrement connues une à une ... :-)

#278 Re : Cryptographie » Forme du texte à décrypter » 26-08-2016 16:12:50

Bonjour,

Que votre crypto soit écrit en groupes de cinq caractères n'a rien d'anormal ou de caractéristique. C'est une vieille convention qui date du temps de la télégraphie (avec ou sans fil) : le petit télégraphiste qui reçoit le message s'attend à des groupes de cinq caractères; si ce n'est pas le cas, il demande une répétition du groupe. On envoie souvent le nombre de groupes pour savoir si le message est complet.

Le fait que le troisième groupe soit identique au dernier peut être tout à fait fortuit.
Il faudrait avoir plusieurs messages chiffrés par le même système pour confirmer ou infirmer cette hypothèse.

Je doute que ce groupe soit une clé : si la clé est dans le message, elle doit être cachée.

Je suis désolé de ne pas pouvoir vous en dire plus.

#279 Re : Cryptographie » Est ce solvable ? Coder /décoder » 02-08-2016 11:52:48

Bin alors,

KJNO YYXX IJNM QSLCBI SS WDDOQHXO ?

:-)

#280 Re : Cryptographie » Est ce solvable ? Coder /décoder » 30-07-2016 19:55:58

@ohkerod

Puisque l'algèbre linéaire n'a pas eu l'heur de vous plaire, je propose une solution en Python :-)
Fonction de codage :


def code(w):
    n = len(w)
    s = ''
    for i in range(n-1):
        # expression simplifiée car : (2*ord('A'))%26 = 0
        s += chr((ord(w[i])+ord(w[i+1])+1)%26+ord('A'))
    s += chr((ord(w[n-1])+ord(w[0])+1)%26+ord('A'))
    return s
 

Fonction de décodage (c'est une "fonction multivoque" !)


def decode(w):
    n = len(w)
    solutions = []
    for c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
        x = [c]
        for i in range(n-1):
            x.append(chr((ord(w[i])-ord(x[i])-1)%26+ord('A')))
        if (ord(w[n-1])-ord(x[n-1])-1)%26 == ord(c)-ord('A'):
            solutions.append(''.join(x))
    return solutions
 

Le principe est simple : puisque le système linéaire qui définit la solution est indéterminé, on donne à la première lettre les valeurs successives A, B, ... Z. Pour chacune d'elle, on calcule les n-1 lettres suivantes du mot en utilisant le système. La n-ième relation doit redonner la lettre de départ ; si c'est le cas, on ajoute le mot à la liste des solutions, sinon on passe au suivant. On obtient ainsi les 2 ou 26 solutions suivant le cas.

Par exemple, pour décoder UCQWCXCT, "print(decode('UCQWCXCT'))" renvoie la liste des solutions possibles (à vous de trouver la bonne dans le tas) :

['ATIHONJS', 'BSJGPMKR', 'CRKFQLLQ', 'DQLERKMP', 'EPMDSJNO', 'FONCTION', 'GNOBUHPM', 'HMPAVGQL', 'ILQZWFRK', 'JKRYXESJ',  'KJSXYDTI', 'LITWZCUH', 'MHUVABVG', 'NGVUBAWF', 'OFWTCZXE', 'PEXSDYYD', 'QDYREXZC', 'RCZQFWAB', 'SBAPGVBA', 'TABOHUCZ',  'UZCNITDY', 'VYDMJSEX', 'WXELKRFW', 'XWFKLQGV', 'YVGJMPHU', 'ZUHINOIT']

@+

#281 Re : Cryptographie » Est ce solvable ? Coder /décoder » 30-07-2016 09:12:26

Bonjour à tous,

Il s'agit, si je ne m'abuse, d'une question d'algèbre linéaire dans l'anneau (non intègre !) $\mathbb{Z}/26 \mathbb{Z}$.

En posant A=1, B=2, ... Z=0 modulo 26, on peut écrire le codage sous forme matricielle :

$
\begin{pmatrix}
1 & 1 & 0 & 0 & 0 & 0 & 0 \\
0 & 1 & 1 & 0 & 0 & 0 & 0 \\
0 & 0 & 1 & 1 & 0 & 0 & 0 \\
0 & 0 & 0 & 1 & 1 & 0 & 0 \\
0 & 0 & 0 & 0 & 1 & 1 & 0 \\
0 & 0 & 0 & 0 & 0 & 1 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
B \\
O \\
N \\
J \\
O \\
U \\
R
\end{pmatrix}
\equiv
\begin{pmatrix}
1 & 1 & 0 & 0 & 0 & 0 & 0 \\
0 & 1 & 1 & 0 & 0 & 0 & 0 \\
0 & 0 & 1 & 1 & 0 & 0 & 0 \\
0 & 0 & 0 & 1 & 1 & 0 & 0 \\
0 & 0 & 0 & 0 & 1 & 1 & 0 \\
0 & 0 & 0 & 0 & 0 & 1 & 1 \\
1 & 0 & 0 & 0 & 0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
2 \\
15 \\
14 \\
10 \\
15 \\
21 \\
18
\end{pmatrix}
\equiv
\begin{pmatrix}
17 \\
3 \\
24 \\
25 \\
10 \\
13 \\
20
\end{pmatrix}
\equiv
\begin{pmatrix}
Q \\
C \\
X \\
Y \\
J \\
M \\
T
\end{pmatrix}
$

Ce système de codage est donc lié aux matrices $K_n$ ($n\geqslant 2$) :

$$K_{n}\equiv \begin{pmatrix}
1 & 1 & 0 & 0 & \cdots  & 0 \\
0 & 1 & 1 & 0 & \cdots  & 0 \\
0 & 0 & \ddots  & \ddots  &  & \vdots  \\
\vdots  & \vdots  &  & \ddots  & \ddots  & \vdots  \\
0 & 0 &  &  & 1 & 1 \\
1 & 0 &  &  & 0 & 1
\end{pmatrix}$$

Ces matrices sont singulières. On peut vérifier (démonstration laissée au lecteur) :

$$\det (K_n)\equiv \left\{
\begin{array}{l}
0\text{ si }n \text{ pair} \\
2\text{ si }n \text{ impair}
\end{array}
\right. $$

Puisque ni $0$ ni $2$ ne sont inversibles dans $\mathbb{Z}/26 \mathbb{Z}$ (les éléments inversibles sont les entiers premiers avec 26), les matrices $K_n$ n'ont pas d'inverses.

Le codage n'est donc pas bijectif, ni injectif, ni surjectif puisque ces trois propriétés sont équivalentes pour un endomorphisme d'un espace vectoriel module libre de dimension finie.

C'est curieux, mais en codant un mot par ce procédé on perd de l'information et l'on ne peut pas retrouver avec certitude le mot dont on est parti.

[Je complète... :-) ]

Le rang de $K_n$ est $n-1$, autrement dit le noyau de $K_n$ est un sous-module de $(\mathbb{Z}/26\mathbb{Z})^n$ de dimension $1$.

Si $n$ est pair, $ker(K_n)$ est le sous-module engendré par le vecteur $\begin{pmatrix}
1 \\
25 \\
1 \\
25 \\
\vdots\\
1 \\
25
\end{pmatrix}$

Par exemple, tous les mots qui se codent comme 'BONJOU' sont $\begin{pmatrix}
B+k \\
O+25k \\
N+k \\
J+25k \\
O+k \\
U+25k
\end{pmatrix}$ pour $k \in \mathbb{Z}/26\mathbb{Z}$

Ce qui donne les 26 mots :
BONJOU, CNOIPT, DMPHQS, ELQGRR, FKRFSQ, GJSETP, HITDUO, IHUCVN,
JGVBWM, KFWAXL, LEXZYK, MDYYZJ, NCZXAI, OBAWBH, PABVCG, QZCUDF,
RYDTEE, SXESFD, TWFRGC, UVGQHB, VUHPIA, WTIOJZ, XSJNKY, YRKMLX
ZQLLMW, APMKNV

Si $n$ est impair, $ker(K_n)$ est le sous-module engendré par le vecteur $\begin{pmatrix}
13 \\
13 \\
\vdots\\
13
\end{pmatrix}$
Ce qui est amusant, c'est que ce sous-module ne comprend que deux vecteurs : $\begin{pmatrix}
13 \\
13 \\
\vdots\\
13
\end{pmatrix}$ et $\begin{pmatrix}
0 \\
0 \\
\vdots\\
0
\end{pmatrix}$

Il n'y a que deux mots qui se codent comme 'BONJOUR' : $\begin{pmatrix}
B+0 \\
O+0 \\
N+0 \\
J+0 \\
O+0 \\
U+0 \\
R+0
\end{pmatrix} \equiv
\begin{pmatrix}
B \\
O \\
N \\
J \\
O \\
U \\
R
\end{pmatrix}$ et $\begin{pmatrix}
B+13 \\
O+13 \\
N+13 \\
J+13 \\
O+13 \\
U+13 \\
R+13
\end{pmatrix} \equiv
\begin{pmatrix}
O \\
B \\
A \\
W \\
B \\
H \\
E
\end{pmatrix}$

Tout serait bien plus simple avec des matrices inversibles :-)) Voir le chiffrement de Hill

#282 Re : Cryptographie » Un coup de main pour m'aider a demarrer ce code . » 26-07-2016 09:15:55

Bonjour Fuongaw,

Je vous donne trois indices :

- votre message est chiffré en Vigenère

- la période (longueur de la clé) est 7

- APZIPOL = CHARITE

J'en ai peut-être trop dit ...

Bon courage.

#283 Re : Cryptographie » Décrypter » 25-06-2016 19:31:46

Bonjour à tous, bonjour meublat,

Votre message illustre parfaitement ce que je disais plus haut.
Avec les indications que vous donnez, on ne va pas très loin.

On se doute que le crypto est chiffré en Vigenère.

En 1853, un chirurgien dentiste du nom de John Hall Brock Thwaites a proposé à la Society of Arts un appareil cryptographique (semblable à se qu'on appelle en France une réglette de Saint-Cyr) qui permettait d'obtenir, prétendait-il, des cryptogrammes absolument indéchiffrables.
Charles Babbage, à qui on avait demandé son avis, a affirmé que le système était équivalent à un chiffrement de Vigenère et n'était pas indéchiffrable.
Thwaites a alors lancé un défi à Babbage : un cryptogramme chiffré avec son système.
Babbage a décrypté le message (un poeme de Tennyson, “The Vision of Sin”).
C'est la première trace que l'on ait du décryptement d'un message chiffré en Vigenère.
On ne sait pas comment Babbage s'y est pris.
On suppose qu'il a utilisé une technique semblable à celle décrite plus tard par Fridrich Wilhelm Kasiski, en 1863.

Si notre message est chiffré en Vigenère, la première chose à faire est de trouver la longueur de la clé. Curieusement, le test des indices de coïncidence ne donne rien : pas de résultat saillant. J'ai cherché par force brute toutes les clés de tailles 2 à 28, sans succès. J'ai cherché si le crypto n'était pas un autoclave sur le clair ou sur le crypto : négatif.

J'ai alors cherché la page d'où venait ce crypto : Geocaching

Et là, ça m'a sauté aux yeux :

Vous êtes sur les traces de Charles mais inutile de relever le défi de Thwaites puique vous possédez la clé...

Autrement dit, on a la clé sous les yeux ! La clé est, en supprimant les accents et les espaces :

'VOUSETESSURLESTRACESDECHARLESMAISINUTILEDERELEVERLEDEFIDETHWAITESPUIQUEVOUSPOSSEDEZLACLE'

Le programme Python suivant donne la solution :


def dechiffre_Vigenere(crypto, clef):
    """Déchiffrement Vigenère qui conserve les caractères non alphabétiques
    """

    clair = ''
    i = 0      # indice du premier car. de la clef
    for c in crypto:
        if c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
            clair += chr(ord('A')+(ord(c)-ord(clef[i]))%26)
            i += 1          # indice du caractère suivant de la clef
            i %= len(clef)  # si à la fin de la clef, on revient au début
        else:
            clair += c      # car. non alphabétique non traité
    return clair
   
crypto = "WZUAWX ZAYYEPVW ILBNMS VSP ARRTXW PEA UPVZYZPW HR DMW GDRH NIQX \
VCDXKL RIVZX KXR UQCW XS H'WHH IM'IQ QHW HWTX XSHL GBRIMUEEI INRTTI IXI \
EOAIWIK NAJTITY KMFWVM, CI AVZQZPV, D GFAVIK JA CWWI VDHB BU WJZCVXHW \
VISIMO DG WE GCHYYXYJ VY CL GDX. LNG GDH HG SA CZRYGECJ LH NXFEI D \
XISFZZV VEEQX QI VSEBPIWG PS EFCI MYMS. PGJG LJSXZDCEB WE XOWZI XR NAHXE \
IL NE TTSAV GGUT HFMFLE VGZQ YM MY UXEIEYX ZX LY HHYC KHRM JENYNEFIY \
KYHU ZGN. HDIJ NSWVD EP XZYN RYNVXD UZCWQVWK LNG TZUEUL DV GSLDE TGO \
RH NBTPLWRRE PZ GYTJIVJ LH ZBNANMKI VDHB BU GGS MWGO NGXUI \
ODEWOS YS AWGHGSUBVFV."

clef = 'VOUSETESSURLESTRACESDECHARLESMAISINUTILEDERELEVERLEDEFIDETHWAITES\
PUIQUEVOUSPOSSEDEZLACLE'

print(dechiffre_Vigenere(crypto, clef))
 

La réponse est cachée là pour faire durer le suspens

BLAISE VIGENERE PUBLIA SON TRAITE DES CHIFFRES EN MIL CINQ CENT QUATRE VINGT SIX
MAIS CE N'EST QU'EN MIL HUIT CENT CINQUANTE QUATRE QUE CHARLES BABBAGE REUSSI,
LE PREMIER, A CASSER CE CODE DONT LA SOLIDITE DEPEND DE LA LONGUEUR DE LA CLE.
UNE CLE DE LA LONGUEUR DU TEXTE A TROUVER ETANT LA SOLUTION LA PLUS SURE. VOUS
TROUVEREZ LA CACHE EN VINGT ET UN TROIS CENT QUINZE NORD ET EN QUARANT ET UN
DEUX CENT CINQUANTE CINQ EST. POUR VOTRE TP VOUS DEVREZ CHIFFRER UNE PHRASE DE
VOTRE LOG EN UTILISANT LE CHIFFRE DE VIGENERE DONT LA CLE SERA VOTRE PSEUDO DE
GECOCACHEUR.

Je vous laisse crapahuter dans les montagnes pour trouver la cache.

Quant à moi, je vais faire la sieste dans mon hamac, à l'ombre.

Bon courage :-)

#284 Re : Cryptographie » Décrypter » 21-06-2016 19:03:38

Bonjour à tous,

Il serait sympa que les honorables correspondants qui proposent des cryptogrammes à résoudre donnent le contexte et ne fassent pas de la rétention d'information.

La prière du cryptanalyste de nerosson est toujours actuelle !

Les lecteurs qui voudraient résoudre ce crypto doivent d'abord aller sur la page suivante Agorapolis pour avoir le problème complet.

Notre ami 'Jesuisperdu' veut pirater l'antenne de Altis Information :-)  Voyou !

#285 Re : Cryptographie » Message secret à déchiffrer » 21-06-2016 17:02:33

Bonjour Dynastato,

Si vous voulez mon avis, la méthode que vous utilisez est vouée à l'échec. On peut contourner le problème d'espace mémoire en utilisant un itérateur qui va retourner un alphabet à chaque appel, mais le problème de temps d'exécution va persister.

Il y a $26! = 403291461126605635584000000$ alphabets possibles. En supposant un test toutes les nanosecondes, le temps nécessaire pour tester tous les alphabets est $\frac{26! \times 10^{-9}} {3600\times 24\times 365}\approx 12788288341$ années. 
Même en étant patient ...

Puisqu'il semble que les espaces entre les mots soient conservés dans le crypto, vous pouvez utiliser les motifs des mots. 
La fonction Python suivante renvoie le motif d'un mot :


def pattern(w):
    """Retourne le motif (pattern) du mot w
    """

    icourant = ord('A')  # pointe sur la lettre disponible courante
    h = {}               # dico des lettres déjà utilisées
    p = ''               # le motif
    for c in w:
        if c not in h:   # première apparition de la lettre
            h[c] = chr(icourant) # on l'enregistre
            icourant += 1        # on pointe sur la lettre suivante
        p += h[c]        # on met le motif à jour
    return p
 

Par exemple :


mot :    MOTIF     ELEMENT     MATHEMATIQUE     ANTICONSTITUTIONNELLEMENT
motif :  ABCDE     ABACADE     ABCDEABCFGHE     ABCDEFBGCDCHCDFBBIJJIKIBC
 

Le motif d'un mot est invariant par une substitution mono-alphabétique.
Par exemple, le mot 'ALPHABETIQUE' a pour motif 'ABCDAEFGHIJF'. Si on décale toutes ses lettres d'un rang (chiffre de César) on obtient 'BMQIBCFUJRVF' qui a le même motif :


     ALPHABETIQUE       BMQIBCFUJRVF
    ABCDAEFGHIJF  ==   ABCDAEFGHIJF
 

Donc, si dans un crypto on a le mot 'BMQIBCFUJRVF', on peut chercher les mots du dictionnaire qui ont le même motif que lui. Il n'y en a que quatre pour mon dico :  'ORTHOPEDIQUE', 'ALPHABETIQUE', 'ALPHABETISME', 'ASPHALTERONT'.

On a donc quatre possibilités d'alphabet déchiffrant. En croisant les résultats obtenus pour d'autres mots du crypto, on obtient en général le texte clair rapidement.

Je ne peux pas être plus précis, car je ne connais pas MATLAB.

Note : j'utilise les dictionnaires de l'ACA.

---
It is not necessary to be crazy to be a cryptanalyst. But it always helps.
Joseph Rochefort

#286 Re : Cryptographie » Cryptage réversible » 11-05-2016 16:39:13

Bonjour,

C'est possible ou impossible suivant ce que vous entendez par caractères alphanumériques.

On veut une injection de l'ensemble des mots de 16 caractères d'un alphabet de 10 lettres dans l'ensemble des mots de 9 caractères d'un alphabet de N lettres.
On a donc la condition \(10^{16} \leq N^{9}\)
$$N \geq \sqrt[9]{10^{16}}=10^{\frac{16}{9}}\approx 59,948$$

Il faut donc au moins 60 caractères alphanumériques.

Si on prend les majuscules et les dix chiffres, on obtient 36 caractères : c'est insuffisant.

Si on ajoute les lettres minuscules, on a alors 62 caractères et la condition est remplie.

Une injection évidente est la conversion des nombres écrits en base 10 vers la base 62 :


# Ce que l'on considère comme caractères alphanumériques :
# (on peut supprimer jusqu'à 2 caractères ou bien en ajouter d'autres)
alphanum = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
N = len(alphanum)

def code(num):
    """Codage de num^16 vers alphanum^9"""
    num = int(num)
    alpha = []
    while num:
        alpha.append(alphanum[num%N])
        num //= N
    alpha.extend(['A']*(9-len(alpha))) # on complète à 9 car.
    return ''.join(alpha[::-1])

def decode(alpha):
    """Décodage de alphanum^9 vers num^16"""
    num = 0
    for c in alpha:
        num = N*num + alphanum.index(c)  # Horner
    num = str(num)
    num = '0'*(16-len(num))+num        # on complète à 16 car.
    return num


print(code('1234567890123456'))   # affiche 'FojQHiLB2'

print(decode('FojQHiLB2'))        # retourne '1234567890123456'
 

J'ai programmé ça en vitesse ; on doit pouvoir faire plus élégant.

#287 Re : Cryptographie » Chiffrement à clé publique » 27-04-2016 17:54:19

Bonjour Martin,

Question 3:
Alice veut envoyer un message chiffré et signé à Bob, avec quelle clef doit-­elle le chiffrer ? Le signer ?
A l'arrivée, quelle clef, Bob doit-­il utiliser pour déchiffrer le message ? Pour vérifier la signature ?

* Alice chiffre le message avec la clé publique de Bob et le signe avec sa clé privée (d'Alice).
* Après réception du message, Bob vérifie la signature avec la clé publique d'Alice puis il déchiffre le message avec sa clé privée (de Bob).

Question 4:
Alice veut envoyer un message chiffré et signé à Bob, Gérard, Jackie, Ahmed, ... (25 destinataires) avec quelle clef doit-­elle le chiffrer ? Le signer ?

Là on ne connaît pas trop le contexte. Il manque le début du problème.

Si Alice, Bob, ..., Xavier partage une même clé K d'un chiffre symétrique, alors Alice chiffre le message avec K et le signe avec sa clé privée.
Chaque récipiendaire vérifie la signature avec la clé publique d'Alice, puis déchiffre le message avec la clé commune K.

S'ils n'ont pas de clé en commun, alors Alice choisit une clé aléatoire K et elle chiffre le message avec K.
Puis elle signe la clé K avec sa clé privée.
Ensuite, elle chiffre cette clé signée avec la clé publique de chacun de ses 25 correspondants.
Elle diffuse ensuite le message chiffré avec les 25 clés signées et chiffrées.

Chacun des récipiendaires applique sa clé privée à chacune des clés signées et chiffrées jointes au message puis applique la clé publique d'Alice pour retrouver K qui permet de déchiffrer le message.
Au maximum 25 essais sont nécessaires (Alice peut aussi écrire à chaque fois le nom du correspondant, mais alors la liste des correspondants est divulguée).

Pour d'autres protocoles, voir B. Schneier - Applied Cryptography (2d ed)
p.523 - 22.7 Conference Key Distribution and Secret Broadcasting

#288 Re : Cryptographie » générateur de nombres aléatoires » 16-04-2016 16:13:17

Bonjour asphi,

Moi, mon générateur de nombres pseudo-aléatoires préféré, c'est le Blum-Blum-Shub.

D'abord, il a un nom rigolo.

Ensuite, c'est un des rares générateurs (sinon le seul) dont on peut prouver qu'il est sûr cryptographiquement parlant.

Son seul inconvénient, c'est qu'il est lent.

Un page Python (parmi d'autres) : http://python.jpvweb.com/mesrecettespyt … enalea_bbs

#289 Re : Cryptographie » Des mathématiciens polonais à l'assaut de la machine Enigma » 31-03-2016 18:09:14

Bonsoir Fred, bonsoir à tous,

Juste un lien pour les radins qui ne veulent pas s'abonner à Quadrature :

Des mathématiciens polonais au coeur du décryptement de la machine Enigma

En fouillant dans le répertoire de Philippe Guillot, je suis tombé sur un article de La Science et La Vie N° 69 – mars 1923

La cryptographie et les machines à cryptographier – Lieutenant-Colonel Givierge

Bonne lecture.

#290 Re : Cryptographie » Aide pour résoudre une énigme cryptée » 31-03-2016 16:39:57

Bonjour flucemma,

À voir l'indice III,II,I & C, on se doute que le message est chiffré avec une machine Enigma.

Casser un message Enigma sans crib est plutôt difficile.
La méthode classique d'attaque sur texte chiffré seul est celle de James J. Gillogly : Ciphertext-Only Cryptanalysis Of Enigma

J'ai essayé avec des scripts Perl et Python, sans succès : beaucoup trop lents.

Dans ces cas-là, je ne connais qu'une solution : le bon vieux C.
Il m'a permis d'obtenir les paramètres de déchiffrement.

Le script Python suivant utilise les paramètres que j'ai trouvés et vous donnera la solution.
Il utilise le simulateur Enigma : Py-Enigma


from enigma.machine import EnigmaMachine

crypto = 'CCMXZVSUAMJDGHXRRVYDTABARCZRWOQJFFTBXIFGCOCIJWVBTJONKZKDLHEMQDLCQTRQ\
JITNVFXGMAFDZDCXBCPQXWOZAMWPQGQQCUSJQFMAJHAAIEQNREOMAXQNPQHLHLRPVACDEPFALJWSPB\
ABFIXHYHJBDQAARUNBPWDVWNKWKBJZWTRJDCIDAQNPUCEOVQCC'

machine = EnigmaMachine.from_key_sheet(
       rotors='I II III',
       reflector='C',
       ring_settings='A E D',
       plugboard_settings='AB CD')
machine.set_display('XBA')
plaintext = machine.process_text(crypto)
print(plaintext)
 

Comme je ne sais pas si vous avez Python installé sur votre ordinateur, je vous donne la solution ci-dessous.
Mais ne la répétez pas, sinon je saurais que c'est vous !

Le message secret...

POURDECOUVRIRLABOITEALLEZJUSQUAUPONTAUNORDDELADECHETTERIEPUISPRENEZLAPETITEROUT
EVERSLESTETMARCHEZENVIRONCENTMETRESPUISSUIVEZLECHEMINADROITESURTROISCENTMETRESO
USETROUVEUNACCACIAVOUSTROUVEREZLACACHE

POUR DECOUVRIR LA BOITE ALLEZ JUSQU AU PONT AU NORD DE LA DECHETTERIE PUIS PRENEZ LA PETITE
ROUTE VERS L EST ET MARCHEZ ENVIRON CENT METRES PUIS SUIVEZ LE CHEMIN A DROITE SUR TROIS
CENT METRES OU SE TROUVE UN ACCACIA VOUS TROUVEREZ LA CACHE

À vous la joie de trouver le trésor sous l'acacia. Veinard ;-)

#291 Re : Cryptographie » Soumission à l'analyse d'un chiffrement sysmétrique. » 19-03-2016 16:14:53

Bonjour Oliv,

Le crypto que vous donnez n'est pas facile à manipuler. Si je fais un coupé-collé de votre crypto dans une cellule d'un IPython Notebook, les caractères 189 et 209 ne sont pas des espaces, mais 'ª' et 'o' respectivement.

Le crypto fait 581 caractères et le clair fait 560 caractères; comme dans le crypto il y a 7 quadruples espaces, je peux supposer qu'un quadruple espace correspond à un caractère tabulation \t : on retrouve les 3*7 = 21 caractères supplémentaires. Est-ce que cette expansion de \t en quatre espaces est dû au procédé de chiffrement ou est une interprétation du terminal ?

Si on remplace les quadruples espaces par des \t on a bien un crypto de 560 caractères et les caractères 189 et 209 sont des espaces chr(32).

D'autre part le caractère chr(206) ne s'affiche pas. On pourrait croire à première vue que la chaîne de test que vous donnez ÷&&zÔέ?S| fait 9 caractères. Erreur! elle en fait 10 car il y a un chr(206) invisible entre le 'Î' et le '?'.

Tout ça est embêtant, car on ne sait pas trop si on travaille sur le bon crypto.

Puisque vous proposez de donner les cryptos correspondants à des messages quelconques, je voudrais bien avoir les chiffrés des chaînes :

  'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' (64 a)

et

  'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' (64 b)

évidemment sans les guillemets et avec la même clé que précédemment, juste pour voir si ça mélange bien les lettres.

Finalement, connaissant l'optimisme inoxydable des créateurs de code, je propose comme traduction de ÷&&zÔέ?S| le mot de 10 lettres le plus probable : Incassable

J'ai bon ? ;-))

#292 Re : Cryptographie » Recherche d'un nom de méthode de cryptographie » 18-03-2016 19:44:51

Bonsoir Perry,

Je ne connais pas le nom de cette méthode qui mélange deux messages.

La méthode connue la plus proche semble être le chiffre zigzag que les anglophones appellent Rail Fence (d'après le nom des clôtures faites de rondins empilés et qui tiennent sans piquet parce qu'elles sont en zigzag, voir Wikipedia).

J'espère que cela aide.

#293 Re : Cryptographie » cryptographie » 15-02-2016 17:29:25

Bonjour à tous,

Hélas ! mon cher yoshi, j'ai cassé ma boule de cristal :-)

L'énoncé est visiblement incomplet : on ne connaît pas la "machine précédente". Une machine Enigma ???

La description donnée fait penser à un cadran d'Alberti : le grand disque avec un alphabet normalement ordonné, le petit disque avec un alphabet dans le désordre.
On initialise le dispositif en mettant le A en face du K (donc A -> K).
On code chaque lettre du texte clair et l'on fait tourner à chaque fois le petit disque d'un cran.

Comme on ne connaît ni l'alphabet désordonné, ni le sens de rotation, on ne peut rien dire de plus.

Ça serait sympa de donner l'énoncé complet !

#294 Re : Cryptographie » Logarithme discret/out memory? » 09-02-2016 19:19:30

Bonjour lomishoux,

Si j'ai bien compris le problème, vous devriez trouver la solution sur cette page Wikipédia : exponentiation modulaire

Bonne lecture.

#295 Re : Cryptographie » Code que je n'arrive pas a decrypter » 14-12-2015 18:52:44

Bonjour Baptiste,

C'est un gag ? un rébus ?
En me basant (vaguement) sur les formes, je dirais :


    5  4  |_  (_)  7  4  7  !  0  |\\|  5
    S  A  L    U   T  A  T  I  O    N   S

54|_(_)7

#296 Re : Cryptographie » Signature El Gamal » 09-12-2015 10:59:42

Bonjour Didi

Il suffit de lire le corrigé (exercice 3).

:-))

#297 Re : Cryptographie » Un texte que je n'arrive pas à déchiffrer » 12-11-2015 17:23:39

Bonjour Jeremy,

En fait de technique, j'ai utilisé un script Perl pour décrypter ce message en cinq minutes.
J'ai converti ce script en Python dans un IPython-NoteBook pour expliquer l'algorithme utilisé.
(Je trouve le concept de IPython-Notebook vraiment épatant !)

On le trouve ici : substitution_mono

A vous de jouer.

#298 Re : Cryptographie » Un texte que je n'arrive pas à déchiffrer » 03-11-2015 22:12:55

Bonsoir Jérémy,

Il s'agit d'une simple substitution mono-alphabétique.

Texte caché

Alphabet déchiffrant :

ABCDEFGHIJKLMNOPQRSTUVWXYZ
vohatmfyr?d?pi?ung?slebq?c
(les ? représentent les lettres qui n'apparaissent pas dans le crypto)

UVBQCDIKVPUVIVTEPQFDECVFDENZNVQVEMCHTNZNVQTPNTTVVPUVINQEIBKPN
leonhardeulerestunmathematicienetphysiciensuisseeulerintrodui

TNEPQVRIDQVMDIENVKVUDEVIFNQBUBRNVVEKVUDQBEDENBQKVTFDECVFDE
situnegranepartiedelaterminologieetdelanotationdesmathemat

NXPVTFBKVIQVTVQMDIENZPUNVIMBPIUDQUHTVFDECVFDENXPVZBFFVUDQBEN
iquesmodernesenparticulierpourlanlysemathematiquecommelanoti

BQKVGBQZENBQFDECVFDENXPVNUVTEVRDUVFVQEZBQQPMBPITVTEIDADPWVQF
ondefonctionmathematiqueilestegalementconnupoursestravauxenm

VZDQNXPVVQKHQDFNXPVKVTGUPNKVTVQBMENXPVVEVQDTEIBQBFNVVPUVIVT
ecaniqueendynamiquedesfluidesenoptiqueetenastronomieeuleres

EZBQTNKVIVZBFFVUPQKVTMUPTRIDQKTFDECVFDENZNVQTVEKVTMU
tconsiderecommelundesplusgrandsmathematiciensetdespl

PTMIBUNGNXPVTKVEBPTUVTEVFMT
usprolifiquesdetouslestemps

Le message est donc (il manque deux lettres dans deux mots du crypto) :

Leonhard Euler est un mathématicien et physicien suisse.
Euler introduisit une grane partie de la terminologie et de la notation
des mathématiques modernes, en particulier pour l'anlyse mathématique comme
la notion de fonction mathématique.
Il est également connu pour ses travaux en mécanique, en dynamique des fluides,
en optique et en astronomie.
Euler est considéré comme l'un des plus grands mathématiciens et des plus
prolifiques de tous les temps.

#299 Cryptographie » Un cryptogramme de Léonard Euler » 12-10-2015 14:31:50

Rossignol
Réponses : 1

Bonjour à tous,

En fouillant dans les papiers de William Friedman sur le site web de la NSA, je suis tombé sur un article en français concernant un cryptogramme que Léonard Euler a envoyé à Goldbach.
Le cryptogramme, écrit en latin, est décrypté dans l'article.
Instructif.

(21/6/2016 mise à jour des liens)

#300 Re : Cryptographie » Spirale : le chiffrement manuel revisité » 23-09-2015 12:18:34

Bonjour Flobert,

J'ai dû rater quelque chose, mais en suivant le lien je ne trouve que de la pub !
Ou alors il s'agit d'un nouveau chiffrement :-)
C'est quoi la clé ?

Pied de page des forums