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

Réseau C Discussion :

Garantir l'intégrité des données ?


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Par défaut Garantir l'intégrité des données ?
    Bonjour,

    J'essaie dans un but personnel de réaliser un serveur et client de chat via le réseau local du style canal IRC.

    Pour les messages entre le client et le serveur, j'aimerais utiliser des données brutes, mais j'ai un problème pour trouver une façon de m'assurer que toutes les données ont bien été reçues.

    En fait la façon classique consisterait à indiquer en en-tête la taille des données, suivie de ces données. Le problème que cela pose est que n'importe qui pourrait falsifier ces données. En donnant une taille trop petit à la limite le message du client serait "simplement" ininterprétable et donc perdu, dans le cas d'une taille plus grande en revanche, j'attendrais sur le réseau des données inexistantes et mon thread se retrouverait bloqué. Cela pose un problème d'autant plus conséquent que les différents clients sont gérés via un sélecteur, donc pas en parallèle.


    Une autre technique aurait été de placer un marqueur à la fin de mon paquet de données. Là plus de problème de taille, par contre un client malveillant pourrait simplement omettre ce marqueur et donc bloquer le serveur.

    Alors voilà, je cherche une technique pour que le client ne puisse PAS bloquer le serveur. Je n'ai pas vraiment d'autres idées...

    Merci,
    Spootnik

  2. #2
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    Déjà, la sécurité de ton serveur ne devrait pas dépendre de la taille des packets. Si je comprend bien, tu lis l'en-tête, et tu boucles jusqu'à ce que tu reçois toutes les données. Revois ta conception parce que là il y a un gros problème.

    Ton thread qui se charge de la réception des données ne devrait pas avoir à voir ce qu'il y a dedans, ce n'est pas sa responsabilité. Au mieux il devrait les bazarder tous dans un conteneur qu'une autre procédure va traiter. C'est cette procédure qui va faire le tri entre les bon pak et les mauvais.

    Pour ce qui est de l'intégrité des données, tu peux partir sur un checksum, ou mieux, un crc.

    Si tu as peur des attaques du style MITM, alors c'est tout un autre problème, c'est un problème de cryptographie. Je te conseille là d'utiliser un cryptage asymétrique type RSA et d'associer ta clé publique à un certificat. De cette manière, les attaques du type MITM seront neutralisés.

    Par contre, si quelqu'un s'amuse à décortiquer ton protocol et à connaître son fonctionnement, rien ne l'empêchera de simuler un client et d'envoyer des packets.

    Si ton serveur peut être planté en lui envoyant des packets spécifiques, alors ton serveur n'est pas sécurisé à sa racine. Et il faut que tu revois ça avant d'attaquer le cryptage et d'autres choses qui ne vont que compliquer la chose.

  3. #3
    Membre émérite Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Par défaut
    Citation Envoyé par JulienDuSud Voir le message
    Déjà, la sécurité de ton serveur ne devrait pas dépendre de la taille des packets. Si je comprend bien, tu lis l'en-tête, et tu boucles jusqu'à ce que tu reçois toutes les données. Revois ta conception parce que là il y a un gros problème.
    Ben ui c'est l'objet même de ce topic !

    Citation Envoyé par JulienDuSud Voir le message
    Ton thread qui se charge de la réception des données ne devrait pas avoir à voir ce qu'il y a dedans, ce n'est pas sa responsabilité. Au mieux il devrait les bazarder tous dans un conteneur qu'une autre procédure va traiter. C'est cette procédure qui va faire le tri entre les bon pak et les mauvais.
    Mais comment justement ? Je peux vérifier si ce que j'ai reçu est interprétable. Mais si ça ne l'est pas que faire ? Attendre une suite des données qui peut ne jamais arriver ? J'ai besoin de pouvoir déterminer s'il manque un bout au paquet et que je dois patienter un peu où si je dois laisser tomber le début du paquet.

    Citation Envoyé par JulienDuSud Voir le message
    Pour ce qui est de l'intégrité des données, tu peux partir sur un checksum, ou mieux, un crc.
    Ben quand je parlais d'intégrité des données, c'est avant tout savoir si j'ai reçu l'objet en entier ou pas. Pour ce qui de protéger la modification des données envoyées c'est autre chose. Tant que je suis capable de détecter que j'ai reçu un objet entier et valide pour l'instant cela me suffit.


    Citation Envoyé par JulienDuSud Voir le message
    Si tu as peur des attaques du style MITM, alors c'est tout un autre problème, c'est un problème de cryptographie. Je te conseille là d'utiliser un cryptage asymétrique type RSA et d'associer ta clé publique à un certificat. De cette manière, les attaques du type MITM seront neutralisés.
    Hum non ce n'est pas mon soucis du moment. Je suppose que pour ce cas le fait d'utiliser une connexion sécurisée via le protocole TLS peut suffire non ?

    Citation Envoyé par JulienDuSud Voir le message
    Par contre, si quelqu'un s'amuse à décortiquer ton protocol et à connaître son fonctionnement, rien ne l'empêchera de simuler un client et d'envoyer des packets.
    Comme je l'ai dit, que le paquet soit mauvais ou pas pour l'instant n'est pas le problème. Il faut juste que je puisse savoir si j'ai reçu un objet entier.

    Citation Envoyé par JulienDuSud Voir le message
    Si ton serveur peut être planté en lui envoyant des packets spécifiques, alors ton serveur n'est pas sécurisé à sa racine. Et il faut que tu revois ça avant d'attaquer le cryptage et d'autres choses qui ne vont que compliquer la chose.
    Ben oui pour ça que je poste là .

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Et tu dois / veux absolument refaire ça toi-même (ce que je peux comprendre), ou tu veux juste la fonctionnalité quitte à utiliser une librairie tierce ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre émérite Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Par défaut
    Tout dépend de la complexité du principe. Pour l'instant j'aimerais savoir quelles techniques existent pour répondre à mon problème. Ensuite si la solution est facile à mettre en oeuvre moi-même, je préfère éviter une dépendance et l'implémenter, sinon ça ne me pose pas de problème d'utiliser une bibliothèque tierce.

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Alors ICE : ça va te plaire, tu peux même l'adapter sur l'iPhone, Silverlight, etc.

    Regarde notamment du côté de IceBox+IceGrid, IceStorm, Glacier2, IceSSL sur leur site. T'as même un patcheur automatique si besoin...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Garantir l'intégrité des données
    Par Fooshi dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/05/2012, 23h30
  2. [MySQL] Intégrité des données
    Par white_tiger dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/04/2007, 03h16
  3. [N-Tier] Multi-couches et intégrité des données
    Par alexc_fr dans le forum Autres
    Réponses: 6
    Dernier message: 04/04/2007, 16h04
  4. Réponses: 4
    Dernier message: 09/01/2007, 15h20
  5. [OLAP]verifier l'intégrité des données
    Par crazy dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 13/07/2006, 12h30

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