可以向SSH通信中添加一些新的算法,这在某些时候会被实现(例如后来添加了AES)。但问题在于您需要修改客户端和服务器以使它们都支持此算法,否则这没有任何意义。我假设您被要求添加一些自定义的算法,无论是自制的还是非标准的。因此,我首先想要提醒您的是,所添加的算法可能很脆弱。您需要进行至少基本的搜索,以获取有关此算法的信息,因为如果它已经被破解,那么您将会做完全无用甚至危险的工作。至于软件修改本身——这是一个罕见的工作,因此您很可能找不到有这种经验的人。然而,处理各种算法的代码是典型的,添加新算法是微不足道的——您只需添加一个包含算法实现的源文件,然后通过在switch语句中添加一个case来修改一堆地方。
在我的职业生涯中,我曾经在一个私有的ssh分支上工作过,该分支被销售为闭源商业软件。尽管他们非常愚蠢(私有分支?谁会用非开源加密软件?我认为我们的客户完全是疯了),但他们并没有添加新的加密算法。不过,这是可以做到的。添加支持它的ssh协议钩子并不难。该协议旨在以这种方式进行扩展。在开始时,客户端和服务器交换他们愿意使用的加密算法列表。当然,这意味着只有修改后的客户端和修改后的服务器才能相互通信。真正的困难在于OpenSSL。ssh不使用TLS/SSL,但它确实使用OpenSSL加密库。你必须将新算法添加到该库中,而该库是一个可怕的野兽。虽然我想你可能可以在不将其添加到OpenSSL中的情况下添加该算法。不过这可能有些棘手,因为我认为openssh可能严重依赖于OpenSSL API的工作方式。而它们的一部分允许您传递表示要使用的算法的常量,然后使用常量来决定算法的加密和解密的标准调用集。再次强调,如果我记得正确的话,OpenSSL有一个专门用于向其套件添加新算法的API。因此这可能并不那么难。您必须确保在初始化OpenSSL库时发生这种情况。无论如何,这是一个相当模糊的答案,但也许它会指引你朝着正确的方向前进。你应该让做这个工作的人付出巨额的代价。需要这种水平的知识的愚蠢绝不能便宜。