Security Briefs
Eine Follow-on-Unterhaltung über die Bedrohungsanalyse
Der Ausgabe des MSDN Magazines von Mai 2009 enthält einen Artikel mit dem Titel "Eine Unterhaltung zu Threat Modeling"Erläutert eine Konversation zwischen Paige ein Neophyte Junge Sicherheit und Michael, einem Angreifer etwas jaded Sicherheit.
In diesem Monat werde ich die Unterhaltung einnehmen, wo unterbrochen.
Szene ich
Eine Küche Büro neben der Coffeepot.
Paige: Letzten wir erfüllt Sie gute ansehen meiner Bedrohungsmodell dauerte, aber Sie gesagt haben Sie Probleme kryptografischen und sicheren Entwurf zu einem späteren Zeitpunkt behandeln würden.
Willkommen Sie gut, bei der späteren Zeitpunkt.
Michael: Geben Sie erhältlich einen Kaffee zuerst?
Wartet nicht auf eine Antwort, gießt Michael selbst eine riesige Kaffee.
Paige: Er, dass.
Michael: Erinnern Sie erneut was Ihre Anwendung ist.
Paige: Es ist ein Produkt, das Benutzern ermöglicht, Daten auf unseren Servern zu speichern.
Es gibt ein kleiner Codeabschnitt Client, die Bits an einen Server für diesen Benutzer beiseite verschiebt, der.
Dieser Code kann Dateien vom Benutzer an unsere Back-End über den Webserver uploaden, und die Dateien im Dateisystem mit Dateimetadaten in SQL Server für die schnelle Suche gespeichert gespeichert sind.
Schließlich können wir Milliarden von Dateien speichern.
Die beiden wichtigsten Umgebungen sind Domäne beigetretenen Computer und Internet verbundenen Computern.
Michael: ACH Ja, erinnern das rechts ist, ich jetzt kann.
So viel Code, so wenig Zeit.
GUT, wir gehen Sie zurück zu Ihr Bedrohungsmodell, um festzustellen, welcher Teil wir besorgt sind.
Haben Sie die DFD--die Datenflussdiagramm?
Die beiden gehen über Paige des Helpdesk.
Er meldet sich mit Ihrer Smartcard und lädt das SDL Threat Modeling-Tool.
Paige: Hier ist es.
Michael sucht über das Diagramm.
Michael: Ist dies im Diagramm auf Ebene 1 Rechte?
Ist es eine Ebene ausführlichere als Kontext-Diagramm?
Paige: Yup.
Wir haben auch ein 2 Diagramm, aber ich nicht glaube, müssen wir, noch tiefer gehen.
Michael: Sie haben Recht, dies ist optimal.
Wenn weitere Genauigkeit erforderlich ist, wie wir dies durchgehen, können wir-2-Diagramm betrachten.
Paige: Durch die Art Aufrufen nicht wir diese DFDs mehr.
Michael: Er OK!
Was sind, dann Eingabewerten?
Paige: Anwendungsdiagrammen.
Michael: Was Ihre Bootförmig überlagert ich s'pose.
Wir verwenden Buntstifte nächsten.
OK wieder auf das Diagramm.
Damit der Benutzer sendet eine Anforderung der Clientanwendung zum Uploaden oder Downloaden von Dateien zum oder vom Server und der Server weiterhin besteht, dass Daten in das Dateisystem auf der Rückseite, zusammen mit einige Metadaten über die Dateien beendet, die in SQL Server gespeichert werden?
Paige: Das ist eine Verwendung;in der Tat ist es wahrscheinlich das wichtigste Szenario.
Natürlich muss der Administrator einrichten, konfigurieren und Überwachen der Anwendung;Das ist Was bewirkt das Administratortool.
Michael: Konzentrieren wir uns das dieses Szenario Core dann aus.
Szene II
Michael wird intently in das Anwendungsdiagramm starten.
Michael: Durch jedes Element im Kern-Szenario betrachten wir starten, und wir müssen jeweils die STRIDE-Bedrohungen ausgeschrieben.
Paige: STRIDE?
Erneut erinnern.
Michael: Spoofing von, Repudiation (Nichtanerkennung), Offenlegung von Informationen, Denial-of-Service, Erhöhung von Berechtigungen.
Michael startet schreiben schnell auf ein Blatt Papier.
Michael: Betrachten Sie diese Liste:
Paige: Werden nicht alle diese im Threat Modeling-Tool?
Michael: Ja, Sie anzeigen, wie das Tool an der Liste ankommen möchten jedoch.
Durch die Art müssen nicht Sie die Bedrohungsmodellierung Tool SDL-kompatibel sein verwenden, solange das Bedrohungsmodell vollständige und genaue ist.
Im Wesentlichen wird jedes Element einen bestimmten Satz von Bedrohungen.
Meiner Meinung nach Sie es aus der Liste arbeiten können.
Paige: Oh, mir es, aber fehlt Sie sind nicht etwas?
Alle diese Datenflüsse zwischen den verschiedenen Anwendungselementen der?
Michael: Yup, aber ich habe, dass auf absichtlich ich nicht wirklich diejenigen noch--konzentrieren möchten, dass wir diese letzten erläutert.
Paige: Haben wir?
Michael: Ja.
Betrachten Sie das Bedrohungsmodell.
Paige sucht über das SDL Threat Modeling-Tool
Paige: Finden Oh, ich ist wo erörtert Verwendung von SSL-TLS zur Behebung der Manipulation, Bedrohungen durch Informationsenthüllung auf die Daten zwischen den Client- und Prozessen, den richtigen fließen?
Michael: Gute!
Hier ist also eine Frage für Sie.
Daten, die vom Benutzer zum Server verschoben und dann auf Dateisystem des Servers--ist, dass vertrauliche Daten?
Paige: Sie gebeten, zuletzt.
Ja, kann es sein.
Michael: Oh, oh.
Paige: Was?
Verschlüsselt SSL/TLS verwenden, damit fein, rechts wir die Daten?
Michael: Absolut nicht.
SSL-TLS verringert die die Daten Bedrohung Offenlegung von Informationen, wie es zwischen zwei Prozessen--der 2.0 Client-Prozess und 3.0 Server-Prozess fließt.
Aber nachdem die Daten, die gesichert Tunnel verlässt, Daten in Klartext, und Sie Daten in Klartext in das Dateisystem schreiben.
Paige: Oh, aber was ist das Risiko?
Michael: Sie Infos!
Paige: Ich bin mir bewusst nicht.
Michael sighs.
Michael: Angenommen, ein Client der Anwendung ein Mitarbeiter von börsennotierten Unternehmen ist.
Wir werden spezifischere: der Mitarbeiter ist CFO börsennotierten Unternehmen, und er die Anwendung verwendet, um eine Kalkulationstabelle zu speichern, die Geschäftsjahr Daten für das aktuelle Quartal Daten, das ist nicht öffentlich und werden nicht öffentliche bis zum Ende des Quartals anzeigt, wenn das Unternehmen seinen Gewinn kündigt.
Angenommen, ein Hacker teilt in Ihrem System, ruft die Daten und zum verkaufen oder Kaufen von Aktien im Unternehmen verwendet.
Die möglicherweise Insider handeln.
Paige: Oh, oh.
Michael: Oh-oh, tatsächlich.
Dies ist schwerer.
Die FINANZDIREKTOR muss nicht geeignete Steuerelemente auf diese vertraulichen Daten, die möglicherweise eine Verletzung des SOX-Bestimmungen.
Paige: Eingabe "möglicherweise"eine Menge.
Michael: Ich habe mit Sicherheit.
Führen Sie ich ein Jurist, aussehen?
So an meine ursprüngliche Frage.
Ist dies etwas Sie interessieren?
Paige: Nun, eigentlich nicht.
Ich glaube, unser Begriffe Zustand, unseren Dienst für ultra-sensitive Daten zu verwenden, sollten nicht.
Aber ich werde zusammen spielen.
Angenommen, ich sage, "Ja, wir dieses Szenario kümmern." Was nun?
Michael: Meine erste Bit Ratschläge wäre finden Sie in Ihrem Anwälte sicherstellen, dass Sie nicht das Unternehmen gefährdet bei diesem Szenario einlagern sind.
Aber angenommen, Sie sagen können Sie dafür jedoch müssen Sie unbedingt, dass Sie die Daten im Back-end schützen.
Paige: Was Sie sagen möchten ist, dass die Daten im Datenspeicher, gehalten 5.0, das Dateisystem auf dem Server ist, unterliegt die Offenlegung von Informationen und wir müssen die Bedrohung minimieren.
Bin ich rechts?
Michael: Sie können auf Spotfarben.
So wie behoben Sie es?
Paige: ACLs.
Michael: Warum access Control Lists?
Paige: Wir können den Zugriff auf nur gültige Benutzer die Daten beschränken.
Michael: Wie der Server-Anwendung lesen und schreiben die Daten?
Paige: Oh, angenommen der Prozess als eine eindeutige Identität ausgeführt wird.
Wir müssen Sie FooID aufrufen.
Wir konnten Dateien, die FooID sowie als gültige Benutzer können eine ACL zuweisenZugriff auf die Dateien.
Michael: Es funktioniert; nichtEs ist nicht sicher.
Paige: Warum nicht?
Michael: Wenn ich ein Angreifer kann ich den Serverprozess gefährden, indem als FooID ausgeführt und führen Meine bösartigen Code auf dem Server.
Voila, mein Code als FooID ausgeführt wird und ich besitze die Daten!
Paige sucht dejected.
Paige: Humph.
Michael: Müssen Sie die Verschlüsselung verwenden.
Paige: Natürlich!
Der Server wird nur lesen und Schreiben verschlüsselte Blobs, und wenn ein Angreifer den Server gefährdet, er noch nicht mehr auf die Daten, sofern er die Verschlüsselung aufheben kann.
Paige perks einrichten.
Michael: Jetzt startet wirklich den Spaß.
Wir berührt einiger Crypto Probleme im letzten besonders als Schlüssel Zusammenhang.
Paige: Was bedeuten Sie?
Michael: OK, wie Sie beabsichtigen, die Daten verschlüsselt?
Paige: Der Benutzereingabe in einem Kennwort in die clientseitige Anwendung und die clientseitige Anwendung verschlüsselt die Daten mit dem Kennwort, und sendet das verschlüsselte Blob über das Kabel an den Server.
Der Server schreibt Metadaten in SQL Server und schreibt dann in das Dateisystem Server das verschlüsselte Blob.
Michael: Was ist in den Metadaten?
Paige: Des Besitzers Identität, die Dateigröße, den Dateinamen, die Zeit in das Dateisystem geschrieben und letzten Mal gelesen wurde.
Diese Art von Dingen.
Diese Informationen auch im Dateisystem, gehalten wird weiß aber Weise schneller, dazu einen Lookup in etwas entwickelt, um diese Art von Daten zu speichern: eine SQL Server-Datenbank.
Michael: Gut, bin ich froh, dass es innerhalb der Datei gehalten Datenspeicher nicht!
Paige: Warum?
Michael: Für eine Reihe von Gründen.
Es würde zunächst bedeuten die Serveranwendung hat Zugriff auf Daten in Klartext und zum Abrufen der Daten erfordert des Serverprozess zum Entschlüsseln der Daten.
Paige: So?
In einer Stimme laut jedoch nicht ganz Shouting reagiert Michael.
Michael: Denn es bedeutet, die Serveranwendung dass muss einen Entschlüsselungsschlüssel wissen, was bedeutet, Sie erhalten in allen möglichen wirklich horrible Schlüsselverwaltung Spiele.
Wenn möglich, möchten Sie dieses Unternehmen zu bleiben!
Es gibt Möglichkeiten Sie dies problemlos tun können, indem Sie mehrere Schlüssel, aber ich möchte, jetzt erläutern.
Wenn überhaupt!
Wenn Sie dies zu verstehen möchten, bis zum Lesen Sie auf wie Microsoft Dateien mithilfe von Encrypting File System oder EFS verschlüsselt.
Paige: Können wir die EFS verwenden?
Michael: Möglicherweise.
Das hängt von Ihren Clients.
Welche Plattformen unterstützen Sie auf dem Client?
Paige: Wir werden am Ende des Jahres auf Windows und wenige Monate später auf Linux liefern.
Michael: Keine Solaris?
Paige: Was ist Solaris?
Michael sniggers und Paige des Antwort ignoriert.
Michael: Sie können EFS nicht verwenden, da Windows-Konten erforderlich sind.
So haben Sie Verschlüsseln der Daten mit anderen Technologie.
Es würden hervorragende sein, wenn könnten Sie EFS oder sogar Datenschutz-API, DPAPI, genannt, da beide verwenden die gleiche zugrunde liegenden Crypto-Technologie und kann nahtlos verschlüsseln und Entschlüsseln von Daten mithilfe von Tasten das Kennwort des Benutzers abgeleitet.
Oh gut.
Sehen Sie, was wir tun können.
Paige: Verwenden wir können eine Verschlüsselung Bibliothek?
Michael: Selbstverständlich.
In der Tat ist eine viel bessere Vorstellung als etwas ich anderen Tag gehört.
Paige: Was?
Michael: Jemand gefragt mich Wenn Sie OK, um seinen eigenen kryptografischen Algorithmus zu erstellen würde.
Paige: Haben Sie gesagt keine Rechte?
Michael: Ich sagte natürlich keine.
Was würden Sie mir sagen erwarten?
Ich war es auch ziemlich löschen, es eine vollständige Verletzung der SDL-Richtlinie ist, und er sollte die Möglichkeit, alle eigenen Crypto selbst nicht contemplate.
Paige: So sollten was wir tun?
Michael: Da Ihr Clientcode c# ist, können Sie .NET System.Security.Cryptography-Namespace verwenden.
Es ist verfügbar in Mono, d. h., Sie ihn von Linux aufrufen konnte.
Noch nicht haben Sie versucht, jedoch Sie könnten dazu eine experimentieren.
Sie müssten mit Rechtsanwälte sicherstellen, dass es sind keine Lizenzierungsprobleme chatten.
Paige: Welche Lizenzierung Probleme?
Michael: Es ist Code von Drittanbietern.
Welche der Lizenz says.Paige kennt: OK, damit wir die Daten mit dem Benutzerkennwort verschlüsselt das Blob senden...
Michael: Nein.
Nicht.
Nyet.
Nada.
Nope.
Das Kennwort des Benutzers verwenden als einen Verschlüsselungsschlüssel; Sie nichtSie ableiten der Schlüssel vom Kennwort.
Kennwörter sind leicht zu erraten.
Paige: Wie wird eine "abgeleitet „ein Schlüssel?
Michael Smiles.
Michael: Mit einer Schlüssel-Ableitung-Funktion.
Paige: MR.
Smarty.
Konnten Sie ein wenig genauer sein?
Michael: Bestimmt.
Sie übergeben den Schlüssel in einer Funktion wie Rfc2898DeriveBytes in .NET zusammen mit einer Salt.
Eine Salt ist nur eine eindeutige Zahl, die es schwieriger zu bestimmter Angriffe durchführen.
Es ist eine Iterationsanzahl normalerweise in der Dutzende, wenn nicht Hunderte oder Tausende.
Die Funktion übernimmt das Kennwort und Munges es Tausende von Zeitangaben mit der Salt-Wert.
Dies ist häufig bezeichnet als "Strecken das Kennwort." Am Ende der Operation in der Regel weniger als eine Sekunde dauert Sie erhalten einige Bytes und Sie können diese Bytes als Schlüssel verwenden.
Schlüsselableitung nicht nur macht es schwer zu erraten des Schlüssels, dies auch macht es schwierig, schnelle Erraten von Kennwörtern Angriffe bereitstellen, da der Angreifer hat die Iterationsanzahl zu durchlaufen.
Also Wenn Angreifer normalerweise pro Sekunde mit eine Iterationsanzahl 100.000, 1.000.000 Kennwörter testen konnte ist er auf 10 pro Sekunde reduziert!
Cool, nicht wahr?
Paige: Sehr gut.
So verwenden wir den Schlüssel, um die Verschlüsselung der Daten verwenden, z. B. Advanced Encryption Standard?
Michael: Ja.
Natürlich, verschlüsseln all diese unterstützt werden die Daten.
Es nicht einer beliebigen Form der Integritätsprüfung bereit, jedoch das ist ziemlich einfach.
Sie können einen anderen Schlüssel ableiten und, einen Nachrichtenauthentifizierungscode erstellen und speichern, die zusammen mit den Metadaten verwenden.
Verwenden Sie nicht den gleichen Schlüssel für Verschlüsselung und Integrität zu überprüfen.
Leiten Sie eine zweite Taste, und verwenden.
ADAM anderen Sicherheit Angreifer führt von muttering.
ADAM: Sicherheit Assistenten soll immer Tiefe-zuerst in Crypto und ähnliches gehen.
Doch die Angreifer für die schwache Verknüpfung.
Michael: ADAM ist richtig, Sicherheit Personen in der Regel sehr schnell untersuchen.
Und ich bin guilty wie belastet, aber dies aus die Möglichkeit erhalten soll.
Paige: Er OK.
Alles?
Michael: Gut, ist auch das Kurznotiz Problem der Benutzer ihre Kennwörter vergessen.
Ich würde Benutzern die Möglichkeit, Sichern Sie Ihr Kennwort auf ein USB-Stick oder etwas und machen beachten, dass wir das Kennwort besitzen und, wenn Sie es vergessen haben, es gibt keine Möglichkeit wir die Daten übertragen von der Dead zurück!
Paige: Ist unsere Arbeit abgeschlossen?
Michael: Für den Moment Ja.
Es ist ein Groß und wichtige Teil des Bedrohungsmodells, und ich hoffe, Sie eine Vorstellung davon einige Kompromisse dadurch Sie beim Erstellen von sicherer Anwendungen müssen.
Paige: Ich tun jetzt.
Danke.
Michael Howard
ist senior Security Programmmanager bei Microsoft, auf die Prozesssicherheit sowie auf Empfehlungen konzentriert.
Er ist Mitautor von fünf Sicherheit Bücher, einschließlich "Writing Secure Code for Windows Vista""Des Sicherheitsentwicklungszyklus""Writing Secure Code"und "19 Deadly Sins of Software Security."