我已经实现了RSA加密算法来加密数据加密中使用的对称密钥,但是RSA的密钥大小和密文大小造成了内存问题,因此我搜索了其他公共密钥加密方法来寻找解决方案。我找到了椭圆曲线集成加密方案(ECIES)并了解了其背后的理论,但是,我不清楚该方法如何用作公共/非对称加密算法。该方法使用从共享机密导出的密钥(使用同一密钥)计算对称加密。
那么如何将其视为非对称加密算法呢? 还是有什么方法可以将其实现为非对称加密?
答案 0 :(得分:2)
元:这实际上不是编程或开发问题。它可能属于crypto.SX。您可能会要求迁移。
确切地说,ECIES是一种 hybrid 公用密钥加密方案,但其他大多数方案也是如此。例如,正如您所说,RSA通常用于加密一个有效的(按消息)对称密钥,而不是直接加密数据。
Paraphrasing the wikipedia description:
2-5。爱丽丝生成一个临时密钥对,导出共享的DEK,加密数据,并使用其临时公共密钥发送数据 (编辑)并销毁临时私钥
添加,并在下面扩展为每个注释:是的,DEK在两端都是相同的(注意,我用“ the”表示一个而不是多个),这就是该方案起作用的原因;和使用DEK进行数据加密和解密的ECIES的 part 是对称的,但是所有其他操作(安全地创建临时共享DEK)则不是对称的。
除了爱丽丝(或鲍勃)之外,没人能学会她的临时私钥是至关重要的;如果他们这样做,他们可以解密。但是她并不需要明确地保密它,因为她在使用它发送消息后立即对其进行了销毁。这就是短暂的意思。
让我们看看:
收件人的公钥是公开的,任何人都可以加密
收件人具有(静态)私钥,可以解密
没有人拥有Bob的(静态)私钥或 Alice的临时私钥,没有其他人可以解密
收件人仅需要一个密钥对;如果有多个发件人,它们都可以使用同一个公钥,但不能解密彼此的流量,也不需要秘密获取公钥;对于一千或一百万个发件人而言,其成本与一个发件人相同或略多
请改用标准/传统对称方案的属性:
双方必须事先拥有一个密钥(只有一个,而不是一对);两者都必须保密,不能与其他人共享
这通常要求双方提前开会,或使用诸如快递员之类的物理安全方式将密钥从一个人携带到另一个人,或者从中央机构携带到这两个人
每个密钥只能由一对参与者使用;对于多个发件人,Bob必须拥有并管理许多不同的密钥,并且每个发件人(Alice,Abby,Anne等)必须具有不同的密钥。每个发件人必须分别与Bob见面,或者他们每个人必须有一个(或两个)单独的快递员,在与他们通信之前。对于成千上万的发件人来说,这变得非常昂贵
ECIES没有常规或对称系统的这些属性的没有,以及上面的公钥或非对称系统的 all 的所有属性,尽管它也使用了一些对称操作及其非对称操作。
这就是为什么在我看来听起来像(混合)公共密钥加密!
答案 1 :(得分:0)