在我使用的所有教科书中,Diffie-Hellman密钥交换都在“公共密钥密码术”下进行。

据我所知,这是一种用于与对称密码算法交换密钥的方法,因此,它很自然地属于对称密钥密码学领域。

那么DH在对称和公钥算法之间的划分中代表什么位置?

评论

根据我的阅读,diffie hellman对于对称密钥加密非常有用

#1 楼

Diffie-Hellman密钥交换是一种公共密钥技术。不过,它(本身)不是加密算法(或签名算法)。

这里是基本功能:(此处所有计算都在足够大的离散组中进行,其中Diffie-Hellman问题被认为很困难,通常以大素数为模(针对经典DH)或椭圆曲线组(针对ECDH)为模的乘法组。)


各方均选择私钥$ x $或$ y $
各方计算相应的公钥$ g ^ x $或$ g ^ y $。
各方将公钥$ g ^ x $或$ g ^ y $发送给另一方。
每一方都使用接收到的公钥及其自己的私钥来计算新的共享机密$(g ^ y)^ x =(g ^ x)^ y $。

密钥交换的结果是一个共享秘密,通常将其与密钥派生功能(使用双方都知道的其他输入,例如会话ID)一起使用,以得出对称加密方案的一组密钥; MAC密钥,如果我们不使用带有整数的加密方案认证。如果我们正在建立双向通道(例如在TLS / SSL或SSH中),则会为两个通信方向导出不同的密钥。

这可能会引起混淆:这是一种用于协商对称的非对称技术。键。但是对于大多数其他非对称技术(例如签名或加密算法)也是如此:核心处存在一些非对称技术,但是我们使用对称算法来完成大部分工作。例如,对于大多数不对称加密算法,我们通常只加密实际消息的对称密钥,对于大多数签名算法,我们首先对消息进行哈希处理,然后对哈希进行非对称签名。

值$ g ^ y $或$ g ^ x $被称为公用密钥,因为它们可以以纯格式传输,因此任何在连接上侦听的人都知道。
值$ x $和$ y $永远不会离开选择器计算机,因此它们保持私有状态。 $(x,g ^ x)$和$(y,g ^ y)$是此处的私钥-公钥对。顺便说一句,这些密钥与DSA或ElGamal中的密钥类型相同。

一个可以具有长期密钥对(然后公共密钥甚至可能已经在某个地址簿中,从而节省了传输,或使用某些证书进行签名),但通常情况下,这些密钥对是为每个连接动态创建的。

结合Diffie-Hellman密钥交换(与接收者的长期公共密钥)时使用对称加密方案,我们得到了一个不错的公钥加密方案–实际上是最早提出的方案之一。它的工作方式如下:


接收者有一个私钥$ x $和一个对应的公钥$ g ^ x $。
发送者以某种方式安全地获得了公钥$ g ^ x $。
发送者选择一个临时私钥$ y $并计算相应的公钥$ g ^ y $。
发送者计算$(g ^ x)^ y $并从中得出这是一个对称密钥$ K = f((g ^ x)^ y)$。
发送者加密他的消息:$ C = E_K(P)$。
发送者发送$(g ^ y ,C)$发送给接收者。
接收者得到$(g ^ y,C)$。
接收者计算$(g ^ y)^ x $并从中得出$ K = f( (g ^ y)^ x)$。这与以前的$ K $相同。
接收者解密消息:$ P = D_K(C)$。

这是一种非对称加密方案–要加密,发送者需要只知道$ g ^ x $,而解密需要$ x $本身。

评论


$ \ begingroup $
嗯-谢谢。对称密钥K = f((g ^ x)^ y)部分使我认为DF可以在对称密码学领域中讨论(我知道它不是密码)-但是您的解释明确了为什么将其视为公钥。另请参阅Wikipedia文章:Alice和Bob一旦计算出共享机密,便可以将其用作加密密钥(只有他们知道),才能通过同一开放通信通道发送消息。看起来像对称-不?例如,可以将s(g ^(xy))用作AES中的密钥吗?
$ \ endgroup $
– Mr_and_Mrs_D
13年2月10日在18:59

$ \ begingroup $
$ g ^ {xy} $本身对于AES密钥通常格式不正确,因此我们通常在其上应用密钥派生函数(类似于哈希)以获取实际的密钥。这也允许在两个方向上都具有不同的密钥,并且还具有MAC密钥。
$ \ endgroup $
–PaŭloEbermann
13年2月10日在19:12

$ \ begingroup $
谢谢-如果我们应用,我们最终会得到一个对称密钥-不?因此,在这种情况下,DH用于创建和交换对称密钥-或从未像这样使用过?
$ \ endgroup $
– Mr_and_Mrs_D
13年2月10日在19:24

$ \ begingroup $
是的,DH几乎总是用于最终交换对称密钥。在这方面,这就像RSA或ElGamal加密–在这里,您通常不加密您的纯文本,而是将对称密钥(或从中派生密钥的某种东西)发送给合作伙伴。
$ \ endgroup $
–PaŭloEbermann
13年2月10日在19:27

$ \ begingroup $
好-这就是困惑所在-DH通常在公钥密码学领域中讨论,而在对称密钥密码学领域中使用。 h
$ \ endgroup $
– Mr_and_Mrs_D
13年2月10日在19:34



#2 楼

我想用一个例子来说明这一点,为什么它位于公钥密码域中。 g,n,PKalice = Alice的公钥,而PKbob = Bob的公钥)很大,可以说素数为2Kb或4Kb。

让Alice和Bob(彼此都不知道)其他)想交流。他们俩都生成了自己的私钥(让我们说“ a”和“ b”)。同样,他们都计算了公钥(让PKalice = g ^ a mod n,而PKbob = g ^ b mod n)。

值g,n和公钥(PKalice和PKbob)是众所周知的,可以存储在中央存储库中。现在,只要两个用户想要进行通信,他们就可以获取公共已知的和商定的值,并可以生成会话密钥(对称密钥)并将该密钥用于安全通信。

对于Alice,计算会话密钥的函数是(PKbob ^ a mod n),对于Bob(PKalice ^ b mod n),尽管Alice和Bob没有这样做,但它们的值相同彼此都不知道私钥或值。