密碼學中安全性證明的random oracle模型是怎樣的?

時間 2021-06-07 05:49:56

1樓:玄星

Random Oracle就是乙個理想化的Hash

通常可以視為一張表,兩列,一列是用來寫輸入值x,一列用來記錄x對應的Hash,也就是H(x)

初始為,就是空空的兩列。

RO的行為可以這麼描述:

當輸入為x的時候:

1. 如果x和H(x)已經在表裡記錄過,就輸出H(x)

2. 如果沒有關於x的記錄,則RO完全隨機地在值域中選取乙個0,1字串(或者從其他希望對映到的元素集合中完全隨機的選取)當作H(x),把這個和x一起記錄在表裡,然後輸出這個H(x)。

這裡,最重要的安全性特徵是:

1. 對於Random Oracle,把乙個未曾記錄在表裡的新元素x對映到目標集合裡特定元素E的概率始終為

比如,要用RO來模擬把任意長度的01字串對映到乙個256位的01字串上的Hash,那麼把x對映到特定的乙個01字串H(x)的概率是 更一般地,比如對映到k位的01字串上,這個概率就是

2. 如果x未曾記錄在表裡,則RO相當於乙個完全隨機的函式。直觀上來說,就是RO自己都不知道x會被對映到哪個值。

3. 由2可知,任何詢問RO的人,即使拿到了除了x之外所有的RO的輸出,也無法確定x會被對映到哪個值。

而其他非理想情況的Hash,比如SHA-256,實際上是達不到這個要求的。

在Hashed RSA的安全性證明裡,就可以很清楚地看到RO的作用。

2樓:Alkis Tangelis

這是乙個理想化的模型,假定所有參與方有乙個公共介面的隨機函式,比如hash函式,可以假想為算hash函式的時候不是自己計算,而是通過呼叫乙個外接的隨機函式。

這樣在安全證明(reduction)中這個外接的函式可以被simulator替換來利用attacker去構造困難問題的solver,相當於attacker是乙個固定程式,他需要呼叫外接的隨機函式。

當然,這是理想化模型,存在完全不安全但是在RO下安全的primitive,但是積極的進展也有比如利用indistinguishability obfuscation在某些情況下來替換RO,UCE替換RO,能提供falsifiable的假設。

Java中提高密碼的安全性(禁止直接使用String),Spring Boot中有哪些現實的方案?

Biggee Lucloner 來來來,給個比較專業的意見。先講廢話。加密是一種標準化操作。驗證加密也是標準化操作。脫離標準就沒有意義了。比如 我愛中國 加密為 1 加密過程就是把1記到腦子裡。那這樣確實誰也解不開了 笑話講完了,正文就是,加密行為分為 演算法 混淆 填充。驗證行為分為,簽名 演算法...

租的房子是密碼鎖,我怎麼確定安全性?

飛利浦智慧型鎖 以飛利浦智慧型鎖為例 密碼解鎖的工作原理就是,把密碼 比如123456 錄入進系統,你才能用對應的密碼 123456 去解開這個鎖。所以只要我們恢復出廠設定,讓智慧型鎖把之前錄入進系統裡的所有資料清除,這樣就不必再擔心之前的人設定過什麼密碼這個問題,因為資料已經完全清空了。想要最大程...

怎麼理解密碼學中的 可延展性 ?

Bing 延展性 Malleability 1 是指給定未知訊息m的密文c,可以得到未知訊息 的密文 其中m和 具有某種已知的關聯,從而導致選擇密文攻擊 CCA1 圖來自https www.slideserve.com iren new results on pa cca encryption,侵刪...