Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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
Encryption 如何将自定义加密算法添加到HTTPS堆栈中?_Encryption_Ssl_Https_Openssl - Fatal编程技术网

Encryption 如何将自定义加密算法添加到HTTPS堆栈中?

Encryption 如何将自定义加密算法添加到HTTPS堆栈中?,encryption,ssl,https,openssl,Encryption,Ssl,Https,Openssl,我想在安全应用程序中使用HTTPS,但将对称加密算法替换为自定义算法 我不太确定如何实现这个目标。是否可以将相关库替换为自定义库?例如,使用OpenSSL 更具体地说,在第一阶段,我需要在win32平台上完成,有人能告诉我如何开始吗?当然可以。即使操作系统、网络堆栈或编程框架提供SSL/TLS功能,您也可以简单地打开常规TCP连接,然后使用自己的库进行SSL加密通信 因此,答案是肯定的——总是在每个支持常规TCP连接的平台上。是的,你可以——你需要创建一个实现SSL协议的客户端和服务器。SSL使

我想在安全应用程序中使用HTTPS,但将对称加密算法替换为自定义算法

我不太确定如何实现这个目标。是否可以将相关库替换为自定义库?例如,使用OpenSSL


更具体地说,在第一阶段,我需要在win32平台上完成,有人能告诉我如何开始吗?

当然可以。即使操作系统、网络堆栈或编程框架提供SSL/TLS功能,您也可以简单地打开常规TCP连接,然后使用自己的库进行SSL加密通信


因此,答案是肯定的——总是在每个支持常规TCP连接的平台上。

是的,你可以——你需要创建一个实现SSL协议的客户端和服务器。SSL使用密码套件来通信协议中使用的算法,您可以定义自己的算法

根据TLS规范(TLS 1.0,但我认为这没有改变):

“第一个字节为0xFF的所有密码套件都被认为是私有的,可用于定义本地/实验算法。此类类型的互操作性是本地问题。”

使用一个开源库(最好是一个具有可读源代码的库)并更改它


正如评论中所说,定义自己的协议/算法很可能会严重影响SSL/TLS的安全性。

如何做到这一点?例如,在win32平台、internet explorer或firefox上,如何做到这一点?@ciphor:您的问题似乎有点不精确。我们在这里讨论Stackoverflow,我假设我们讨论的是您正在实现的自定义应用程序。您从未说过修补现有操作系统或应用程序的SSL实现。这取决于操作系统/应用程序的特定API。是的,我承认我的问题不准确。更具体地说,我想在win32平台上修补SSL实现。有人告诉我,我应该看看win32 CSP(CryptoServiceProvider)接口。这是正确的吗?我认为您不能轻易地更改win32 API,因为它们是封闭源代码的。OpenSSL或者OpenJDK(如果您想要稍微少一些毛茸茸的代码)可能是一个更好的选择。这不是弱者的任务,它可能会大大降低SSL通道的加密强度,因为AES(-256)在这种情况下提供了很多安全性。您是否有要使用它的目标应用程序?(无论哪种方式,这都可能是一项困难的任务。)@Bruno:理解TLS和大多数实现的源代码是很棘手的,但是将已经实现的对称密码插入开源TLS库可能是可行的,因为SSL/TLS是为可扩展性而设计的。当然,在TLS库中匹配算法也会很棘手。并不是说你想把它放到生产代码中,而是出于安全考虑…@owlstead同意,我只是想尝试扩展目标应用程序使用的lib(例如Firefox的libnss)会更有意义而不是扩展一个可能不是目标应用程序已经使用的库,然后以某种方式桥接两个API(如果可能的话)。例如,扩展OpenSSL,然后尝试在FF中使用它将需要额外的工作。我不确定OP是否意识到不同的应用程序可能会将LIB与不一定相互兼容的API一起使用。了解lib在应用程序中的位置是定制此类lib的先决条件。