完全秘密的可變一次性墊
考慮一個可變的一次性填充,即 $ \mathcal{M}:={0,1}^{\leq \ell} $ 是純文字的集合。現在,這個方案並不是完全保密的,因為你可以取兩個不同大小的純文字,比如說 $ |m_1| = 1, |m_2| = 2 $ 並考慮密文 $ c $ 長度為 1,接下來發生: $$ Pr(E(k, m_1) = c) = \frac{1}{2},\ Pr(E(k, m_2) = c) = 0. $$
因此,我怎樣才能構造這個可變的一次性填充物,使其完全保密?甚至可能嗎?
我嘗試製作一次性墊,即 $ \ell $ 一次性墊,但是當您有兩條長度相同的消息(與上面相同)時它不起作用,所以我的另一個想法是將所有消息擴展為長度 $ \ell $ 通過在右側添加零。但問題是,如果你考慮 $ \ell = 4 $ ,您如何解密消息 1、10、100、1000?
(二進制)一次性密碼確實被證明在資訊論意義上是完全安全的,假設如下:消息長度準確 $ n $ 和統一隨機性的共享來源。
人們經常忽略此安全定義不適用於發送可變長度數據的一般環境。例如,一個應用程序在哪裡是
yes
和no
是唯一發送的消息在天真地應用一次性填充時是不安全的。解決方案 1:消息填充 最簡單的方法是應用長度隱藏機制,一種將消息填充到相同長度然後加密填充消息的填充方案。即。對於長度的消息 $ l $ , 消息可以被填充到長度 $ k = l + 2 $ (長也可以工作)。的填充 $ m $ 是 $ pad(m) = m |10^{k - |m| - 1} $ . 這是可以做到的,因為問題陳述不限制焊盤的長度。
解決方案2:編碼到一個組。既然有 $ k = 2^l $ 消息,另一個想法是將消息(雙射地)編碼成具有相同基數的類組結構;從那裡,可以在組上應用 OTP。解密需要解碼。最簡單的例子是 $ (\mathbb{Z}/k\mathbb{Z}, + ) $