提交 70de68c4 编写于 作者: T Tomas Mraz 提交者: code4lala

Do not ignore empty associated data with AES-SIV mode

The AES-SIV mode allows for multiple associated data items
authenticated separately with any of these being 0 length.

The provided implementation ignores such empty associated data
which is incorrect in regards to the RFC 5297 and is also
a security issue because such empty associated data then become
unauthenticated if an application expects to authenticate them.

Fixes CVE-2023-2975
Reviewed-by: NMatt Caswell <matt@openssl.org>
Reviewed-by: NPaul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21384)

(cherry picked from commit c426c281cfc23ab182f7d7d7a35229e7db1494d9)
Signed-off-by: Ncode4lala <fengziteng2@huawei.com>
上级 4652121a
...@@ -120,14 +120,18 @@ static int siv_cipher(void *vctx, unsigned char *out, size_t *outl, ...@@ -120,14 +120,18 @@ static int siv_cipher(void *vctx, unsigned char *out, size_t *outl,
if (!ossl_prov_is_running()) if (!ossl_prov_is_running())
return 0; return 0;
if (inl == 0) { /* Ignore just empty encryption/decryption call and not AAD. */
*outl = 0; if (out != NULL) {
return 1; if (inl == 0) {
} if (outl != NULL)
*outl = 0;
return 1;
}
if (outsize < inl) { if (outsize < inl) {
ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL); ERR_raise(ERR_LIB_PROV, PROV_R_OUTPUT_BUFFER_TOO_SMALL);
return 0; return 0;
}
} }
if (ctx->hw->cipher(ctx, out, in, inl) <= 0) if (ctx->hw->cipher(ctx, out, in, inl) <= 0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册