Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
SubtleCrypto
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
* Some parts of this feature may have varying levels of support.
Sicherer Kontext: Diese Funktion ist nur insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist inWeb Workers verfügbar.
DieSubtleCrypto-Schnittstelle derWeb Crypto API bietet eine Reihe von niedrigstufigen kryptografischen Funktionen.
Der Schnittstellenname enthält den Begriff „subtil“, um anzuzeigen, dass viele ihrer Algorithmen subtile Verwendungsanforderungen haben und daher sorgfältig verwendet werden müssen, um geeignete Sicherheitsgarantien zu bieten.
Eine Instanz vonSubtleCrypto ist als diesubtle-Eigenschaft derCrypto-Schnittstelle verfügbar, die ihrerseits in Fenstern über dieWindow.crypto-Eigenschaft und in Workern über dieWorkerGlobalScope.crypto-Eigenschaft verfügbar ist.
Warnung:Diese API bietet eine Reihe von niedrigstufigen kryptografischen Primitiven. Es ist sehr einfach, sie falsch zu verwenden, und die damit verbundenen Fallstricke können sehr subtil sein.
Selbst wenn Sie die grundlegenden kryptografischen Funktionen korrekt verwenden, sind sicheres Schlüsselmanagement und das Gesamtdesign von Sicherheitssystemen extrem schwer richtig zu gestalten und liegen in der Regel im Bereich von Spezialisten für Sicherheit.
Fehler im Design und in der Implementierung von Sicherheitssystemen können die Sicherheit des Systems völlig unwirksam machen.
Bitte lernen und experimentieren Sie, aber garantieren oder implizieren Sie nicht die Sicherheit Ihrer Arbeit, bevor eine sachkundige Person in diesem Fachgebiet sie gründlich überprüft hat. DerCrypto 101-Kurs kann ein guter Ausgangspunkt sein, um über das Design und die Implementierung sicherer Systeme zu lernen.
In diesem Artikel
Instanz-Eigenschaften
Diese Schnittstelle erbt keine Eigenschaften, da sie keine übergeordnete Schnittstelle hat.
Instanz-Methoden
Diese Schnittstelle erbt keine Methoden, da sie keine übergeordnete Schnittstelle hat.
SubtleCrypto.encrypt()Gibt ein
Promisezurück, das mit den verschlüsselten Daten erfüllt wird, die dem angegebenen Klartext, Algorithmus und Schlüssel entsprechen.SubtleCrypto.decrypt()Gibt ein
Promisezurück, das mit den Klartextdaten erfüllt wird, die dem verschlüsselten Text, Algorithmus und Schlüssel entsprechen, die als Parameter angegeben sind.SubtleCrypto.sign()Gibt ein
Promisezurück, das mit der Signatur erfüllt wird, die dem Text, Algorithmus und Schlüssel entspricht, die als Parameter angegeben sind.SubtleCrypto.verify()Gibt ein
Promisezurück, das mit einem booleschen Wert erfüllt wird, der angibt, ob die als Parameter angegebene Signatur mit dem Text, Algorithmus und Schlüssel übereinstimmt, die ebenfalls als Parameter angegeben sind.SubtleCrypto.digest()Gibt ein
Promisezurück, das mit einem Digest erfüllt wird, der aus dem angegebenen Algorithmus und Text generiert wurde.SubtleCrypto.generateKey()Gibt ein
Promisezurück, das mit einem neu generiertenCryptoKeyfür symmetrische Algorithmen oder einemCryptoKeyPairerfüllt wird, das zwei neu generierte Schlüssel für asymmetrische Algorithmen enthält, die dem Algorithmus, den Verwendungen und der Extraktionsfähigkeit entsprechen, die als Parameter angegeben wurden.SubtleCrypto.deriveKey()Gibt ein
Promisezurück, das mit einem neu generiertenCryptoKeyerfüllt wird, der aus dem Master-Schlüssel und dem spezifischen Algorithmus abgeleitet wurde, die als Parameter angegeben sind.SubtleCrypto.deriveBits()Gibt ein
Promisezurück, das mit einem neu generierten Puffer von pseudorandomisierten Bits erfüllt wird, die aus dem Master-Schlüssel und dem spezifischen Algorithmus abgeleitet wurden, die als Parameter angegeben sind.SubtleCrypto.importKey()Gibt ein
Promisezurück, das mit einemCryptoKeyerfüllt wird, der dem Format, dem Algorithmus, den rohen Schlüsseldaten, den Verwendungen und der Extraktionsfähigkeit entspricht, die als Parameter angegeben sind.SubtleCrypto.exportKey()Gibt ein
Promisezurück, das mit den rohen Schlüsseldaten erfüllt wird, die den Schlüssel im angeforderten Format enthalten.SubtleCrypto.wrapKey()Gibt ein
Promisezurück, das mit einem umschlossenen symmetrischen Schlüssel erfüllt wird, um ihn in unsicheren Umgebungen zu verwenden (Übertragung und Speicherung). Der umschlossene Schlüssel entspricht dem im gegebenen Parameter angegebenen Format, und das Umschließen wird durch den gegebenen Umschlüssel mit dem angegebenen Algorithmus durchgeführt.SubtleCrypto.unwrapKey()Gibt ein
Promisezurück, das mit einemCryptoKeyerfüllt wird, der dem im Parameter angegebenen umschlossenen Schlüssel entspricht.
Verwendung von SubtleCrypto
Wir können die von dieser API implementierten Funktionen in zwei Gruppen aufteilen: kryptografische Funktionen und Schlüsselmanagement-Funktionen.
Kryptografische Funktionen
Dies sind die Funktionen, die Sie verwenden können, um Sicherheitsmerkmale wie Vertraulichkeit und Authentifizierung in einem System zu implementieren. DieSubtleCrypto-API bietet die folgenden kryptografischen Funktionen:
Schlüsselmanagement-Funktionen
Mit Ausnahme vondigest() verwenden alle kryptografischen Funktionen in der API kryptografische Schlüssel. In derSubtleCrypto-API wird ein kryptografischer Schlüssel durch einCryptoKey-Objekt dargestellt. Um Operationen wie das Signieren und Verschlüsseln durchzuführen, übergeben Sie einCryptoKey-Objekt an diesign() oderencrypt() Funktion.
Erzeugen und Ableiten von Schlüsseln
Die FunktionengenerateKey() undderiveKey() erstellen beide ein neuesCryptoKey-Objekt.
Der Unterschied ist, dassgenerateKey() bei jedem Aufruf einen neuen, unterschiedlichen Schlüsselwert generiert, währendderiveKey() einen Schlüssel aus einem anfänglichen Schlüsselmaterial ableitet. Wenn Sie das gleiche Schlüsselmaterial zwei separaten Aufrufen vonderiveKey() zur Verfügung stellen, erhalten Sie zweiCryptoKey-Objekte, die denselben zugrunde liegenden Wert haben. Dies ist nützlich, wenn Sie beispielsweise einen Verschlüsselungsschlüssel aus einem Passwort ableiten und später denselben Schlüssel aus demselben Passwort ableiten möchten, um die Daten zu entschlüsseln.
Importieren und Exportieren von Schlüsseln
Um Schlüssel außerhalb Ihrer App verfügbar zu machen, müssen Sie den Schlüssel exportieren, was die FunktionexportKey() tut. Sie können eines von mehreren Exportformaten wählen.
Das Gegenteil vonexportKey() istimportKey(). Sie können Schlüssel aus anderen Systemen importieren, und die Unterstützung für Standardformate wiePKCS #8 undJSON Web Key hilft Ihnen dabei. Die FunktionexportKey() exportiert den Schlüssel in einem unverschlüsselten Format.
Wenn der Schlüssel sensitiv ist, sollten SiewrapKey() verwenden, die den Schlüssel exportiert und ihn dann mit einem anderen Schlüssel verschlüsselt; die API nennt dies einen "Key-Wrapping-Schlüssel".
Das Gegenteil vonwrapKey() istunwrapKey(), das den Schlüssel entschlüsselt und dann importiert.
Speichern von Schlüsseln
CryptoKey ist einserialisierbares Objekt, das es ermöglicht, Schlüssel mit den Standard-Web-Speicher-APIs zu speichern und abzurufen.
Die Spezifikation erwartet, dass die meisten Entwickler dieIndexedDB API verwenden, umCryptoKey-Objekte gegen einen klassischen Schlüsselstring-Identifikator zu speichern, der für die Anwendung sinnvoll ist, sowie alle anderen Metadaten, die sie nützlich finden.Dies ermöglicht das Speichern und Abrufen desCryptoKey, ohne das zugrunde liegende Schlüsselmateriel der Anwendung oder der JavaScript-Umgebung auszusetzen.
Unterstützte Algorithmen
Die von der Web Crypto API bereitgestellten kryptografischen Funktionen können durch einen oder mehrere verschiedenekryptografische Algorithmen ausgeführt werden: dasalgorithm-Argument der Funktion gibt an, welcher Algorithmus verwendet werden soll. Einige Algorithmen benötigen zusätzliche Parameter: In diesen Fällen ist dasalgorithm-Argument ein Wörterbuchobjekt, das die zusätzlichen Parameter enthält.
Die folgende Tabelle fasst zusammen, welche Algorithmen für welche kryptografischen Operationen geeignet sind:
Spezifikationen
| Specification |
|---|
| Web Cryptography Level 2> # subtlecrypto-interface> |
Browser-Kompatibilität
Siehe auch
- Web Crypto API
- Nicht-kryptografische Verwendungen von SubtleCrypto
- Websicherheit
- Datenschutz, Berechtigungen und Informationssicherheit
CryptoundCrypto.subtle.- Crypto 101: ein Einführungskurs in die Kryptografie.