我正在开发一个REST客户端(来自),在这里我获得了一个公共RSA 2048位密钥,我需要加密事务信息。由于该单个块不能用公钥加密(而且AFAIK不应该加密),所以我们需要使用AES 128位加密它。因此,我们生成一个随机密钥(使用KeyGenerator类),对信息进行加密,并将加密后的加密密钥发送给他们的公钥。AES正处于欧洲央行模式,因为他们的需求我知道这是不安全的。
因此,问题是:这种方法有哪些缺陷(除了欧洲央行)?
我的想法是实现一种ECIES (但没有椭圆曲线),其中使用了一个密钥派生函数(当然,我是一个菜鸟,不知道如何实现它),并使用了一种经过身份验证的加密方法,比如AES-GCM。
为了扩展这个问题,我会喜欢一些上下文,因为我认为我有很少的信息,需要“完全连接”。
发布于 2019-04-17 17:29:18
因此,为了回答实际问题,并在@eckes的帮助下:
ECIES是一个很好的选择,在C#中实现它的一个好库是Inferno:https://securitydriven.net/inferno。
在Java (以及C#)中,有BouncyCastle,“Inferno”一书的作者一直认为这是“一个巨大的(145 K LOC),性能不佳的博物馆密码目录(有些是古老的),旧的.NET实现移植到了同样老的.NET (2.0?)”。这是相关的,因为它的已知密码算法可能是安全的在其定义,糟糕的实现导致不安全的系统。
https://crypto.stackexchange.com/questions/68799
复制相似问题