Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Postkvantna kriptografija » WKL.System.Security.Cryptography – pregled » Navodila » Uporaba knjižnice v Blazorju

Uporaba knjižnice v Blazorju

Vaša aplikacija Blazor naj uporablja postkvantne postopke, na strežniku ali v brskalniku.

Pregled rešitve

Blazor Server in Blazor WebAssembly knjižnico uporabljata različno, ker brskalnik ne nalaga izvornih knjižnic:

Blazor ServerBlazor WebAssembly
SklicWKL.System.Security.Cryptography.ExtensionsWKL.System.Security.Cryptography.WASM
OpenSSLlibcrypto 3.5 ali novejši na strežnikuOpenSSL kot modul WebAssembly, ki ga prinese projekt
Vmesnikrazširitvene metode s CryptoMode, kot v vsaki aplikaciji .NETasinhrone metode WasmCryptoProvider: ML-DSA, ML-KEM, izpeljava ključev
Mesto ključevna strežnikuv brskalniku

Razširitvene metode OpenSSL kličejo prek klicev platforme, zato v Blazor WebAssembly ne delujejo. V brskalniku neposredno uporabite WasmCryptoProvider.

Izvedba

Blazor Server

Blazor Server knjižnico uporablja kot vsaka druga aplikacija .NET. Ob zagonu aplikacije nastavite pot do OpenSSL in vklopite način PQ, preden se izvede prva kriptografska operacija:

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();

Nato vsa navodila te dokumentacije veljajo nespremenjena, na primer Prva hibridna veriga potrdil.

Blazor WebAssembly

  1. Dodajte sklic na projekt WebAssembly:

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

    Projekt objavi wkl-crypto.js, openssl.js in openssl.wasm kot statično spletno vsebino pod _content/WKL.System.Security.Cryptography.WASM/.

  2. Most JavaScript naložite v wwwroot/index.html, pred skriptom Blazorja:

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

    Most openssl.js in openssl.wasm naloži sam. Če so datoteke drugje, pred skriptom nastavite window.WKLCryptoConfig = { jsPath: "…", wasmPath: "…" }.

  3. Ponudnika registrirajte in zaženite v 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. Podpisujte in preverjajte v brskalniku, na primer v komponenti, ki prejme ponudnika:

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

    Ključi so v obliki DER: SubjectPublicKeyInfo za javne, PKCS #8 za zasebne ključe. ML-KEM deluje enako z GenerateMlKemKeyPairAsync, EncapsulateAsync in DecapsulateAsync.

Opombe

  • Brez nadaljevanja brez PQ. Če EnablePostQuantumAsync ne uspe, sproži CryptographicException. Aplikacija ne teče neopazno naprej brez postopkov PQ.
  • Pravila veljajo tudi v brskalniku. GenerateMlDsaKeyPairAsync("ML-DSA-44") in GenerateMlKemKeyPairAsync("ML-KEM-512") brez PostQuantumExemptions.ReducedParameterSets sprožita CryptographicException. EncryptStreamWithPqKeyAsync šifrira samo z ML-KEM in potrebuje PostQuantumExemptions.PurePostQuantum. DeriveHybridKeyAsync združuje s postopkom, ki ga BSI TR-02102-1 ne priporoča, in potrebuje PostQuantumExemptions.NonRecommendedCombiners. Glejte Pravila za postkvantne postopke.
  • Ključ ML-DSA sam ni hibridni podpis. SignMlDsaAsync računa samo ML-DSA. Za podpis po priporočilu BSI TR-02102-1 ga v svojem protokolu združite s klasičnim podpisom, na primer z ECDSA prek vmesnika Web Crypto API brskalnika.
  • Zasebnih ključev ne shranjujte v pomnilnik brskalnika. Kar je v localStorage ali sessionStorage, lahko prebere vsak skript na strani.
  • OpenSslPath v brskalniku ne velja. Ponudnik WebAssembly lastnost prezre.

Sorodne teme

sl/wiki/pqcrypt/lib/how-to/use-in-blazor.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille