SSH的新加密算法

3

我被要求将一种新的算法添加到ssh中,以便数据通过新算法进行加密,您有任何想法如何将新算法添加到ssh中吗?

谢谢。


你为什么想要这样做?新的加密算法非常难以正确实现,无论是在算法本身方面还是在将其作为协议的一部分安全实现方面。当前SSH中的AES256-CTR目前是其中更安全的算法之一。 - Omnifarious
我同意Omnifarious的看法。此外,如果你足够疯狂去做这件事,你将不得不更改服务器软件和每个允许连接的客户端使用的软件。 - Lee Reeves
虽然我知道这样做似乎很傻,但我被要求这样做! 除了打开SSH和SSH客户端,我需要编辑什么吗? 如何操作?你能指导我吗? - amin
如果你正在使用开源SSH客户端和服务器,你可以下载这些程序的源代码并进行修改(如果主项目发生变化,你还可以继续维护它们)。记得让你的客户/雇主为这样一个疯狂的项目支付高额报酬。 - Lee Reeves
李·里维斯,感谢您的评论。看来没有人尝试过修改OpenSSH代码来指导我。我已经下载了代码,似乎我应该独自跳进池子!任何帮助都欢迎。 - amin
1
这样做的唯一理智原因是为了完成作业...这就是你的目的吗? - skaffman
2个回答

3
可以向SSH通信中添加一些新的算法,这在某些时候会被实现(例如后来添加了AES)。但问题在于您需要修改客户端和服务器以使它们都支持此算法,否则这没有任何意义。
我假设您被要求添加一些自定义的算法,无论是自制的还是非标准的。因此,我首先想要提醒您的是,所添加的算法可能很脆弱。您需要进行至少基本的搜索,以获取有关此算法的信息,因为如果它已经被破解,那么您将会做完全无用甚至危险的工作。
至于软件修改本身——这是一个罕见的工作,因此您很可能找不到有这种经验的人。然而,处理各种算法的代码是典型的,添加新算法是微不足道的——您只需添加一个包含算法实现的源文件,然后通过在switch语句中添加一个case来修改一堆地方。

1
实际上,我曾经在一个闭源的OpenSSH分支上工作过。如果给我几周时间,我可能可以恢复足够的代码知识来完成这个任务。 :-) - Omnifarious

3
在我的职业生涯中,我曾经在一个私有的ssh分支上工作过,该分支被销售为闭源商业软件。尽管他们非常愚蠢(私有分支?谁会用非开源加密软件?我认为我们的客户完全是疯了),但他们并没有添加新的加密算法。
不过,这是可以做到的。添加支持它的ssh协议钩子并不难。该协议旨在以这种方式进行扩展。在开始时,客户端和服务器交换他们愿意使用的加密算法列表。
当然,这意味着只有修改后的客户端和修改后的服务器才能相互通信。
真正的困难在于OpenSSL。ssh不使用TLS/SSL,但它确实使用OpenSSL加密库。你必须将新算法添加到该库中,而该库是一个可怕的野兽。
虽然我想你可能可以在不将其添加到OpenSSL中的情况下添加该算法。不过这可能有些棘手,因为我认为openssh可能严重依赖于OpenSSL API的工作方式。而它们的一部分允许您传递表示要使用的算法的常量,然后使用常量来决定算法的加密和解密的标准调用集。
再次强调,如果我记得正确的话,OpenSSL有一个专门用于向其套件添加新算法的API。因此这可能并不那么难。您必须确保在初始化OpenSSL库时发生这种情况。
无论如何,这是一个相当模糊的答案,但也许它会指引你朝着正确的方向前进。你应该让做这个工作的人付出巨额的代价。需要这种水平的知识的愚蠢绝不能便宜。

4
我对所谓的愚蠢持不同意见,原因如下:可能是因为他们正在添加一些国家加密标准。例如,在俄罗斯,他们使用GOST作为唯一被公共领域接受的加密算法(实际上是算法族)。 - Eugene Mayevski 'Callback
1
@Eugene Mayevski 'EldoS Corp' 是的,但这是一个有经验的密码学家的任务。此外,即使考虑像GOST这样的晦涩原语,我个人也不认为使用替代原语有任何好处。 - rook
1
@Rook 国家法规合规可能是一种利益或要求。如果是这种情况,决定该做什么的不是我们或开发人员 - 他们必须这样做。我们不得不将 GOST 添加到我们的 SecureBlackbox 产品中,因为 xUSSR 客户表示,GOST 是唯一允许的算法,因此如果他们想在当地市场上发布产品,不管喜欢与否,都必须拥有它。 - Eugene Mayevski 'Callback
感谢亲爱的朋友们的热心指导,这是一部分学术工作,我对主要项目没有任何概念,但被要求这样做,正如Eugene Mayevski所说,我必须这样做!亲爱的Omnifarious,您的回答对我的方式有很多意义,谢谢。 - amin
1
指向 OpenSSL 的提示为我指明了正确的方向,有关 GOST 的评论也为此铺平了道路。他们在最新的 OpenSSL 版本中添加了 GOST 支持,并提供了许多对这样一个项目有用的评论。谢谢! - amin
@amin - 很好,我很高兴我的笼统指引在正确的方向上有所帮助。 :-) - Omnifarious

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接