Produkt/Dienst |
Artikel |
Computer-Vertrauensstellungsgrenze |
|
Web Application |
|
Datenbank |
|
Web-API |
|
Azure DocumentDB |
|
Azure IaaS-VM-Vertrauensstellungsgrenze |
|
Service Fabric-Vertrauensstellungsgrenze |
|
Dynamics CRM |
|
Azure Storage (in englischer Sprache) |
|
Mobiler Client |
|
WCF |
|
Sicherstellen, dass Binärdateien verschleiert werden, wenn sie sensible Informationen enthalten
Titel |
Details |
Komponente |
Computer-Vertrauensstellungsgrenze |
SDL-Phase |
Bereitstellung |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
– |
Schritte |
Stellen Sie sicher, dass Binärdateien verschleiert werden, wenn sie sensible Informationen wie Branchengeheimnisse oder sensible Geschäftslogik enthalten, für die das Reverse Engineering verhindert werden soll. Das Ziel besteht darin, das Reverse Engineering von Assemblys unmöglich zu machen. Hierfür können Tools wie CryptoObfuscator verwendet werden. |
Erwägen der Verwendung von Encrypted File System (EFS) zum Schützen von vertraulichen benutzerspezifischen Daten
Titel |
Details |
Komponente |
Computer-Vertrauensstellungsgrenze |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
– |
Schritte |
Erwägen Sie die Verwendung von Encrypted File System (EFS) zum Schützen von vertraulichen benutzerspezifischen Daten vor Angreifern mit physischem Zugriff auf den Computer. |
Sicherstellen, dass von der Anwendung im Dateisystem gespeicherte sensible Daten verschlüsselt sind
Titel |
Details |
Komponente |
Computer-Vertrauensstellungsgrenze |
SDL-Phase |
Bereitstellung |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
– |
Schritte |
Stellen Sie sicher, dass die von der Anwendung im Dateisystem gespeicherten sensiblen Daten verschlüsselt sind (z.B. per DPAPI), wenn EFS nicht erzwungen werden kann. |
Sicherstellen, dass sensible Inhalte nicht im Browser zwischengespeichert werden
Titel |
Details |
Komponente |
Webanwendung. |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein, Web Forms, MVC5, MVC6 |
Attribute |
– |
Referenzen |
– |
Schritte |
Browser können Informationen für die Zwischenspeicherung und die Verfolgung des Verlaufs speichern. Diese zwischengespeicherten Dateien werden in einem Ordner abgelegt, z.B. dem Ordner „Temporäre Internetdateien“ von Internet Explorer. Wenn auf diese Seite erneut zugegriffen wird, zeigt der Browser sie aus dem Cache an. Falls dem Benutzer sensible Informationen angezeigt werden (z. B. Adresse, Kreditkartendaten, Sozialversicherungsnummer oder Benutzername), können diese Informationen im Cache des Browsers gespeichert werden. Sie können dann abgerufen werden, indem der Cache des Browsers durchsucht wird oder indem im Browser einfach auf die Schaltfläche „Zurück“ geklickt wird. Legen Sie den Wert des Antwortheaders „cache-control“ für alle Seiten auf „no-store“ fest. |
Beispiel
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-store" />
<add name="Pragma" value="no-cache" />
<add name="Expires" value="-1" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Beispiel
Dies kann über einen Filter implementiert werden. Sie können das folgende Beispiel verwenden:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext == null || (filterContext.HttpContext != null && filterContext.HttpContext.Response != null && filterContext.HttpContext.Response.IsRequestBeingRedirected))
{
//// Since this is MVC pipeline, this should never be null.
return;
}
var attributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(System.Web.Mvc.OutputCacheAttribute), false);
if (attributes == null || **Attributes**.Count() == 0)
{
filterContext.HttpContext.Response.Cache.SetNoStore();
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
if (!filterContext.IsChildAction)
{
filterContext.HttpContext.Response.AppendHeader("Pragma", "no-cache");
}
}
base.OnActionExecuting(filterContext);
}
Verschlüsseln von Abschnitten der Web-App-Konfigurationsdateien, die sensible Daten enthalten
Titel |
Details |
Komponente |
Webanwendung. |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
Vorgehensweise: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI (Gewusst wie: Verschlüsseln von Konfigurationsabschnitten in ASP.NET 2.0 mithilfe von DPAPI), Angeben eines geschützten Konfigurationsanbieters, Verwenden von Azure Key Vault zum Schützen von Anwendungsgeheimnissen |
Schritte |
In Konfigurationsdateien wie „web.config“ und „appsettings.json“ werden häufig sensible Informationen wie Benutzernamen, Kennwörter, Datenbankverbindungszeichenfolgen und Verschlüsselungsschlüssel gespeichert. Wenn Sie diese Informationen nicht schützen, können Angreifer oder böswillige Benutzer an sensible Informationen wie Kontobenutzernamen und Kennwörter, Datenbanknamen und Servernamen gelangen. Verschlüsseln Sie daher die sensiblen Abschnitte von Konfigurationsdateien basierend auf dem Bereitstellungstyp (Azure/lokal) mithilfe von DPAPI oder mithilfe von Diensten wie Azure Key Vault. |
Titel |
Details |
Komponente |
Webanwendung. |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
MSDN: autocomplete-Attribut, Verwenden von AutoComplete in HTML-Formularen, Sicherheitsanfälligkeit bezüglich HTML-Bereinigung, Autocomplete – Schon wieder?! |
Schritte |
Mit dem Attribut „autocomplete“ wird angegeben, ob die automatische Vervollständigung für ein Formular aktiviert oder deaktiviert sein soll. Bei aktivierter automatischer Vervollständigung werden die Werte im Browser automatisch basierend auf den Werten vervollständigt, die vom Benutzer vorher eingegeben wurden. Wenn in einem Formular beispielsweise ein neuer Name und ein neues Kennwort eingegeben werden und das Formular übermittelt wird, wird im Browser die Frage angezeigt, ob das Kennwort gespeichert werden soll. Danach werden der Name und das Kennwort beim Anzeigen des Formulars automatisch eingefügt oder beim Eingeben des Namens vervollständigt. Ein Angreifer mit lokalem Zugriff hätte die Möglichkeit, das Klartext-Kennwort aus dem Browsercache zu entwenden. Die automatische Vervollständigung ist standardmäßig aktiviert und muss explizit deaktiviert werden. |
Beispiel
<form action="Login.aspx" method="post " autocomplete="off" >
Social Security Number: <input type="text" name="ssn" />
<input type="submit" value="Submit" />
</form>
Sicherstellen, dass auf dem Benutzerbildschirm angezeigte sensible Daten maskiert sind
Titel |
Details |
Komponente |
Webanwendung. |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
– |
Schritte |
Sensible Daten, z.B. Kennwörter, Kreditkartennummern, Sozialversicherungsnummer usw., sollten bei der Anzeige auf dem Bildschirm maskiert werden. Mit dieser Maßnahme soll verhindert werden, dass unbefugte Personen auf die Daten zugreifen (z.B. ausgespähte Kennwörter, Anzeige von Sozialversicherungsnummern von Benutzern durch Supportpersonal). Stellen Sie sicher, dass diese Datenelemente nicht als Klartext sichtbar sind und auf angemessene Weise maskiert werden. Dies gilt für das Akzeptieren der Daten als Eingabe (z. B. input type="password") sowie für die erneute Anzeige auf dem Bildschirm (z. B. die Anzeige der letzten vier Ziffern der Kreditkartennummer). |
Implementieren der dynamischen Datenmaskierung zum Beschränken der Offenlegung von sensiblen Daten für Benutzer ohne Berechtigungen
Titel |
Details |
Komponente |
Datenbank |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
SQL Azure, lokal |
Attribute |
SQL-Version: V12, SQL-Version: MsSQL2016 |
Referenzen |
Dynamische Datenmaskierung |
Schritte |
Der Zweck der dynamischen Datenmaskierung besteht darin, die Offenlegung sensibler Daten zu beschränken, die Benutzer an der Anzeige der Daten hindert, die keinen Zugriff auf diese erhalten sollten. Die dynamische Datenmaskierung ist nicht darauf ausgerichtet, Datenbankbenutzer daran zu hindern, eine direkte Verbindung zur Datenbank herzustellen und umfassende Abfragen auszuführen, die Teile der vertraulichen Daten verfügbar machen. Die dynamische Datenmaskierung wird zusätzlich zu anderen SQL Server-Sicherheitsfunktionen (Überwachung, Verschlüsselung, Sicherheit auf Zeilenebene usw.) eingesetzt. Es wird dringend empfohlen, diese Maskierung zusammen mit den anderen Funktionen zu nutzen, um die in der Datenbank enthaltenen sensiblen Daten besser zu schützen. Beachten Sie, dass diese Funktion nur von SQL Server ab Version 2016 und der Azure SQL-Datenbank unterstützt wird. |
Sicherstellen, dass Kennwörter im Salt-Hashformat gespeichert werden
Titel |
Details |
Komponente |
Datenbank |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
Password Hashing using .NET Crypto APIs (Kennworthashing mit .NET-Kryptografie-APIs) |
Schritte |
Kennwörter sollten nicht in benutzerdefinierten Benutzerspeicherdatenbanken abgelegt werden. Kennworthashes sollten stattdessen mit Salt-Werten gespeichert werden. Achten Sie darauf, dass der Salt-Wert für den Benutzer immer eindeutig ist und dass Sie vor dem Speichern des Kennworts bcrypt, scrypt oder PBKDF2 mit einer Mindestanzahl von 150.000 Schleifen für die Arbeitsfaktoriteration anwenden, um die Möglichkeit eines Brute-Force-Angriffs auszuschließen. |
Sicherstellen, dass sensible Daten in Datenbankspalten verschlüsselt sind
Sicherstellen, dass die Verschlüsselung auf Datenbankebene (TDE) aktiviert ist
Titel |
Details |
Komponente |
Datenbank |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
Grundlegendes zur transparenten Datenverschlüsselung (TDE) |
Schritte |
Die transparente Datenverschlüsselung (Transparent Data Encryption, TDE) in SQL Server ermöglicht das Verschlüsseln von sensiblen Daten in einer Datenbank und das Schützen der Schlüssel, die zum Verschlüsseln der Daten mit einem Zertifikat verwendet werden. So können die Daten nicht von Personen verwendet werden, die nicht im Besitz der Schlüssel sind. TDE schützt die "ruhenden" Daten, also die Daten- und die Protokolldateien. Sie entspricht den in vielen Branchen etablierten Gesetzen, Bestimmungen und Richtlinien. |
Sicherstellen, dass Datenbanksicherungen verschlüsselt sind
Titel |
Details |
Komponente |
Datenbank |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
SQL Azure, lokal |
Attribute |
SQL-Version: V12, SQL-Version: MsSQL2014 |
Referenzen |
Verschlüsseln der Sicherung |
Schritte |
In SQL Server können die Daten während der Erstellung einer Sicherung verschlüsselt werden. Indem der Verschlüsselungsalgorithmus und die Verschlüsselungsmethode (Zertifikat oder asymmetrischer Schlüssel) beim Erstellen einer Sicherung angegeben werden, kann eine verschlüsselte Sicherungsdatei erstellt werden. |
Sicherstellen, dass für die Web-API relevante sensible Daten nicht im Speicher des Browsers gespeichert werden
Titel |
Details |
Komponente |
Web-API |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
MVC 5, MVC 6 |
Attribute |
Identitätsanbieter: ADFS, Identitätsanbieter: Microsoft Entra ID |
Informationsquellen |
– |
Schritte |
In bestimmten Implementierungen werden sensible Artefakte, die für die Authentifizierung der Web-API relevant sind, im lokalen Speicher des Browsers abgelegt. Beispiele: Microsoft Entra-Authentifizierungsartefakte wie „adal.idtoken“, „adal.nonce.idtoken“, „adal.access.token.key“, „adal.token.keys“, „adal.state.login“, „adal.session.state“, „adal.expiration.key“ usw. Alle diese Artefakte sind auch nach dem Abmelden oder dem Schließen des Browsers verfügbar. Wenn ein Angreifer Zugriff auf diese Artefakte erlangt, kann er sie zum Zugreifen auf die geschützten Ressourcen (APIs) wiederverwenden. Stellen Sie sicher, dass alle sensiblen Artefakte für die Web-API nicht im Speicher des Browsers abgelegt werden. Falls die Speicherung auf Clientseite nicht zu vermeiden ist (bei Single-Page-Anwendungen (SPA) mit Nutzung von impliziten OpenIdConnect/OAuth-Flows müssen Zugriffstoken beispielsweise lokal gespeichert werden), sollten Sie keine Lösungen mit dauerhafter Speicherung verwenden. Verwenden Sie beispielsweise nicht „LocalStorage“, sondern „SessionStorage“. |
Beispiel
Der unten angegebene JavaScript-Codeausschnitt stammt beispielsweise aus einer benutzerdefinierten Authentifizierungsbibliothek, in der Authentifizierungsartefakte im lokalen Speicher abgelegt werden. Implementierungen dieser Art sollten vermieden werden.
ns.AuthHelper.Authenticate = function () {
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: ns.Configurations.Tenant,
clientId: ns.Configurations.AADApplicationClientID,
postLogoutRedirectUri: window.location.origin,
cacheLocation: 'localStorage', // enable this for Internet Explorer, as sessionStorage does not work for localhost.
};
Verschlüsseln sensibler Daten, die in Azure Cosmos DB gespeichert werden
Titel |
Details |
Komponente |
Azure DocumentDB |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
– |
Schritte |
Verschlüsseln Sie sensible Daten auf der Anwendungsebene, bevor Sie sie in DocumentDB speichern, oder speichern Sie sensible Daten in anderen Speicherlösungen wie Azure Storage oder Azure SQL. |
Verwenden von Azure Disk Encryption zum Verschlüsseln von Datenträgern, die von virtuellen Computern verwendet werden
Titel |
Details |
Komponente |
Azure IaaS-VM-Vertrauensstellungsgrenze |
SDL-Phase |
Bereitstellung |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
Verwenden von Azure Disk Encryption zum Verschlüsseln von Datenträgern, die Ihre virtuellen Computer verwenden |
Schritte |
Azure Disk Encryption ist ein neues Feature, das sich derzeit in der Vorschau befindet. Mit diesem Feature können Sie die Betriebssystemdatenträger und andere Datenträger verschlüsseln, die von einem virtuellen IaaS-Computer verwendet werden. Unter Windows werden Laufwerke mit branchenüblicher BitLocker-Verschlüsselung verschlüsselt. Unter Linux werden Datenträger mit der DM-Crypt-Technologie verschlüsselt. Diese ist in Azure Key Vault integriert, damit Sie die Datenträger-Verschlüsselungsschlüssel steuern und verwalten können. Die Lösung Azure Disk Encryption unterstützt die folgenden drei Kundenverschlüsselungsszenarien: - Aktivieren der Verschlüsselung auf neuen IaaS-VMs, die auf der Basis vom Kunden verschlüsselter VHD-Dateien und vom Kunden bereitgestellter Verschlüsselungsschlüssel, die in Azure Key Vault gespeichert sind, erstellt wurden.
- Aktivieren der Verschlüsselung auf neuen IaaS-VMs, die über Azure Marketplace erstellt wurden.
- Aktivieren der Verschlüsselung auf vorhandenen IaaS-VMs, die bereits unter Azure ausgeführt werden.
|
Verschlüsseln von Geheimnissen in Service Fabric-Anwendungen
Titel |
Details |
Komponente |
Service Fabric-Vertrauensstellungsgrenze |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
Umgebung: Azure |
Referenzen |
Verwalten von Geheimnissen in Service Fabric-Anwendungen |
Schritte |
Geheimnisse beinhalten jegliche Art von vertraulichen Informationen (z.B. Speicherverbindungszeichenfolgen, Kennwörter oder andere Werte, die nicht als Nur-Text verarbeitet werden sollen). Verwenden Sie Azure Key Vault zum Verwalten von Schlüsseln und Geheimnissen in Service Fabric-Anwendungen. |
Durchführen der Sicherheitsmodellierung und Verwenden von Geschäftseinheiten/Teams nach Bedarf
Titel |
Details |
Komponente |
Dynamics CRM |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
– |
Schritte |
Durchführen der Sicherheitsmodellierung und Verwenden von Geschäftseinheiten/Teams nach Bedarf |
Einschränken des Zugriffs auf die Funktion „Freigeben“ für kritische Entitäten
Titel |
Details |
Komponente |
Dynamics CRM |
SDL-Phase |
Bereitstellung |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
– |
Schritte |
Einschränken des Zugriffs auf die Funktion „Freigeben“ für kritische Entitäten |
Schulen von Benutzern in Bezug auf die Risiken der Funktion „Freigeben“ von Dynamics CRM und bewährte Sicherheitsmethoden
Titel |
Details |
Komponente |
Dynamics CRM |
SDL-Phase |
Bereitstellung |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
– |
Schritte |
Schulen von Benutzern in Bezug auf die Risiken der Funktion „Freigeben“ von Dynamics CRM und bewährte Sicherheitsmethoden |
Einbinden einer Entwicklungsstandardregel, die das Anzeigen von Konfigurationsdetails bei der Ausnahmeverwaltung vorschreibt
Titel |
Details |
Komponente |
Dynamics CRM |
SDL-Phase |
Bereitstellung |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
– |
Schritte |
Binden Sie eine Entwicklungsstandardregel ein, die das Anzeigen von Konfigurationsdetails bei der Ausnahmeverwaltung außerhalb der Entwicklung vorschreibt. Führen Sie im Rahmen von Codeprüfungen oder regelmäßigen Inspektionen entsprechende Tests durch. |
Verwenden von Azure Storage Service Encryption (SSE) für ruhende Daten (Vorschau)
Titel |
Details |
Komponente |
Azure Storage |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
StorageType: Blob |
Referenzen |
Azure Storage Service Encryption für ruhende Daten (Vorschau) |
Schritte |
Azure Storage Service Encryption (SSE) für ruhende Daten unterstützt Sie dabei, Ihre Daten zu schützen, um die Sicherheits- und Complianceverpflichtungen Ihrer Organisation zu erfüllen. Mit diesem Feature verschlüsselt Azure Storage Ihre Daten automatisch, bevor sie im Speicher abgelegt werden, und entschlüsselt sie vor dem Abrufen. Verschlüsselung, Entschlüsselung und Schlüsselverwaltung sind für Benutzer vollständig transparent. SSE gilt nur für Blockblobs, Seitenblobs und Anfügeblobs. Die anderen Typen von Daten, einschließlich Tabellen, Warteschlangen und Dateien, werden nicht verschlüsselt. Verschlüsselungs- und Entschlüsselungsworkflow: - Der Kunde aktiviert die Verschlüsselung für das Speicherkonto.
- Wenn der Kunde neue Daten (PUT Blob, PUT Block, PUT Page usw.) in den Blobspeicher schreibt, wird jeder Schreibvorgang per 256-Bit-AES-Verschlüsselung verschlüsselt. Dies ist eines der sichersten verfügbaren Blockchiffreverfahren.
- Wenn der Kunde auf Daten zugreifen muss (GET Blob usw.), werden die Daten vor der Rückgabe an den Benutzer automatisch entschlüsselt.
- Wenn die Verschlüsselung deaktiviert ist, werden neue Schreibvorgänge nicht mehr verschlüsselt, und vorhandene verschlüsselte Daten bleiben verschlüsselt, bis sie vom Benutzer neu geschrieben werden. Während die Verschlüsselung aktiviert ist, werden Schreibvorgänge in den Blobspeicher verschlüsselt. Der Zustand der Daten ändert sich nicht, wenn der Benutzer zwischen der Aktivierung und Deaktivierung der Verschlüsselung für das Speicherkonto wechselt.
- Alle Verschlüsselungsschlüssel werden von Microsoft gespeichert, verschlüsselt und verwaltet
Beachten Sie, dass die Schlüssel für die Verschlüsselung derzeit von Microsoft verwaltet werden. Microsoft führt die ursprüngliche Generierung der Schlüssel durch und verwaltet die sichere Speicherung der Schlüssel sowie die reguläre Rotation gemäß der internen Microsoft-Richtlinie. In Zukunft erhalten Kunden die Möglichkeit, ihre eigenen Verschlüsselungsschlüssel zu verwalten, und es wird ein Migrationspfad von den von Microsoft verwalteten Schlüsseln zu von Kunden verwalteten Schlüsseln bereitgestellt. |
Verwenden der clientseitigen Verschlüsselung zum Speichern von sensiblen Daten in Azure Storage
Titel |
Details |
Komponente |
Azure Storage |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
Clientseitige Verschlüsselung und Azure Key Vault für Microsoft Azure Storage, Tutorial: Verschlüsseln und Entschlüsseln von Blobs in Microsoft Azure Storage per Azure Key Vault, Storing Data Securely in Azure Blob Storage with Azure Encryption Extensions (Sicheres Speichern von Daten in Azure Blob Storage mit Azure-Verschlüsselungserweiterungen) |
Schritte |
Das NuGet-Paket für die Azure Storage-Clientbibliothek für .NET unterstützt die Verschlüsselung von Daten innerhalb von Clientanwendungen vor dem Hochladen der Daten nach Azure Storage sowie die Entschlüsselung von Daten während des Herunterladens auf den Client. Um eine Schlüsselverwaltung für Speicherkonten zu ermöglichen, unterstützt die Bibliothek zudem die Integration in Azure-Schlüsseltresor. Hier eine kurze Beschreibung zur Funktionsweise der clientseitigen Verschlüsselung: - Das Azure Storage-Client-SDK generiert einen Inhaltsverschlüsselungsschlüssel (Content Encryption Key, CEK), bei dem es sich um einen einmalig verwendeten symmetrischen Schlüssel handelt.
- Die Kundendaten werden mit diesem CEK verschlüsselt.
- Der CEK wird dann mit dem Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK) umschlossen (verschlüsselt). Der KEK wird anhand eines Schlüsselbezeichners identifiziert und kann ein asymmetrisches Schlüsselpaar oder ein symmetrischer Schlüssel sein. Er kann lokal verwaltet oder in Azure Key Vault gespeichert werden. Der Storage-Client hat selbst niemals Zugriff auf den KEK. Er ruft lediglich den Algorithmus für das Umschließen des Schlüssels aus, der vom Schlüsseltresor bereitgestellt wird. Kunden können bei Bedarf benutzerdefinierte Anbieter für das Umschließen von Schlüsseln bzw. das Aufheben dieses Zustands verwenden.
- Die verschlüsselten Daten werden dann in den Azure Storage-Dienst hochgeladen. Detaillierte Informationen zur Implementierung finden Sie unter den Links im Abschnitt „Referenzen“.
|
Verschlüsseln von sensiblen Daten oder personenbezogenen Daten, die in den lokalen Speicher von Smartphones geschrieben werden
Titel |
Details |
Komponente |
Mobiler Client |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Generisch, Xamarin |
Attribute |
– |
Referenzen |
Verwalten von Einstellungen und Features auf Ihren Geräten mit Microsoft Intune-Richtlinien, Keychain Valet (Keychain-Valet) |
Schritte |
Wenn die Anwendung sensible Informationen, z.B. die personenbezogenen Informationen des Benutzers (E-Mail-Adresse, Telefonnummer, Vorname, Nachname, Präferenzen usw.), in das Dateisystem des Mobilgeräts schreibt, sollten sie vor der Durchführung dieses Schreibvorgangs in das lokale Dateisystem verschlüsselt werden. Wenn es sich um eine Unternehmensanwendung handelt, können Sie prüfen, ob die Veröffentlichung der Anwendung mit Windows Intune möglich ist. |
Beispiel
Für Intune können die folgenden Sicherheitsrichtlinien zum Schutz von sensiblen Daten konfiguriert werden:
Require encryption on mobile device
Require encryption on storage cards
Allow screen capture
Beispiel
Falls die Anwendung keine Unternehmensanwendung ist, sollten Sie den von der Plattform bereitgestellten Keystore verwenden und Keychains zum Speichern von Verschlüsselungsschlüsseln verwenden (je nach Verschlüsselungsvorgang auf dem Dateisystem). Der folgende Codeausschnitt veranschaulicht, wie Sie mit Xamarin über die Keychain auf den Schlüssel zugreifen:
protected static string EncryptionKey
{
get
{
if (String.IsNullOrEmpty(_Key))
{
var query = new SecRecord(SecKind.GenericPassword);
query.Service = NSBundle.MainBundle.BundleIdentifier;
query.Account = "UniqueID";
NSData uniqueId = SecKeyChain.QueryAsData(query);
if (uniqueId == null)
{
query.ValueData = NSData.FromString(System.Guid.NewGuid().ToString());
var err = SecKeyChain.Add(query);
_Key = query.ValueData.ToString();
}
else
{
_Key = uniqueId.ToString();
}
}
return _Key;
}
}
Verschleiern von generierten Binärdateien vor der Verteilung an Endbenutzer
Titel |
Details |
Komponente |
Mobiler Client |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Allgemein |
Attribute |
– |
Referenzen |
Crypto-Obfuskation für .Net |
Schritte |
Generierte Binärdateien (Assemblys in apk) sollten verschleiert werden, um ein Reverse Engineering von Assemblys zu verhindern. Hierfür können Tools wie CryptoObfuscator verwendet werden. |
Festlegen von „clientCredentialType“ auf „Certificate“ oder „Windows“
Titel |
Details |
Komponente |
WCF |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
.NET Framework 3 |
Attribute |
– |
Referenzen |
Fortify |
Schritte |
Bei der Verwendung eines UsernameToken mit einem Kennwort als Klartext über einen nicht verschlüsselten Kanal ist das Kennwort für Angreifer zugänglich, die die SOAP-Nachrichten ausspionieren können. Unter Umständen akzeptieren Service Providers, die UsernameToken verwenden, in Klartext gesendete Kennwörter. Beim Senden von Kennwörtern als Klartext über einen nicht verschlüsselten Kanal können die Anmeldeinformationen für Angreifer zugänglich sein, die die SOAP-Nachricht ausspionieren können. |
Beispiel
Für die folgende WCF-Service Provider-Konfiguration wird das UsernameToken verwendet:
<security mode="Message">
<message clientCredentialType="UserName" />
Legen Sie „clientCredentialType“ auf „Certificate“ oder „Windows“ fest.
WCF-Sicherheitsmodus ist nicht aktiviert
Titel |
Details |
Komponente |
WCF |
SDL-Phase |
Entwickeln |
Zutreffende Technologien |
Generisch, .NET Framework 3 |
Attribute |
Sicherheitsmodus: Transport, Sicherheitsmodus: Nachricht |
Referenzen |
MSDN, Fortify Kingdom, Fundamentals of WCF Security CoDe Magazine (Grundlagen der WCF-Sicherheit – CoDe Magazine) |
Schritte |
Es wurde keine Transport- oder Nachrichtensicherheit definiert. Für Anwendungen, die Nachrichten ohne Transport- oder Nachrichtensicherheit übertragen, kann die Integrität oder Vertraulichkeit der Nachrichten nicht garantiert werden. Wenn eine WCF-Sicherheitsbindung auf „None“ festgelegt ist, wird sowohl die Transport- als auch die Nachrichtensicherheit deaktiviert. |
Beispiel
In der folgenden Konfiguration ist der Sicherheitsmodus auf „None“ festgelegt.
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name=""MyBinding"">
<security mode=""None""/>
</binding>
</bindings>
</system.serviceModel>
Beispiel
Sicherheitsmodus: Über alle Dienstbindungen hinweg gibt es fünf mögliche Sicherheitsmodi: