Encryption

顯示直到第 n 條消息的所有資訊

  • May 22, 2018

有沒有辦法生成一系列密鑰,這些密鑰具有暴露這些密鑰的屬性將顯示所有以前的密鑰,但沒有未來的密鑰?

我正在考慮一個每天發送加密消息的應用程序,有時我想在任何時間點向其他方透露所有過去消息的內容,但不透露任何未來消息。

一種可能的方法是對一些數據x時間進行散列,然後將最終散列用於第一條消息,將x-1第 th 散列用作第二條消息的鍵,將第x-2th 散列用作第二條消息的鍵,依此類推。向任何一方透露x-n密鑰允許他們對其進行多次散列以獲得所有密鑰,x並且x-n無法訪問任何以後的密鑰。但這限制了應用程序的消息總數,並且需要事先完成大量工作。也許有更好的方法?

有沒有辦法生成一系列密鑰,這些密鑰具有暴露這些密鑰的屬性將顯示所有以前的密鑰,但沒有未來的密鑰?

一種可能性:選擇一個難以考慮的值 $ n = pq $ ; 發布價值 $ n $ (或將其包含在每天的“密鑰”中),並保持分解的秘密。如果你選擇它會讓事情變得更容易 $ p \equiv q \equiv 3 \pmod 4 $

然後,選擇一個隨機二次殘差 $ r_0 $ (您可以通過選擇一個隨機值來完成 $ t $ 和計算 $ r_0 = t^2 \bmod n $ )

然後,為了每一天的秘密 $ r_i $ , 你可以計算第二天的秘密 $ r_{i+1} = \sqrt{r_i} \bmod n $ (即模平方根);有四個這樣的平方根;你會想要一個二次殘差。

這實際上比聽起來容易。如果你接受我的建議 $ p \equiv q \equiv 3 \pmod 4 $ ,那麼您需要做的就是計算:

$$ r_{i+1} \mod p = r_i^{(p+1)/4} \mod p $$ $$ r_{i+1} \mod q = r_i^{(q+1)/4} \mod q $$ 並結合 $ r_{i+1} \mod p $ 和 $ r_{i+1} \mod q $ 使用 CRT 重建 $ r_{i+1} $

這解決了您的問題,如:

  • 計算下一個鍵和因式分解一樣困難 $ n $
  • 計算以前的密鑰很容易,因為 $ r_{i-1} = r_i^2 \bmod n $
  • 您可以根據需要計算下一個鍵

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