我有一个应用程序,它是一个SSHhtml" target="_blank">客户端,支持以下协商的关键算法。
diffie-hellman-group-exchange-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256
我没有更改SSH客户端的选项,所以我正在尝试解决SSH服务器上的问题,它正在使用Twisted。SSH服务器实际上是在Kippo蜜罐中实现的,但潜在的问题是Twisted。
我看到Twisted在这里的第221行中支持diffie-hellman-group-exchange-sha1和diffie-hellman-group1-sha1:https://github.com/Twisted/Twisted/blob/38421d6fcffa1ddb590e51df0e1c6cba6f29d052/Twisted/conch/ssh/transport.py
我在下面的第60行看到diffie-hellman-group-exchange-sha1被禁用:https://github.com/twisted/twisted/blob/38421d6fcffa1ddb590e51df0e1c6cba6f29d052/twisted/conch/ssh/factory.py
diffie-hellman-group-exchange-sha1受到支持,但后来被禁用。我的应用程序的SSH客户端无法协商密钥来建立到正在使用Twisted的SSH服务器的SSH连接。
在禁用它之前,我在代码中看到了这条注释“log.msg(”disabling diffie-hellman-group-exchange because we cannot find moduli file“)”。如果我试图强制Twisted使用diffie-hellman-group-exchange-sha1,我会得到以下错误。
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 84, in callWithLogger
return callWithContext({"system": lp}, func, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 69, in callWithContext
return context.call({ILogContext: newCtx}, func, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
return func(*args,**kw)
--- <exception caught here> ---
File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 586, in _doReadOrWrite
why = selectable.doRead()
File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 199, in doRead
rval = self.protocol.dataReceived(data)
File "/home/sudopwn/kippo-master/kippo/core/ssh.py", line 150, in dataReceived
transport.SSHServerTransport.dataReceived(self, data)
File "/usr/lib/python2.7/dist-packages/twisted/conch/ssh/transport.py", line 438, in dataReceived
self.dispatchMessage(messageNum, packet[1:])
File "/usr/lib/python2.7/dist-packages/twisted/conch/ssh/transport.py", line 453, in dispatchMessage
f(payload)
File "/usr/lib/python2.7/dist-packages/twisted/conch/ssh/transport.py", line 950, in ssh_KEX_DH_GEX_REQUEST
self.g, self.p = self.factory.getDHPrime(ideal)
File "/usr/lib/python2.7/dist-packages/twisted/conch/ssh/factory.py", line 126, in getDHPrime
primesKeys = self.primes.keys()
exceptions.AttributeError: 'NoneType' object has no attribute ‘keys'
是否存在允许启用diffie-hellman-group-exchange-sha1的变通方法或解决方案?
对于DH密钥交换需要模数这一事实,没有“变通方法”。这就是数学的原理。如果您在openssh_compat.py
中查看,您将看到getPrimes
有一个OpenSSH素数格式的解析器,如果您在/path/to/moduli
中有moduli,那么twistd-n conch--data=/path/to
将解析它们。您可以使用ssh-keygen-g
生成这些文件。您需要在honeypotsshfactory
上实现类似的内容,在这里实现:https://github.com/desaster/kippo/blob/master/kippo/core/ssh.py#l53
请记住,生成模数需要一段时间,所以您需要提前完成。
我正在Java的一个个人项目中工作,该项目涉及通过不安全的通道发送敏感数据。我需要知道如何实现Diffie Hellman密钥交换(DHKE)在java使用其库。我知道关于它的所有密码理论,所以不需要深入细节,我只需要一个非常基本的实现,所以我可以让两个程序共享一个密钥。我从java2s.com得到了这个例子,但它并不完整: 我该怎么做呢?有人能帮我完成剩下的代码吗?
在Diffie Hellman密钥交换过程中,如果中间的人能够得到素数“p”和生成器“g”的值。他现在能破译私钥或者生成的共享秘密秘密吗?
我试图用Java实现Diffie-Hellman密钥交换,但我很难理解规范: 根据JWA(RFC 7518),在直接密钥协商模式下,使用曲线P-256、dT和QC完成Diffie-Hellman密钥交换过程,作为本地机制,产生一对由事务ID标识的CEK(每个方向一个)。本规范版本支持的参数值为: alg: ECDH-ES "apv": SDK参考号 epk:QC,JSON Web Key(JWK)
因为这是我正在生成的一个自签名证书,所以我认为我做错了什么。 我首先创建一个根CA证书,并传入私钥来签署我的证书。 方法返回true,我读到的这个值可能返回假阳性。
我正在尝试将DHE_DSS实现到Go的Crypto/TLS包中。不幸的是,我似乎无法使PreMasterSecret(Z)相同,我的基本工作流程是: 提取P、G、YS 使用提供的数字签名进行验证 null 以下是我更改的一个补丁: https://08766345559465695203.googlegroups.com/attach/48587532C74B4348/crypto.patch?p
This conatains the low interaction honeypot. Steps to deploy Import iRules Login into the TMUI, Import the Honeypot iRules: https://www.wenjiangs.com/doc/yC3QNYt1TJhoneypot_http.tcl, https://www.wenji