Farbschema: Hell
Sie befinden sich hier: start » de » Dokumentation » Post-Quanten-Kryptografie » WKL.System.Security.Cryptography – Überblick » Anleitungen » So verwenden Sie die Bibliothek in Blazor

So verwenden Sie die Bibliothek in Blazor

Ihre Blazor-Anwendung soll Post-Quanten-Verfahren nutzen, auf dem Server oder im Browser.

Lösungsübersicht

Blazor Server und Blazor WebAssembly verwenden die Bibliothek unterschiedlich, weil ein Browser keine nativen Bibliotheken lädt:

Blazor ServerBlazor WebAssembly
VerweisWKL.System.Security.Cryptography.ExtensionsWKL.System.Security.Cryptography.WASM
OpenSSLlibcrypto ab 3.5 auf dem ServerOpenSSL als WebAssembly-Modul, das das Projekt mitbringt
Schnittstelledie Erweiterungsmethoden mit CryptoMode, wie in jeder .NET-Anwendungdie asynchronen Methoden von WasmCryptoProvider: ML-DSA, ML-KEM, Schlüsselableitung
Ort der Schlüsselauf dem Serverim Browser

Die Erweiterungsmethoden rufen OpenSSL über Plattformaufrufe auf und laufen deshalb nicht in Blazor WebAssembly. Im Browser verwenden Sie WasmCryptoProvider direkt.

Umsetzung

Blazor Server

Blazor Server verwendet die Bibliothek wie jede andere .NET-Anwendung. Setzen Sie beim Start der Anwendung den Pfad zu OpenSSL und schalten Sie den PQ-Betrieb ein, bevor die erste kryptografische Operation läuft:

using WKL.System.Security.Cryptography;
 
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorComponents().AddInteractiveServerComponents();
var app = builder.Build();
 
PostQuantumConfig.OpenSslPath = builder.Configuration["OpenSsl:Directory"];
PostQuantumConfig.EnablePostQuantum(CryptoMode.Hybrid);
 
app.Run();

Danach gelten alle Anleitungen dieser Dokumentation unverändert, etwa Die erste hybride Zertifikatskette.

Blazor WebAssembly

  1. Verweisen Sie auf das WebAssembly-Projekt:

    <ItemGroup>
      <ProjectReference Include="..\sys-sec-crypto\WKL.System.Security.Cryptography.WASM\WKL.System.Security.Cryptography.WASM.csproj" />
    </ItemGroup>

    Das Projekt veröffentlicht wkl-crypto.js, openssl.js und openssl.wasm als statische Webinhalte unter _content/WKL.System.Security.Cryptography.WASM/.

  2. Laden Sie die JavaScript-Brücke in wwwroot/index.html, vor dem Skript von Blazor:

    <script src="_content/WKL.System.Security.Cryptography.WASM/wkl-crypto.js"></script>

    Die Brücke lädt openssl.js und openssl.wasm selbst. Liegen die Dateien woanders, setzen Sie vor dem Skript window.WKLCryptoConfig = { jsPath: "…", wasmPath: "…" }.

  3. Registrieren und starten Sie den Anbieter in Program.cs:

    using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.JSInterop;
    using WKL.System.Security.Cryptography;
    using WKL.System.Security.Cryptography.WASM;
     
    var builder = WebAssemblyHostBuilder.CreateDefault(args);
    builder.RootComponents.Add<App>("#app");
    var host = builder.Build();
     
    var provider = new WasmCryptoProvider(host.Services.GetRequiredService<IJSRuntime>());
    CryptoProviderFactory.SetProvider(provider);
    await PostQuantumConfig.EnablePostQuantumAsync(CryptoMode.Hybrid);
     
    await host.RunAsync();
  4. Signieren und prüfen Sie im Browser, etwa in einer Komponente, die den Anbieter erhält:

    var (publicKey, privateKey) = await provider.GenerateMlDsaKeyPairAsync("ML-DSA-65");
    byte[] data = "Bestellung 2026-0815"u8.ToArray();
     
    byte[] signature = await provider.SignMlDsaAsync(data, privateKey);
    bool valid = await provider.VerifyMlDsaAsync(data, signature, publicKey);

    Schlüssel liegen als DER vor: SubjectPublicKeyInfo für öffentliche, PKCS#8 für private Schlüssel. ML-KEM funktioniert ebenso mit GenerateMlKemKeyPairAsync, EncapsulateAsync und DecapsulateAsync.

Hinweise

  • Kein Weiterlaufen ohne PQ. Scheitert EnablePostQuantumAsync, wirft es eine CryptographicException. Die Anwendung läuft nicht unbemerkt ohne PQ-Verfahren weiter.
  • Die Richtlinie gilt auch im Browser. GenerateMlDsaKeyPairAsync("ML-DSA-44") und GenerateMlKemKeyPairAsync("ML-KEM-512") werfen ohne PostQuantumExemptions.ReducedParameterSets eine CryptographicException. EncryptStreamWithPqKeyAsync verschlüsselt mit ML-KEM allein und braucht PostQuantumExemptions.PurePostQuantum. DeriveHybridKeyAsync kombiniert mit einem Verfahren, das BSI TR-02102-1 nicht empfiehlt, und braucht PostQuantumExemptions.NonRecommendedCombiners. Siehe Richtlinie für Post-Quanten-Verfahren.
  • Ein ML-DSA-Schlüssel allein ist keine hybride Signatur. SignMlDsaAsync rechnet nur ML-DSA. Für eine Signatur nach der Empfehlung von BSI TR-02102-1 kombinieren Sie sie in Ihrem Protokoll mit einer klassischen Signatur, etwa mit ECDSA über die Web Crypto API des Browsers.
  • Private Schlüssel nicht im Browserspeicher ablegen. Was in localStorage oder sessionStorage liegt, kann jedes Skript der Seite lesen.
  • OpenSslPath gilt im Browser nicht. Der WebAssembly-Anbieter übergeht die Eigenschaft.

Verwandte Themen

de/wiki/pqcrypt/lib/how-to/use-in-blazor.txt · Zuletzt geändert: von Wolfgang van der Stille