KMS + JWT è confuso e facilmente abusato. Questa domanda riguarda la pragmatica, quindi le risposte sommarie di seguito, sono felici di espanderle ma i dettagli sono intricati.
1) Is signing barely encryption of the hash of the content?
Non lo è.
2) In JWT case, if I hash the content of JWT and encrypt it and
put it in signature field, will it be correct signing?
Non lo farà.
Se stai utilizzando i JWT per i token di autorizzazione, ecco la versione breve di ciò che vorresti fare:
- Utilizza KMS per generare una chiave dati a 256 bit, sia in forma crittografata che in testo semplice: link
- Salva il modulo crittografato della chiave dati, insieme all'ID-chiave CMK con cui è stato coniato, nel tuo database o con la configurazione dell'applicazione
- Utilizza la chiave dati in chiaro a 256 bit come "segreto" con la libreria JWT preferita della tua piattaforma linguistica per firmare e convalidare i JWT.
- Quando la tua applicazione si riavvia, prendi il Data Key crittografato dal database, chiama KMS Decrypt su di esso per ottenere la versione in chiaro del Data Key e usa come sopra per la firma e la validazione di JWT
Spero che ti aiuti.