fuzzy hash(模糊雜湊)演算法

2021-06-07 00:13:15 字數 1559 閱讀 8889

最近看一篇*****,無意中看見了一種模糊雜湊演算法——fuzzy hash演算法。於是立刻去翻閱相關資料,整理出如下文章。

首先說說雜湊演算法。

大家都知道函式實際上就是一種對映,本質是將乙個集合通過對應法則f對映到另乙個集合。 而雜湊演算法是乙個特殊的函式,他具有的特點是,定義域是乙個不確定的無限集合而值域是乙個有限集合。簡單來說,雜湊演算法就是將乙個任意大的資料項(如計算機檔案)對映為固定長度(比原資料短的多)的二進位制位串,也就是雜湊值。就目前而言,雜湊演算法依然能夠確保它是原始資料的唯一標識,就像人的指紋可以唯一地標識乙個人,因此雜湊演算法還具有精確匹配的特性。

常見的雜湊演算法包括:md5、sha1、sha256、crc32等等。就不多說了

好了,對雜湊演算法有了基本概念,就來談談由此發展而來的fuzzy hash(模糊雜湊)演算法。

上文提及了雜湊演算法具有精確匹配的特性,具體來說就是,原檔案哪怕僅僅只是乙個位元組的變化也會導致最後的雜湊值發生明顯的變化。這個特性使得雜湊演算法能夠確定乙個檔案是否被修改過,然而這也帶來了很大的侷限性,那就是無法分辨內容稍有不同的同類檔案。這對我們的反病毒過程來說是很不利的,因為乙個樣本的變種是數量最多的。

於是我們為了解決這個問題,發明了模糊雜湊演算法。該模糊雜湊的演算法與模糊邏輯搜尋很像,它可以尋找相似但不完全相同的文件,即所謂的同源性檔案。模糊雜湊演算法是基於雜湊演算法的,和雜湊演算法的不同點在於,雜湊演算法是將整個檔案作為定義域來求算結果,而模糊雜湊演算法則是先對檔案進行分塊,計算每一塊的雜湊值,然後將得到的一系列雜湊值利用比較函式於其他雜湊值進行比較,來確定相似程度。

簡而言之就是:分塊——》對每個分塊分別計算雜湊——》結果比較

分析一下這樣的演算法有什麼優勢:比如我把乙個檔案的某一小部分進行了修改,如果是傳統雜湊由於是對整個檔案進行計算,因此這一點改變就導致了結果的不同。而模糊雜湊由於先對檔案進行了分塊,因此僅僅對某一部分進行修改只會導致某一或某幾個分塊的雜湊值發生變化,而其他分塊的雜湊值並不變化,通過對比就可以很容易發現相似性。

目前模糊雜湊演算法,有開源研究專案

ssdeep:

原版研究在這裡,

identifying almost identical files using context triggered piecewise hashing

然後我們來看看金山的微特徵,通過對國家專利局的檢索,我們發現了金山的微特徵提取專利,

摘要如下:本發明涉及計算機防毒軟體領域,尤其涉及一種對病毒檔案自動提取特徵的方法和裝置。對病毒檔案自動提取特徵的方法,在病毒檔案中選取n個適合提取病毒特徵的固定位置,每個固定位置分配乙個位置id號,以其中m個固定位置的位置id號和這m個固定位置所對應的特徵值作為病毒特徵;所述特徵值是指以某個所述固定位置為起點,取長度為l的一段二進位制資料來計算的hash值;其中n≥2,m≥2且m≤n,l>0。本發明方法和裝置所提取的病毒特徵大大提高了檔案掃瞄的速度;而且可以用乙個病毒特徵匹配大量的相似或者相同的病毒檔案。

從摘要就能總結出金山微特徵具有如下特點:首先它是基於hash值的,並且是取固定長度的檔案塊來計算雜湊值,且對乙個檔案提取了多個分塊。

簡而言之就是:確定分塊位置並記錄——》分塊——》對每個分塊計算雜湊值——》結果比較

和模糊雜湊的理論基礎以及整個流程如出一轍,我不說你懂得!

高斯模糊演算法

正太分布,又稱高斯分布 正態分佈的前世今生 上 正態分佈的前世今生 下 通常,影象處理軟體會提供 模糊 blur 濾鏡,使產生模糊的效果。模糊 的演算法有很多種,其中有一種叫做 高斯模糊 gaussian blur 它將正態分佈 又名 高斯分布 用於影象處理。本文介紹 高斯模糊 的演算法,你會看到這...

模糊PID演算法

在講解模糊pid前,我們先要了解pid控制器的原理 本文主要介紹模糊pid的運用,對pid控制器的原理不做詳細介紹 pid控制器 比例 積分 微分控制器 是乙個在工業控制應用中常見的反饋迴路部件,由比例單元p 積分單元i和微分單元d組成。pid控制的基礎是比例控制 積分控制可消除穩態誤差,但可能增加...

高斯模糊演算法

通常,影象處理軟體會提供 模糊 blur 濾鏡,使產生模糊的效果。模糊 的演算法有很多種,其中有一種叫做 高斯模糊 gaussian blur 它將正態分佈 又名 高斯分布 用於影象處理。本文介紹 高斯模糊 的演算法,你會看到這是乙個非常簡單易懂的演算法。本質上,它是一種資料平滑技術 data sm...