我有一个16字节的密文,16字节的密钥和16字节的IV。密钥和IV是我自己设置的,我只知道当我解密它时,它将是人类可读的。
我尝试过PyCrypto和OpenSSL方法来解密密文,但没有结果。这使我相信这可能是AES的自定义实现。我的背景不是密码学,所以请原谅我的无知。
有标准的方法来实现AES-128吗?实现您自己版本的AES是否不常见?我很熟悉AES算法,它似乎可以实现您自己的方式,在各个回合中的位。
我还注意到NIST为个别公司提供了AES加密的认证(即。谷歌、思科、惠普、AWS等)。这是因为它是一个自定义实现吗?
发布于 2017-06-30 19:19:21
有标准的方法来实现AES 128吗?
AES有几种实现策略(基于SIMD、普通C、基于表、抗侧信道、位切片、AES-NI、.).“标准”方式取决于您的平台和目标,取决于对诸如“您有硬件支持吗?”、“您想要恒定的时间”、“您想要最大速度”、“您有多少RAM /代码空间?”、“您的模式并行化了吗?”、“您是否需要最大速度?”、“您的模式并行化了吗?”等问题的答案。
实现您自己版本的AES是否不常见?
是的,因为已经有那么多好的开源实现,然而人们仍然时不时地这么做。例如,重新实现AES“只是为了好玩”,有时它们有一组不同的优化目标,比如“最小化代码大小,在C中的任何地方工作,在固定时间内运行”。
我熟悉AES算法,它似乎可以实现您自己的方式,在各个回合中的位。
不是的。如果您的实现不像FIPS 197中描述的那样具有相同的加密和解密功能,则不能将其称为"AES",因为这是您编造的某种自定义方案。
我还注意到NIST为个别公司提供了AES加密的认证(即。(谷歌、思科、惠普、AWS等)这是因为它是一个自定义实现吗?
我所知道的唯一实际的评估和认证程序是由密码模块验证程序运行的,它很好地根据FIPS 140-2验证加密模块。这些验证通常由认证的验证者(由NIST认证)执行。这些模块可能使用AES,但它们通常做得更多,主要方面通常是密钥管理、角色管理和用户身份验证,当然也涉及算法的正确实现,因此,如果您的AES实现是加密模块的一部分,您可以通过这个程序进行验证。
发布于 2017-06-30 19:22:19
没有“自定义AES实现”这样的东西。如果它的任何细节被更改,它就不再是AES。AES是一种标准,它详细地描述了如何使用AES进行加密。
NIST为那些正确和安全地实施AES的人提供认证。您可能已经实现了它,因此它给出了正确的答案,但您这样做可能会导致问题。例如,如果以2*50比3*50更快的方式乘数,攻击者可能会注意到这一点并加以利用。这就是NIST认证的目的。
现在有了不同的“运作模式”。这些模式不是AES的一部分,而是您如何将AES加密块放在一起。请参阅维基百科的网页
https://crypto.stackexchange.com/questions/48759
复制相似问题