存在利用魔方性質的加密演算法嗎?

閑著瞎想突然蹦出來的一個想法

一個m維(假設四維)n階(假設8階)的理想魔方

把明文記錄在剛開始的24個面上,隨機轉動

把新的魔方作為密文發送

轉動順序作為密鑰

每個小塊的一小面帶6bit信息,5bit編號標記它屬於哪個面,1bit傳遞信息

每次可帶24個8×8點陣圖

進階連續魔方加密

每塊的小面可攜帶大量bit

隨機轉動後,把轉動順序寫在其中一面,把明文寫在其他面

重複上一步

我不清楚魔方的還原演算法,不過只要增加魔方的維數,複雜度會大大增加。但是知道轉動順序解碼就非常簡單

感覺很適合做成加密演算法,密碼學有類似的演算法嗎?


謝 @劉巍然-學酥@王希 邀。

深夜和二位大神討論了一波這個問題,作為打賭連輸三次的我滾來答題。

一句話結論

存在,但是幾乎無法構造出安全的加密演算法。

簡單解釋

首先值得注意的是,魔方的轉動本質上可以表示為一個張量或者放到一個交換群中表示。所以這是個對稱加密方法,本質上和AES加密的sbox混淆是沒有區別的,都是一個單射函數。

但是AES並不使用sbox本身作為密鑰,而魔方群加密則使用單射函數的分解作為密鑰。

這也就註定了前者是相對安全的,後者是相對不安全的。

魔方群

一般來說,為了構造一個加密演算法,我們需要有一定的數學工具來表示我們的演算法。對魔方而言,我們可以將對魔方的打亂看做一連串的旋轉。我們會發現每次旋轉都會把一些顏色塊挪到另一個顏色塊的位置上去。而且滿足下面的性質:

  1. 色塊的數量不變
  2. 每個色塊在變換前後都存在唯一的位置,既不會分身也不會消失

所以魔方的旋轉操作可以表示為一個置換群。

既然他已經是個置換群了,那麼就和一般的置換加密沒區別了。

當然我知道,你肯定還不死心,魔方有神奇的魔法,一定和那些妖艷的密碼本不一樣。

所以我們來設計一下演算法原型:

1 假設一個白色理想三階魔方,通過往魔方上填寫明文然後旋轉魔方的方法加密。

旋轉的時候我們使用標準的記法來表示我們的旋轉:

R 表示面對右邊的面順時針旋轉90度

R『表示面對右邊的面逆時針旋轉90度

同理,L是左面,U是上面,D是下面,F是正面,B是背面

比如我們這個可愛的三階魔方有6個面每個面9個小格子。每個小格子寫一個字。一共54個字:

「我喜歡一個姑娘,她笑起來很甜,每年我們一起吃一頓飯,聊聊閑天,我以為這樣就可以只如初見,但最後還是天各一方。」

然後我們的加密方法是RUUR"U

首先我們把他們分組:

我喜歡

一個姑

娘,她

笑起來

很甜,

每年我

們一起

吃一頓

飯,聊

聊閑天

,我以

為這樣

就可以

只如初

見,但

最後還

是天各

一方。

然後旋轉魔方默念咒語:RUUR"U

嘛哩嘛哩哄!

天一起

一個可

娘,就

們喜還

閑甜,

聊年我

年很笑

吃一頓

飯,聊

就一見

,我以

為這樣

歡姑她

可如,

我初但

最後起

是天各

一方。

雖然有點不太好的感覺,但是還是把他們寫成一串看看吧:

天一起一個可娘,就們喜還閑甜,聊年我年很笑吃一頓飯,聊就一見,我以為這樣歡姑她可如,我初但最後起是天各一方。

這加密了個屁啊,孫子輩的都能看出來是個十動然拒的故事了啊。媽的智障。

首先,密鑰的長度太短了,不構成一個有效的加密方法。所以我們換一個長一點的

比如三階魔方公認的十五步打亂公式之一:

U2 R" D2 F D R" U" D F" L R U" F D" F"

打亂之後就變成了這樣:

最,飯,個,還,就我吃一放甜一天一歡為閑天一一姑但以出我年樣很我喜們是每見只聊各如,娘頓。歡放起這天一我年每

搞毛啊,一眼還是能看出來是個十動然拒的故事啊,一開頭那麼多一,一看就是個注孤生的故事啊。這特么長了根本沒有卵用啊。

ops! 無法承受統計攻擊

上面這個例子充分體現了置換加密的通病,我們只需要簡單地使用統計工具就可以輕鬆解決掉魔方加密。常見的統計攻擊方法比如:

頻率攻擊:就是我計算一下整個文本中的文字頻率,再根據常見的辭彙組合來還原原文。

語義攻擊:比如我看見這個句子里都是什麼一,喜歡,吃,我,她這樣的字眼,很容易就推斷出這密碼的原文是個吃貨十動然拒注孤生的故事。

既然我們已經知道了演算法的弱點,小修小補一下是不是就可以了。

比如我們使用隨機數加密一下原文再拿到魔方里混淆。

聽起來不錯。

比如:

Every human being has a basic instinct: to
help each other out.

通過魔方加密之後:

ics uacsievt o hbhere l n hmi nienueoottghht ca:.anytrpsaEba

再用隨機字元串加密:

ponattus nnhoha sa a b aaratbr hig uoh ma yhonrs seo o ybiu

哈哈哈哈哈哈!媽媽都認不出來啦!

且慢!

我們需要還原這個密碼太複雜了!

你看,對方為了解密我們的密碼,需要把兩個密鑰,

一個隨機串

hhiepo oEh.te ap:n ovh i ao h oh abn.mhEcnE s huonmcthn tcr u

還有個置換群運算元

U2 R" D2 F D R" U" D F" L R U" F D" F"

特么比原文還長了好嗎!

仔細一想還的確是這麼回事。

我要使用魔方加密的話,密鑰是旋轉動作串。

一共有6個面,一正一反一雙一共18個動作。

精簡一下不要180度表示法也有十二種動作,

至少要4bit來表示,一個足夠強的密串需要15-20次操作,也就是至少60bit。

而明文空間只有54bit.....

高維度空間的時候只能讓這件事變得更糟糕....

我覺得說道這裡就已經沒救了....

畢竟,如果用

奇數階魔方的話中心塊是不會變的,

偶數階魔方的話也是存在隠式不變形的。

也就是說,魔方置換群甚至不能算作一個合格的置換加密方法。

但是老師,我還想再給力一點。比如作為一個核把加密演算法設計成非對稱加密

同學...你的出發點是好的。但是這樣的話我們就面臨了兩個困境:

首先,加密步驟中起到保密作用的是非對稱變換,比如離散對數變換,而不是魔方置換群。

其次,魔方置換群的密鑰長度增加並不能有效地增加加密演算法的保密性。

畢竟3階魔方15-20次就已經完全混淆了,4階需要40-50次打亂。

總體上來看,混淆極限是和階數的平方正相關的。這個增長速度太慢了。

老師,我覺得高維度魔方應該還可以搶救一下

那我們需要把剛才討論的問題再拿出來說一遍,別的我就不廢話了。

一句話按死你:

隨著魔方維度的增長,明文空間的增長速度和一個單元密鑰佔用空間的增長速度是一致的。最後還會導致總結中的致命缺陷2。

總結

使用魔方置換群作為加密演算法會面臨以下問題:

1 置換加密通病

2 明文空間有限,密鑰比明文長

3 置換群存在不變形陷阱

4 密鑰長度增加並不能有效提高保密性

結論

這個加密方法並不安全,用來表白應該不錯。

延伸閱讀

【0】安全性 :在有限專家間評議加密演算法是不是比直接公開更安全? - 網路安全

【1】置換群 :Permutation group

【2】AES加密: Advanced Encryption Standard

【3】置換加密: Transposition cipher

【4】對稱加密: Symmetric-key algorithm

太晚了,我先睡了,想到什麼明天再補充好了


題主所述的演算法可以作為加密演算法,但這一演算法的安全性很可能很差。

魔方,無論是常見的三階魔方,或是題主所述的高維高階魔方,其轉動的本質是置換,無非只是置換集合較大而已。從而題主所述加密演算法本質上就是傳統的 置換加密(Transposition cipher),其缺陷此處不再贅述,可以參看維基相關章節。


這個只能算是編碼演算法,不能算加密演算法

要知道德棍的恩格瑪機比這個高到不知道哪裡去了,圖靈還不是和它談笑風生?


今天在網上偶然間看到這麼一篇文章,Rubik』s for Cryptographers,還沒細看,有興趣的朋友可以先看一下……


就不能找個大點的魔方嗎!


成龍歷險記里的潘庫寶盒。


字頻分析一下,這個演算法很尷尬…


計算量?

上64邊形,100階


不明覺厲,能轉載到微博上嗎?


額,我幾年前大一時,本科同屋的同學就做過這個,參加學校比賽來著,給了個院三等獎。


有,不安全。


推薦閱讀:

如何在一個月內入門密碼學?
如何證明 f(x)=m^x mod N 的周期性?
這串字元什麼意思?
軍事級加密演算法有哪些?
假設一個對人類文明一無所知的外星種族,得到了一套詳盡描述了人類文明的文字資料(有字無圖),他們能否解讀資料,並且還原人類文明的樣貌?

TAG:魔方 | 密碼學 | 加密演算法 | 信息安全和密碼學 |