电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 密碼學示例——理解哈希(Hash)算法

瀏覽:93日期:2022-07-10 16:36:40

Hash 是密碼學安全性的基石,它引入了單向函數(one-way function)和指紋(fingerprint)的概念。即:

對于任意輸入,都可以產生相同的、唯一的輸出值 輸出值中不包含輸入值的任何線索

一、保密性(confidentiality)與完整性(integrity)

簡單來說,信息的保密性確保除授權人員以外的任何人都無法讀取該消息,信息的完整性則確保除授權人員以外的任何人都無法修改該消息。很多時候一段加密的消息無法被他人讀取和理解(保密性),并不意味著該密文不會在傳播過程中被截取和惡意修改(完整性)。

信息摘要(message digest)或指紋(fingerprint)技術即用于驗證信息的完整性。

信息摘要需滿足的基本條件為:

相同的文檔永遠會生成相同的摘要(能夠作為身份線索) 生成的摘要“感覺”是隨機的,即摘要中不包含原始文檔的任何信息(無法被破解)

信息摘要也被稱作指紋,即可以代表某份文檔“身份”的一小段數據,類似于人類的指紋。每個人都可以通過指紋驗證其身份,但該指紋并不包含其身體的所有信息。文檔的指紋也是如此,可以很方便快速的通過文檔內容計算得出一小段唯一的指紋數據作為其身份證明,但是只有指紋數據就幾乎不可能得出原始文檔的內容。

對于兩份文檔,只需要比對其信息摘要(指紋)是否一致,就可以確保其內容是否相同,在傳播過程中是否被人惡意修改。同時該指紋信息也不會造成原始文檔本內容的泄露。

二、MD5

MD5 是一種比較古老的哈希算法,其名字中的 MD 即代表 message digest。它可以從任意大小的文檔計算出一個唯一的 16 字節長度的摘要數據。

PS:鑒于 MD5 較悠久的歷史和不夠長的摘要長度,不推薦在安全性很敏感的場景中使用該算法。

>>> from hashlib import md5>>> md5(b’alice’).hexdigest()’6384e2b2184bcbf58eccf10ca7a6563c’>>> md5(b’bob’).hexdigest()’9f9d51bc70ef21ca5c14f307980a29d8’>>> md5(b’balice’).hexdigest()’6760742ebf884c998752b4e082b78224’>>> md5(b’cob’).hexdigest()’386685f06beecb9f35db2e22da429ec9’>>> md5(b’a’).hexdigest()’0cc175b9c0f1b6a831c399e269772661’>>> md5(b’aa’).hexdigest()’4124bc0a9335c27f086f24ba207a4912’>>> md5(b’aa’ * 100000).hexdigest()’561b1994f6baacd6e5eaf4baaa12849f’>>> md5(b’alice’).hexdigest()’6384e2b2184bcbf58eccf10ca7a6563c’

從輸出中可以看出,針對不同的輸入內容(即便相似度很高,比如 bob 和 cob),摘要算法生成的輸出是發散的,彼此之間沒有相似性,像是隨機生成的結果。但是對于任意相同的輸入,生成的摘要數據則都是確定的、唯一的。

三、哈希算法的規則

一般我們提到哈希算法,都會關聯到密碼學、安全性等場景中,實際上我們很早就接觸了一種完全“非密碼學”的哈希場景。比如小時候跟老師學習判斷一個數是奇數還是偶數。。。從本質上看,哈希函數的目的是將巨大(甚至無窮大)數量的事物映射到一個相對較小的數據集中。比如 MD5,不管輸入的文檔有多大,最終都會生成一個固定長度(16 字節)的十六進制數字作為指紋。這就意味著 MD5 的輸入集合,實際上是大于其輸出集合的。即只要輸入文檔的集合足夠大(很大很大),就有可能出現重復的指紋信息。

這和判斷數字奇偶是相通的。不管某個數字有多大多奇特,我們永遠可以將它“壓縮”成奇數或偶數,用 1 bit 的 1 或 0 表示就可以。但是只說明某個未知數字是奇數(或偶數),我們就無法猜出該數字的準確值。

上面的邏輯驗證了哈希函數共有的 3 個特性:

consistency(一致性):相同的輸入只會生成相同的輸出信息 compression(壓縮):可以將體量很大的輸入壓縮成一個固定大小的輸出 lossiness(有損的):只通過檢查輸出無法反向計算出輸入值

但是對于一個滿足密碼學安全的哈希函數而言,除以上三點以外還需要具有如下屬性:

Preimage resistance Second-preimage resistance Collision resistance

Preimage Resistance

哈希函數的 preimage 是指能夠生成同一個特定指紋的所有輸入的合集。即對于某個哈希函數 H 與摘要 k,所有能夠生成 k 的輸入值 x (滿足 H(x) = k)共同組成了 H 與 k 的 preimage。

preimage resistance 的意義即為,在僅僅只是知曉某個摘要的前提下,通過有限的計算無法獲取其 preimage 中的任何一個元素。即只通過結果無法知曉輸入。摘要中不包含原始文檔的任何信息(lossiness),無法通過逆向運算的方式由摘要反推出原始輸入。只能隨機地嘗試任意輸入,以期碰巧得到同樣的摘要信息(暴力破解)。

因此前面提到的奇偶函數就不能作為一個安全的哈希函數使用。假設使用奇偶作為哈希函數(奇數輸出 1,偶數輸出 0),則對于摘要 1,總可以很輕易的在 preimage(此處是全體奇數)中找到任意多個摘要同為 1 的元素。這意味著原始輸入可以輕易被修改而不影響指紋數據,則該指紋作為信息完整性的驗證條件就失去了意義。

但是對于較安全的哈希算法如 MD5,由 MD5(x) = ca8a0fb205782051bd49f02eae17c9ee 就無法在有限的計算內找到確定的 x 的值。MD5 生成 16 字節(16 * 8 = 128bit)長度的摘要,其中可以包含 2^128 種不同的數字組合。因此使用暴力破解的話,最多需要嘗試 2^128 = 340282366920938463463374607431768211456 次!假設每秒鐘可以嘗試一百萬條輸入,仍需要 10^26 年完成所有驗證操作!

Second-Preimage Resistance 與 Collision Resistance

second-primage resistance 是指即便知曉某個原始文檔以及由該文檔生成的摘要數據,仍很難計算可以出生成同樣摘要的另一個不同的文檔。即在已知 MD5(alice) = 384e2b2184bcbf58eccf10ca7a6563c 的情況下,仍無法找出除 alice 以外的另一個輸入生成同樣的摘要。為了尋求可以替換掉 alice 的另一個值,同時不影響摘要認證,達到混淆的目的,最終仍需使用暴力破解的方式。

collision resistance 是指很難找出任意兩個生成相同摘要(相同而非特定)的輸入值。可以參考“生日問題”,即在一個班級中,存在兩個生日為同一天的學生的概率遠比存在一個生日為特定日期的學生的概率大得多。

collision resistance 的意義在于,無法故意找出兩套符合同一指紋的輸入以達到混淆的目的。比如 MD5 算法:

>>> from hashlib import md5>>> md5(’bob’).hexdigest()’9f9d51bc70ef21ca5c14f307980a29d8’>>> md5(’cob’).hexdigest()’386685f06beecb9f35db2e22da429ec9’

對于很相似的輸入 bob 和 cob,其指紋信息的差異卻非常大,沒有任何可供預測的規律。這得益于一種稱為 avalanche property 的特性:輸入的微小變化總可以在輸出中產生巨大的無法預測的差異。

由前面提到的生日問題可知,找出兩個生成相同指紋的元素遠比找出某個可以生成特定指紋的元素要容易的多。以 MD5 算法的暴力破解為例,后者往往需要做 2^128 次嘗試,而前者只需要 2^64 次嘗試。現實中 MD5 的 collision resistance 遠非想象中那么優異,甚至存在一種非暴力破解的方式 能夠在一小時以內攻破 MD5 的 collision resistance。所以盡量不要使用 MD5 這個已經不再維護超過 10 年、安全漏洞存在 20 年的古老算法。

參考資料

Practical Cryptography in Python: Learning Correct Cryptography by Example

以上就是python密碼學示例——理解哈希(Hash)算法的詳細內容,更多關于python 哈希(Hash)算法的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: Pos机办理_个人商户免费POS机申请-拉卡拉办理网 | 宝鸡市人民医院| 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 | LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 彩超机-黑白B超机-便携兽用B超机-多普勒彩超机价格「大为彩超」厂家 | 分子精馏/精馏设备生产厂家-分子蒸馏工艺实验-新诺舜尧(天津)化工设备有限公司 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 天津仓储物流-天津电商云仓-天津云仓一件代发-博程云仓官网 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 反渗透水处理设备|工业零排放|水厂设备|软化水设备|海南净水设备--海南水处理设备厂家 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 钢格板|热镀锌钢格板|钢格栅板|钢格栅|格栅板-安平县昊泽丝网制品有限公司 | 长城人品牌官网| 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | SMC-SMC电磁阀-日本SMC气缸-SMC气动元件展示网 | 长城人品牌官网| 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | 翅片管换热器「型号全」_厂家-淄博鑫科环保 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | OpenI 启智 新一代人工智能开源开放平台 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 暴风影音| 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 | 暴风影音| 环境模拟实验室_液体-气体控温机_气体控温箱_无锡双润冷却科技有限公司 | POS机办理_个人pos机免费领取-银联pos机申请首页 | 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 |