<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## **名詞解釋** 本文的內容比較新,相關中文資料極少,因此文中的名詞對讀者可能有點陌生,故byron這里介紹一下文中提到的一些名詞: ### 1\. NaCl庫: [http://nacl.cr.yp.to/](http://nacl.cr.yp.to/)?是密碼學學術權威 Daniel J. Bernstein教授 設計的一個密碼學算法庫,2008年發開始公布。NaCl的特點是:api簡潔而易用,高性能,高安全性,主要用于網絡通信,加密,解密,簽名等,NaCl提供了構建高層密碼學工具的核心功能。 ### 2\. libsodium庫: [https://download.libsodium.org/doc/](https://download.libsodium.org/doc/)?libsodium是對NaCl庫的一個分支,進一步改進接口易用性,和可移植性。 ### 3\. AEAD: [https://www.imperialviolet.org/2014/02/27/tlssymmetriccrypto.html](https://www.imperialviolet.org/2014/02/27/tlssymmetriccrypto.html)?AEAD的概念: 在通常的密碼學應用中,Confidentiality (保密) 用加密實現,Message authentication (消息認證) 用MAC實現。這兩種算法的配合方式,引發了很多安全漏洞,過去曾經有3種方法:1\. Encrypt-and-MAC 2.MAC-then-Encrypt 3.Encrypt-then-MAC ,后來發現,1和2都是有安全問題的,所以,2008年起, 逐漸提出了“用一個算法在內部同時實現cipher+MAC”的idea,稱為AEAD(Authenticated encryption with additional data)。 在AEAD這種概念里,cipher+MAC 被 一個AEAD算法替換。?[http://en.wikipedia.org/wiki/Authenticated_encryption](http://en.wikipedia.org/wiki/Authenticated_encryption) ### 4\. ChaCha20-poly1305 ChaCha20-poly1305是一種AEAD,提出者是Daniel J. Bernstein教授,針對移動互聯網優化,目前Google對移動客戶端的所有流量都使用ChaCha20-Poly1305 ### 5\. AES-GCM AES-GCM是一種AEAD,是目前TLS的主力算法,互聯網上https流量的大部分依賴使用AES-GCM。 ### 6\. AES-GCM和ChaCha20-Poly1305的性能對比測試結果: Chip | AES-128-GCM speed | ChaCha20-Poly1305 speed | | --- | --- | :-: | :-: | --- | | | OMAP 4460 | 24.1 MB/s | 75.3 MB/s | | | | Snapdragon S4 Pro | 41.5 MB/s | 130.9 MB/s | | | | Sandy Bridge Xeon (AESNI) | 900 MB/s | 500 MB/s | | ### 7\. AES-CBC 關于AES-CBC,在AES-GCM流行之前,TLS主要依賴AES-CBC,而由于歷史原因,TLS在設計之初固定選擇了MAC-then-Encrypt結構,AES-CBC和MAC-then-encrypt結合,為選擇密文攻擊(CCA)創造了便利條件,TLS歷史上有多個漏洞都和CBC模式有關: * The POODLE CBC oracle attack:參考:?[1.POODLE的一個分析](http://www.thoughtcrime.org/blog/the-cryptographic-doom-principle/)?[2.openssl的分析](https://www.openssl.org/~bodo/tls-cbc.txt)?[3.烏云的文章](http://drops.wooyun.org/papers/3194) * The CRIME compression attack: * The Lucky13 CBC padding oracle timing attack: * The BEAST CBC chained IV attack: ### 8\. SHA2 [http://en.wikipedia.org/wiki/SHA-2](http://en.wikipedia.org/wiki/SHA-2) ### 9\. Curve25519 [http://cr.yp.to/ecdh.html](http://cr.yp.to/ecdh.html)?Curve25519 是目前最高水平的 Diffie-Hellman函數,適用于廣泛的場景,由Daniel J. Bernstein教授設計。由于NIST P-256的設計過程不透明,有來歷不明的參數,被廣泛懷疑有后門,所以設計了Curve25519,Curve25519的設計過程完全公開,沒有任何來歷不明的參數。 部署情況:[http://ianix.com/pub/curve25519-deployment.html](http://ianix.com/pub/curve25519-deployment.html) ### 10\. Ed25519 [http://ed25519.cr.yp.to/](http://ed25519.cr.yp.to/)?Ed25519是一個數字簽名算法, * 簽名和驗證的性能都極高, 一個4核2.4GHz 的 Westmere cpu,每秒可以驗證 71000 個簽名 * 安全性極高,等價于RSA約3000-bit * 簽名過程不依賴隨機數生成器,不依賴hash函數的防碰撞性,沒有時間通道攻擊的問題 * 并且簽名很小,只有64字節,公鑰也很小,只有32字節。 部署情況:[http://ianix.com/pub/ed25519-deployment.html](http://ianix.com/pub/ed25519-deployment.html) ### 11\. 前向安全性 前向安全性( Perfect Forward Secrecy )?[http://vincent.bernat.im/en/blog/2011-ssl-perfect-forward-secrecy.html](http://vincent.bernat.im/en/blog/2011-ssl-perfect-forward-secrecy.html)?前向安全性指的是,如果攻擊者抓取并保存流量,那么將來私鑰泄露后,攻擊者也無法利用泄露的私鑰解密這些流量。 ### 12\. Diffie-Hellman 密鑰交換 [http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange](http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)?在任何一本密碼學教材里面都會重點介紹的 ### 13\. constant time compare 針對Timing attack,[http://en.wikipedia.org/wiki/Timing_attack](http://en.wikipedia.org/wiki/Timing_attack)?(這種攻擊真是腦洞大開!) 當一個算法的運行時間和輸入數據有關的時候,可以根據運行時間這一信息,破解出密鑰等。 典型的,比如要驗證一個對稱簽名,如果你用了C庫里面的memcmp(),那你就會被timing attack方式攻擊。 因此,涉及到密碼學數據的memcmp,必須要用運行時間和輸入無關的函數,比如OpenSSL庫里面的`CRYPTO_memcmp()`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看