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 :

Créer un serveur telnet ssh ?


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut Créer un serveur telnet ssh ?
    Bonjour, j'ai fait un petit serveur telnet bien simple répondant a plusieurs demande de connexions multi-thread. Mais je voudrais le faire sécuriser. Je n'ai pas trouvé de doc simple sur google sur comment implémenter ssh. Mais si je comprends bien il va faloir que je fasses un client ssh aussi sinon personne pourra se connecter sur mon serveur ? A moins d'utiliser un client ssh existant bien sûr.

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    de 2 choses l'une :
    - soit tu te documente sur le protocole sh et tu l'implemente, dans ce cas il sera compatible avec les clients existants. je ne sais pas a quel point c'est compliqué, mais ca doit l'etre un poil
    - soit tu cree aussi le client, et dans ce cas tu te renseigne sur la methode de diffie-hellman pour securiser la connection.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par jobherzt
    de 2 choses l'une :
    - soit tu te documente sur le protocole sh et tu l'implemente, dans ce cas il sera compatible avec les clients existants. je ne sais pas a quel point c'est compliqué, mais ca doit l'etre un poil
    - soit tu cree aussi le client, et dans ce cas tu te renseigne sur la methode de diffie-hellman pour securiser la connection.
    Ok, mais est-ce qu'il n'existe pas des lib qui permettent de faire ça facilement ? Sinon aussi bien programmer ma propre connexion sécurisée.

    Par contre je me demandais quel est le principe de la connexion sécurisé ? Au lieu d'envoyer une chaîne de caractère "brut" on l'encrypte on l'envoie, le client la reçoit la décrypte et c'est tout ? Ou si c'est plus complexe ?

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    c'est un peu plus compliqué en ce sens qu'il faut que les 2 parties se mettent d'accord sur une clé... or pour echanger une clé il faut a priori disposer d'un canal securisé donc on rendre dans un cercle vicieux. c'est justement a ca que sert diffie-hellman (et sauf erreur c'est le systeme utilisé par ssh V2), a se mettre d'accord sur une clé sans avoir a echanger d'informaion sensible. ca repose sur un principe mathématique un peu comme RSA. ensuite, une fois la clé etabli chaqe message, bloc de donnée envoyé est crypté avec la cle.

    pour une bonne librairie de cryptage, regarde du cote de libgcrypt, ou gmp si tu veux en refaire une partie toi meme.

    pour etre compatible avec ssh, je sais que ce que je viens de decrire est le principe qu'ssh utilise, mais il y a des standards que je ne connais pas, donc je ne saurais pas t'en dire plus.

    [edit] je signale quand meme que diffie hellman est extrement simple, plus encore que rsa. il suffit juste d'avoir une lib pour calculer avec de grands entiers. mais a part ca ca tient en 3 lignes pour une implementation de base.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par jobherzt
    c'est un peu plus compliqué en ce sens qu'il faut que les 2 parties se mettent d'accord sur une clé... or pour echanger une clé il faut a priori disposer d'un canal securisé donc on rendre dans un cercle vicieux. c'est justement a ca que sert diffie-hellman (et sauf erreur c'est le systeme utilisé par ssh V2), a se mettre d'accord sur une clé sans avoir a echanger d'informaion sensible. ca repose sur un principe mathématique un peu comme RSA. ensuite, une fois la clé etabli chaqe message, bloc de donnée envoyé est crypté avec la cle.

    pour une bonne librairie de cryptage, regarde du cote de libgcrypt, ou gmp si tu veux en refaire une partie toi meme.

    pour etre compatible avec ssh, je sais que ce que je viens de decrire est le principe qu'ssh utilise, mais il y a des standards que je ne connais pas, donc je ne saurais pas t'en dire plus.

    [edit] je signale quand meme que diffie hellman est extrement simple, plus encore que rsa. il suffit juste d'avoir une lib pour calculer avec de grands entiers. mais a part ca ca tient en 3 lignes pour une implementation de base.
    3 lignes environ ? Daccord, je vais regarder de ce côté Mais en pratique quelle est la différence entre

    (écouter une socket, accepter la connexion, crypter des données avec RSA, les envoyer au client, le client utilise RSA pour décripter)

    ET entre "se mettre daccord sur une clé" ? Donc je ne saisi pas trop en pratique de ce que ça peut avoir l'air. Surtout en 3 lignes de code

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    en fait, l'idee c'est que les cryptage assymetriques comme RSA necessitent des calculs mathemqtiques complexe. donc ils sont lent.. on ne crypte JAMAIS quelque chose directement avec RSA. On le crypte avec un algo symetrique (AES, ou blowfish) avec une cle genere aleatoirement, puis on crypte cette cle en utilisant rsa.

    partant de la, tu peux tres bien utiliser rsa, il suffit que chacun des clients genere une paire de cle, que l'un d'entre eux envoie une cle a l'autre en utilisant rsa puis que cette cle serve pour la suite des communications. l'autre avantage de rsa est que s'il conserve sa cle rsa, elle peut aussi servir a identifier le client.

    l'avantage de diffie hellman est qu'il est plus direct, ca a u cote "pourquoi faire compliqué quand on peut faire simple". rsa permet aussi de transmettre des messages crypté en différé, par mail, par exemple, diffie hellman pas du tout. il sert juste a etablir une connection securisé. le principe est simple :

    le serveur (par exemple) tire au hasard un premier p et un nombre g (g pas trop grand en general).

    le client choisit un nombre au hasard C et le serveur un nombre au hasard S.

    le cleint calcule A=g^C mod p, le serveur B=g^S mod p et ils echangent ces nombres.

    le client caclule B^C mod p, le serveur A^S mod p.

    donc chacun des partie se trouve en possession du nombre g^(S*C) mod p, qui peut donc servir de base pour construire une cle.

Discussions similaires

  1. SAS/Connect protocole de connexion au serveur distant UNIX ? TELNET, SSH ?
    Par alexd dans le forum Administration et Installation
    Réponses: 3
    Dernier message: 27/08/2014, 18h29
  2. créer deux serveur web avec un seul adresse ip?
    Par Djo00 dans le forum Apache
    Réponses: 3
    Dernier message: 23/08/2006, 10h13
  3. Comment créer un serveur FTP avec Indy ?
    Par Matt2094 dans le forum Delphi
    Réponses: 2
    Dernier message: 03/06/2006, 13h23
  4. Comment créer son serveur web ?
    Par AsmCode dans le forum Apache
    Réponses: 7
    Dernier message: 01/04/2006, 03h54
  5. Réponses: 2
    Dernier message: 13/02/2006, 11h53

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