Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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
Haskell 在';安全语言';它是否仍然容易受到心脏出血的攻击?_Haskell_Ssl_Coq_Agda_Idris - Fatal编程技术网

Haskell 在';安全语言';它是否仍然容易受到心脏出血的攻击?

Haskell 在';安全语言';它是否仍然容易受到心脏出血的攻击?,haskell,ssl,coq,agda,idris,Haskell,Ssl,Coq,Agda,Idris,: 将TLS规范形式化并证明实现与之一致只表明实现在逻辑上是正确的。但是,这并不表明实现是安全的。在逻辑上仍然正确的情况下,您的实现可能容易受到侧通道攻击(特别是定时攻击) 我的问题是:如果使用“安全语言”(即Haskell、Idris)验证SSL/TLS实现,或者使用定理证明程序(Coq、Agda)进行检查,它是否仍然容易受到心脏出血攻击?侧通道攻击是例如定时攻击,例如,当使用不同的输入时,您可以通过测量时间差来获取有关秘密的信息。在像C这样的低级语言中,要做到这一点已经很困难了,在C语言中,

:

将TLS规范形式化并证明实现与之一致只表明实现在逻辑上是正确的。但是,这并不表明实现是安全的。在逻辑上仍然正确的情况下,您的实现可能容易受到侧通道攻击(特别是定时攻击)


我的问题是:如果使用“安全语言”(即Haskell、Idris)验证SSL/TLS实现,或者使用定理证明程序(Coq、Agda)进行检查,它是否仍然容易受到心脏出血攻击?侧通道攻击是例如定时攻击,例如,当使用不同的输入时,您可以通过测量时间差来获取有关秘密的信息。在像C这样的低级语言中,要做到这一点已经很困难了,在C语言中,你可以控制处理器指令、缓存处理、,编译器优化等。在更高级别的语言中正确执行此操作要困难得多,并且仍然足够有效,可以在实际应用程序中使用。

侧通道攻击就是例如定时攻击,例如,您可以通过测量使用不同输入时的定时差异来获取有关机密的信息。在像C这样的低级语言中已经很难做到这一点,在C语言中,您可以对处理器指令、缓存处理、编译器优化等进行大量控制。在高级语言中正确地做到这一点要困难得多,并且仍然足够高效,可以在实际应用程序中使用。

在“安全语言”应该不会受到心血的伤害,这是一个巨大的缺陷(甚至不是旁道攻击)只有在具有直接原始内存访问的语言中才可能发生。在任何实现中都可能发生像定时攻击这样的实际副通道攻击。我不太确定问题到底是什么。如果您了解定时攻击是什么,我认为更适合要求证明某件事情不容易发生。使用类似Ha的语言skell或Agda可以防止所有类型的漏洞和bug,如Heartbleed,但没有什么可以阻止逻辑正确的实现具有其他漏洞。没有什么可以阻止TLS规范本身具有漏洞。只有聪明(或幸运)的人才可以如果存在一个弱点,就足以找到它的弱点,问题是很难说它是否存在。Heartbleed不是一种侧通道攻击。侧通道攻击是这样的:攻击者连接,以及服务器在SSL握手期间执行操作所需的时间。确切的时间可能是揭示服务器私钥中使用的指数,因为用于执行操作的机器指令的数量可能取决于该指数。@WarrenDew这是一种非常特殊(尽管常见且重要)的侧通道攻击,即定时攻击。其他侧通道攻击使用其他“侧通道”“例如,电磁辐射、功耗、可能被擦除的数据(冷启动攻击)等——侧通道攻击的一般定义是任何在不破坏数学或暴力强迫的情况下破坏系统的行为,即任何滥用物理实现的行为。我想,心血属于这个定义。显然,我的定义比你的定义窄。一般来说,我不把实现中的bug算作旁道攻击;它是一个非指定内容的实现。不过,更一般地说,heartbleed根本不是一种加密攻击:它不允许攻击者侵入加密通信,除非是作为副作用。相反,heartbleed是一个严重的bug漏洞攻击,而该漏洞出现在加密代码中主要是偶然的。如果未加密的TCP易受攻击,那么该漏洞仍然同样严重。在“安全语言”中的OpenSSL实现应该不会受到Heartbleed的攻击,这是一个巨大的漏洞(甚至不是侧通道攻击),仅在具有直接原始内存访问的语言中才可能出现。在任何实现中,像定时攻击这样的实际侧通道攻击都是可能的。我不太清楚问题到底是什么。如果您了解定时攻击是什么,我认为更合适的做法是要求提供证据,证明某些东西不容易发生定时攻击。使用Haskell或Agda这样的语言可以防止所有类型的漏洞和错误,如Heartbleed,但没有什么可以阻止逻辑正确的实现具有其他漏洞。没有任何东西可以阻止TLS规范本身存在漏洞。只要有人足够聪明(或幸运)就能找到一个弱点——如果有弱点的话,问题是很难判断它是否存在。侧通道攻击是这样的:攻击者在SSL握手过程中进行连接并乘以服务器执行操作所需的时间。确切的时间长度可以揭示服务器私钥中使用的指数,因为用于执行操作的机器指令的数量可能取决于该指数。@WarrenDew这是一种非常特殊(尽管常见且重要)的侧通道攻击,即计时攻击。其他侧通道攻击使用其他“侧通道”,如电磁辐射、功耗、假定已擦除的数据(冷启动攻击)等——侧通道攻击的一般定义是任何在不破坏数学或暴力强迫的情况下破坏系统的行为,即任何滥用物理实现的行为。我想,心血属于这个定义