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

C Discussion :

Conseil cryptage de flux


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut Conseil cryptage de flux
    Bonjour à tous ,

    Je vais être amené dans quelques mois à réaliser une application en C sur du AIX, qui va transmettre et recevoir des flux de données, qu'il faudra crypter. J'aurais souhaité avoir des conseils d'experts ou des vétérans en la matière, savoir quels sont les avantages de telle ou telle méthode.

    Je me suis renseigné sur l'AES et le RSA. Je ne sais pas quel algorithme est adapté au C, si il existe des librairies ? Les deux sont des algorithmes respectivement symétriques et asymétriques, quel serait le meilleur choix pour du transfert principalement basé sur des chiffres ?

    J'ai des connaissances en C, mais malheureusement en crypto ... à part installer des certificats SSL ...

    Merci de vos précieux conseils, je poste ça dès maintenant, mais évidemment je vais continuer de tout comparer et me renseigner

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Je ne saurais trop te conseiller d'utiliser openssl. C'est une bibliothèque cryptographique.

    Avec cette bibliothèque, tu vas pouvoir créer un flux réseau chiffré (comme avec un flux ssh) avec les algorithmes de ton choix, RSA et AES (ainsi que beaucoup d'autres) sont supportés.

    En plus, j'ai vu que openssl supportait AIX maintenant, faut voir les versions et comment cela s'intègre dans ton environnement de développement.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Bonsoir ram-0000,

    Merci beaucoup je vais me renseigner sur cette bibliothèque.
    En revanche, j'aurais une question :

    l'AES est à privilégier pour du transfert chiffré de valeurs numériques (integer, float, ...) ?

  4. #4
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Alors alors alors....
    Attention !

    AES est un chiffrement symétrique, créé pour supplanter le DES trop ancien.
    Symétrique = une clé de chiffrement commune entre les 2 personnes qui souhaitent communiquer.
    Cette clé doit donc être échangée de façon "sécurisée" entre les 2 personnes : donc pas de mail ou autre...

    RSA est un chiffrement asymétrique, donc à paire de clés publique/privée.
    Un émetteur utilise une clé privée (qu'il garde EXCLUSIVEMENT pour lui) pour chiffrer avant l'envoi, et émet des clés publiques à tous les destinataires souhaités pour que ceux-ci puissent déchiffrer les messages.
    L'asymétrique s'emploie donc pour des destinataires qui n'ont pas encore de secret commun.

    L'asymétrique est "plus lourd" à utiliser, et moins "safe" à cause de la longueur de clé plus faible.
    Le symétrique est plus léger, et donc plus "safe" car les clés peuvent être beaucoup plus longues.

    L'utilisation "classique" sera : création d'une paire de clés asymétriques chez l'émetteur, pareil chez le destinataire [communications secrètes entre eux] + utilisation de certificats pour assurer l'identité des 2 communicants [assurance que le destinataire est bel et bien celui qu'il dit être], puis échange d'une clé symétrique qui permettra ensuite d'alléger le coût en CPU du chiffrement/déchiffrement.


    Ca c'est la partie théorie cryptographique.
    En pratique : entraîne toi sur OpenSSL sur un Linux/BSD comme le suggère ram-000.
    N'oublie pas que AIX = IBM = Serveur dédié = matériel et libs dédiées made in IBM.
    Tu peux être quasiment sûr qu'une lib cryptographique sera fournie par IBM, et utilisera du matériel dédié.
    Le matériel sera normalement "transparent" pour toi, tu n'auras qu'à utiliser les fonctions que la documentation te dira d'utiliser.
    Tant que tu ne connais pas le travail "exact", fais des petits tests sur OpenSSL pour bien comprendre comment créer des canaux sécurisés, échanger des informations, etc...
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  5. #5
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Metalman merci pour ces précisions

    J'ai regardé comment fonctionnait l'AES, et c'est vraiment un procédé super compliqué, qui en plus se répète jusqu'à 14 fois (pour du 256 bits). Translations, polynômes, rotations ... tout y est pour répartir les valeurs depuis la matrice d'origine. Et j'ai donc vu qu'il était incassable au dessus de 9 tours pour une clé de 256 bits.

    Bon, comme tu me conseille d'utiliser l'AES, car plus léger, je ne demanderais pas ce qu'il en est de l'algo RSA.

    En tout cas je te remercie, toi et ram également.

    Je vais commencer des tests de transmissions cryptées, tout d'abord entre deux processus locaux, puis sur du client/serveur TCP et observer les trames, voir ce que ça donne.

    Je vous redirais ce que ca donne. Bonne soirée

  6. #6
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Oulalala !
    Tu n'as pas tout compris en fait...

    1) L'AES n'est pas "incassable" de fait.
    Il est considéré comme "sûr" en l'état actuel des machines avec leur puissance de calcul, par rapport à la taille de clé.
    Rien n'empêche de faire un gigantesque dictionnaire de toutes les combinaisons possibles des 3 valeurs : "clair" + "clé" = "chiffré"
    Juste qu'il faudra être TRES patient et avoir BEAUCOUP de disque pour stocker tout cela.

    2) Les 2 méthodes sont nécessaires dans un échange complet.
    Tu ne pourras probablement pas tout simuler, car c'est long et contraignant j'en conviens, mais si tu veux un test complet :
    - créer une PKI (hrem... bonne chance.)
    - générer une paire de clés RSA à un client avec signature dans un certificat
    - générer une paire de clés RSA à un serveur avec signature dans un certificat
    - générer une clé AES sur le serveur
    - faire communiquer serveur et client en RSA
    - vérifier les 2 certificats auprès de la PKI
    - transmettre la clé AES du serveur vers le client
    - ouvrir une communication via tunnel chiffré AES
    - fermer la communication RSA
    - .... [faire les échanges du programme] ....
    - fermer la communication AES

    Cet exemple suppose que les communications vers la PKI (vers la black-list et d'autres services de vérification) sont sûrs...

    Pour le moment ce que je te conseille :
    - code un échange de données "simple" en AES
    - code un échange de données "simple" en RSA
    - code un échange de clé via RSA, puis utilise celle-ci pour envoyer une clé AES, fermer la connexion RSA, et échanger des données en AES (le mélange des 2 précédents ! )

    3) Rassures-toi, les matrices et tout le tralala internes ne sont pas spécialement nécessaires à connaitre si tu les utilises simplement.
    Evite juste de te reposer sur des algorithmes bizarres ou issus de ton imagination... c'est l'erreur numéro 1 que font encore certains "experts en sécurité" malgré TOUTES les recommandations des chercheurs qui passent leurs journées à casser les algos, et démontrer que très peu d'entre eux sont réellement "sûrs" à un moment T.

    AES et RSA sont les algorithmes du moment sur les ordinateurs "classiques", utilise-les, maitrise les dans des situations tordues... puis n'hésite pas à les étudier en interne !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Metalman Voir le message
    L'asymétrique est "plus lourd" à utiliser, et moins "safe" à cause de la longueur de clé plus faible.
    Le symétrique est plus léger, et donc plus "safe" car les clés peuvent être beaucoup plus longues.


    AES ==> clé de 128, 192 ou 256 (peut être même 512 bits maintenant, je ne sais pas)
    RSA ==> clé de 1024, 2048 ou 4096 bits

    En fait, en RSA, les clés doivent être plus longues car l'algorithme est moins puissant que AES à protéger ses clés (à taille de clé égale, c'est plus facile de retourner RSA que AES)

    Ici, un article qui explique brièvement les différentes méthode de chiffrement : Introduction à la Cryptographie (du code de César à la crypto quantique en passant par Vigenère et Enigma)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  8. #8
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Ah, j'avais oublié que la taille des clés avaient été adaptées du même coup...

    Mais ça ne retire "que" la partie safe/unsafe.
    Ca ne change pas le fait que l'asymétrique sera toujours beaucoup plus lourd à utiliser que le symétrique.
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

Discussions similaires

  1. Serveur SQLite + cryptage du flux
    Par Morgan60 dans le forum SQLite
    Réponses: 0
    Dernier message: 12/04/2012, 12h03
  2. Nombre d'elements conseille dans un flux RSS ?
    Par kvndevils dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 25/04/2008, 15h32
  3. [Conseils-Suggestions] Lire un flux audio (ou vidéo) via internet
    Par ero-sennin dans le forum Web & réseau
    Réponses: 2
    Dernier message: 02/07/2007, 13h17
  4. conseils sur les Flux
    Par igor24 dans le forum C++
    Réponses: 2
    Dernier message: 22/01/2007, 14h21
  5. [Conseil] cherche a générer un Flux XML.
    Par Cyriusix dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 20/01/2007, 11h54

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