2009-08-21 15 views
4

Fondamentalement, ma question est exactement même que celle-ci:client simple/serveur, TCP/IP crypter le flux de messages, SSL (C++)

Simple client/server, TCP/IP encrypting the message stream, SSL

La différence est que je besoin de cela pour C++ pur , pas .NET. Je ne peux pas utiliser de bibliothèques tierces, donc à moins que ce soit un composant système Windows (comme ci-dessus) j'ai besoin de quelque chose avec la source pour que je puisse avoir l'idée générique et la construire moi-même.

Merci :)

Citant l'autre question de référence.

« L'écriture d'un petit serveur client TCP/IP application Fondamentalement, il crée un serveur, et vous pouvez créer plusieurs différents clients et mis en place un peu une session de chat. Ce que je me demande est il y a un moyen d'intégrer, en utilisant bibliothèques standard .net une forme de cryptage ?

m_mainSocket = nouveau Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

Existe-t-il un moyen de speficying tcp en utilisant rsa?

Ou (moi qui est) doivent écrire quelques personnalisés pour d'abord des bibliothèques faire l'échange de clés puis crypter les messages de discussion suivants ? J'ai fait qu'avant pour uni mais c'était dans java mais je sais qu'il ne serait pas difficile à les convertir. Essayer juste de ne pas avoir pour réinventer la roue ...

Ou que diriez-vous d'utiliser un ssl?

Merci, Ron. »

+0

Salut, merci pour vos réponses. Quand je dis «implémenter moi-même», je veux dire utiliser SSPI. Cela semble assez facile, mais je soupçonne que cela peut être trompeur et je ne veux pas faire d'erreurs stupides, laissant la solution vulnérable. Son code 5-10 ans a cette nouvelle exigence de sécurité ,, FYI. – Rabbit

Répondre

0

L'écriture de votre propre code de chiffrement est "déconseillée". Il est assez facile de faire une erreur simple en utilisant une de ces bibliothèques, et encore moins quand vous essayez d'en écrire une vous-même.

Ce que vous voulez vraiment utiliser, c'est OpenSSL avec Boost.ASIO. Si vous ne pouvez pas faire cela alors votre meilleure alternative est d'utiliser l'objet COM Internet Explorer. Ce n'est pas tout à fait aussi flexible, mais pourrait bien fonctionner selon vos besoins exacts. Vous pouvez également explorer l'API Win32. La dernière fois que j'ai regardé, il n'y avait pas assez d'API crypto largement disponibles pour le faire. La dernière façon de traiter cela est d'envelopper les API .NET afin que vous puissiez les utiliser à partir de C++ natif.

Seulement si cela ne vous convient pas, vous devriez même songer à l'écrire vous-même. Vous ferez des erreurs et votre application sera moins sécurisée en conséquence. Donc, avant de commencer à écrire votre propre code crypto, vous pouvez aussi essayer de mettre en tunnel des SOCKS via SSH et d'utiliser l'implémentation SSH de quelqu'un d'autre. La prochaine chose que je regarderais est d'acheter dans le code plutôt que de l'écrire vous-même. Le code ne sera pas aussi bon que les offres open source car il sera moins utilisé donc aura plus de problèmes de sécurité, mais il sera toujours mieux que tout ce que vous écririez lors de votre première sortie.

Seulement si vous avez épuisé toutes ces options si vous pensez à l'écrire vous-même. Une fois que vous y réfléchissez, vous devriez essayer à nouveau toutes les autres options pour vous assurer que vous n'avez pas manqué de faire en sorte que l'un d'entre eux travaille pour vous la première fois. Si vous écrivez toujours votre propre implémentation, jetez-la et utilisez l'une des autres options avant de la mettre en production, car il y aura des erreurs qui compromettront la sécurité dans la mesure où vous n'aurez probablement pas à vous soucier .

Désolé de tout critiquer, mais il est très difficile de faire les choses correctement, et ce n'est pas quelque chose que vous pouvez faire en examinant simplement l'implémentation de quelqu'un d'autre.

+0

Merci. J'essaie toujours de trouver la meilleure solution ici, mais ce que vous dites est raisonnable. Merci également aux deux autres contributeurs. – Rabbit

1

Vous pouvez toujours à OpenSSL qui est open source, mais ce serait comme mettre en œuvre vous SSL. Je suggère emballage OpenSSL et de l'utiliser. Ou utiliser l'application tunnel SSL disponible dans OpenSSL.