操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    融界2024年3月18日消息,據國家知識產權局公告,OPPO廣東移動通信有限公司取得一項名為“哈希函數電路、芯片及通信設備“的專利,授權公告號CN113655992B,申請日期為2021年8月。

    專利摘要顯示,本發明實施例公開了一種哈希函數電路、芯片和通信設備,應用于芯片技術領域,可以實現SpookyHash的硬件應用。包括:求余運算模塊,用于根據輸入的第一字段的字節數,對所述第一字段進行第一邏輯運算得到第二字段,并輸出所述第二字段,所述第一邏輯運算與所述第一字段的字節數對應,所述第一字段的字節數小于16字節;結束運算模塊,用于對所述求余運算模塊輸出的所述第二字段進行多級第二邏輯運算,以得到目標哈希字段,所述第二邏輯運算為進行異或運算和左移運算之后,再將異或運算結果和左移運算結果進行加法運算的運算。

    本文源自金融界

    輸出的哈希值反推回輸入,這從計算的角度是不可行的。

    ? 來源:linux.cn ? 作者:Mike Bursell ? 譯者:MCGA ?

    (本文字數:2695,閱讀時長大約:4 分鐘)


    無論安全從業人員用計算機做什么,有一種工具對他們每個人都很有用:加密 哈希(散列)(hash)函數。這聽起來很神秘、很專業,甚至可能有點乏味,但是, 在這里,關于什么是哈希函數以及它們為什么對你很重要,我會作出一個簡潔的解釋。

    加密哈希函數,比如 SHA-256 或者 MD5,接受一組二進制數據(通常是字節)作為輸入,并且對每個可能的輸入集給出一個 希望唯一(hopefully unique)的輸出。對于任意模式的輸入,給定的哈希函數的輸出(“哈希值”)的長度都是一樣的(對于 SHA-256,是 32 字節或者 256 比特,這從名字中就能看出來)。最重要的是:從輸出的哈希值反推回輸入,這從計算的角度是 不可行的(implausible)(密碼學家討厭 “ 不可能(impossible)” 這個詞)。這就是為什么它們有時候被稱作 單向哈希函數(one-way hash function)。

    但是哈希函數是用來做什么的呢?為什么“唯一”的屬性如此重要?

    唯一的輸出

    在描述哈希函數的輸出時,“ 希望唯一(hopefully unique)”這個短語是至關重要的,因為哈希函數就是用來呈現完全唯一的輸出。比如,哈希函數可以用于驗證 你 下載的文件副本的每一個字節是否和 我 下載的文件一樣。你下載一個 Linux 的 ISO 文件或者從 Linux 的倉庫中下載軟件時,你會看到使用這個驗證過程。沒有了唯一性,這個技術就沒用了,至少就通常的目的而言是這樣的。

    如果兩個不同的輸入產生了相同的輸出,那么這樣的哈希過程就稱作“ 碰撞(collision)”。事實上,MD5 算法已經被棄用,因為雖然可能性微乎其微,但它現在可以用市面上的硬件和軟件系統找到碰撞。

    另外一個重要的特性是,消息中的一個微小變化,甚至只是改變一個比特位,都可能會在輸出中產生一個明顯的變化(這就是“ 雪崩效應(avalanche effect)”)。

    驗證二進制數據

    哈希函數的典型用途是當有人給你一段二進制數據,確保這些數據是你所期望的。無論是文本、可執行文件、視頻、圖像或者一個完整的數據庫數據,在計算世界中,所有的數據都可以用二進制的形式進行描述,所以至少可以這么說,哈希是廣泛適用的。直接比較二進制數據是非常緩慢的且計算量巨大,但是哈希函數在設計上非??臁=o定兩個大小為幾 M 或者幾 G 的文件,你可以事先生成它們的哈希值,然后在需要的時候再進行比較。

    通常,對哈希值進行簽名比對大型數據集本身進行簽名更容易。這個特性太重要了,以至于密碼學中對哈希值最常見的應用就是生成“數字”簽名。

    由于生成數據的哈希值很容易,所以通常不需要有兩套數據。假設你想在你的電腦上運行一個可執行文件。但是在你運行之前,你需要檢查這個文件就是你要的文件,沒有被黑客篡改。你可以方便快捷的對文件生成哈希值,只要你有一個這個哈希值的副本,你就可以相當肯定這就是你想要的文件。

    下面是一個簡單的例子:

    $ shasum -a256 ~/bin/fop
    87227baf4e1e78f6499e4905e8640c1f36720ae5f2bd167de325fd0d4ebc791c  /home/bob/bin/fop
    

    如果我知道 fop 這個可執行文件的 SHA-256 校驗和,這是由供應商(這個例子中是 Apache 基金會)提供的:

    87227baf4e1e78f6499e4905e8640c1f36720ae5f2bd167de325fd0d4ebc791c
    

    然后我就可以確信,我驅動器上的這個可執行文件和 Apache 基金會網站上發布的文件是一模一樣的。這就是哈希函數難以發生碰撞(或者至少是 很難通過計算得到碰撞)這個性質的重要之處。如果黑客能將真實文件用哈希值相同的文件輕易的進行替換,那么這個驗證過程就毫無用處。

    事實上,這些性質還有更技術性的名稱,我上面所描述的將三個重要的屬性混在了一起。更準確地說,這些技術名稱是:

    1. 抗原像性(pre-image resistance):給定一個哈希值,即使知道用了什么哈希函數,也很難得到用于創建它的消息。
    2. 抗次原像性(second pre-image resistance) :給定一個消息,很難找到另一個消息,使得這個消息可以產生相同的哈希值。
    3. 抗碰撞性(collision resistance):很難得到任意兩個可以產生相同哈希值的消息。

    抗碰撞性 和 抗次原像性 也許聽上去是同樣的性質,但它們具有細微而顯著的不同。抗次原像性 說的是如果 已經 有了一個消息,你也很難得到另一個與之哈希值相匹配的消息??古鲎残?使你很難找到兩個可以生成相同哈希值的消息,并且要在哈希函數中實現這一性質則更加困難。

    讓我回到黑客試圖替換文件(可以通過哈希值進行校驗)的場景。現在,要在“外面”使用加密哈希算法(除了使用那些在現實世界中由獨角獸公司開發的完全無 Bug 且安全的實現之外),還有一些重要且困難的附加條件需要滿足。認真的讀者可能已經想到了其中一些,特別需要指出的是:

    1. 你必須確保自己所擁有的哈希值副本也沒有被篡改。
    2. 你必須確保執行哈希算法的實體能夠正確執行并報告了結果。
    3. 你必須確保對比兩個哈希值的實體確實報告了這個對比的正確結果。

    確保你能滿足這些條件絕對不是一件容易的事。這就是 可信平臺模塊(Trusted Platform Modules)(TPM)成為許多計算系統一部分的原因之一。它們扮演著信任的硬件基礎,可以為驗證重要二進制數據真實性的加密工具提供保證。TPM 對于現實中的系統來說是有用且重要的工具,我也打算將來寫一篇關于 TPM 的文章。


    via: opensource.com

    作者: Mike Bursell 選題: lujun9972 譯者: Yufei-Yan 校對: wxy

    本文由 LCTT 原創編譯, Linux中國 榮譽推出

    點擊“了解更多”可訪問文內鏈接

    者 | zhiachong

    編譯 | 閔敏、阿劍;責編 | Aholiab

    頭圖 | CSDN 下載自視覺中國

    出品 | CSDN(ID:CSDNnews)

    以下文章來源于以太坊愛好者

    科普 | 哈希函數的過去、現在與未來

    哈希值和哈希函數的概念是初次入門區塊鏈的人常聽到的兩個關鍵詞,而且似乎對安全性來說特別關鍵。(實際上也確實是。)對于像比特幣和以太坊這樣由成千上萬的節點通過 P2P 方法組成的去中心化網絡來說,“免信任性” 和驗證效率無疑是關鍵。也就是說,這些系統需要找到方法把信息編碼成緊湊的形式,同時讓參與者能夠安全快速地進行驗證。

    比特幣和以太坊網絡所處理的主要內容叫做 “區塊”,指的是由交易、時間戳和其他重要元數據所組成的數據結構。比特幣和以太坊網絡的安全性的關鍵一環是:它能將表達網絡全局狀態的大塊信息壓縮成一個簡短的消息。在有需要之時,我們可以高效地驗證這個消息的真實性。這個過程就是用哈希函數來完成的,而得到的結果(消息)就是哈希值。

    即使只更改輸入中的一個字符,最后得出的哈希值也會完全不同

    密碼學哈希廣泛應用于口令存儲和文件驗證系統。簡單來說,密碼學哈希函數是一種確定性的算法,不論輸入什么值,都能得到一個固定長度的字符串。也就是說,同一個輸入值始終對應同一個輸出值。

    對哈希函數來說,重要的不僅是確定性(還有結果的隨機性):即使只更改輸入中的一個比特位,也會導致最終得到的哈希值截然不同。

    哈希算法有一個無可回避的問題叫碰撞可能性。因為哈希值是固定長度的字符串,同一個輸出哈希值有可能對應多個輸入。碰撞會造成很嚴重的后果。如果有人能夠按需要發起碰撞攻擊,他就可以用恰當的哈希值將惡意文件或數據偽裝成合法的、能夠通過驗證的文件。好的哈希函數的設計目標是讓攻擊者極難找到方法來找出對應同一個哈希的不同輸入。

    哈希計算的效率不應過高,以免讓攻擊者可以更簡單地人為計算出碰撞。哈希算法必須能夠抵御“原像攻擊(pre-image attack)”。也就是說,對于特定哈希值,攻擊者很難通過確定性計算步驟倒推出輸入值(即,原像)。

    假設 s=hash(x),倒推 x 應該是近乎不可能的。

    總的來說,“好的” 哈希算法需要具備以下 3 個特性:

    • 更改輸入中的一個比特位會產生雪崩效應,導致最后得出的哈希值截然不同

    • 出現哈希碰撞的概率非常低

    • 在無需犧牲抗碰撞性的前提下計算效率過得去

    破解哈希算法

    哈希算法的初始標準之一是 MD5 哈希。MD5 哈希廣泛應用于文件完整性驗證(校驗和),以及在網絡應用數據庫中存儲經過哈希計算的賬號口令。MD5 的功能非常簡單,因為它會將每個輸入轉換成一個固定的 128 位字符串輸出,并通過多輪簡單的單向操作來計算確定性輸出。由于輸出值長度較短,操作又較為簡單,MD5 很容易被破解,一種常見的攻擊方法叫生日攻擊。

    什么是生日攻擊?你有沒有聽說過這樣一個事實?如果你將 23 個人放到一個房間里,其中兩個人生日相同的概率為 50% 。如果將 70 個人放到一個房間里,其中兩個人生日相同的概率高達 99.9% 。這就是我們所說的鴿籠原理(pigeonhole principle),即將 100 只鴿子裝進 99 個鴿籠,必然有兩只鴿子分享同一個鴿籠。也就是說,固定長度的輸出意味著所有輸入輸出組合中一定存在碰撞。

    籠子不夠時,鴿子就會湊對

    事實上,MD5 的抗碰撞性太差,以至于一臺家用 2.4 GHz 奔騰處理器都能在幾秒內計算出哈希碰撞。此外,由于 MD5 在互聯網早期階段得到了廣泛應用,網絡上有大量 MD5 原像遭到泄漏,通過谷歌搜索它們的哈希值就能找到。

    哈希算法的多樣性發展

    NSA (沒錯,就是美國國家安全保障局)是哈希算法標準的先驅。安全哈希算法(Secure Hashing Algorithm,SHA1)是最早提出的標準,將輸出值的長度固定在 160 位。遺憾的是,SHA1 只是在 MD5 的基礎上增加了輸出值長度、單向操作的次數和復雜度,但是并沒有作出能夠抵御更強大機器攻擊的根本性改進。

    我們如何才能做得更好?

    在 2006 年,美國國家標準技術研究所(NIST)舉辦了一場競賽,旨在找到一個本質上不同于 SHA2 的替代標準。因此,SHA3 應運而生,它是 KECCAK 哈希算法的一種方案。

    雖然 SHA 3 在名稱上與 SHA1 和 SHA2 一脈相承,但是在本質上差異很大,因為它采用了一種名為海綿結構(sponge construct)的機制。該機制使用隨機排列來吸收并輸出數據,同時為將來用于哈希算法的輸入值提供隨機性。

    SHA3 的內部狀態相較于輸出值擁有更多信息,突破了以往算法的局限性。NIST 于 2015 年正式認可了 SHA3 標準。

    哈希計算和工作量證明

    就整合進區塊鏈協議的哈希算法而言,比較早的比特幣選擇了 SHA256 ,而以太坊采用了改進后的 SHA3 (KECCAK256)作為工作量證明算法。對于采用工作量證明的區塊鏈來說,選擇哈希函數的一大重要標準是哈希運算效率。

    使用一類名為專用集成電路(ASIC)的硬件,我們可以大幅提高比特幣 SHA256 算法的哈希運算的效率。有很多文章已經闡述了礦池是如何利用 ASIC 的,以及 ASIC 是如何讓協議趨向于計算中心化的。也就是說,工作量證明會激勵計算效率較高的機器聚集成礦池,從而形成較大的哈希算力(算力大小的衡量標準就是礦機在每個時間間隔內可以完成多少次哈希運算)。

    以太坊選擇的是改進后的 SHA3 算法(叫做 KECCAK256 )。此外,以太坊的工作量證明算法 Dagger-Hashimoto 被設計成了內存密集型模式,計算硬件需要加大內存才能提高計算效率。

    那么,為什么比特幣采用雙重 SHA256 ?有趣的是,比特幣協議(的工作量證明)需要重復運行兩遍 SHA256 算法。請注意,這不是為了抵御生日攻擊,畢竟在 hash(x)=hash(y) 的情況下,hash(hash(x))=hash(hash(y)) 。雙重 SHA256 旨在抵御長度擴展攻擊。

    從本質上來說,所謂的長度擴展攻擊,指的是如果惡意攻擊者知道了某個哈希輸入的長度,就可以在哈希值上添加一個秘密的字符串、欺騙哈希函數從其內部狀態的一個特定部分開始計算。作為 SHA2 算法家族的一員,SHA256 也存在這一缺陷。因此,比特幣采取執行兩遍哈希計算的方式來解決這一缺陷。

    SHA3 并非哈希算法競賽取得的唯一突破。雖然最終勝出的是 SHA3 ,但是 BLAKE 算法緊隨其后,位居第二。對于以太坊 2.0 的分片實現來說,更高效的哈希算法可以說是一項功能性要求,研究團隊對此非常重視。BLAKE2b 哈希算法是 BLAKE 算法的高度升級版本。與 KECCAK256 相比,BLAKE2b 哈希算法在保持高度安全性的同時,在提升效率方面也進行了深入探索。

    使用一臺現代 CPU 計算 BLAKE2b 的速度比計算 KECCAK 快了 3 倍。

    哈希算法的前景展望

    這么看來,無論我們做了什么,無非就是(1)增加內部哈希操作的復雜度,或者(2)增加哈希輸出值的長度,讓攻擊者的計算機無法足夠快地有效計算出碰撞。

    我們依靠單向操作的原像模糊性來保護網絡的安全性。也就是說,哈希算法的安全性目標是在有無限多可能的沖突的情況下,讓找出哈希碰撞的難度盡可能高。

    如果量子計算時代到來,哈希算法依然安全嗎?

    就目前來看,答案是肯定的,哈希算法將經受時間的考驗,抵御量子計算。量子計算能夠解決的是那些嚴格按照某些小技巧或 RSA 加密理論打造底層結構的數學問題。另一方面,哈希算法的內部構造沒那么形式化。

    量子計算機確實能夠提高哈希等非結構化問題的計算速度,但它們最終還是會像如今的計算機一樣采取暴力破解手段。

    無論我們為協議選擇了哪種算法,我們顯然都在邁向計算高效化的未來。為此,我們必須慎重選擇最合適的工具,使之經受住時間的檢驗。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有