Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web-APIs
  3. SubtleCrypto

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

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.

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 einPromise zurück, das mit den verschlüsselten Daten erfüllt wird, die dem angegebenen Klartext, Algorithmus und Schlüssel entsprechen.

SubtleCrypto.decrypt()

Gibt einPromise zurü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 einPromise zurück, das mit der Signatur erfüllt wird, die dem Text, Algorithmus und Schlüssel entspricht, die als Parameter angegeben sind.

SubtleCrypto.verify()

Gibt einPromise zurü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 einPromise zurück, das mit einem Digest erfüllt wird, der aus dem angegebenen Algorithmus und Text generiert wurde.

SubtleCrypto.generateKey()

Gibt einPromise zurück, das mit einem neu generiertenCryptoKey für symmetrische Algorithmen oder einemCryptoKeyPair erfü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 einPromise zurück, das mit einem neu generiertenCryptoKey erfüllt wird, der aus dem Master-Schlüssel und dem spezifischen Algorithmus abgeleitet wurde, die als Parameter angegeben sind.

SubtleCrypto.deriveBits()

Gibt einPromise zurü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 einPromise zurück, das mit einemCryptoKey erfü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 einPromise zurück, das mit den rohen Schlüsseldaten erfüllt wird, die den Schlüssel im angeforderten Format enthalten.

SubtleCrypto.wrapKey()

Gibt einPromise zurü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 einPromise zurück, das mit einemCryptoKey erfü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:

  • sign() undverify(): Erstellen und Überprüfen digitaler Signaturen.
  • encrypt() unddecrypt(): Verschlüsseln und Entschlüsseln von Daten.
  • digest(): Erstellen eines festgelegten, kollisionsresistenten Digests von Daten.

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:

sign
verify
encrypt
decrypt
digestderiveBits
deriveKey
wrapKey
unwrapKey
generateKey
exportKey
importKey
RSASSA-PKCS1-v1_5
RSA-PSS
ECDSA
Ed25519
HMAC
RSA-OAEP
AES-CTR
AES-CBC
AES-GCM
AES-KW
SHA-1
SHA-256
SHA-384
SHA-512
ECDH
X25519
HKDF
PBKDF2

Spezifikationen

Specification
Web Cryptography Level 2
# subtlecrypto-interface

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp