aws / aws/aws-encryption-sdk-java

CryptoOutputStream outputs invalid message when used to encrypt empty plaintext

Offen
#218 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Java
Sterne
240
Forks
125
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

In order to perform the "encrypt a zero length plaintext" using a CryptoOutputStream, the correct setup would be to create the CryptoOutputStream, don't write any bytes to it, then immediately call `close()`.

This results in the CryptoOutputStream only writing bytes for an empty final frame (and possibly a footer). It does not write any header bytes, resulting in an invalid message that cannot be parsed by any AWS Encryption SDK implementation.

This should be fixed such that this use case will correctly write header bytes before the message body and footer, resulting in a message that can be successfully decrypted into the plaintext "".

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit CryptoOutputStream und reproduziere den Fall, der close() aufruft, ohne Klartext zu schreiben. Verfolge, wie der leere abschließende Frame ausgegeben wird, und überprüfe, dass die resultierende Nachricht von einer Implementierung des AWS Encryption SDK geparst und zum leeren Klartext entschlüsselt werden kann.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
cryptography, security
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.