交換加密消息,並在沒有公鑰的情況下解密?
我對加密知之甚少,但我希望有人能闡明我今天早上在腦海中製定的這個密文交換方案:
Bob 想向 Alice 發送一條消息,但不希望中間的任何人發現消息是什麼。
我們會打電話給消息 $ p $ 並將其編碼為數字。事情就是這樣;Bob 選擇一個隨機但秘密的數字 $ x $ . 他計算 $ p \times x = c $ 並發送他的密文 $ c $ 給愛麗絲。愛麗絲然後選擇一個隨機但秘密的數字 $ a $ . 她計算 $ a \times c = q $ 然後發送 $ q $ 回到鮑勃。鮑勃會 $ q / x = f $ 並將其發送回愛麗絲。愛麗絲然後做 $ f / a = p $ .
抱歉,如果沒有任何意義,但是當沒有公鑰但消息被加密和解密而沒有交換任何秘密密碼時,這稱為什麼樣的加密?
您正在描述一種形式的三通協議,這是一種通信機制,任何一方都不需要知道彼此的密鑰。維基百科使用一個可以被兩個掛鎖鎖住的盒子描述了一個有用的比喻:
首先,Alice 將秘密消息放入一個盒子中,並使用只有她自己擁有鑰匙的掛鎖鎖住盒子。然後她通過普通郵件將盒子寄給鮑勃。當 Bob 收到盒子時,他將自己的掛鎖添加到盒子中,然後將其發送回 Alice。當愛麗絲收到帶有兩把掛鎖的盒子時,她取下掛鎖並將其寄回給鮑勃。當 Bob 收到上面只有他的掛鎖的盒子時,Bob 可以用他的鑰匙打開盒子並閱讀 Alice 的消息。
我假設您只是將乘法和除法用作範例函式,但正如其他人所提到的,這些操作不適合此任務,因為它們太容易反轉。然而,確實存在確實以這種方式工作的實際加密和解密函式 - 必要的屬性是操作是可交換的,因此加密和解密不需要按特定順序完成。
為了使加密函式和解密函式適用於三通協議,它們必須具有對於任何消息
m
、e
具有相應解密密鑰的任何加密密鑰d
和任何獨立加密密鑰的性質k
,D(d,E(k,E(e,m))) = E(k,m)
。換言之,e
即使k
已經使用密鑰執行了第二次加密,也必須能夠移除使用密鑰的第一次加密。這將始終可以通過交換加密實現。交換加密是一種與順序無關的加密,即它滿足E(a,E(b,m))=E(b,E(a,m))
所有加密密鑰a
和b
所有消息m
。交換加密滿足D(d,E(k,E(e,m))) = D(d,E(e,E(k,m))) = E(k,m)
.…
一個
$$ further $$三通算法安全的必要條件是攻擊者無法
m
從三個傳輸的消息中確定有關該消息的任何資訊E(s,m)
,E(r,E(s,m))
並且E(r,m)
。第二個條件消除了乘法和除法,因為我們可以查看三個傳輸的消息
s*m
、r*s*m
和 ,r*m
並輕鬆地m
從中計算。
首先:與您的聲明相比,它確實使用了公鑰。更加具體 - $ q $ 是 Alice 的公鑰,並且 $ f $ 是 Bob 的公鑰。兩者都是公開轉移的,可能會被 MITM 攔截。
這使我想到了下一點:您在腦海中製定的系統非常不安全。
我們會打電話給消息 $ p $ 並將其編碼為數字。事情就是這樣;Bob 選擇一個隨機但秘密的數字 $ x $ . 他計算 $ p \times x = c $ 並發送他的密文 $ c $ 給愛麗絲。愛麗絲然後選擇一個隨機但秘密的數字 $ a $ . 她計算 $ a \times c = q $ 然後發送 $ q $ 回到鮑勃。鮑勃會 $ q / x = f $ 並將其發送回愛麗絲。愛麗絲然後做 $ f / a = p $ .
所以,實際上你的想法是這樣的:
- $ X_{Bob} \times P_{Bob} = C_{Bob} $
- $ C_{Bob} \rightarrow $ 愛麗絲。
- $ A_{Alice} \times C_{Bob} = Q_{Alice} $
- $ Q_{Alice} \rightarrow $ 鮑勃。
- …
注意:在這個階段,MITM 攻擊者可以簡單地將被攔截的 $ Q_{Alice} $ 和截獲的密文 $ C_{Bob} $ 計算愛麗絲的秘密 $ A_{Alice} $ ,做一個簡單的 $ C_{Bob} / Q_{Alice} = A_{Alice} $ . 這意味著——與你的想法相反——愛麗絲的秘密 $ a $ 根本不是秘密。
您的想法還有一些其他問題,但由於目前情況實際上已經被打破,我將避免深入研究。我的建議是不要試圖重新發明輪子,而是依賴可用的、經過嚴格審查的加密協議。(想到的一件事是Diffie-Hellman 密鑰交換,它非常接近您的想法。)