1

前提是人 1 想通过大洋向人 2 发送秘密消息 M(没有密钥共享)。她决定通过 3 艘船发送部分消息,这样如果任何两艘船的版本被传递,人 2 就可以构建完整的消息原始信息。目标是使每个部分消息(M1,M2,M3)本身无法破译。在所有 3 条消息都到达的情况下,冗余消息可以用作 ECC/奇偶校验。

假设消息由一系列 8 位字符 (m1,m2,m3...,mM) 组成。在最有效的编码中,len(M1+M2+M3) 将是 1.5X len(M)。

一个低效的编码是:M1 每个字符由上半字节 (UN) 加上下半字节 (LN) 组成,M2 由 UN 减去 LN 组成,M3 就是简单的 LN。M1 和 M2 每个字符使用 5 位,M3 每个字符使用 4 位。

注意:分配可以旋转使得 M1 得到 UN+LN,UN-LN,LN,... M2 得到移位 UN-LN,LN,UN+LN,.. M3 得到双重移位 LN,UN+LN, UN-LN 为了:

1) 使消息长度相同(每 3 个字符) 2) 添加进一步的混淆

这种模式有效但效率不高。任何建议的改进或替代方法?

4

1 回答 1

0

假设消息由一系列 8 位字符 (m1,m2,m3...,mM) 组成。在最有效的编码中,len(M1+M2+M3) 将是 1.5X len(M)。

满足此要求的方案是:

  • M1:高半字节(4位)
  • M2:低半字节(4位)
  • M3:高半字节和低半字节的异或(4位)

IE:

    bit of original 8 byte:
M1: 7   6   5   4
M2: 3   2   1   0
M3: 7^3 6^2 5^1 4^0

在收到 M1 和 M2 的情况下,您有消息。在接收到 M1 和 M3 的情况下,可以通过将 M1 与 M3 异或来重构 M2。在接收到 M2 和 M3 的情况下,可以通过将 M2 与 M3 异或来重构 M1。在每种情况下,第三个值都可以用作奇偶校验。

通过改组半字节中每个位的含义,可以进一步混淆代码。例如,位 0 可以使用上述方法,但对于位 1(半字节),低半字节可能在 M1 中,异或值在 M2 中等。即:

    bit of original 8 byte:
M1: 7   6^2 1   4
M2: 3   6   5^1 0
M3: 7^3 2   5   4^0

请注意,这是混淆,而不是安全性。

于 2015-06-02T03:09:58.983 回答