2010-10-03 84 views
3

我被要求增加一个新的算法,通过ssh这样的数据在新算法加密的,任何想法如何添加新的算法到ssh?新的加密算法,SSH

感谢

+0

你为什么要这样做?新的加密算法非常难以正确使用,无论是裸算法本身,还是安全地将其作为协议的一部分实施。目前ssh中的AES256-CTR是目前比较安全的算法之一。 – Omnifarious 2010-10-03 05:52:29

+0

我同意Omnifarious。另外,如果您足够疯狂,那么您必须更改服务器软件以及允许连接的每个客户端使用的软件。 – 2010-10-03 05:58:16

+0

虽然我知道这似乎很愚蠢,但我被要求这么做! 我是否需要编辑一些比打开ssh和ssh-client更多的东西? 怎么办?你能指导我吗? – amin 2010-10-03 07:05:41

回答

3

是可能的一些新的算法加入到SSH通信,这是从时间做的时候(例如AES,后来加入)。但问题是,你需要修改客户端和服务器,以便他们都支持这种算法,否则它是没有意义的。

我假定您被要求添加一些自定义的,自制的或非标准的算法。所以我想要做的第一件事就是警告你,添加的算法可能很弱。您至少需要执行基本搜索有关此算法的信息,就好像它已经损坏一样,您将完成无用甚至危险的工作。

至于软件修改本身 - 这是一个罕见的工作,很可能你不会在这里找到任何有这种经验的人。但是,处理各种算法的代码是典型的,添加新算法很简单 - 您可以添加一个带有算法实现的源文件,然后通过向switch语句添加一个更多的案例来修改一堆地方。

+0

其实,我已经在openssh的一个关闭源代码上工作了。给了几个星期,我可以获得足够的代码知识来做到这一点。:-) – Omnifarious 2010-10-03 13:27:22

3

在我的职业生涯,我对销售作为闭源的商业软件SSH的私人叉工作。即使他们处于疯狂的愚蠢行为(私人分支,他们正确的思想使用非开源加密软件,我认为我们的客户完全不在他们的摇滚乐队中),并没有增加新的加密算法。

虽然可以做到。将挂钩添加到ssh协议来支持它并不难。该协议旨在以这种方式进行扩展。在开始时,客户端和服务器交换他们愿意使用的加密算法列表。

这意味着,当然,只有经过修改的客户端和修改后的服务器才能与对方通话。

真正的困难是OpenSSL。 ssh不使用TLS/SSL,但它使用OpenSSL加密库。你必须将新算法添加到该库中,该库是一个可怕的野兽。

虽然,我想你可以添加算法不将其加入OpenSSL的。这可能会非常棘手,尽管我认为openssh可能会严重依赖OpenSSL API的工作方式。并且它们的工作方式的一部分允许你传递一个常量来表示你想要使用哪种算法,然后传递一个标准的加密和解密调用集合,用这个常量来决定算法。

不过,如果我记得正确的话,OpenSSL有一个专门为其套件添加新算法的API。所以这可能不那么难。在初始化OpenSSL库时,您必须确保这种情况发生。

无论如何,这是一个相当含糊的答案,但也许它会指出你在正确的方向。你应该让这么做的人付出巨额的资金。需要这种知识水平的愚蠢行为永远不会便宜。

+4

我必须不同意愚蠢,这是为什么:它可能是他们正在添加一些国家加密标准。例如在俄罗斯,他们使用GOST和GOST是唯一公认的加密算法(实际上算法家族)用于公共区域。 – 2010-10-03 13:59:35

+1

@Eugene Mayevski'EldoS Corp是的,但这是一个经验丰富的密码专家的任务。我个人也没有看到使用替代基元的好处,即使在考虑像GOST这样不明确的基元时也是如此。 – rook 2010-10-03 18:52:08

+1

@符合国家法规要求可以是好处或要求。如果是这种情况,那不是我们或开发者决定要做什么 - 他们只是必须这样做。由于xUSSR客户说我们必须将GOST加入到我们的SecureBlackbox产品中,因为GOST是唯一允许的算法,所以如果他们想要在当地市场上发布他们的产品,他们必须拥有它,不管它与否。 – 2010-10-03 19:03:49