Einführung in die Entwicklung sicherer Windows-AppsIntro to secure Windows app development

In diesem einführenden Artikel erhalten App-Architekten und -Entwickler weitere Informationen zu den verschiedenen Windows 10-Plattformfunktionen, die die Entwicklung von UWP-Apps (Universelle Windows-Plattform) beschleunigen.This introductory article helps app architects and developers better understand the various Windows 10 platform capabilities that accelerate creating secure Universal Windows Platform (UWP) apps. Sie erfahren mehr über die Verwendung der verfügbaren Windows-Sicherheitsfeatures der Authentifizierungs-, In-Flight-Daten- und At-Rest-Daten-Stufe.It details how to use the Windows security features available at each of the following stages: authentication, data-in-flight, and data-at-rest. In den in jedem Kapitel enthaltenen zusätzlichen Ressourcen finden Sie ausführlichere Informationen zu jedem Thema.You can find more in-depth information on each topic by reviewing the additional resources included in each chapter.

1 Einführung1 Introduction

Die Entwicklung einer sicheren App kann eine Herausforderung darstellen.Developing a secure app can be a challenge. In der heutigen schnelllebigen Welt von mobilen und sozialen Apps sowie von Cloud- und komplexen Unternehmens-Apps erwarten Kunden, dass Apps schneller als je zuvor verfügbar sind und aktualisiert werden.In today’s fast-paced world of mobile, social, cloud, and complex enterprise apps, customers expect apps to become available and updated faster than ever. Zudem verwenden sie viele verschiedene Gerätetypen – eine weitere Herausforderung bei der Gestaltung der App-Oberflächen.They also use many types of devices, further adding to the complexity of creating app experiences. Beim Entwickeln für die Universelle Windows-Plattform (UWP) von Windows 10 müssen Sie also neben traditionellen Geräten wie Desktops, Laptops, Tablets und mobilen Geräten auch immer mehr neue Technologien berücksichtigen. Diese reichen vom Internet der Dinge über Xbox One und Microsoft Surface Hub bis zu HoloLens.If you build for the Windows 10 Universal Windows Platform (UWP), that could include the traditional list of desktops, laptops, tablets, and mobile devices; in addition to a growing list of new devices spanning the Internet of Things, Xbox One, Microsoft Surface Hub, and HoloLens. Als Entwickler müssen Sie die Sicherheit Ihrer Apps beim Kommunizieren und Speichern von Daten auf allen Plattformen oder Geräten gewährleisten.As the developer, you must ensure your apps communicate and store data securely, across all the platforms or devices involved.

Nachfolgend erhalten Sie einen Überblick über die Vorteile der Sicherheitsfeatures in Windows 10.Here are some of the benefits of utilizing Windows 10 security features.

  • Sie profitieren von standardisierter Sicherheit auf allen Geräten, die Windows 10 unterstützen, indem Sie einheitliche APIs für Sicherheitskomponenten und Technologien verwenden.You will have standardized security across all devices that support Windows 10, by using consistent APIs for security components and technologies.
  • Sie schreiben, testen und warten weniger Code als beim Implementieren von benutzerdefiniertem Code für diese Sicherheitsszenarien.You write, test, and maintain less code than you would if you implemented custom code to cover these security scenarios.
  • Ihre Apps werden stabiler und sicherer, da Sie über das Betriebssystem festlegen, wie die App auf ihre Ressourcen sowie auf lokale oder Remote-Systemressourcen zugreift.Your apps become more stable and secure because you use the operating system to control how the app accesses its resources and local or remote system resources.

Während der Authentifizierung wird die Identität des Benutzers überprüft, der den Zugriff auf einen bestimmten Dienst anfordert.During authentication, the identity of a user requesting access to a particular service is validated. Windows Hello ist die Komponente in Windows 10, die bei der Erstellung eines sichereren Authentifizierungsmechanismus in Windows-apps hilft.Windows Hello is the component in Windows 10 that helps create a more secure authentication mechanism in Windows apps. Damit können Sie eine persönliche Identifikationsnummer (PIN) oder Biometrie (z. b. die Fingerabdrücke, das Gesicht oder die Iris) des Benutzers verwenden, um die Multi-Factor Authentication für Ihre apps zu implementieren.With it, you can use a Personal Identification Number (PIN) or biometrics such as the user’s fingerprints, face, or iris to implement multi-factor authentication for your apps.

In-Flight-Daten beziehen sich auf die Verbindung und die darüber übertragenen Nachrichten.Data-in-flight refers to the connection and the messages transferred across it. Ein Beispiel hierfür ist das Abrufen von Daten von einem Remoteserver über Webdienste.An example of this is retrieving data from a remote server using web services. Die Verwendung von SSL (Secure Sockets Layer) und HTTPS (Secure Hypertext Transfer Protocol) gewährleistet eine sichere Verbindung.The use of Secure Sockets Layer (SSL) and Secure Hypertext Transfer Protocol (HTTPS) ensures the security of the connection. Um In-Flight-Daten zu schützen, muss Zwischenbenutzern der Zugriff auf diese Nachrichten und nicht autorisierten Apps die Kommunikation mit Webdiensten verweigert werden.Preventing intermediary parties from accessing these messages, or unauthorized apps from communicating with the web services, is key to securing data in flight.

Als At-Rest-Daten werden Daten bezeichnet, die sich im Speicher oder auf Speichermedien befinden.Lastly, data-at-rest relates to data residing in memory or on storage media. Windows 10 verfügt über ein App-Modell, das unbefugten Datenzugriff zwischen Apps verhindert und bietet Verschlüsselungs-APIs zum weiteren Sichern von Daten auf dem Gerät.Windows 10 has an app model that prevents unauthorized data access between apps, and offers encryption APIs to further secure data on the device. Mit dem Schließfach für Anmeldeinformationen können Benutzeranmeldeinformationen sicher auf dem Gerät gespeichert werden. Das Betriebssystem verhindert, dass andere Apps Zugriff auf diese erhalten.A feature called Credential Locker can be used to securely store user credentials on the device, with the operating system preventing other apps from accessing them.

2 Authentifizierungsfaktoren2 Authentication Factors

Um die Daten zu schützen, muss die Person, die den Zugriff anfordert, sich identifizieren und zum Zugriff auf die gewünschten Datenressourcen autorisiert sein.To protect data, the person requesting access to it must be identified and authorized to access the data resources they request. Der Vorgang, bei dem ein Benutzer identifiziert wird, wird als Authentifizierung bezeichnet. Der Vorgang, bei dem bestimmt wird, ob ein Benutzer berechtigt ist, auf eine Ressource zuzugreifen, wird als Autorisierung bezeichnet.The process of identifying a user is called authentication, and determining access privileges to a resource is called authorization. Beide Vorgänge sind eng verwandt und für den Benutzer möglicherweise kaum zu unterscheiden.These are closely related operations, and to the user they might be indistinguishable. Der Vorgang kann relativ einfach oder komplex sein. Dies hängt von zahlreichen Faktoren ab, beispielsweise davon, ob die Daten auf einem Server gespeichert oder auf viele Systeme verteilt sind.They can be relatively simple or complex operations, depending on many factors: for example, whether the data resides on one server or is distributed across many systems. Der Server, der die Authentifizierungs- und Autorisierungsdienste bereitstellt, wird als Identitätsanbieter bezeichnet.The server providing the authentication and authorization services is referred to as the identity provider.

Um sich bei einem bestimmten Dienst und/oder einer App zu authentifizieren, verwendet der Benutzer als Anmeldeinformationen eine Information, ein Gerät und/oder ein Merkmal.To authenticate themselves with a particular service and/or app, the user employs credentials made up of something they know, something they have, and/or something they are. Diese Punkte werden als Authentifizierungsfaktoren bezeichnet.Each of these are called authentication factors.

  • Benutzerinformation ist in der Regel ein Kennwort, kann aber auch eine Geheimzahl (PIN) oder eine Kombination aus „geheimer“ Frage und Antwort sein.Something the user knows is usually a password, but it can also be a personal identification number (PIN) or a “secret” question-and-answer pair.
  • Benutzergerät ist häufig ein Hardwarespeichergerät wie ein USB-Stick mit den eindeutigen Authentifizierungsdaten des Benutzers.Something the user has is most often a hardware memory device such as a USB stick containing the authentication data unique to the user.
  • Benutzermerkmal umfasst häufig Fingerabdrücke. Mittlerweile werden jedoch zunehmend auch Faktoren wie Sprach-, Gesichts- oder Augenmerkmale und Verhaltensmuster des Benutzers verwendet.Something the user is often encompasses their fingerprints, but there are increasingly popular factors like the user’s speech, facial, ocular (eye) characteristics, or patterns of behavior. Werden sie als Daten gespeichert, bezeichnet man diese als Biometrie.When stored as data, these measurements are called biometrics.

Ein vom Benutzer erstelltes Kennwort ist naturgemäß ein Authentifizierungsfaktor, reicht aber häufig nicht aus. Jeder, der das Kennwort kennt, kann die Identität des Benutzers annehmen, dem das Kennwort gehört.A password created by the user is an authentication factor in itself, but it often isn’t sufficient; anyone who knows the password can impersonate the user who owns it. Eine Smartcard bietet u. U. höhere Sicherheit, kann aber gestohlen, verloren oder verlegt werden.A smart card can provide a higher level of security, but it might be stolen, lost, or misplaced. Ein System, das einen Benutzer anhand seines Fingerabdrucks oder eines Augenscans authentifizieren kann, bietet u. U. die höchste und komfortabelste Sicherheit, erfordert jedoch teure und spezialisierte Hardware (z. B. eine Intel RealSense-Kamera für die Gesichtserkennung), die möglicherweise nicht allen Benutzern zur Verfügung steht.A system that can authenticate a user by their fingerprint or by an ocular scan might provide the highest and most convenient level of security, but it requires expensive and specialized hardware (for example, an Intel RealSense camera for facial recognition) that might not be available to all users.

Das Entwerfen der von einem Computersystem verwendeten Authentifizierungsmethode ist ein komplexer und wichtiger Aspekt der Datensicherheit.Designing the method of authentication used by a system is a complex and important aspect of data security. Im Allgemeinen gilt: Je mehr Faktoren bei der Authentifizierung zum Einsatz kommen, umso sicherer ist das System.In general, the greater number of factors you use in authentication, the more secure the system is. Zur gleichen Zeit muss die Authentifizierung praktikabel sein.At the same time, authentication must be usable. Da sich ein Benutzer normalerweise mehrmals täglich anmeldet, muss das Verfahren schnell sein.A user will usually log in many times a day, so the process must be fast. Bei der Wahl des Authentifizierungstyps muss zwischen Sicherheit und einfacher Bedienung abgewogen werden. Die Single-Factor Authentication ist am unsichersten und einfachsten, während die Multi-Factor Authentication immer sicherer, auch komplexer wird, je mehr Faktoren hinzukommen.Your choice of authentication type is a trade-off between security and ease of use; single-factor authentication is the least secure and easiest to use, and multi-factor authentication becomes more secure, but more complex as more factors are added.

2.1 Single-Factor Authentication2.1 Single-factor authentication

Diese Art der Authentifizierung basiert auf einer einzelnen Benutzeranmeldeinformation.This form of authentication is based on a single user credential. In der Regel ist dies ein Kennwort, es kann aber auch eine PIN verwendet werden.This is usually a password, but it could also be a personal identification number (PIN).

Die Single-Factor Authentication läuft wie folgt ab:Here’s the process of single-factor authentication.

  • Der Benutzer stellt seinen Benutzernamen und sein Kennwort dem Identitätsanbieter zur Verfügung.The user provides their username and password to the identity provider. Der Identitätsanbieter ist der Serverprozess, der die Identität des Benutzers überprüft.The identity provider is the server process that verifies the identity of the user.
  • Der Identitätsanbieter überprüft, ob Benutzername und Kennwort mit den im System gespeicherten Angaben übereinstimmen.The identity provider checks whether the username and password are the same as those stored in the system. In den meisten Fällen wird das Kennwort verschlüsselt. Das bietet zusätzliche Sicherheit, da andere Personen es nicht lesen können.In most cases, the password will be encrypted, providing additional security so that others cannot read it.
  • Der Identitätsanbieter gibt einen Authentifizierungsstatus zurück, der angibt, ob die Authentifizierung erfolgreich war.The identity provider returns an authentication status that indicates whether the authentication was successful.
  • Wenn der Vorgang erfolgreich war, beginnt der Datenaustausch.If successful, data exchange begins. Wenn er nicht erfolgreich war, muss der Benutzer erneut authentifiziert werden.If unsuccessful, the user must be re-authenticated.

Single-Factor Authentication

Dies ist heute die gebräuchlichste, dienstunabhängig verwendete Authentifizierungsmethode.Today, this method of authentication is the most commonly used one across services. Wenn sie als einzige Authentifizierungsmethode verwendet wird, bietet sie allerdings auch die geringste Sicherheit.It is also the least secure form of authentication when used as the only means of authentication. Kennwortkomplexität, „geheime Fragen“ und regelmäßige Kennwortänderungen können die Sicherheit von Kennwörtern verbessern, verursachen aber einen Mehraufwand für Benutzer und sind kein wirksames Abschreckungsmittel für Hacker.Password complexity requirements, "secret questions," and regular password changes can make using passwords more secure, but they put more burden on users and they’re not an effective deterrent against hackers.

Das Problem bei Kennwörtern ist, dass sie einfacher erraten werden können als Systeme, die mehrere Faktoren verwenden.The challenge with passwords is that it is easier to guess them successfully than systems that have more than one factor. Wenn Hacker eine Datenbank mit Benutzerkonten und Kennworthash aus einem kleinen Onlineshop stehlen, können sie die Kennwörter auf anderen Websites verwenden.If they steal a database with user accounts and hashed password from a little web shop, they can use the passwords used on other web sites. Benutzer tendieren dazu, Konten wiederverwenden, da komplexe Kennwörter schwierig zu merken sind.Users tend to reuse accounts all the time, because complex passwords are hard to remember. Die Verwaltung von Kennwörtern stellt die IT-Abteilung vor die Herausforderung, Zurücksetzungsmechanismen bieten zu müssen, häufige Änderungen der Kennwörter zu verlangen und sicher zu speichern.For an IT department, managing passwords also brings with it the complexity of having to offer reset mechanisms, requiring frequent updates to passwords, and storing them in a safe manner.

Die Single-Factor Authentication hat zwar einige Nachteile, überlässt dem Benutzer jedoch die Kontrolle über seine Anmeldedaten.For all of its disadvantages, single-factor authentication gives the user control of the credential. Der Benutzer erstellt und ändert die Anmeldeinformationen, und zur Authentifizierung wird lediglich eine Tastatur benötigt.They create it and modify it, and only a keyboard is needed for the authentication process. Dies ist der Hauptaspekt, der die Single-Factor Authentication von der Multi-Factor Authentication unterscheidet.This is the main aspect that distinguishes single-factor from multi-factor authentication.

2.1.1 Webauthentifizierungsbroker2.1.1 Web authentication broker

Wie bereits erwähnt liegt eine der Herausforderungen in der Kennwortauthentifizierung für IT-Abteilung in der Verwaltung der Benutzernamen/Kennwörter, Zurücksetzungsmechanismen usw. Eine weitere, immer beliebtere Option der Einsatz von dritten Identitätsanbietern. Diese bieten die Authentifizierung über OAuth an, einen offenen Authentifizierungsstandard.As previously discussed, one of the challenges with password authentication for an IT department is the added overhead of managing the base of usernames/passwords, reset mechanisms, etc. An increasingly popular option is to rely on third-party identity providers that offer authentication through OAuth, an open standard for authentication.

Mit OAuth können IT-Abteilungen die Komplexität der Verwaltung einer Datenbank mit Benutzernamen und Kennwörtern, das Zurücksetzen von Kennwörtern usw. einem dritten Identitätsanbieter wie Facebook, Twitter oder Microsoft übertragen.Using OAuth, IT departments can effectively "outsource" the complexity of maintaining a database with usernames and passwords, reset password functionality, etc. to a third party identity provider like Facebook, Twitter or Microsoft.

Benutzer haben auf diesen Plattformen die vollständige Kontrolle über ihre Identität. Apps können jedoch nach der Authentifizierung des Benutzers mit dessen Einverständnis ein Token vom Anbieter anfordern, welches zur Autorisierung von authentifizierten Benutzern verwendet werden kann.Users have complete control over their identity on these platforms, but apps can request a token from the provider, after the user is authenticated and with their consent, which can be used to authorize authenticated users.

Der Webauthentifizierungsbroker in Windows 10 bietet mehrere APIs und eine Infrastruktur für Apps zum Verwenden von Authentifizierungs- und Autorisierungsprotokollen wie OAuth und OpenID.The web authentication broker in Windows 10 provides a set of APIs and infrastructure for apps to use authentication and authorization protocols like OAuth and OpenID. Apps können Authentifizierungsvorgänge über die WebAuthenticationBroker-API initiieren, wodurch WebAuthenticationResult zurückgegeben wird.Apps can initiate authentication operations through the WebAuthenticationBroker API, resulting in the return of a WebAuthenticationResult. In der folgenden Abbildung erhalten Sie einen Überblick über den Kommunikationsfluss.An overview of the communication flow is illustrated in the following figure.

WAB-Workflow

Die App fungiert als Vermittler und initiiert die Authentifizierung gegenüber dem Identitätsanbieter über WebView in der App.The app acts as the broker, initiating the authentication with the identity provider through a WebView in the app. Nachdem der Benutzer vom Identitätsanbieter authentifiziert wurde, gibt er ein Token an die App zurück, mit dem vom Identitätsanbieter Informationen zum Benutzer angefordert werden können.When the identity provider has authenticated the user, it returns a token to the app that can be used to request information about the user from the identity provider. Aus Sicherheitsgründen muss die App beim Identitätsanbieter registriert werden, bevor sie als Authentifizierungsprozessbroker für den Identitätsanbieter fungieren kann.As a security measure, the app must be registered with the identity provider before it can broker the authentication processes with the identity provider. Diese Registrierungsschritte unterscheiden sich je nach Anbieter.This registration steps differ for each provider.

Nachfolgend finden Sie den allgemeinen Workflow beim Aufrufen der WebAuthenticationBroker-API für die Kommunikation mit dem Anbieter.Here’s the general workflow for calling the WebAuthenticationBroker API to communicate with the provider.

  • Erstellen Sie die Anforderungszeichenfolgen, die an den Identitätsanbieter gesendet werden sollen.Construct the request strings to be sent to the identity provider. Die Anzahl der Zeichenfolgen und die Informationen in den einzelnen Zeichenfolgen sind bei jedem Webdienst anders. Normalerweise enthalten sie aber je zwei URI-Anforderungszeichenfolgen mit einer URL – eine, an die die Authentifizierungsanforderung gesendet wird und eine, an die der Benutzer nach Abschluss der Autorisierung weitergeleitet wird.The number of strings, and the information in each string, is different for each web service but it usually includes two URI strings each containing a URL: one to which the authentication request is sent, and one to which the user is redirected after authorization is complete.
  • Rufen Sie WebAuthenticationBroker.AuthenticateAsync auf, indem Sie die Anforderungszeichenfolgen übergeben, und warten Sie auf die Antwort des Identitätsanbieters.Call WebAuthenticationBroker.AuthenticateAsync, passing in the request strings, and wait for the response from the identity provider.
  • Rufen Sie WebAuthenticationResult.ResponseStatus auf, um beim Empfang der Antwort den Status zu erhalten.Call WebAuthenticationResult.ResponseStatus to get the status when the response is received.
  • Wenn die Kommunikation erfolgreich verläuft: Verarbeiten der vom Identitätsanbieter zurückgegebenen Antwortzeichenfolge.If the communication is successful, process the response string returned by the identity provider. Falls sie nicht erfolgreich ist: Verarbeiten des Fehlers.If unsuccessful, process the error.

Wenn die Kommunikation erfolgreich verläuft: Verarbeiten der vom Identitätsanbieter zurückgegebenen Antwortzeichenfolge.If the communication is successful, process the response string returned by the identity provider. Falls sie nicht erfolgreich ist: Verarbeiten des Fehlers.If unsuccessful, process the error.

C#-Beispielcode für dieses Verfahren finden Sie unten.Sample C# code that for this process is below. Weitere Informationen und eine ausführliche exemplarische Vorgehensweise finden Sie unter WebAuthenticationBroker.For information and a detailed walkthrough, see WebAuthenticationBroker. Ein vollständiges Codebeispiel finden Sie im WebAuthenticationBroker-Beispiel auf GitHub.For a complete code sample, check out the WebAuthenticationBroker sample on GitHub.

string startURL = "https://<providerendpoint>?client_id=<clientid>";
string endURL = "http://<AppEndPoint>";

var startURI = new System.Uri(startURL);
var endURI = new System.Uri(endURL);

try
{
    WebAuthenticationResult webAuthenticationResult = 
        await WebAuthenticationBroker.AuthenticateAsync( 
            WebAuthenticationOptions.None, startURI, endURI);

    switch (webAuthenticationResult.ResponseStatus)
    {
        case WebAuthenticationStatus.Success:
            // Successful authentication. 
            break;
        case WebAuthenticationStatus.ErrorHttp:
            // HTTP error. 
            break;
        default:
            // Other error.
        break;
    }
}
catch (Exception ex)
{
    // Authentication failed. Handle parameter, SSL/TLS, and
    // Network Unavailable errors here. 
}

2.2 Multi-Factor Authentication2.2 Multi-factor authentication

Die Multi-Factor Authentication nutzt mehr als einen Authentifizierungsfaktor.Multi-factor authentication makes use of more than one authentication factor. In der Regel wird „etwas, das Sie kennen“, z. B. ein Kennwort, mit „etwas, das Sie haben“ kombiniert. Das kann z. B. ein Mobiltelefon oder eine Smartcard sein.Usually, "something you know," such as a password, is combined with "something you have," which can be a mobile phone or a smart card. Selbst wenn ein Angreifer das Kennwort des Benutzers ausspioniert, kann er ohne das Gerät oder den Code trotzdem nicht auf das Konto zugreifen.Even if an attacker discovers the user’s password, the account is still inaccessible without the device or card. Wird nur das Gerät oder die Karte manipuliert, sind diese ohne das Kennwort für den Angreifer nutzlos.And if only the device or card is compromised, it is not useful to the attacker without the password. Daher ist die Multi-Factor Authentication sicherer, aber auch komplexer als die Single-Factor Authentication.Multi-factor authentication is therefore more secure, but also more complex, than single-factor authentication.

Dienste, die die Multi-Factor Authentication nutzen, lassen dem Benutzer häufig die Wahl, wie die zweite Anmeldeinformation übermittelt werden soll.Services that use multi-factor authentication will often give the user a choice in how they receive the second credential. Ein Beispiel für diesen Authentifizierungstyp ist ein häufig verwendetes Verfahren, bei dem ein Überprüfungscode per SMS an das Mobiltelefon des Benutzers gesendet wird.An example of this type of authentication is a commonly used process where a verification code is sent to the user’s mobile phone using SMS.

  • Der Benutzer stellt seinen Benutzernamen und sein Kennwort dem Identitätsanbieter zur Verfügung.The user provides their username and password to the identity provider.
  • Der Identitätsanbieter überprüft den Benutzernamen und das Kennwort wie bei der Single-Factor Authorization und ermittelt dann die im System gespeicherte Mobiltelefonnummer des Benutzers.The identity provider verifies the username and password as in single-factor authorization, and then looks up the user’s mobile phone number stored in the system.
  • Der Server sendet eine SMS mit einem generierten Überprüfungscode an das Mobiltelefon des Benutzers.The server sends an SMS message containing a generated verification code to the user’s mobile phone.
  • Der Benutzer übergibt den Überprüfungscode mithilfe eines für den Benutzer bereitgestellten Formulars an den Identitätsanbieter.The user provides the verification code to the identity provider; through a form presented to the user.
  • Der Identitätsanbieter gibt einen Authentifizierungsstatus zurück, der angibt, ob die Authentifizierung beider Anmeldeinformationen erfolgreich war.The identity provider returns an authentication status that indicates whether the authentication of both credentials were successful.
  • Wenn der Vorgang erfolgreich war, beginnt der Datenaustausch.If successful, data exchange begins. Andernfalls muss der Benutzer erneut authentifiziert werden.Otherwise, the user must be re-authenticated.

Two-Factor Authentication

Wie Sie sehen, unterscheidet sich dieser Vorgang auch von der Single-Factor Authentication, da die zweite Benutzeranmeldeinformation an den Benutzer gesendet wird und nicht vom Benutzer erstellt bzw. angegeben wird.As you can see, this process also differs from single-factor authentication in that the second user credential is sent to the user instead of being created or provided by the user. Daher hat der Benutzer nicht die vollständige Kontrolle über die erforderlichen Anmeldeinformationen.The user is therefore not in complete control of the necessary credentials. Dies gilt auch, wenn eine Smartcard für die zweite Anmeldeinformation verwendet wird: Die Organisation ist dafür zuständig, die Smartcard zu erstellen und an den Benutzer zu übergeben.This also applies when a smart card is used as the second credential: the organization is in charge of creating and providing it to the user.

2.2.1 Azure Active Directory2.2.1 Azure Active Directory

Azure Active Directory (Azure AD) ist ein cloudbasierter Identitäts- und Zugriffsverwaltungsdienst, der als Identitätsanbieter in der Single-Factor Authentication oder Multi-Factor Authentication verwendet werden kann.Azure Active Directory (Azure AD) is a cloud-based identity and access management service that can serve as the identity provider in single-factor or multi-factor authentication. Die Azure AD-Authentifizierung kann mit oder ohne Überprüfungscode verwendet werden.Azure AD authentication can be used with or without a verification code.

In Azure AD kann auch die Single-Factor Authentication implementiert werden. Unternehmen benötigen jedoch die höhere Sicherheit der Multi-Factor Authentication.While Azure AD can also implement single-factor authentication, enterprises usually require the higher security of multi-factor authentication. Bei der Konfiguration der Multi-Factor Authentification kann ein Benutzer, der sich bei einem Azure AD-Konto authentifiziert, einen Überprüfungscode entweder als SMS an sein Mobiltelefon oder an die Azure Authenticator-App auf seinem Mobiltelefon senden lassen.In a multi-factor authentication configuration, a user authenticating with an Azure AD account has the option of having a verification code sent as an SMS message either to their mobile phone or the Azure Authenticator mobile app.

Darüber hinaus kann Azure AD als OAuth-Anbieter verwendet werden und Standardbenutzer erhalten einen Authentifizierungs- und Autorisierungsmechanismus für Apps auf verschiedenen Plattformen.Additionally, Azure AD can be used as an OAuth provider, providing the standard user with an authentication and authorization mechanism to apps across various platforms. Weitere Informationen hierzu finden Sie unter Azure Active Directory und Multi-Factor Authentication von Azure.To learn more, see Azure Active Directory and Multi-Factor Authentication on Azure.

2,4 Windows Hello2.4 Windows Hello

In Windows 10 ist ein praktischer mehrstufiger Authentifizierungsmechanismus in das Betriebssystem integriert.In Windows 10, a convenient multi-factor authentication mechanism is built into the operating system. Windows Hello ist das neue biometrische Anmeldesystem in Windows 10.Windows Hello is the new biometric sign-in system built into Windows 10. Da es direkt im Betriebssystem integriert ist, ermöglicht Windows Hello die Gesichts- oder Fingerabdruckidentifikation zum Entsperren von Benutzergeräten.Because it is built directly into the operating system, Windows Hello allows face or fingerprint identification to unlock users’ devices. Der sichere Windows-Anmeldeinformationsspeicher schützt die biometrischen Daten auf dem Gerät.The Windows secure credential store protects biometric data on the device.

Windows Hello bietet Geräten eine zuverlässige Möglichkeit, einzelne Benutzer zu erkennen. Dies betrifft den ersten Teil des Wegs zwischen einem Benutzer und einem angeforderten Dienst- oder Datenelement.Windows Hello provides a robust way for a device to recognize an individual user, which addresses the first part of the path between a user and a requested service or data item. Nachdem das Gerät den Benutzer erkannt hat, muss es den Benutzer jedoch erst noch authentifizieren, bevor es entscheidet, ob er auf die angeforderte Ressource zugreifen darf.After the device has recognized the user, it still must authenticate the user before determining whether to grant access to a requested resource. Windows Hello bietet auch eine starke zweistufige Authentifizierung (2FA), die vollständig in Windows integriert ist und wiederverwendbare Kenn Wörter durch eine Kombination aus einem bestimmten Gerät und einer biometrischen Geste oder PIN ersetzt.Windows Hello also provides strong two-factor authentication (2FA) that is fully integrated into Windows and replaces reusable passwords with the combination of a specific device, and a biometric gesture or PIN. Die PIN wird vom Benutzer als Teil der Microsoft-Konto Registrierung angegeben.The PIN is specified by the user as part of their Microsoft account enrollment.

Windows Hello ist jedoch nicht nur ein Ersatz für herkömmliche 2FA-Systeme.Windows Hello isn’t just a replacement for traditional 2FA systems, though. Konzeptionell gesehen ähnelt es Smartcards. Die Authentifizierung wird mithilfe von kryptografischen Primitiven ausgeführt, anstelle Zeichenfolgen zu vergleichen. Zudem sind die Schlüssel des Benutzers in der vor Manipulationen geschützten Hardware sicher.It’s conceptually similar to smart cards: authentication is performed by using cryptographic primitives instead of string comparisons, and the user’s key material is secure inside tamper-resistant hardware. Microsoft Hello erfordert nicht die zusätzlichen Infrastrukturkomponenten, die für die Smartcardbereitstellung erforderlich sind.Microsoft Hello doesn't require the extra infrastructure components required for smart card deployment, either. Insbesondere benötigen Sie keine Public Key-Infrastruktur (PKI) zum Verwalten von Zertifikaten, wenn Sie derzeit keine haben.In particular, you don’t need a Public Key Infrastructure (PKI) to manage certificates, if you don’t currently have one. Windows Hello kombiniert die Hauptvorteile von Smartcards – die Flexibilität bei der Bereitstellung virtueller Smartcards und die stabile Sicherheit physischer Smartcards – ohne ihre Nachteile.Windows Hello combines the major advantages of smart cards—deployment flexibility for virtual smart cards and robust security for physical smart cards—without any of their drawbacks.

Ein Gerät muss bei Windows Hello registriert werden, damit die Benutzer sich damit authentifizieren können.A device must be registered with Windows Hello before users can authenticate with it. Windows Hello verwendet die asymmetrische Verschlüsselung (Public/Private Key), in der eine Partei einen öffentlichen Schlüssel verwendet, um die Daten zu verschlüsseln, die von der anderen Partei mithilfe eines privaten Schlüssels entschlüsselt werden können.Windows Hello uses asymmetric (public/private key) encryption in which one party uses a public key to encrypt the data that the other party can decrypt using a private key. Im Fall von Windows Hello wird ein Satz aus öffentlichen/privaten Schlüsselpaaren erstellt und die privaten Schlüssel in den Trusted Platform Module des Geräts (TPM) geschrieben.In the case of Windows Hello, it creates a set of public/private key pairs and writes the private keys to the device’s Trusted Platform Module (TPM) chip. Nachdem ein Gerät registriert wurde, können UWP-Apps System-APIs aufrufen, um den öffentlichen Schlüssel des Benutzers abzurufen, der zum Registrieren des Benutzers auf dem Server verwendet werden kann.After a device has been registered, UWP apps can call system APIs to retrieve the user’s public key, which can be used to register the user on the server.

Der Registrierungsworkflow einer App könnte wie folgt aussehen:The registration workflow of an app might look like the following:

Windows Hello-Registrierung

Die von Ihnen erfassten Registrierungsinformationen umfassen möglicherweise viel mehr Identifikationsinformationen als in diesem einfachen Szenario.The registration information you collect may include a lot more identifying information than it does in this simple scenario. Wenn Ihre App auf einen gesicherten Dienst – z. B. Onlinebanking – zugreift, müssen Sie beim Anmeldevorgang einen Identitätsnachweis und andere Dinge anfordern.For example, if your app accesses a secured service such as one for banking, you’d need to request proof of identity and other things as part of the sign-up process. Nachdem alle Bedingungen erfüllt wurden, wird der öffentliche Schlüssel dieses Benutzers im Back-End gespeichert und für Überprüfungszwecke verwendet, wenn der Benutzer den Dienst das nächste Mal verwendet.Once all the conditions are met, the public key of this user will be stored in the back-end and used to validate the next time the user uses the service.

Weitere Informationen zu Windows Hello finden Sie im Windows Hello- Handbuch und im Windows Hello-Entwicklerhandbuch.For more information on Windows Hello, see the Windows Hello guide and the Windows Hello developer guide.

3 Sicherheitsmethoden für In-Flight-Daten3 Data-in-flight security methods

Sicherheitsmethoden für In-Flight-Daten beziehen sich auf Daten, die zwischen den mit einem Netzwerk verbundenen Geräten übertragen werden.Data-in-flight security methods apply to data in transit between devices connected to a network. Die Daten können zwischen Systemen in der hochsicheren Umgebung eines privaten Unternehmensintranets oder zwischen einem Client und Webdienst in der nicht sicheren Umgebung des Webs übertragen werden.The data may be transferred between systems on the high-security environment of a private corporate intranet, or between a client and web service in the non-secure environment of the web. Windows 10-Apps unterstützen Standards wie SSL über ihre Netzwerk-APIs und arbeiten mit Technologien wie Azure API Management, mit der Entwickler die geeignete Sicherheitsstufe für ihre Apps gewährleisten können.Windows 10 apps support standards such as SSL through their networking APIs, and work with technologies such as Azure API Management with which developers can ensure the appropriate level of security for their apps.

3.1 Remotesystemauthentifizierung3.1 Remote system authentication

Es gibt zwei allgemeine Szenarien, in denen die Kommunikation über ein Remotecomputersystem erfolgt.There are two general scenarios where communication occurs with a remote computer system.

  • Ein lokaler Server authentifiziert einen Benutzer über eine direkte Verbindung.A local server authenticates a user over a direct connection. Beispielsweise, wenn sich der Server und Client in einem Unternehmensintranet befinden.For example, when the server and the client are on a corporate intranet.
  • Mit einem Webdienst wird über das Internet kommuniziert.A web service is communicated with over the Internet.

Für die Kommunikation zwischen Webdiensten gelten höhere Sicherheitsanforderungen als in Szenarien mit direkten Verbindungen, da Daten nicht mehr nur ein Teil eines sicheren, vertrauenswürdigen Netzwerks sind. Zudem besteht ein höheres Risiko, dass Angreifer versuchen, Daten abzufangen.Security requirements for web service communication are higher than those in direct connection scenarios, as data is no longer only a part of a secure network and the likelihood of malicious attackers looking to intercept data is also higher. Da verschiedene Gerätetypen auf den Dienst zugreifen werden, werden sie vermutlich als RESTful-Dienste erstellt und nicht als WCF. Die Authentifizierung und Autorisierung für den Dienst stellen Sie daher ebenfalls vor neue Herausforderungen.Because various types of devices will access the service, they will likely be built as RESTful services, as opposed to WCF, for instance, which means authentication and authorization to the service also introduces new challenges. Wir werden zwei Anforderungen an die sichere Kommunikation mit Remotesystemen untersuchen.We’ll discuss two requirements for secure remote system communication.

Die erste Anforderung ist Nachrichtenvertraulichkeit: Die zwischen dem Client und den Webdiensten übertragenen Informationen (z. B. die Identität des Benutzers und andere persönliche Informationen) dürfen während der Übertragung nicht von Dritten gelesen werden.The first requirement is message confidentiality: The information passed between the client and the web services (for example, the identity of the user and other personal information) must not be readable by third parties while in transit. Dies wird normalerweise verhindert, indem die Verbindung, über die Nachrichten gesendet werden, und die Nachricht selbst verschlüsselt werden.This is usually accomplished by encrypting the connection over which messages are sent and by encrypting the message itself. Bei der Verschlüsselung mit privatem/öffentlichem Schlüssel ist der öffentliche Schlüssel für jeden verfügbar und dient zum Verschlüsseln von Nachrichten, die an einen bestimmten Empfänger gesendet werden sollen.In private/public key encryption, the public key is available to anyone, and is used to encrypt messages to be sent to a specific receiver. Der private Schlüssel ist nur dem Empfänger bekannt und wird zum Entschlüsseln der Nachricht verwendet.The private key is only held by the receiver and is used to decrypt the message.

Die zweite Anforderung ist die Nachrichtenintegrität: Der Client und der Webdienst müssen überprüfen können, ob die empfangenen Nachrichten diejenigen sind, die die Gegenseite senden wollte, und ob die Nachricht während der Übertragung nicht manipuliert wurde.The second requirement is message integrity: The client and the web service must be able to verify that the messages they receive are the ones intended to be sent by the other party, and that the message has not been altered in transit. Dazu werden Nachrichten mit digitalen Signaturen signiert und die Zertifikatauthentifizierung verwendet.This is accomplished by signing messages with digital signatures and using certificate authentication.

3.2 SSL-Verbindungen3.2 SSL connections

Webdienste können das von HTTPS (Secure Hypertext Transfer Protocol) unterstützte SSL (Secure Sockets Layer) verwenden, um sichere Verbindungen mit Clients herzustellen und zu verwalten.To establish and maintain secure connections to clients, web services can use Secure Sockets Layer (SSL), which is supported by the Secure Hypertext Transfer Protocol (HTTPS). SSL gewährleistet Nachrichtenvertraulichkeit und -integrität durch die Unterstützung der Verschlüsselung mit öffentlichem Schlüssel sowie von Serverzertifikaten.SSL provides message confidentiality and integrity by supporting public key encryption as well as server certificates. SSL wird von Transport Layer Security (TLS) abgelöst, aber TLS wird häufig als SSL bezeichnet.SSL is superseded by Transport Layer Security (TLS), but TLS is often casually referred to as SSL.

Wenn ein Client Zugriff auf eine Ressource auf einem Server anfordert, startet SSL einen Aushandlungsprozess mit dem Server.When a client requests access to a resource on a server, SSL starts a negotiation process with the server. Dies wird als SSL-Handshake bezeichnet.This is called an SSL handshake. Als Grundlage für die gesamte Kommunikation für die Dauer der SSL-Verbindung werden eine Verschlüsselungsstufe, eine Reihe öffentlicher und privater Verschlüsselungsschlüssel und die Identitätsinformationen im Client- und Serverzertifikat vereinbart.An encryption level, a set of public and private encryption keys, and the identity information in the client and server certificates are agreed upon as the basis of all communication for the duration of the SSL connection. Der Server kann zu diesem Zeitpunkt außerdem verlangen, dass der Client authentifiziert wird.The server may also require the client to be authenticated at this time. Sobald die Verbindung hergestellt ist, werden alle Nachrichten mit dem ausgehandelten öffentlichen Schlüssel verschlüsselt, bis die Verbindung geschlossen wird.Once the connection is established, all messages are encrypted with the negotiated public key until the connection closes.

3.2.1 SSL-Pinning3.2.1 SSL pinning

Während SSL mithilfe von Verschlüsselung und Zertifikaten für Nachrichtenvertraulichkeit sorgt, kann mit dieser Technologie nicht sichergestellt werden, dass der Server, mit dem kommuniziert wird, auch der richtige Server ist.While SSL can provide message confidentiality using encryption and certificates, it does nothing to verify that the server with which the client is communicating is the correct one. Das Serververhalten kann durch einen nicht autorisierten Dritten nachgeahmt werden, um sensible, vom Client übertragene Daten abzufangen.The server’s behavior can be mimicked by an unauthorized third-party, intercepting the sensitive data that the client transmits. Dies kann mit einer als „SSL-Pinning“ bezeichneten Technik verhindert werden, die sicherstellt, dass das Zertifikat auf dem Server dem Zertifikat entspricht, das der Client erwartet und als vertrauenswürdig anerkennt.To prevent this, a technique called SSL pinning is used to verify that the certificate on the server is the certificate that the client expects and trusts.

SSL-Pinning kann in Apps auf verschiedene Weisen implementiert werden, die jeweils eigene Vor- und Nachteile bieten.There are a few different ways to implement SSL pinning in apps, each with their own pros and cons. Die einfachste Ansatz besteht in der Verwendung der Zertifikatdeklaration im App-Paketmanifest.The easiest approach is via the Certificates declaration in the app’s package manifest. Diese Deklaration ermöglicht es dem App-Paket, digitale Zertifikate zu installieren und eine exklusive Vertrauensstellung dafür festzulegen.This declaration enables the app package to install digital certificates and specify exclusive trust in them. Dies führt dazu, dass SSL-Verbindungen zwischen der App und den Servern nur mit den entsprechenden Zertifikaten in ihrer Zertifikatkette zulässig sind.This results in SSL connections being allowed only between the app and servers that have the corresponding certificates in their certificate chain. Dieser Mechanismus ermöglicht auch die sichere Verwendung selbstsignierter Zertifikate, da keine Abhängigkeit von Drittanbietern für vertrauenswürdige öffentliche Zertifizierungsstellen besteht.This mechanism also enables the secure use of self-signed certificates, as no third party dependency is needed on trusted public certification authorities.

SSL-Manifest

Für eine bessere Kontrolle über die Validierungslogik überprüfen APIs die vom Server als Antwort auf eine HTTPS-Anforderung zurückgegebenen Zertifikate.For more control over the validation logic, APIs are available to validate the certificate(s) returned by the server in response to an HTTPS request. Beachten Sie, dass für diese Methode eine Anforderung gesendet und die Antwort überprüft werden muss. Daher muss diese Überprüfung durchgeführt werden, bevor sensible Daten in einer Anforderung tatsächlich gesendet werden.Note that this method requires sending a request and inspecting the response, so be sure to add this as a validation before actually sending sensitive information in a request.

Der folgende C#-Code veranschaulicht diese Methode des SSL-Pinnings.The following C# code illustrates this method of SSL pinning. Die Methode ValidateSSLRoot verwendet die Klasse HttpClient zum Ausführen einer HTTP-Anforderung.The ValidateSSLRoot method uses the HttpClient class to execute an HTTP request. Nach dem Senden der Antwort verwendet der Client die Collection RequestMessage.TransportInformation.ServerIntermediateCertificates zum Prüfen der vom Server zurückgegebenen Zertifikate.After the client sends the response, it uses the RequestMessage.TransportInformation.ServerIntermediateCertificates collection to inspect the certificates returned by the server. Der Client kann dann die gesamte Zertifikatkette mit den enthaltenen Fingerabdrücken prüfen.The client can then validate the entire certificate chain with the thumbprints it has included. Für diese Methode müssen die Fingerabdrücke der Zertifikate in der App aktualisiert werden, wenn das Serverzertifikat abläuft und erneuert wird.This method does require the certificate thumbprints to be updated in the app when the server certificate expires and is renewed.

private async Task ValidateSSLRoot()
{
    // Send a get request to Bing
    var httpClient = new HttpClient();
    var bingUri = new Uri("https://www.bing.com");
    HttpResponseMessage response = 
        await httpClient.GetAsync(bingUri);

    // Get the list of certificates that were used to
    // validate the server's identity
    IReadOnlyList<Certificate> serverCertificates = response.RequestMessage.TransportInformation.ServerIntermediateCertificates;
  
    // Perform validation
    if (!ValidateCertificates(serverCertificates))
    {
        // Close connection as chain is not valid
        return;
    }
    // Validation passed, continue with connection to service
}

private bool ValidateCertificates(IReadOnlyList<Certificate> certs)
{
    // In this example, we iterate through the certificates
    // and check that the chain contains
    // one specific certificate we are expecting
    foreach (var cert in certs)
    {
        byte[] thumbprint = cert.GetHashValue();

        // Check if the thumbprint matches whatever you 
        // are expecting
        var expected = new byte[] { 212, 222, 32, 208, 94, 102, 
            252, 83, 254, 26, 80, 136, 44, 120, 219, 40, 82, 202, 
            228, 116 };

        // ThumbprintMatches does the byte[] comparison 
        if (ThumbprintMatches(thumbprint, expected))
        {
            return true;
        }
    }
    return false;
}

3.3 Veröffentlichen und Sichern des Zugriffs auf REST-APIs3.3 Publishing and securing access to REST APIs

Um autorisierten Zugriff auf Webdienste zu gewährleisten, müssen sie bei jedem API-Aufruf eine Authentifizierung anfordern.To ensure authorized access to web services, they must require authentication every time an API call is made. Die Steuerung der Leistung und Skalierung ist eine weitere Möglichkeit, wenn Webdienste über das Web verfügbar gemacht werden.Being able to control performance and scale is also something to consider when web services are exposed across the web. Mit Azure API Management können Sie APIs über das Web verfügbar machen, wenn Sie Funktionen auf drei Ebenen bereitstellen.Azure API Management is a service that can help expose APIs across the web, while providing features on three levels.

Herausgeber/Administratoren der API können die API einfach über das Herausgeberportal von Azure API Management konfigurieren.Publishers/Administrators of the API can easily configure the API through the Publisher Portal of Azure API Management. Hier können API-Sätze erstellt werden, und der Zugriff darauf kann verwaltet werden. So können Sie steuern, wer Zugriff auf welche APIs hat.Here, API sets can be created and access to them can be managed to control who has access to which APIs.

Entwickler, die auf diese APIs zugreifen möchten, können Anfragen über das Entwicklerportal stellen. Dieses kann sofort Zugriff gewähren oder eine Genehmigung durch den Herausgeber/Administrator vorschreiben.Developers wanting access to these APIs can make requests through the Developer Portal, which can either immediately provide access or require approval by the publisher/administrator. Entwickler können auch die API-Dokumentation und Beispielcode im Entwicklerportal anzeigen, um schnell die vom Webdienst angebotenen APIs anzuwenden.Developers can also view the API documentation and sample code in the Developer Portal, to rapidly adopt the APIs offered by the web service.

Die von diesen Entwicklern erstellten apps können dann über den von Azure API Management angebotenen Proxy auf die API zugreifen.The apps that these developers create then access the API through the proxy offered by Azure API Management. Der Proxy ermöglicht das Ausblenden des tatsächlichen Endpunkts der API auf dem Server des Herausgebers/Administrators und kann zudem zusätzliche Logik wie die API-Übersetzung ermöglichen, um sicherzustellen, dass die verfügbar gemachte API einheitlich ist, wenn eine API an eine andere weitergeleitet wird.The proxy both provides a layer of obscurity, hiding the actual end-point of the API on the publisher/administrator’s server and can also include additional logic like API translation to ensure the exposed API is kept consistent when a call to one API is redirected to another. Der Dienst kann mithilfe der IP-Filterung auch API-Aufrufe von einer bestimmten oder mehreren IP-Domänen blockieren.It can also use IP filtering to block API calls originating from a specific IP domain or set of domains. Zum Schutz seiner Webdienste verwendet Azure API Management eine Reihe öffentlicher Schlüssel, die sogenannten API-Schlüssel, um jeden API-Aufruf zu authentifizieren und zu autorisieren.Azure API Management also keeps its web services secure by using a set of public keys, called API keys, to authenticate and authorize each API call. Wenn die Autorisierung einen Fehler verursacht, wird der Zugriff auf die API und die unterstützten Funktionen blockiert.When authorization fails, access to the API and the functionality it supports is blocked.

Azure API Management kann auch die Anzahl der API-Aufrufe eines Diensts (durch die sogenannte Drosselung) reduzieren, um die Leistung des Webdiensts zu optimieren.Azure API Management can also reduce the number of API calls to a service (a procedure called throttling) to optimizes the performance of the web service. Weitere Informationen finden Sie unter Azure API Management und Azure API Management at AzureCon 2015 (in englischer Sprache).To learn more, review Azure API Management and Azure API Management at AzureCon 2015.

4 Sicherheitsmethoden für At-Rest-Daten4 Data-at-rest security methods

Daten die von einem Gerät empfangen werden, bezeichnen wir als „At-Rest-Daten“.When data arrives on a device, we refer to it as "data-at-rest." Diese Daten müssen auf sichere Weise auf dem Gerät gespeichert werden, um den Zugriff durch nicht autorisierte Benutzer oder Apps zu verhindern.This data needs to be stored on the device in a secure manner, so that it cannot be accessed by unauthorized users or apps. Das App-Modell in Windows 10 stellt auf vielfältige Weise sicher, dass die von einer App gespeicherten Daten auch nur für diese App verfügbar sind. Gleichzeitig bietet es APIs, über die die Daten bei Bedarf gemeinsam genutzt werden können.The app model in Windows 10 does a lot to ensure that the data stored by any app is only accessible to that app, while providing APIs to share the data when necessary. Darüber hinaus sind APIs verfügbar, mit denen sichergestellt wird, dass Daten verschlüsselt und Anmeldeinformationen sicher gespeichert werden können.Additional APIs are also available to ensure that data can be encrypted and credentials can be stored safely.

4.1 Windows-App-Modell4.1 Windows app model

Bisher war in Windows keine App-Definition vorgesehen.Traditionally, Windows has never had a definition of an app. Meist wurde sie als ausführbare Datei (.exe) bezeichnet und umfasste niemals Faktoren wie Installation, Zustandsspeicherung, Ausführungslänge, Versionsverwaltung, Betriebssystemintegration oder App-zu-App-Kommunikation.It was most commonly referred to as an executable (.exe), and this never included installation, storage of state, execution length, versioning, OS integration, or app-to-app communication. Das UWP-Modell verfügt über eine App-Modelldefinition, in der Installation, Laufzeitumgebung, Ressourcenverwaltung, Updates, Datenmodell und Deinstallation berücksichtigt werden.The Universal Windows Platform model defines an app model that covers installation, runtime environment, resource management, updates, data model, and uninstallation.

Windows 10-Apps werden in einem Container ausgeführt. Das bedeutet, dass sie standardmäßig eingeschränkte Berechtigungen haben. (Zusätzliche Berechtigungen können angefordert und vom Benutzer genehmigt werden.)Windows 10 apps run in a container, which means that they have limited privileges by default (additional privileges can be requested and granted by the user). Möchte eine App beispielsweise auf Dateien auf dem System zugreifen, muss eine Dateiauswahl aus dem Namespace Windows.Storage.Pickers verwendet werden, damit der Benutzer eine Datei auswählen kann. (Es ist kein direkter Zugriff auf Dateien möglich.)For example, if an app wants to access files on the system, a file picker from the Windows.Storage.Pickers namespace has to be used to let the user pick a file (no direct access to files is enabled). Ein weiteres Beispiel: Wenn eine App auf Positionsdaten des Benutzers zugreifen möchte, müssen die Standortdienste des Geräts aktiviert werden. Der Benutzer wird beim Download informiert, dass diese App Zugriff auf die Position des Benutzers benötigt.Another example is if an app wants to access the user’s location data, it needs to enable the location device capability needs to be declared, prompting the user at download time that this app will request access to the user’s location. Wenn die App erstmals auf den Standort des Benutzers zugreifen möchte, wird abermals die Zustimmung des Benutzers zum Zugriff auf diese Daten angefordert.On top of that, the first time the app wants to access the user’s location, an additional consent prompt is shown to the user, requesting permission to access the data.

Beachten Sie, dass dieses App-Modell als „Gefängnis“ für Apps fungiert, diese also über keine Reichweite verfügen. Jedoch ist es keine „Burg“, die nicht von außen erreicht werden kann (Anwendungen mit Administratorrechten können die Apps noch erreichen).Note that this app model acts as a "jail" for apps, meaning that they can’t reach out, but it is not a “castle” that cannot be reached from the outside (applications with administrator privileges can of course still reach in). Mit Device Guard in Windows 10 können Unternehmen/IT festlegen, welche (Win32-) Apps ausgeführt werden dürfen und diesen Zugriff weiter einschränken.Device Guard in Windows 10, which enables organizations/IT to specify which (Win32) apps are allowed to execute, can further help limit this access.

Das App-Modell verwaltet auch den App-Lebenszyklus.The app model also manages the app lifecycle. Es beschränkt die Hintergrundausführung von Apps standardmäßig, Wird beispielsweise eine App in den Hintergrund verschoben, wird der Prozess angehalten (nachdem der App ein kurzer Zeitraum gewährt wird, um die App im Code anzuhalten), und der Speicher wird eingefroren.It limits the background execution of apps by default, for example; as soon as an app goes into the background, the process is suspended – after giving the app a brief period to address app suspension in code – and its memory is frozen. Das Betriebssystem bietet Mechanismen für Apps, um die Ausführung bestimmter Hintergrundaufgaben anzufordern (nach Zeitplan, durch verschiedene Ereignisse wie Internet-/Bluetooth-Verbindung ausgelöst, Änderung der Stromversorgung usw. und in bestimmten Szenarien wie der Wiedergabe von Musik oder GPS-Tracking).The operating system does provide mechanisms for apps to ask for specific background task execution (on a schedule, triggered by various events such as Internet/Bluetooth connectivity, power changes, etc., and in specific scenarios such as music playing or GPS tracking).

Wenn Speicherressourcen auf dem Gerät knapp werden, gibt Windows Speicher durch die Beendigung von Apps frei.When memory resources on the device are running low, Windows frees memory space by terminating apps. Dieses Lebenszyklusmodell zwingt Apps, Daten beizubehalten, wenn sie angehalten werden, da zwischen dem Anhalten und Beenden keine Karenzzeit verfügbar ist.This lifecycle model forces apps to persist data whenever they’re suspended, because there is no additional time available between suspension and termination.

Weitere Informationen finden Sie unter It's Universal: Understanding the Lifecycle of a Windows 10 Application (in englischer Sprache).For more information, see It's Universal: Understanding the Lifecycle of a Windows 10 Application.

4.2 Schutz gespeicherter Anmeldeinformationen4.2 Stored credential protection

Windows-Apps, die häufig auf authentifizierte Dienste zugreifen, bieten Benutzern die Möglichkeit, ihre Anmeldedaten auf dem lokalen Gerät zu speichern.Windows apps that access authenticated services often provide the users the option of storing their credentials on the local device. Diese Option erhöht die Benutzerfreundlichkeit. Wenn der Benutzer Benutzernamen und Kennwort angibt, werden diese bei nachfolgenden Startvorgängen von der App automatisch verwendet.This is a convenience for the users; when they provide their username and password, the app automatically uses them in subsequent launches of the app. Da ein Sicherheitsproblem entsteht, wenn ein Angreifer Zugriff auf diese gespeicherten Daten erhält, können Windows-Apps unter Windows 10 Benutzeranmeldeinformationen in einem sicheren Schließfach für Anmeldeinformationen speichern.Because this can be a security issue if an attacker gains access to this stored data, Windows 10 provides the ability for Windows apps to store user credentials in a secure credential locker. Die App ruft die API des Schließfachs für Anmeldeinformationen auf und ruft die Anmeldeinformationen aus dem Schließfach ab, anstatt sie im Speichercontainer der App zu speichern.The app calls the Credential Locker API to store and retrieve the credentials from the locker instead of storing them in the app’s storage container. Das Schließfach für Anmeldeinformationen wird vom Betriebssystem verwaltet und stellt eine sicher verwaltete Lösung für die Speicherung von Anmeldeinformationen dar. Der Zugriff darauf ist jedoch der App vorbehalten, die die Daten speichert.The credential locker is managed by the operating system, but access is limited to the app that stores them, providing a securely managed solution for credential storage.

Wenn ein Benutzer die zu speichernden Anmeldeinformationen angibt, ruft die App mithilfe des Objekts PasswordVault im Namespace Windows.Security.Credentials einen Verweis auf das Schließfach für Anmeldeinformationen ab.When a user supplies the credentials to be stored, the app gets a reference to the credential locker using the PasswordVault object in the Windows.Security.Credentials namespace. Anschließend wird ein Objekt PasswordCredential erstellt, das einen Bezeichner für die Windows-App sowie den Benutzernamen und das Kennwort enthält.It then creates a PasswordCredential object containing an identifier for the Windows app and the username and password. Dieses wird an die Methode PasswordVault.Add übergeben, um die Anmeldeinformationen im Schließfach zu speichern.This is passed to the PasswordVault.Add method to store the credentials in the locker. Dies wird im folgenden C#-Codebeispiel veranschaulicht.The following C# code example shows how this is done.

var vault = new PasswordVault();
vault.Add(new PasswordCredential("My App", username, password));

Im folgenden C#-Codebeispiel fordert die App alle Anmeldeinformationen an, die der App entsprechen, indem sie die Methode FindAllByResource des Objekts PasswordVault aufruft.In the following C# code example, the app requests all of the credentials corresponding to the app by calling the FindAllByResource method of the PasswordVault object. Wenn mehr als eine zurückgegeben wird, fordert sie den Benutzer auf, seinen Benutzernamen einzugeben.If more than one is returned, it prompts the user to enter their username. Wenn die Anmeldeinformationen nicht im Schließfach enthalten sind, werden sie durch die App vom Benutzer angefordert.If the credentials are not in the locker, the app prompts the user for them. Anschließend wird der Benutzer mit den Anmeldeinformationen beim Server angemeldet.The user is then logged into the server using the credentials.

private string resourceName = "My App";
private string defaultUserName;

private void Login()
{
    PasswordCredential loginCredential = GetCredentialFromLocker();

    if (loginCredential != null)
    {
        // There is a credential stored in the locker.
        // Populate the Password property of the credential
        // for automatic login.
        loginCredential.RetrievePassword();
    }
    else
    {
        // There is no credential stored in the locker.
        // Display UI to get user credentials.
        loginCredential = GetLoginCredentialUI();
    }
    // Log the user in.
    ServerLogin(loginCredential.UserName, loginCredential.Password);
}

private PasswordCredential GetCredentialFromLocker()
{
    PasswordCredential credential = null;

    var vault = new PasswordVault();
    var credentialList = vault.FindAllByResource(resourceName);

    if (credentialList.Count == 1)
    {
        credential = credentialList[0];
    }
    else if (credentialList.Count > 0)
    {
        // When there are multiple usernames,
        // retrieve the default username. If one doesn't
        // exist, then display UI to have the user select
        // a default username.
        defaultUserName = GetDefaultUserNameUI();

        credential = vault.Retrieve(resourceName, defaultUserName);
    }
    return credential;
}

Weitere Informationen finden Sie unter Schließfach für Anmeldeinformationen.For more information, see Credential locker.

4.3 Schutz gespeicherter Daten4.3 Stored data protection

Wenn gespeicherte Daten – häufig auch At-Rest-Daten genannt – verschlüsselt werden, können nicht autorisierte Benutzer am Zugriff auf den Inhalt gespeicherter Daten gehindert werden.When you are dealing with stored data, commonly referred to as data-at-rest, encrypting it can prevent unauthorized users from accessing the stored data. Die beiden gängigen Mechanismen zum Verschlüsseln von Daten verwenden symmetrische oder asymmetrische Schlüssel.The two common mechanisms to encrypt data are using either symmetric keys or using asymmetric keys. Die Datenverschlüsselung kann jedoch nicht sicherstellen, dass die Daten zwischen dem Zeitpunkt des Absendens und Speicherns nicht manipuliert werden.However, data encryption can’t ensure that the data is unaltered between the time it was sent and the time it was stored. Anders ausgedrückt bedeutet dies, dass keine Datenintegrität gewährleistet werden kann.In other words, the data integrity cannot be ensured. Nachrichtenauthentifizierungscodes, Hashes und digitale Signaturen werden häufig eingesetzt, um dieses Problem zu lösen.Using message authentication codes, hashes, and digital signing are common techniques to solve this problem.

4.3.1 Datenverschlüsselung4.3.1 Data encryption

Bei der symmetrischen Verschlüsselung weisen Absender und Empfänger denselben Schlüssel und verwenden diesen auch zum Verschlüsseln und Entschlüsseln der Daten.With symmetric encryption, both the sender and recipient have the same key and use it to both encrypt and decrypt the data. Die Herausforderung bei diesem Ansatz besteht normalerweise darin, den Schlüssel sicher weiterzugeben, damit er beiden Parteien bekannt ist.The challenge with this approach is securely sharing the key so both parties are aware of it.

Eine Antwort stellt die asymmetrische Verschlüsselung dar, bei der ein öffentliches/privates Schlüsselpaar verwendet wird.One answer to this is asymmetric encryption, in which a public/private key pair is used. Der öffentliche Schlüssel ist für jeden frei verfügbar, der eine Nachricht verschlüsseln möchte.The public key is shared freely with anyone who wants to encrypt a message. Der private Schlüssel ist stets geheim, damit er ausschließlich von Ihnen zum Entschlüsseln der Daten verwendet werden kann.The private key is always kept secret so that only you can use it to decrypt the data. Ein gängiges Verfahren, den öffentlichen Schlüssel offenzulegen, besteht in der Verwendung digitaler Zertifikate, die häufig nur als „Zertifikate“ bezeichnet werden.A common technique to allow for discovery of the public key is by using digital certificates, also simply referred to as certificates. Das Zertifikat enthält Informationen zum öffentlichen Schlüssel sowie weitere Informationen zum Benutzer oder Server, z. B. Namen, Aussteller, E-Mail-Adresse und Land.The certificate holds information about the public key, in addition to information about the user or server such as the name, issuer, email address and country.

Entwickler von Windows-Apps können mithilfe der Klasse SymmetricKeyAlgorithmProvider und der Klasse AsymmetricKeyAlgorithmProvider die symmetrische und asymmetrische Verschlüsselung in ihre UWP-Apps implementieren.Windows app developers can use the SymmetricKeyAlgorithmProvider and AsymmetricKeyAlgorithmProvider classes to implement symmetric and asymmetric encryption in their UWP apps. Darüber hinaus kann die Klasse CryptographicEngine verwendet werden, um Daten zu verschlüsseln und entschlüsseln, Inhalte zu signieren und digitale Signaturen zu überprüfen.Additionally, the CryptographicEngine class can be used to encrypt and decrypt data, sign content and verify digital signatures. Apps können auch die Klasse DataProtectionProvider im Namespace Windows.Security.Cryptography.DataProtection zum Verschlüsseln und Entschlüsseln lokaler gespeicherter Daten verwenden.Apps can also use the DataProtectionProvider class in the Windows.Security.Cryptography.DataProtection namespace to encrypt and decrypt stored local data.

4.3.2 Erkennen von Nachrichtenmanipulationen (MACs, Hashes und Signaturen)4.3.2 Detecting message tampering (MACs, hashes, and signatures)

Ein MAC ist ein Code (oder Tag). Er resultiert aus der Verwendung eines symmetrischen Schlüssels (dem so genannten geheimen Schlüssel) oder einer Nachricht als Eingabe für einen MAC-Verschlüsselungsalgorithmus.A MAC is a code (or tag) that results from using a symmetric key (called the secret key) or a message as input to a MAC encryption algorithm. Der geheime Schlüssel und Algorithmus werden vom Absender und Empfänger vor der Übertragung der Nachricht vereinbart.The secret key and the algorithm are agreed upon by the sender and receiver before the message transfer.

MACs überprüfen Nachrichten wie folgt.MACs verify messages like this.

  • Der Absender leitet das MAC-Tag ab, indem er den geheimen Schlüssel als Eingabe für den MAC-Algorithmus verwendet.The sender derives the MAC tag by using the secret key as input to the MAC algorithm.
  • Der Absender sendet das MAC-Tag und die Nachricht an den Empfänger.The sender sends the MAC tag and the message to the receiver.
  • Der Empfänger leitet das MAC-Tag ab, indem er den geheimen Schlüssel und die Nachricht als Eingaben für den MAC-Algorithmus verwendet.The receiver derives the MAC tag by using the secret key and the message as inputs to the MAC algorithm.
  • Der Empfänger vergleicht das MAC-Tag mit dem MAC-Tag des Absenders.The receiver compares their MAC tag with the sender's MAC tag. Wenn sie identisch sind, wurde die Nachricht nicht manipuliert.If they are the same then we know that the message has not been tampered with.

Mac-Überprüfung

Windows-Apps können die MAC-Nachrichtenüberprüfung implementieren, indem Sie die Klasse MacAlgorithmProvider aufrufen, um den Schlüssel zu generieren, und die Klasse CryptographicEngine aufrufen, um den MAC-Verschlüsselungsalgorithmus auszuführen.Windows apps can implement MAC message verification by calling the MacAlgorithmProvider class to generate the key and CryptographicEngine class to perform the MAC encryption algorithm.

4.3.3 Verwenden von Hashes4.3.3 Using hashes

Eine Hashfunktion ist ein kryptografischer Algorithmus, der für einen an ihn übergebenen Datenblock beliebiger Länge eine Bitzeichenfolge fester Größe zurückgibt, die als Hashwert bezeichnet wird.A hash function is a cryptographic algorithm that takes an arbitrarily long block of data and returns a fixed-size bit string called a hash value. Für diese Aufgabe steht eine ganze Familie von Hashfunktionen zur Verfügung.There is an entire family of hash functions that can do this.

Im oben veranschaulichten Nachrichtenübertragungsszenario kann ein Hashwert anstelle eines MACs verwendet werden.A hash value can be used in place of a MAC in the message-transfer scenario above. Der Absender sendet einen Hashwert und eine Nachricht, und der Empfänger leitet seinen eigenen Hashwert vom Hashwert und der Nachricht des Absenders ab und vergleicht die beiden Hashwerte.The sender sends a hash value and a message, and the receiver derives their own hash value from the sender's hash value and message and compares the two hash values. Apps unter Windows 10 können die Klasse HashAlgorithmProvider aufrufen, um die verfügbaren Hashalgorithmen aufzulisten und einen davon auszuführen.Apps running on Windows 10 can call the HashAlgorithmProvider class to enumerate the hash algorithms that are available and run one of them. Die Klasse CryptographicHash stellt den Hashwert dar.The CryptographicHash class represents the hash value. Mit der Methode CryptographicHash.GetValueAndReset kann für unterschiedliche Daten mehrmals ein Hashwert generiert werden, ohne dass das Objekt jedes Mal neu erstellt werden muss.The CryptographicHash.GetValueAndReset method can be used to repeatedly hash different data without having to re-create the object for each use. Mit der Append-Methode der Klasse CryptographicHash werden einem Puffer, von dem ein Hash erstellt werden soll, neue Daten hinzugefügt.The Append method of the CryptographicHash class adds new data to a buffer to be hashed. Das gesamte Verfahren wird im folgenden C#-Codebeispiel veranschaulicht.This entire process is shown in the following C# code example.

public void SampleReusableHash()
{
    // Create a string that contains the name of the
    // hashing algorithm to use.
    string strAlgName = HashAlgorithmNames.Sha512;

    // Create a HashAlgorithmProvider object.
    HashAlgorithmProvider objAlgProv = HashAlgorithmProvider.OpenAlgorithm(strAlgName);

    // Create a CryptographicHash object. This object can be reused to continually
    // hash new messages.
    CryptographicHash objHash = objAlgProv.CreateHash();

    // Hash message 1.
    string strMsg1 = "This is message 1";
    IBuffer buffMsg1 = CryptographicBuffer.ConvertStringToBinary(strMsg1, BinaryStringEncoding.Utf16BE);
    objHash.Append(buffMsg1);
    IBuffer buffHash1 = objHash.GetValueAndReset();

    // Hash message 2.
    string strMsg2 = "This is message 2";
    IBuffer buffMsg2 = CryptographicBuffer.ConvertStringToBinary(strMsg2, BinaryStringEncoding.Utf16BE);
    objHash.Append(buffMsg2);
    IBuffer buffHash2 = objHash.GetValueAndReset();

    // Convert the hashes to string values (for display);
    string strHash1 = CryptographicBuffer.EncodeToBase64String(buffHash1);
    string strHash2 = CryptographicBuffer.EncodeToBase64String(buffHash2);
}

4.3.4 Digitale Signaturen4.3.4 Digital signatures

Die Datenintegrität einer digital signierten gespeicherten Nachricht wird auf ähnliche Weise wie bei der MAC-Authentifizierung überprüft.The data integrity of a digitally signed stored message is verified in a similar way to MAC authentication. Hier wird veranschaulicht, wie der Workflow für die digitale Signatur funktioniert.Here is the way the digital signature workflow operates.

  • Der Absender leitet einen Hashwert (auch Digest genannt) ab, indem er die Nachricht als Eingabe für einen Hashalgorithmus verwendet.The sender derives a hash value (also known as a digest) by using the message as the input to a hash algorithm.
  • Der Absender verschlüsselt den Digest mit seinem privaten Schlüssel.The sender encrypts the digest using their private key.
  • Der Absender sendet die Nachricht, den verschlüsselten Digest und den Namen des verwendeten Hashalgorithmus.The sender sends the message, the encrypted digest, and the name of the hash algorithm that was used.
  • Der Empfänger verwendet den öffentlichen Schlüssel, um den empfangenen verschlüsselten Digest zu entschlüsseln.The receiver uses the public key to decrypt the encrypted digest it received. Anschließend verwendet er den Hashalgorithmus, um einen Hash für die Nachricht und einen eigenen Digest zu erstellen.It then uses the hash algorithm to hash the message to create a digest of its own. Zum Schluss vergleicht der Empfänger die beiden Digests (den empfangenen und entschlüsselten und den selbst erstellten).And finally the receiver compares the two digests (the one it received and decrypted, and the one it made). Nur, wenn die beiden übereinstimmen, kann der Empfänger sicher sein, dass die Nachricht vom Besitzer des privaten Schlüssels gesendet wurde und dass dieser tatsächlich der Absender ist, der er vorgibt zu sein, und dass die Nachricht während der Übertragung nicht verändert wurde.Only if the two match can the receiver be sure that the message was sent by the possessor of the private key, and therefore they are who they say they are, and that the message was not altered in transit.

Digitale Signaturen

Da Hashalgorithmen sehr schnell arbeiten, können Hashwerte selbst von umfangreichen Nachrichten schnell abgeleitet werden.Hashing algorithms are very fast, so hash values can be derived quickly from even large messages. Der resultierende Hashwert hat eine beliebige Länge und kann kürzer als die vollständige Nachricht sein. Daher stellt die Verwendung öffentlicher und privater Schlüssel zum ausschließlichen Verschlüsseln und Entschlüsseln des Digests anstatt der vollständigen Nachricht eine Optimierung dar.The resulting hash value is an arbitrary length and can be shorter than the full message, so using public and private keys to encrypt and decrypt only the digest rather than the full message is an optimization.

Weitere Informationen hierzu finden Sie in den Artikeln zu digitalen Signaturen, MACs, Hashes und Signaturen sowie zu Kryptografie.For more information, take a look articles on Digital signatures, MACs, hashes, and signatures, and Cryptography.

5 Zusammenfassung5 Summary

Die Universelle Windows-Plattform in Windows 10 bietet verschiedene Möglichkeiten, um mithilfe von Betriebssystemfunktionen sicherere Apps zu erstellen.The Universal Windows Platform in Windows 10 offers a number of ways to leverage operating system capabilities to create more secure apps. In anderen Authentifizierungsszenarien, z. B. einfache, mehrstufige oder vermittelte Authentifizierung über einen OAuth-Identitätsanbieter, verringern APIs die häufigsten Herausforderungen bei der Authentifizierung.In different authentication scenarios, such as single-factor, multi-factor, or brokered authentication with an OAuth identity provider, APIs exist to mitigate the most common challenges with authentication. Windows Hello bietet ein neues biometrisches Anmeldesystem, das den Benutzer erkennt und alle Versuche, die Identifizierung zu umgehen, aktiv verhindert.Windows Hello provides a new biometric sign-in system that recognizes the user and actively defeats efforts to circumvent proper identification. Außerdem werden mehrere Ebenen von Schlüsseln und Zertifikaten bereitgestellt, die nie außerhalb des vertrauenswürdigen Platt Form Moduls offengelegt oder verwendet werden können.It also delivers multiple layers of keys and certificates that can never be revealed or used outside the trusted platform module. Eine weitere Sicherheitsebene wird außerdem durch die optionale Verwendung von Attestation Identity Keys (AIK) und Zertifikaten bereitgestellt.Plus, a further layer of security is available through the optional use of attestation identity keys and certificates.

Um In-Flight-Daten zu schützen, kommunizieren APIs über SSL sicher mit Remotesystemen und ermöglichen dennoch die Überprüfung der Serverauthentizität mit SSL-Pinning.To secure data in flight, APIs exist to communicate with remote systems securely over SSL, while providing the possibility to validate the server’s authenticity with SSL pinning. Bei der sicheren und kontrollierten Veröffentlichung von APIs unterstützt Sie Azure API -Management durch die Bereitstellung von leistungsstarken Konfigurationsoptionen für das Verfügbarmachen von APIs im Internet über einen Proxyserver, der zusätzliches Verbergen des API-Endpunkts bietet.Publishing APIs securely and in a controlled manner is something in which Azure API Management aids by providing powerful configuration options for exposing APIs across the web using a proxy that provides additional obfuscation of the API endpoint. Der Zugriff auf diese APIs wird mithilfe von API-Schlüsseln gesichert und API-Aufrufe können zum Steuern der Leistung gedrosselt werden.Access to these APIs is secured by using API keys and API calls can be throttled to control performance.

Wenn die Daten auf dem Gerät empfangen werden, bietet das Windows-App-Modell mehr Kontrolle darüber, wie die App installiert und aktualisiert wird und auf Daten zugreift. Zudem verhindert es, dass sie unbefugt auf Daten von anderen Apps zugreift.When the data arrives on the device, the Windows app model provides more control over how the app is installed, updated and accesses it data, while keeping it from accessing data of other apps in an unauthorized manner. Das Schließfach für Anmeldeinformationen ermöglicht die sichere Speicherung von Anmeldeinformationen von Benutzern, die vom Betriebssystem verwaltet werden. Durch Verschlüsselungs- und Hashing-APIs der Universellen Windows-Plattform können auch andere Daten auf dem Gerät geschützt werden.Credential locker can provide secure storage of user credentials that is managed by the operating system and other data can be protected on the device by using the encryption and hashing APIs offered by the Universal Windows Platform.

6 Ressourcen6 Resources

6.1 Anleitungen6.1 How-to articles

6.2 Codebeispiele6.2 Code samples

6.3 API-Referenz6.3 API reference