Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 一种新的ssh加密算法_Linux_Security_Cryptography_Openssh - Fatal编程技术网

Linux 一种新的ssh加密算法

Linux 一种新的ssh加密算法,linux,security,cryptography,openssh,Linux,Security,Cryptography,Openssh,我被要求在ssh中添加一个新算法,以便数据在新算法中加密,您知道如何在ssh中添加新算法吗 感谢有可能在SSH通信中添加一些新的算法,这是不时进行的(例如,AES是后来添加的)。但问题是,您需要修改客户端和服务器,以便它们都支持此算法,否则就没有意义了 我假设您被要求添加一些自定义算法,可以是自制的,也可以是非标准算法。所以我想做的第一件事是警告你,添加的算法可能很弱。您需要至少对有关此算法的信息执行基本搜索,就好像它被破坏了一样,您将完成完全无用甚至危险的工作 至于软件修改本身——这是一项罕见

我被要求在ssh中添加一个新算法,以便数据在新算法中加密,您知道如何在ssh中添加新算法吗


感谢

有可能在SSH通信中添加一些新的算法,这是不时进行的(例如,AES是后来添加的)。但问题是,您需要修改客户端和服务器,以便它们都支持此算法,否则就没有意义了

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


至于软件修改本身——这是一项罕见的工作,你很可能找不到有这种经验的人。然而,处理各种算法的代码是典型的,添加新算法很简单——您可以添加一个带有算法实现的源文件,然后通过添加一个case to switch语句来修改一堆地方

在我的职业生涯中,我曾在一个私有的ssh分支上工作过,该分支作为封闭源代码商业软件出售。即使是他们愚蠢至极(private fork?谁在他们的头脑中使用了非开源加密软件?我以为我们的客户完全疯了。)也没有添加新的加密算法

但这是可以做到的。将钩子添加到ssh协议以支持它并不困难。协议被设计成以这种方式进行扩展。开始时,客户机和服务器交换他们愿意使用的加密算法列表

当然,这意味着只有经过修改的客户端和经过修改的服务器才能相互通信

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

不过,我想您可以添加算法,而无需将其添加到OpenSSL。但这可能很棘手,因为我认为openssh可能严重依赖OpenSSL API的工作方式。它们的部分工作原理允许你传递一个表示你想要使用哪种算法的常数,然后传递一组标准的加密和解密调用,这些调用使用该常数来决定算法

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


无论如何,这是一个相当模糊的答案,但也许它会为你指明正确的方向。你应该让做这件事的人付一大笔钱。需要这种水平的知识才能成功的愚蠢永远不应该便宜。

你为什么要这样做?新的加密算法很难获得正确的结果,无论是裸算法本身,还是作为协议的一部分安全地实现。当前ssh中的AES256-CTR是目前比较安全的算法之一。我同意Omnifarious。此外,如果你疯狂到这样做,你将不得不更改服务器软件和你允许连接的每个客户端使用的软件。虽然我知道这样做似乎很愚蠢,但我被要求这样做!除了打开ssh和ssh客户端之外,我还需要编辑其他东西吗?怎么做?如果您使用的是开源ssh客户端和服务器,您可以下载这些程序的源代码并对其进行修改(如果主项目发生变化,则继续维护它们)。记住要让你的客户/雇主为这样一个疯狂的项目付你很多钱。做这件事的唯一明智的理由是做家庭作业。。。就是这样吗?事实上,我在openssh的一个封闭源代码分支上工作过。给我几周的时间,我可能会获得足够的代码知识来完成这项工作。:-)关于愚蠢,我一定不同意,原因如下:可能是他们正在增加一些国家加密标准。例如,在俄罗斯,他们使用GOST,GOST是唯一被接受的用于公共区域的加密算法(事实上是一系列算法)。@Eugene Mayevski’EldoS Corp是的,但这是一个经验丰富的密码学家的任务。我个人也不认为使用替代原语有什么好处,即使在考虑像GOST这样晦涩的原语时也是如此。@Rook国家法规遵从性可能是一种好处或要求。如果是这样的话,决定做什么的不是我们或开发人员,而是他们必须这样做。我们必须将GOST添加到我们的SecureBackbox产品中,因为xUSSR的客户说,GOST是唯一允许的算法,所以如果他们想在本地市场上发布产品,他们必须拥有GOST,不管喜欢与否。感谢亲爱的朋友们的好意指导,这是一些学术工作的一部分,我对主要项目一无所知,但我被要求这样做,正如尤金·梅耶夫斯基所说,我必须这样做,亲爱的Omnifarious您的回复对我的方式很有意义,感谢openssl为我指明了正确的方式,关于GOST的评论扫清了道路,他们在最新的openssl版本上添加了GOST支持,以及许多对此类项目有用的评论,谢谢