2008-09-19 12 views
5

Ich habe einen WCF-Dienst, der einige sensible Daten verarbeitet. Ich möchte sicherstellen, dass diese Daten nicht offen gelegt werden, und deshalb schaue ich mir netTCPBinding an ... hauptsächlich, weil ich das Netzwerk, über das es läuft, kontrollieren kann und die Leistung eine hohe Priorität hat.WCF netTCPBinding - Ist die Transportverschlüsselung ausreichend?

Ich erkenne, dass es zwei Bereiche gibt, die verschlüsselt werden können: Transportebene und Nachrichtenebene. Ich beabsichtige, Zertifikate zu verwenden, um auf der Transportebene zu verschlüsseln, von der ich verstehe, dass sie TLS über TCP verwendet.

Die anrufenden Clients gehören auch mir und so kontrolliere ich den Transportlevel. Da ich keine Veränderung in der Transportschicht erwarte, muss ich mich mit der Verschlüsselung auf Nachrichtenebene herumschlagen? Es erscheint unnötig, wenn ich nicht die Flexibilität habe, den Transport zu ändern.

Antwort

5

Die Verschlüsselung auf Nachrichtenebene ist erforderlich, wenn Sie keinen Intermediär steuern. Intermediäre Dienste müssen in der Lage sein, die Soap-Header zu modifizieren und Ihre sensiblen Daten für bösartige Zwecke einzusehen. Aber wenn Sie alles vom ursprünglichen Absender bis zum ultimativen Empfänger steuern, brauchen Sie keine Verschlüsselung auf dieser Ebene.

Ich arbeite an einem Projekt, das netTCP für interne Dienste verwendet, und ich kann bestätigen, dass es gut funktioniert.

4

Im Allgemeinen, solange Sie mit Punkt-zu-Punkt-Verbindungen arbeiten und Zertifikate auf beiden Seiten validiert werden (insbesondere wenn Sie gegenseitige Authentifizierung verwenden), dann könnte die Sicherheit auf Transportebene ausreichen. Überprüfen der Zertifikate ist nützlich, um sicherzustellen, dass jemand den Server nicht ersetzt (oder kein Man-in-the-Middle im Weg ist). Die Sicherheit auf Nachrichtenebene wird immer dann nützlich, wenn Sie Inhaltssignaturen durchführen müssen oder eine Nichtabstreitbarkeit benötigen und insbesondere, wenn Sie Zwischenhändler (Router) zwischen dem Client und dem Server haben und sicherstellen möchten, dass sie die Nachricht auch tatsächlich weiterleiten können auf seinen Inhalt schauen.

2

Ich denke, Sie sind genau richtig. Wenn Sie nicht beabsichtigen, dies auf einen anderen Transportmechanismus zu verschieben, kann ich nicht erkennen, warum Sie sowohl die Nachrichten- als auch die Transportverschlüsselung benötigen. Wenn die Leistung ein wichtiger Faktor ist, können Sie durch das Überspringen der Nachrichtenverschlüsselung etwas Leistung sparen, da Sie beim Senden/Empfangen jeder Nachricht keinen Schutz hinzufügen müssen.