Encryption

硬體實現的算法和軟體實現的算法之間的區別?

  • August 16, 2016

在有關密碼學的文章中,我看到了硬體實現軟體實現這兩個詞。我很想知道它們之間有什麼區別?

換句話說,即使在電腦中編寫程序來執行加密算法時,我最終還是在 CPU 上執行它。那麼為什麼我不能稱之為硬體實現呢?

簡單處理器和加密處理器(協處理器?)有什麼區別?

通常有四種不同的設置,您希望在其中執行您的加密貨幣。

  • 中央處理器(CPU)。這可能是經典的台式機或筆記型電腦 CPU 或您的嵌入式設備之一。它的特點是它通常有相當少的計算核心(<20),但它可以使用它有非常快的核心,並且可以從它的彙編語言中執行任意指令(大多數是任意順序)。在 CPU 上執行的加密算法很可能是軟體實現的,因為算法(即指令)只是提供給 CPU 以供執行的資訊。CPU 最擅長執行複雜的線性算法。
  • 圖形處理單元 (GPU)。這可能是您的台式機或筆記型電腦圖形處理器,也可能是您的超級計算計算加速器。它的特點是核心數量多,每個核心的速度低,指令集有限。GPU 可以大規模並行執行簡單的算法。就像 CPU 一樣,它們接受算法作為資訊片段,因此實現算法的是軟體。
  • 現場可程式門陣列(FPGA)。FPGA 通常存在於小型嵌入式設備中,並且執行專門的算法。它的硬體可以在發貨後進行配置,但執行速度低於 ASIC。使用 FPGA,您可以更改集成電路的硬體佈局以執行您的算法。因此,FPGA 執行的算法被稱為是硬體實現的,因為在目前狀態下,硬體只能執行這個精確的算法,不能執行其他任何算法。
  • 專用集成電路(ASIC)。這是一個集成電路,它被製造成只執行一個算法,沒有別的。ASIC 通常為這種算法提供高速,並在速度很重要時使用。一個範例應用程序是硬體安全模組 ( HSM ),它通常使用 ASIC 來加速加密操作的執行(如 AES 加密)。加密處理器通常是帶有額外加密專用 ASIC 的簡單處理器。

至於每個平台的安全性,趨勢是如果你按照這個列表,安全性會增加。CPU 通常被許多不同的程序(包括作業系統)佔用,允許有點“簡單”的邊通道攻擊,GPU 通常不用於加密(除了雜湊破解),如果處理得當,FPGA 應該比 CPU 提供更高的安全性,因為晶片上其他操作的“噪音”更少,ASIC 也有同樣的好處,但更極端一些。

如果您從列表中刪除,速度也會類似地增加**。**CPU 必須能夠做許多不同的事情,因此不能在一個方向上進行太多優化,有些適用於 GPU,儘管如果需要它們具有更多的計算能力。FPGA 更快,因為您可以進行更多優化,而 ASIC 為王,因為您可以對它們做任何您想做的事情並優化它們。

價格有類似的順序。CPU 很容易獲得,程式成本低,而且你可以讓你的程序快速執行。GPU 也很容易獲得,有效程式的成本更高,並且可以更快地執行您的程式碼。FPGA 本身更昂貴,並且需要您使用 FPGA 的硬體語言來設計算法,這需要大量的時間和專業知識,因此也需要金錢。ASIC 需要在製造之前進行規劃,設計週期很長,但是一旦您獲得了設計,您就可以“輕鬆”以“低價”製造它們。


在觀察比特幣挖礦的發展時,自然已經可以觀察到最後兩點。它從 PC 上的 CPU 開始,然後是 GPU,然後是 FPGA,現在由 ASIC 主導。請注意,比特幣挖礦相當於“進行許多雙 SHA-256 雜湊”。

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