Implementation

函式式程式語言的好處

  • May 22, 2021

到目前為止,我主要將 Python(因為簡單)和 C(因為效率)用於密碼程式。但是有一種不同類型的程式語言,稱為函式式程式語言。一個例子是 Haskell。這些語言沒有副作用,可以證明是正確的。我想知道這些程式語言在用於加密應用程序時是否比“普通”程式語言有任何好處。是這樣嗎?如果是,為什麼不更頻繁地使用它們?

這些語言沒有副作用

嗯,是的,有點。它們也是高級語言,您無法(盡可能多地)控制時間或擦除記憶體。這些是密碼學家擔心的副作用 - 而不是您所暗示的數學副作用。

我想知道這些程式語言在用於加密應用程序時是否比“普通”程式語言有任何好處。

就我個人而言,我認為任何提供例如記憶體保護的高級語言確實是安全應用程序的要求。這種記憶體保護通常由函式式語言提供。它可能比可能具有可變變數值的高級語言更好。

然而,對於加密原語來說,使用機器程式碼和——當然——只要它們可用的本機指令是有意義的。我已經看到這些語言的位操作通常要慢得多。我們在這裡談論的是巨大的數字。例如,如果密碼原語被正確程式(想想性能下降 2 倍的變化),Java 和 C# 已經比 C 慢得多。大多數其他解釋語言都比這慢得多。

函式式語言可能帶來的性能優勢——例如通過傳遞函式延遲執行——對於密碼原語來說是沒有幫助的——如果不是完全危險的話。

我想知道這些程式語言在用於加密應用程序時是否比“普通”程式語言有任何好處。是這樣嗎?如果是,為什麼不更頻繁地使用它們?

在這裡,我們必須再次區分“密碼應用程序”和“密碼原語”。我認為在高級語言中經常使用經過良好測試的本機函式庫。例如,在 Python 等高級語言中使用了許多 OpenSSL 包裝庫。我認為這是有道理的,儘管對使用的本機庫進行更多(數組)邊界測試會很有用。

至於函式式語言:我不認為這種“經過驗證的正確性”有多大好處。不同尋常的是,需要進行一些邊界檢查等。但除此之外,通常您可以使用測試向量來顯示原語的足夠正確性。

我仍然看到純函式式語言主要對數學應用等有用。我個人認為它們足夠複雜,大多數開發人員不會將它們用於通用應用程序。這類數學應用程序通常不是需要大量安全性的應用程序類型。

無論您如何看待最後一部分(這是相當固執的),通常我們不會根據我們傾向於使用的密碼學來選擇一種語言。安全性應該是應用程序設計的一個組成部分,但通常它不是主要案例。選擇一種語言主要是因為它適合主要案例,或者——當然——僅僅是因為開發人員熟悉(純粹的函式式語言仍然不是最流行的語言)。

引用自:https://crypto.stackexchange.com/questions/90091