2009-08-21 13 views
4

Grundsätzlich meine Frage Verschlüsselung ist die genaue gleiche wie folgt aus:Einfache Client/Server, TCP/IP, um den Nachrichtenstrom, SSL (C++)

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

Der Unterschied ist, dass ich dies für reine C benötigen ++ nicht .NET. Ich kann keine Bibliotheken von Drittanbietern verwenden. Wenn es sich also nicht um eine Windows-Systemkomponente (wie oben) handelt, brauche ich etwas mit der Quelle, damit ich die generelle Idee bekommen und sie selbst erstellen kann.

Thanks :)

die andere Frage nach Verwendungszweck:.

„Schreiben eine kleine TCP/IP-Client-Server- App Grundsätzlich erstellt es einen Server, und dann können Sie mehr erstellen verschiedene Clients und ein wenig von eine Chat-Sitzung einrichten.Was ich mich wundere ist gibt es eine Möglichkeit zu integrieren, mit Standard-.net-Bibliotheken irgendeine Form von Verschlüsselung?

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

Gibt es eine Möglichkeit, tcp mit RSA speficying?

Oder würden Sie (mir, dass ist) müssen einige benutzerdefinierte libaries schreiben Schlüssel Austausch zu tun und dann die nachfolgenden Chat-Nachrichten verschlüsseln? Ich habe getan , dass zuvor für uni, aber das war in Java, aber ich weiß, es wäre schwer zu konvertieren sie. Nur versuchen, nicht zu haben, um das Rad neu zu erfinden ...

Oder was ist mit der Verwendung einer ssl?

Danke, Ron.“

+0

Hallo, danke für deine Antworten. Wenn ich sage "Implementiere es selbst", meine ich mit SSPI. Es sieht ziemlich einfach aus, aber ich vermute, dass das irreführend ist und ich keine dummen Fehler machen will, die die Lösung angreifbar machen. Sein tatsächlich 5-10 Jahre alter Code, der diese neue Sicherheitsanforderung hat, FYI. – Rabbit

Antwort

0

Schreiben Sie Ihren eigenen Verschlüsselungscode ist "nicht empfohlen". Es ist einfach genug, einen einfachen Fehler zu machen, wenn Sie eine dieser Bibliotheken verwenden, geschweige denn, wenn Sie selbst versuchen, eine davon zu schreiben.

Was Sie wirklich verwenden möchten, ist OpenSSL mit Boost.ASIO oben drauf. Wenn Sie das nicht können, verwenden Sie am besten das Internet Explorer-COM-Objekt. Dies ist nicht ganz so flexibel, aber es kann gut funktionieren, je nachdem, was Ihre genauen Bedürfnisse sind. Sie können auch die Win32-API erkunden. Zuletzt habe ich geschaut, dass nicht genug Krypto-APIs dafür zur Verfügung standen. Der letzte Weg, um damit umzugehen, besteht darin, die .NET-APIs so zu verpacken, dass Sie sie aus nativem C++ verwenden können.

Nur wenn nichts davon für Sie funktioniert, sollten Sie sogar in Betracht ziehen, dies selbst zu schreiben. Sie werden Fehler machen und Ihre Anwendung wird dadurch weniger sicher sein. Bevor Sie also beginnen, Ihren eigenen Krypto-Code zu schreiben, könnten Sie auch versuchen, SOCKS über SSH zu durchsuchen und die SSH-Implementierung einer anderen Person zu verwenden. Das nächste, was ich mir ansehen würde, ist, den Code einzukaufen, anstatt ihn selbst zu schreiben. Der Code wird nicht so gut sein wie Open-Source-Angebote, da er weniger verwendet wird und mehr Sicherheitsprobleme haben wird, aber er wird immer noch besser sein als alles, was Sie bei Ihrem ersten Ausflug schreiben würden.

Nur wenn Sie alle diese Optionen ausgeschöpft haben, sollten Sie darüber nachdenken, dies selbst zu schreiben. Sobald Sie darüber nachdenken, sollten Sie alle anderen Optionen erneut versuchen, um sicherzustellen, dass Sie nicht verpassen, einen von ihnen zu bekommen, um für Sie das erste Mal zu arbeiten.

Wenn Sie immer noch Ihre eigene Implementierung schreiben, dann werfen Sie sie weg und verwenden Sie eine der anderen Optionen, bevor Sie sie in Produktion nehmen, da es Fehler geben wird, die die Sicherheit in dem Maße gefährden, in dem Sie wahrscheinlich auch nicht gestört haben .

Es tut uns leid, das alles zu vertuschen, aber diese Dinge richtig zu machen ist wirklich schwer und nichts, was man tun kann, wenn man sich kurz die Implementierung eines anderen anschaut.

+0

Danke. Ich versuche immer noch, hier die beste Lösung zu finden, aber was Sie sagen, klingt vernünftig. Danke auch an die anderen beiden Mitwirkenden. – Rabbit

1

Sie können jederzeit bei OpenSSL suchen, die Open-Source ist, aber das wäre wie SSL selbst implementieren. Ich würde vorschlagen, OpenSSL Verpackung und verwenden. Oder die SSL-Tunnel-Anwendung in OpenSSL.