標籤:

怎麼讓一段信息在特定某一天才能解密?

各位加密學dalao們,問個問題

我突發奇想

我給小明寫一段信息,但是要求他在特定某一天才能知道其中的內容,而且我與他的通訊只有這一次。

如何能做到呢。

不藉助可信第三方。


這個領域叫做 Time-lock puzzle 或 Timed-release encryption。簡單來說:

1. 要麼這個解密演算法依賴於你自己(或可信第三方)直到將來的那個時候才放出一個信息用於解密(不滿足題意);

2. 要麼這個解密演算法需要通過解一個計算量足夠多的、不可並行化的數學問題來完成,即設計一個『工作量證明(Proof of Work)』。這個方向就有比較多現成的工具可以用了。但這個方法一來要求解密者需要持續不斷地進行解密,二來也跟解密所用的CPU頻率有關,因此未必能很精確地控制時間。實際商用場景中Proof of Work更多地是用來防止互動式系統的暴力猜解(例如bcrypt),而不是用於建造題主所需要的『時間膠囊』。

參考:http://cs.brown.edu/~foteini/papers/MathTRE.pdf


如果是狹義的通訊,那麼你可以用其他第三方事件完成解密信息的發送,只要你知道這個事件確定會發生而且別人無法預知。比如你知道三天後要搞大新聞,新聞聯播節目會延長到50分鐘,那麼你可以把50當成密鑰並約定三天後看新聞聯播主播怎麼說

但這個是廣義的通訊,所以可能不符合題意


將密鑰放到離收件人(光速 × 距收貨時間)那麼遠的地方。

例如如果你希望小明一年後才能得到密鑰,那麼就放到一光年開外。

畢竟信息的傳遞是不能超過光速的。


除非你有預知未來的能力,否則那是不可能的。

1,加密時一定掌握解密的信息

2,要求解密的信息必須在未來某刻才能被掌握

矛盾。

你只能放寬條件,把第二點改成:解密信息只有未來某刻才能除被加密者外其他人掌握,


以前我就思考過這個問題,結論是基本不可能。

無論機制如何設計,這個需求在理論上要求一個除了你自己之外別人都不可預測的、只在特定時間之後才出現的信息源。而這種信息源,貌似只能是等那時候你自己肉身放出密鑰了。

除此之外想不到什麼計時機制不會被欺騙式地人為加快。其實人肉計時也可以被某些手段欺騙而加快或者減緩的……


我想過 這個問題 如果 只是單純通過演算法 實現幾乎不可能。因為計算機的時間永遠都是可以人為改變的(你可以回到過去也可以穿越到未來 只要你改一下系統時間就行)。

唯一的途徑只有讓時間 在解密方不可控,變成客觀因素。

那麼結果就是:

你需要演算法需要一個雙密鑰(目前這個應該不難找到把?當然也可以把單密鑰的演算法拆分成兩段)。

那麼剩下的事情就是把一個密鑰放在伺服器(但是只有當伺服器的時間到達未來某個時間點之後才放出來)。另一個密鑰發放給需要解密的人。

解密必須要兩個密鑰同時存在。

這樣時間就可以由伺服器進行控制。

那麼只要伺服器不倒閉,解密時間到了伺服器放出密鑰 保證解密的需求還會被執行(人沒死,或者已經死了還有人去執行解密操作 完成解密需求)。解密方得到了完整的密鑰順利解密。

你的需求就完成了。


https://github.com/selfeed/S/blob/master/usecases/lottery.md

簡而言之,就是需要無法並行優化的N次運算,在當前計算機極限下,就代表了預期的解密時間


做一個內置了時鐘、到了特定日期自動解鎖的保險箱。把你的消息通過某種介質放在保險箱里。完活~


令密鑰處在小明當前的事件光錐之外,且在解密的那一天才進入小明的事件光錐內即可。


給一個密文,弄一個非常複雜的表達式什麼的,f(x)=(e^arctan(sigma(sin(i)^4,-x&<=i&<=x)))blablabla什麼的弄上再給他一個初始值,讓他迭代x=f(x)10^12遍之類的然後得到的答案是秘鑰,我覺得這個暴力算怕是要個幾天


本質上,在時間維度中,未來某段時間必須100%概率不發生,相當於在挑戰量子力學的上帝擲骰子。


純機械操作的計時器即可


時間是虛假的命題


在這個特定的日子發出信息。


小夥子,看你雙眼無神,印堂發黑,近期可能有血光之災,稍有不慎還有性命之危,還好你遇到我,來給你一個錦囊,在今晚子時打開,造著錦囊所說做,可保你平安,記住子時才能打開,如果時辰不對反受其害,可能孤獨終老。


想好你要哪天告訴小明,把你要說的東西寫下來,給你家狗叼著送過去就行了。

看了看其他答主的答案我竟陷入了沉思~手動滑稽


在文件頭部增加一個參數,加密的時鐘信息,這樣只有在特定時間可以計算出密鑰解密文件


不可能。時間是個約定俗成的東西,每個人自己的時間可能都不一樣,你想讓信息「9點」後解鎖,但是什麼時候是所謂的「9點」呢

1. 你自己的表到了「9點」:但是「通訊只有這一次」,你無法再把這一信息告訴對方;

2. 對方的表到了「9點」:對方把表調快些不行嗎?

3. 某第三方的表到了「9點」:有可信的第三方,哪用得著這麼麻煩


現在大部分電子郵件都支持定時發送功能。如果那個小明一直是可以上網的(你可能上不了),那麼解決的方法就是定時發送,很簡單。

如果你和小明今後都會處於與網路隔絕的狀態,比如兩人就此分別一個去宋朝一個去明朝……就我所能想到的,辦法也是有的,就是可能不太精確。

嗯,我想到的就是角膜環測定年齡法。

照著鏡子觀察眼球,會發現角膜圍著一條白色曲線,曲線越長年紀越老.生理年齡達80歲時,這條曲線會完全閉合,成為一個環狀。因此角膜環(角膜白線)可以粗略地測定年齡。

可以製作一個程序,首先要輸入小明現在的眼角膜、虹膜資料。然後告訴小明,在你多少歲的時候,用他的電腦(需要有相應規格攝像頭)掃描他的眼角膜環,通過掃描,系統判斷小明已經長到多少歲了,那麼就解鎖相應的文件。目前來看正負誤差可能有1年左右。


希望藏貓貓這個遊戲能給你啟發。


推薦閱讀:

DES加密解密結果為何不一致?
請推薦一些密碼演算法具體實踐的書籍?
橢圓曲線來數字簽名每次簽名都不一樣?
如果我隨意打出亂碼,可不可以用密碼學解出有意義的信息?
為什麼計算機科學如密碼學喜歡用 Alice 和 Bob 舉栗子?

TAG:加密 | 密碼學 |