Hash

不可區分混淆器在混淆密碼檢查功能時會洩露密碼嗎?

  • July 7, 2022

假設我有一個愚蠢的密碼檢查功能:

def dumb_checker(password):
   return password == "my_secret_key_that_should_not_be_revealed"

可以通過散列密碼來隱藏密碼,如下所示:

def obfuscated_checker(password):
   return hash(password) == PRECOMPUTED_HASH_OF_MY_SECRET_KEY

這意味著不可區分混淆器( $ IO $ ) 也應該隱藏密碼,因為它是最好的混淆器。

但是不可區分性混淆器不能接受任何密碼檢查功能並返回dumb_checker作為規範形式嗎?對於任何兩個等效的實現 $ F_1 $ 和 $ F_2 $ , 兩個都 $ IO(F_1) $ 和 $ IO(F_2) $ 等於dumb_checker函式,所以對手將無法區分他是否被給定 $ IO(F_1) $ 或者 $ IO(F_2) $ . 然而,這種混淆並沒有隱藏密碼。

但是不可區分混淆器不能接受任何密碼檢查功能並將dumb_checker作為規範形式返回嗎?

不,為了這樣做,混淆器必須能夠取消散列常量。

引用自:https://crypto.stackexchange.com/questions/100895