2011-01-10 7 views
1

Angenommen, ich habe ein gültiges kryptografisches Zertifikat (d. H. Von einem der vertrauenswürdigen Autoritäten signiert) auf meinem Server. Ich könnte es natürlich verwenden, um HTTPS-Sitzungen einzurichten und die Inhalte mit Vertraulichkeit (nur die Endpunkte können sie lesen), Authentifizierung (beide Endpunkte wissen, mit wem sie sprechen) und Zuverlässigkeit (die Nachricht kann nicht manipuliert werden) zu liefern.Standardmethode zum statischen Signieren einer Webseite

Nun nehme an, dass mir die ersten beiden eigentlich egal sind, aber stattdessen brauche ich nur die letzte. Nehmen wir zum Beispiel an, ich hätte eine statische Ressource, die ich signieren möchte (a-la PGP), damit ich sie anderen nicht vertrauenswürdigen Hosts geben kann: Wenn mein Zertifikat öffentlich ist und die Ressource damit signiert wurde, sollte jeder Client dies tun in der Lage zu überprüfen, dass die Ressource nicht manipuliert wurde (z. B. durch den nicht vertrauenswürdigen Host).

Die Frage ist nun: Gibt es eine Standardmethode, um eine Webseite statisch zu signieren? (Ich meine natürlich etwas, das in allen Browsern eingebaut ist) Ich kenne jemanden (Unhosted), der versucht, so etwas zu erreichen, indem er viel von der Logik über Javascript implementiert, aber ich frage mich, ob es einen Standard-Weg gibt.

+0

Ein kleines bisschen Geschichte. Die Leute wissen von https, aber die meisten haben noch nie von einem früheren Konkurrenten namens sgtp gehört.Es hat sich nie während des Startens von https durchgesetzt, aber shttp basierte auf Nachrichten und basierte auf SMIME-Standards. –

+0

Eine Idee: Sie könnten den Verschlüsselungsalgorithmus "NONE" in Ihrem SSL-Server anbieten (aber zusammen mit einem MAC-Algorithmus, um die Authentizität zu gewährleisten). Aber ich nehme an, die meisten Browser werden es nicht akzeptieren (und das zu Recht, da die meisten Benutzer wirklich Vertraulichkeit mit HTTPS wollen). –

+0

Ich bin ziemlich sicher, dass so etwas nicht existiert, aber Sie könnten fast sicher eine Browser-Erweiterung schreiben, die es implementiert. –

Antwort

1

Ich bin nicht bewusst, dass eine solche Standardimplementierung in einem Browser eingebaut ist.

Selbst im Mail-Bereich, wo solches Verhalten lange Zeit "Standard" ist (S/MIME), finden wir jeden zweiten Tag Probleme mit verschiedenen Clients, Relays und Servern.

Für einen Download können Sie zum Senden eines PKCS # 7-Containers zurückkehren und ein Tool zum Entpacken und Verifizieren zuordnen. Zumindest Plugins und Hilfsprogramme sind überall verfügbar.

0

Ich kenne auch keine Standardimplementierung wie diese in einem Browser. Aber ein bisschen zu sichern ... einige Dinge zu beachten:

  1. Für ausführbare Inhalte (wie heruntergeladene EXE-Dateien, ActiveX-Steuerelemente, Windows Installer, etc.), eine gemeinsame/Standardlösung Microsoft Authenticode. Siehe http://www.tech-pro.net/code-signing-for-developers.html. Ähnliche Lösungen für Java, Adobe usw. Die Zertifizierungsstelle, von der Sie das Zertifikat erwerben, verifiziert Ihre Identität. Wenn Sie eine EXE-Datei mit einem Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle signieren, zeigt Internet Explorer die Warnmeldung "Unterschriftsinformation/weniger gruselig" an. Gleiches gilt für UAC-Erhöhungsaufforderungen in Windows Vista/7. Du kennst das wahrscheinlich schon?

  2. Aber für die statische Inhaltssituation ist die Standardlösung SSL. Darf ich fragen, warum SSL in Ihrer Anwendung keine akzeptable Lösung ist?

    Das Problem, das ich sehe, ist, dass es keine Möglichkeit für den Benutzer gibt, die Identität der Webseite über den Webbrowser zu überprüfen, außer das SSL-Sperrsymbol im Browser zu klicken, um das Zertifikat anzuzeigen. Die neuen SSL-EV-Zertifikate sollten bestätigen, dass Sie die fragliche Domain kontrollieren und dass Sie der sind, von dem Sie sagen, dass Sie es sind (d. H. Kein "PayPal" -Zertifikat für www.paypal.com.hacker.cz erhalten).

Es klingt aus Ihrer Frage, die Sie sich für eine „Authenticode für Webseiten“ Art der Sache suchen: ein Zertifikat mit einem Thema nicht zu einem Domain-Namen gebunden und wo die Web-Seite könnte überall gehen. Leider sind mir solche Standard-HTML-Dateien nicht bekannt. Ich glaube, Sie können Dinge wie Adobe AIR-Anwendungen unterschreiben, die auf HTML/Javascript/etc. basieren können, obwohl ich mit dieser Plattform nicht vertraut bin. Es platziert die Webseite natürlich außerhalb des normalen Webbrowsers des Benutzers.

+0

Nehmen Sie zum Beispiel Wikipedia. Wenn es eine statische Version jedes Artikels signieren könnte, die an nicht authentifizierte Benutzer geliefert werden kann, könnte eine verteilte CDN, die von Freiwilligen auf ihren nicht vertrauenswürdigen Hosts ausgeführt wird, machbar sein. Ohne die statische Signierung ist dies nicht möglich. Aber damit könnte ein Client, der eine statische Version von einem nicht vertrauenswürdigen Host anfordert, immer noch sicher sein, dass die Ressource nicht vom CDN (oder anderen Proxies) manipuliert wurde. Der Grund für all dies wäre offensichtlich die Senkung der Betriebskosten und möglicherweise die Verbesserung der QoS. – CAFxX

+0

OK, ich verstehe was du sagst. Kein Webbrowser, den ich kenne, hat diese Art von Funktionalität - die einzige echte Sicherheitsgarantie von SSL. Vermutlich benötigen Sie einen sicheren, eingebetteten "Webbrowser in einem Webbrowser", der die Signaturen von Inhalten anderer Hosts prüft, die ursprünglich auf Ihrem vertrauenswürdigen Server über SSL gehostet wurden. Vermutlich können Sie JavaScript auf Ihrer Hauptseite (über SSL) verwenden, um andere statische Inhalte (z. B. Bilder) herunterzuladen, die Signatur zu überprüfen und zu verweigern, wenn dies fehlschlägt. Solange dieses JavaScript von Ihrem Server über SSL stammt, wäre es einigermaßen sicher. –

+0

Eigentlich ist hier ein einfacher Weg. Vergessen Sie die digitalen Signaturen und verwenden Sie einfach SHA-1- oder SHA-2-Hashes. Ihre Hauptseite (über SSL bedient) würde JavaScript haben, das den statischen Inhalt wie folgt einlädt: (1) den statischen Inhalt herunterladen, (2) Hash berechnen, (3) sicherstellen, dass der Hash mit dem erwarteten Hash für diesen Inhalt übereinstimmt. Wenn eine Übereinstimmung, Inhalt anzeigen; Ansonsten, zeige keinen Inhalt an. Das Problem bei der Verwendung von Signaturen besteht darin, dass der Angreifer den Inhalt immer noch wechseln kann. Tauschen Sie Bilder beispielsweise um, indem Sie sie umbenennen. Könnte eine große Sache sein, wenn Sie Sachen wie eine Löschen-Schaltfläche und eine Abbrechen-Schaltfläche wechseln! –