我在很多网站上都读过同样的东西:RSA用于使用服务器和客户端的公共和私有密钥进行通信,而Diffie-Hellman只是用于交换相同的秘密密钥,然后可用于加密和解密,但它们都依赖于相同的MATHS,例如:quora 上的问题。当我还读到RSA也共享主密钥和预主密钥时,我感到困惑。 : SO,这里的问题是,RSA是使用公钥和私钥来加密整个会话,还是仅用于加密密钥,然后加密取决于该对称密钥?如果它是用来加密密钥的,并且它与Diffie-Hellman是相同的MATH,那么到底有什么区别?

评论

在TLS中,RSA或DHE或ECDHE或其他几种较罕见的方法仅用于生成Premaster Secret aka PMS。 PMS用于使用对称算法派生“主密钥”和多个对称密钥(“那些”而不是“ that”)。 TLS以外的应用程序使用RSA和/或[EC] DH和/或其他算法的方式有所不同。有关数学上的区别,请参见crypto.stackexchange.com/questions/797/…。

#1 楼

实际上,在诸如TLS的情况下,作为混合密码系统的一部分,将使用公钥加密来加密用于加密实际消息的机密。这样做是因为非对称加密比对称加密慢得多。

但是,还有其他密码系统和应用程序直接利用公共密钥加密。例如,勒索软件与加密某物所需的时间无关,它从不拥有解密密钥中受益匪浅。

还有一些直接使用公钥加密的加密日志记录方案:


由于审计日志的法证价值,提供
破坏日志系统中的弹性

仅附加
属性,以防止活动的攻击者。不幸的是,现有的对称安全日志记录方案不是可公开验证的,并且不能解决需要进行公共审核的应用程序...


因此,是否将公共密钥加密用于密钥交换或关于数据本身,实际上与使用工具的位置有关。

RSA和Diffie-Hellman基于不同但相似的数学问题。尽管它们都利用了模幂运算,但是它们的工作/工作原理却有所不同。当您查看如何攻击每个密钥时,这是显而易见的:RSA受整数分解威胁,而DH受离散对数威胁。

另外:DH是一种“密钥交换”算法,不同然后进行“公钥加密”;它使您和另一个人可以相互获取同一条信息,而其他人则不能。它或多或少等同于对随机消息使用公共密钥加密。这与公共密钥加密相反,在公共密钥加密中,您可以选择双方都将知道的消息。

请注意,Diffie-Hellman可以转变为公钥加密。

tl; dr

都使用模块化幂运算来提供主要功能(RSA的加密/签名生成,密钥DH协议),但是潜在的问题,密钥对的生成和输入/输出的安全属性是不同的

评论


$ \ begingroup $
那么,您是说不同之处在于它们使用不同的数学函数吗?
$ \ endgroup $
–user3407319
16年9月9日18:00

$ \ begingroup $
两者都使用模块化幂运算来提供主要功能(RSA的加密/签名生成,DH的密钥协议),但是潜在的问题,密钥生成和输入/输出的安全性有所不同。
$ \ endgroup $
–马腾·博德威斯♦
16 Dec 9'在18:07

$ \ begingroup $
@ user3407319我的回答是,RSA是用于密钥交换还是用于数据直接取决于用例。对于TLS,如果使用RSA,则它是密钥交换的一部分,而不是大量数据。 DH和RSA使用的数学方程式不同。它们都碰巧使用了模幂,但是创建/使用RSA密钥对与创建/使用DH密钥对是一个不同的过程。有关更多信息,您将需要查看实际的算法-应该清楚,即使您不了解数学,步骤也有所不同。
$ \ endgroup $
–艾拉·罗斯(Ella Rose)
2016年12月9日在22:27

$ \ begingroup $
基本上,它们是完成同一件事的两种不同方式。打个比方,三明治和卷饼之间有什么区别?两者都在中间存放食物,以便您可以食用,但是您不会将墨西哥卷饼称为三明治,也不会声称食谱相同。
$ \ endgroup $
–艾拉·罗斯(Ella Rose)
16 Dec 9'在22:33

$ \ begingroup $
只是一个小小的更正:勒索软件通常非常担心加密某物需要花费多长时间-整个勒索策略取决于在勒索软件停止之前要加密的数据很多。如果仅设法加密少量数据,那么更多的人会更倾向于只删除勒索软件而忽略数据丢失(除非有机会恰好这小部分加密数据恰好是最关键的)
$ \ endgroup $
– Matija Nalis
17年5月12日在9:33

#2 楼

Diffie-Hellman密钥交换

问题:我们有一个对称加密方案,希望进行通信。我们不希望其他人拥有钥匙,因此我们不能大声地说出来(或通过电线)。

解决方案/机制:


我们每个人都会挑选一个通常很大的数字,并且即使彼此之间也要保密。我会选择$ x $,而您会选择$ y $。
我们都同意另外两个数字,都是素数,任何人都可以知道。我们将它们分别称为$ g $和$ n $。
我将计算$ g ^ x \ bmod n $并告诉您我的答案。您将计算$ g ^ y \ bmod n $并告诉我您的答案。
我们的共享密钥为$ g ^ {xy} \ bmod n =(g ^ y \ bmod n)^ x \ bmod n = (g ^ x \ bmod n)^ y \ bmod n $。

RSA非对称加密

问题:我希望任何人都能够加密消息,但是我m是唯一可以解密它的人。我不想与任何人共享解密密钥。

解决方案/机制:


我选择两个大质数,$ p $和$ q $。
我计算$ n $使得$ pq = n $。
我计算$ t $使得$(p-1)(q-1)= t $。
我选择一个都小于$ t $且与$ t $互质的整数$ e $。
我发现$ d $使得$ d $是$ e $模$ t $的乘法逆。
我释放$(e,n)$作为我的公钥,并保留$(d,n)$作为我的私钥。
当您与我通信时,您将消息视为$ m $。密文$ c $由$ c = m ^ e \ bmod n $给出,并由$ m = c ^ d \ bmod n $解密。


评论


$ \ begingroup $
@Wazoople“当您与我交流时,您会将消息视为大m”。这不是真的。您无法发送纯文本消息。相反,以下是正确的:“当您与我通信时,您将消息视为一个很大的数字c,我可以使用我的私钥对其进行解密以生成m。”
$ \ endgroup $
–user47158
18年3月4日在23:30

$ \ begingroup $
@ Nik-Lz我正在使用m表示我打算交流的明文。如果爱丽丝想将消息发送给鲍勃,则将其带入消息m,使用鲍勃的公钥计算密文,然后发送密文,然后他可以使用私钥对密文进行解密。
$ \ endgroup $
–洗礼堂
18 Mar 30 '18 at 17:55

$ \ begingroup $
在Diffie-Hellman中,$ x $和$ y $不必是素数。任何随机数就足够了,因为求解离散对数对素数指数来说不会更困难。
$ \ endgroup $
–卡尔马留斯
18年5月4日在20:48



$ \ begingroup $
噢,老兄,你是绝对正确的。 $ g $和$ n $必须是素数,而不是$ x $和$ y $。好收获+1
$ \ endgroup $
–洗礼堂
18年5月10日在22:05

$ \ begingroup $
多么简洁明了的解释!
$ \ endgroup $
–neevek
18年7月28日在12:21