IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Explications - Crypto avançée


Sujet :

Sécurité

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut Explications - Crypto avançée
    Je m'intéresse à la cryptographie depuis quelques temps. Cependant, je me pose des questions beaucoup plus "précises" sur lesquels je ne trouve pas vraiment de réponses détaillées. J'espère donc qu'un expert, ou du moins quelqu'un qui a des connaissances avançées sur ces sujets, puisse m'éclairer. Je m'excuse pour la naïvété de la première question :

    1) On parle souvent de "force brute" pour attaquer des algos de crypto dits "sûrs". Or, ce que je trouve tout de même surprenant, c'est qu'on se base simplement sur la "très infime probabilité de trouver la clé". Je sais bien que la sécurité de l'algo est intimement lié à la taille de la clé, et qu'il est très très très très long de tester ne serait-ce qu'une infime partie des nombreuses combinaisons possibles (ex: 2^256 possibles pour du 256 bits), mais il est tout de même "possible", même si "très peu probable" en termes de probabilité, qu'on la trouve relativement rapidement (quelques jours, ..) ! Quelque chose m'échappe ? ou effectivement, on se base simplement sur une infime probabilité de trouver cette valeur en un temps raisonnable ? Si c'est le cas, pourquoi parler d'algo sûr ou incassable, alors que qu'on devrait parler d'algo relativement/probalement sûr ?

    2) Dans le cas de "force brute", j'aimerais avoir une confirmation : nous sommes bien obligés d'avoir une idée du type de données qui sont cryptées ? En effet, en quoi essayer toutes les clés possibles aurait-il un sens si on ne sait pas ce qu'on est censé chercher en clair ? Qu'en est-il des données binaires (supposons, un buffer de données chiffré) ? Quelles sont les techniques utilisées dans ces cas précis ? J'ai l'impression qu'on ne parle jamais de la véritable application de "force brute", sa façon "d'essayer une clé", le temps requis pour "essayer" une clé, la détection de la langue (pour les textes), du type de données etc.

    3) Supposons un disque chiffré par Truecrypt ou autre (ou du moins qui le paraît, puisqu'il ne s'agit à première vue que de données binaires "aléatoires" dépourvues de sens). Comment savoir s'il s'agit de données chiffrées ? Comment peut-on tenter une quelconque force brute puisqu'on ne sait même pas l'algo utilisé ? quelles sont les techniques utilisées pour le deviner, alors qu'on est simplement en face d'une suite de bits ?

    Merci d'avance à la ou les personnes qui répondraient, même partiellement, à ces questions.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Citation Envoyé par zaitsev Voir le message
    1) On parle souvent de "force brute" pour attaquer des algos de crypto dits "sûrs". Or, ce que je trouve tout de même surprenant, c'est qu'on se base simplement sur la "très infime probabilité de trouver la clé". Je sais bien que la sécurité de l'algo est intimement lié à la taille de la clé, et qu'il est très très très très long de tester ne serait-ce qu'une infime partie des nombreuses combinaisons possibles (ex: 2^256 possibles pour du 256 bits), mais il est tout de même "possible", même si "très peu probable" en termes de probabilité, qu'on la trouve relativement rapidement (quelques jours, ..) ! Quelque chose m'échappe ? ou effectivement, on se base simplement sur une infime probabilité de trouver cette valeur en un temps raisonnable ? Si c'est le cas, pourquoi parler d'algo sûr ou incassable, alors que qu'on devrait parler d'algo relativement/probalement sûr ?
    Généralement, on utilise la force brute sur des mots de passes.
    Exemple, mot de passe de 4 caractères avec que des chiffres :
    10 000 essais, la force brute sera assez "rapide" pour trouver le mot de passe.
    Ensuite, je ne sais pas si tu te représente la taille de 2^256, mais trouver la bonne clé en quelques jours est très improbables (bien que théoriquement possible).


    2) Dans le cas de "force brute", j'aimerais avoir une confirmation : nous sommes bien obligés d'avoir une idée du type de données qui sont cryptées ? En effet, en quoi essayer toutes les clés possibles aurait-il un sens si on ne sait pas ce qu'on est censé chercher en clair ? Qu'en est-il des données binaires (supposons, un buffer de données chiffré) ? Quelles sont les techniques utilisées dans ces cas précis ? J'ai l'impression qu'on ne parle jamais de la véritable application de "force brute", sa façon "d'essayer une clé", le temps requis pour "essayer" une clé, la détection de la langue (pour les textes), du type de données etc.
    Les systèmes de chiffrements s'appuient sur des problèmes mathématiques facile à faire dans un sens mais très difficile à faire dans l'autre :
    f(a) = b (facile)
    g(b) = a (très difficile)

    Par force brute il est possible de trouver la solution à ce problème mathématique mais c'est très long.

    3) Supposons un disque chiffré par Truecrypt ou autre (ou du moins qui le paraît, puisqu'il ne s'agit à première vue que de données binaires "aléatoires" dépourvues de sens). Comment savoir s'il s'agit de données chiffrées ? Comment peut-on tenter une quelconque force brute puisqu'on ne sait même pas l'algo utilisé ? quelles sont les techniques utilisées pour le deviner, alors qu'on est simplement en face d'une suite de bits ?
    On teste les plusieurs méthodes de chiffrements (?)

    Si tu veux plus de détails/d'informations, tu as quelques tutoriels sur le sujet dans la page cours de la rubrique sécurité

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Ok je te remercie de ta réponse.

    - Pour ce qui est de la première réponse, on est d'accord, mais je suis toujours interloqué :
    "trouver la bonne clé en quelques jours est très improbables (bien que théoriquement possible)"

    Comment les systèmes cryptographiques les plus pointus du monde peuvent-ils se baser simplement sur une très grande improbabilité ?

    - En revanche, sur la deuxième question, tu répond un peu à côté ^^ ("Les systèmes de chiffrements s'appuient sur des problèmes mathématiques facile à faire dans un sens mais très difficile à faire dans l'autre"). Tout d'abord, il me semble que tu parles ici de fonctions à sens unique, plutôt utilisées pour le calcul de Hash et autres.

    Moi ce que je me demande, c'est comment fait-on très concrètement lorsqu'on essaye une clé ? Exemple: si on suppose que l'on vient de déchiffrer un texte, on teste tous les alphabets du monde en ASCII, UTF-8 etc, jusqu'à reconnaitre quelquechose ??

    Personne ne parle de ce sujet pourtant très précis.

    - Pour cette dernière réponse, tu ne m'as pas l'air convaincu ("On teste les plusieurs méthodes de chiffrements (?) "). Cela m'étonnerait d'ailleurs, puisqu'on a pas idée non plus de la taille de la clé, il manque beaucoup trop de paramètres...

    Merci pour ta réponse en tout cas, si d'autres connaisseurs peuvent nous éclairer.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 75
    Points : 159
    Points
    159
    Par défaut
    Bonsoir,

    Comment les systèmes cryptographiques les plus pointus du monde peuvent-ils se baser simplement sur une très grande improbabilité ?


    C'est aussi simple que de considérer que 10^(-x) = 0 avec x dépend du système
    Si tu as 0.001 euros(x=3) sur ton compte bancaire c'est comme si tu as 0 euros !

    Pour ce qui est de la cryptographie, en principe la longueur de clefs est calculée par rapport à la puissance des calculateurs et aussi aux avancées dans les algorithmes de déchiffrement, avant une longueur de 512 était suffisantes maintenant il est recommandé d'avoir des clefs de 2048 pour 20 ans de tranquillité même si théoriquement ce sont des milliers d'années


    - En revanche, sur la deuxième question, tu répond un peu à côté ^^ ("Les systèmes de chiffrements s'appuient sur des problèmes mathématiques facile à faire dans un sens mais très difficile à faire dans l'autre"). Tout d'abord, il me semble que tu parles ici de fonctions à sens unique, plutôt utilisées pour le calcul de Hash et autres.

    Avec la valeur du hash tu ne peux pas retrouver ton message de départ. C'est encore plus compliqué que le chiffrement car le but n'est pas de retrouver le message de départ mais un "hash" par une fonction à sens unique.

    Moi ce que je me demande, c'est comment fait-on très concrètement lorsqu'on essaye une clé ? Exemple: si on suppose que l'on vient de déchiffrer un texte, on teste tous les alphabets du monde en ASCII, UTF-8 etc, jusqu'à reconnaitre quelquechose ??

    Tout dépend de comment ton système de chiffrement fonctionne. Si tu pars du principe d'un message simple en texte, En générale le chiffrement est utilisé pour sécuriser la communication entre deux entités/équipements. Tout ce qu'est de type clef asymétriques permet par exemple l'authentification mutuelle, l'échange de clef de session symétrique car plus performante et rapide que les clefs asymétrique. La clef de session change périodiquement.
    Le chiffrement n'est pas uniquement réservé à la sécurisation des communications, on peut aussi dé/chiffrer des données, des disque durs .etc,


    Personne ne parle de ce sujet pourtant très précis.

    Il y a plusieurs articles sur le web qui parle de ça, je trouve que ce n'est pas un sujet facile à traiter comme ça

    Google : Cryptanalyse par exemple


    - Pour cette dernière réponse, tu ne m'as pas l'air convaincu ("On teste les plusieurs méthodes de chiffrements (?) "). Cela m'étonnerait d'ailleurs, puisqu'on a pas idée non plus de la taille de la clé, il manque beaucoup trop de paramètres...

    Merci pour ta réponse en tout cas, si d'autres connaisseurs peuvent nous éclairer.

    J'espère avoir apporté plus d'éclairci que d'embrouille dans ma réponse

    Cdt

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par razmous Voir le message
    Avec la valeur du hash tu ne peux pas retrouver ton message de départ. C'est encore plus compliqué que le chiffrement car le but n'est pas de retrouver le message de départ mais un "hash" par une fonction à sens unique.
    Tout d'abord, merci d'avoir pris le temps de répondre.

    Cependant, je constate cependant qu'on dévie encore du sujet, je connais le principe des fonctions à sens unique, de la différence crypto asymétrique/symétrique et des problématiques liées à cela. Ma question sur l'improbabilité de trouver une clé parmi un échantillon très très large était limite philosophique, donc je laisse de côté...

    Ma véritable question ne peut pas être plus simple et plus précise : comment essaye-t-on une clé en force brute si l'on sait qu'on est face à des données chiffrées (par exemple avec de l'AES-CBC-256) ?

    Comment fait-on exactement ? Ca ne veut rien dire "essayer" une clé, je veux donc savoir concrètement quels sont les traitements effectués car on ne sait même pas quelles sont les données originales, donc même en "essayant" une clé on retombera sur des données binaires, donc comment leur donner du sens et être sûr qu'on vient de trouver la clé ?


    Merci.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 75
    Points : 159
    Points
    159
    Par défaut
    En générale les problèmes de sécurité ne viennent pas de la théorie mais de l'implémentation. Déja ça commence avec l'histoire des nombres aléatoires qui ne le sont pas vraiment mais pseudo

    Je suis pas un spécialiste de la crypteanalyse mais je pense que si pour vérifier un algorithme de chiffrement, tu peux te contenter de cas simple dans lequel tu as connaisance du message non chiffré et à chaque test, une simple comparaison suffit confirmer ou pas.

    Si tu veux déchiffrer un contenu que tu n'as aucune connaissance, il faut à chaque essaie analyser le résultat en cherchant des "signatures" (ce qui peux identifier un fichier quelconque, binaire ou texte).

    Cordialement

  7. #7
    Membre éclairé
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Points : 751
    Points
    751
    Par défaut
    Citation Envoyé par zaitsev Voir le message
    1) On parle souvent de "force brute" pour attaquer des algos de crypto dits "sûrs". Or, ce que je trouve tout de même surprenant, c'est qu'on se base simplement sur la "très infime probabilité de trouver la clé". Je sais bien que la sécurité de l'algo est intimement lié à la taille de la clé, et qu'il est très très très très long de tester ne serait-ce qu'une infime partie des nombreuses combinaisons possibles (ex: 2^256 possibles pour du 256 bits), mais il est tout de même "possible", même si "très peu probable" en termes de probabilité, qu'on la trouve relativement rapidement (quelques jours, ..) ! Quelque chose m'échappe ?
    Non. C'est effectivement ca. Tu mises la surete de ta cle sur sa chance d'etre trouvee. Plus ton espace de cle augmente, plus ta chance de trouver la cle diminue.
    Dans le cas de hash, tu peux hasher x milliers de fois, vu que tu ne hash qu'une fois. Mais ca force le bruteforce a faire x milliers d'iterations sur ton hash, ce qui rend le bruteforce extremement couteux. Tu joues sur le facteur temporel (cf PBKDF2)

    Citation Envoyé par zaitsev Voir le message
    2) Dans le cas de "force brute", j'aimerais avoir une confirmation : nous sommes bien obligés d'avoir une idée du type de données qui sont cryptées ? En effet, en quoi essayer toutes les clés possibles aurait-il un sens si on ne sait pas ce qu'on est censé chercher en clair ? Qu'en est-il des données binaires (supposons, un buffer de données chiffré) ? Quelles sont les techniques utilisées dans ces cas précis ? J'ai l'impression qu'on ne parle jamais de la véritable application de "force brute", sa façon "d'essayer une clé", le temps requis pour "essayer" une clé, la détection de la langue (pour les textes), du type de données etc.
    Generallement le bruteforce est fait contre des services. Donc quand tu trouves la bonne cle, tu le sais immediatement (mot de passes, volume chiffre, ...).
    Maintenant, pour le cas d'un fichier chiffre c'est beaucoup plus dur, car effectivement tu ne sais pas quel est le resultat en clair attendu. Il y a plusieurs approches, et generallement elle se base sur les proprietes du fichier. La recherche se fait par signature (magic header du fichier par exemple) ou par analyse frequentielle (si je sais que le fichier de sortie est un texte francais, je peux compter le nombre d'occurence de chaque lettre et compare a une modelisation des occurences dans la langue).
    Il doit y avoir d'autres approches egalement, mais elles dependent trop d'un cas particulier.

    Citation Envoyé par zaitsev Voir le message
    3) Supposons un disque chiffré par Truecrypt ou autre (ou du moins qui le paraît, puisqu'il ne s'agit à première vue que de données binaires "aléatoires" dépourvues de sens). Comment savoir s'il s'agit de données chiffrées ? Comment peut-on tenter une quelconque force brute puisqu'on ne sait même pas l'algo utilisé ? quelles sont les techniques utilisées pour le deviner, alors qu'on est simplement en face d'une suite de bits ?
    Ca c'est assez simple. En fait quand tu chiffres des donnees, tu cherches a les rendre le plus aleatoire possible (en gros). Or les donnees reelles ne le sont pas (cf: exemple de l'analyse frequentielle).
    En gros tu vas chercher l'entropie de ta masse de donnees, ce qui quantifie son caractere aleatoire. Si tu as un volume qui a une entropie tres grande, alors tu es sans doute fasse a un disque chiffre.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup, exactement le type de réponse que j'attendais : claire et précise.

Discussions similaires

  1. [Foreign Key] Besoin d'explication.
    Par Andry dans le forum Débuter
    Réponses: 4
    Dernier message: 28/05/2003, 11h34
  2. pointeurs (explications)
    Par isidore dans le forum C
    Réponses: 4
    Dernier message: 18/04/2003, 10h41
  3. Explication procédure stockée
    Par underworld dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2002, 10h51
  4. Recherche code d'un fifo,ou explication
    Par don-diego dans le forum C
    Réponses: 8
    Dernier message: 25/07/2002, 10h26
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo