AEAD 身份验证,具有不适合 RAM 的大量输入

问题描述 投票:0回答:0

假设我在磁盘上有一个文件不适合计算机的主内存。该文件由两部分组成,一小部分位于文件开头,小于 100 字节,另一部分由文件的其余部分组成。

我需要使用 AEAD(ChaCha20-Poly1305 或 AES-GCM)来加密小部分并验证大部分。

据我了解AEAD,原则上应该可以通过将文件逐个小部分加载到RAM中来做到这一点。

我的问题是 Python Cryptography AEAD API 似乎不是为这个用例设计的,或者至少它缺少类似的例子。

这是 ChaCha20-Poly1305 的 API 文档:https://cryptography.io/en/latest/hazmat/primitives/aead/#cryptography.hazmat.primitives.ciphers.aead.ChaCha20Poly1305

文档表明

associated_data
(需要验证但未加密的输入)参数必须是类似字节的对象,在此处定义:https://cryptography.io/en/latest/glossary/#term -bytes-like

他们进一步指向 Python 缓冲协议:https://docs.python.org/3/c-api/buffer.html

解决方案的想法:

  1. 散列大的部分,只验证生成的摘要。我对这样做持谨慎态度,因为我不完全确定安全隐患,尽管看起来没问题。

  2. 构造一个类似字节的类型来表示大的部分,而不是试图一次将它加载到内存中。我对 Python 的经验很少,所以我不确定如何朝这个方向前进。

python python-3.x cryptography pycrypto aes-gcm
© www.soinside.com 2019 - 2024. All rights reserved.