Compatibilità del SDK di crittografia AWS per JavaScript - AWS Encryption SDK

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Compatibilità del SDK di crittografia AWS per JavaScript

SDK di crittografia AWS per JavaScript è progettato per essere interoperabile con altre implementazioni di linguaggio di AWS Encryption SDK. Nella maggior parte dei casi, è possibile crittografare i dati con SDK di crittografia AWS per JavaScript e decrittarli con qualsiasi altra implementazione di linguaggio, inclusa l'interfaccia a riga di comando AWS Encryption SDK. È inoltre possibile utilizzare SDK di crittografia AWS per JavaScript per decrittare i messaggi crittografati prodotti da altre implementazioni linguistiche di AWS Encryption SDK.

Tuttavia, quando si utilizza SDK di crittografia AWS per JavaScript, è necessario essere consapevoli di alcuni problemi di compatibilità nell'implementazione del linguaggio JavaScript e nei browser Web.

Inoltre, quando si utilizzano implementazioni linguistiche diverse, assicurarsi di configurare provider di chiavi master compatibili, le chiavi master e i keyring compatibili. Per dettagli, consultare Compatibilità dei keyring.

Compatibilità SDK di crittografia AWS per JavaScript

L'implementazione JavaScript di AWS Encryption SDK differisce da altre implementazioni di linguaggio nei seguenti modi:

  • L'operazione di crittografia di SDK di crittografia AWS per JavaScript non restituisce testo cifrato non framed. Tuttavia, SDK di crittografia AWS per JavaScript decritterà il testo cifrato framed e non framed restituito da altre implementazioni del linguaggio di AWS Encryption SDK.

  • A partire da Node.js versione 12.9.0, Node.js supporta le seguenti opzioni di wrapping chiave RSA:

    • OAEP con SHA1, SHA256, SHA384 o SHA512

    • OAEP con SHA1 e MGF1 con SHA1

    • PKCS1v15

  • Prima della versione 12.9.0, Node.js supporta solo le seguenti opzioni di wrapping della chiave RSA:

    • OAEP con SHA1 e MGF1 con SHA1

    • PKCS1v15

Compatibilità browser

Alcuni browser Web non supportano le operazioni di crittografia di base richieste da SDK di crittografia AWS per JavaScript. È possibile compensare alcune delle operazioni mancanti configurando un fallback perWebCryptoAPI implementata dal browser.

Limitazioni del browser Web

Le seguenti limitazioni sono comuni a tutti i browser Web:

  • LaWebCryptoL'API non supporta il wrapping delle chiavi PKCS1v15.

  • I browser non supportano chiavi a 192 bit.

Operazioni crittografiche richieste

SDK di crittografia AWS per JavaScript richiede le seguenti operazioni nei browser Web. Se un browser non supporta queste operazioni, non è compatibile con SDK di crittografia AWS per JavaScript.

  • Il browser deve includere crypto.getRandomValues(), che è un metodo per generare valori crittograficamente casuali. Per informazioni sulle versioni del browser Web che supportanocrypto.getRandomValues(), consultaPosso utilizzare la crittografia.getRandomValues()?.

Fallback richiesto

SDK di crittografia AWS per JavaScript richiede le seguenti librerie e operazioni nei browser Web. Se si supporta un browser Web che non soddisfa questi requisiti, è necessario configurare un fallback. Altrimenti, i tentativi di utilizzare il SDK di crittografia AWS per JavaScript con il browser falliranno.

  • LaWebCryptoL'API, che esegue operazioni di crittografia di base nelle applicazioni Web, non è disponibile per tutti i browser. Per informazioni sulle versioni del browser Web che supportano la crittografia Web, consulta Posso utilizzare la crittografia Web?.

  • Le versioni moderne del browser Web Safari non supportano la crittografia AES-GCM di zero byte, che AWS Encryption SDK richiede. Se il browser implementa ilWebCryptoAPI, ma non può utilizzare AES-GCM per crittografare zero byte,SDK di crittografia AWS per JavaScriptutilizza la libreria di fallback solo per la crittografia a byte zero. Utilizza ilWebCryptoAPI per tutte le altre operazioni.

Per configurare un fallback per entrambe le limitazioni, aggiungere le istruzioni seguenti al codice. Nella funzione configureFallback specificare una libreria che supporti le funzionalità mancanti. Nell'esempio seguente viene utilizzata la ricerca Microsoft.JavaScriptLibreria di crittografia (msrcrypto), ma è possibile sostituirla con una libreria compatibile. Per un esempio completo, consulta fallback.ts.

import { configureFallback } from '@aws-crypto/client-browser' configureFallback(msrCrypto)