什么是“三分之二”的简单方法 - 在没有计算机的情况下保护 24 个单词的短语?

信息安全 加密
2021-08-12 21:57:39

我正在研究一种安全的方式来存储助记键。

  • 它有 24 个字长。
  • 每个单词是 11 位熵,基于标准单词列表
  • 我想将它存储在 3 个位置
  • 一盘不应该让你解锁密码
  • 两个盘子应该可以让你解锁代码

现在面对有趣的挑战

  • 如果我死了,我希望我的亲人能够提取助记键。他们对密码学一无所知。
  • 为了保护它免受火灾,我将它蚀刻在金属板上,因此解锁说明不会太长或太复杂。
  • 我希望它至少可以使用 100 年,所以我不能依赖任何当前的计算机软件。

我的第一个想法是在每个盘子中留下 8 个不同的单词,但这只是 88 位熵,太少而无法破解(或者是吗?)。还有一些工具可以使用助记词来执行 Shamir 的秘密共享计划,但如果没有计算机,这并不是真正的事情。

有没有其他好方法可以增加熵的位数而不会太复杂?也许混淆了单词或添加额外的单词或其他东西?

1个回答

我建议带有以下说明的板、一个解码表和一个等宽文本块(三个板不同),如下所示:

取两个盘子,将底部的文本逐个字母组合在一起,使用下面的解码表,以便第一个解码的字符是.(数字空格)。忽略它,然后以相同的方式解码其余部分以获得密码。

    | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z .
----+------------------------------------------------------
- A | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z .
- B | C A B F D E I G H L J K O M N R P Q U S T X V W . Y Z
- C | B C A E F D H I G K L J N O M Q R P T U S W X V Z . Y
- D | G H I A B C D E F P Q R J K L M N O Y Z . S T U V W X
- E | I G H C A B F D E R P Q L J K O M N . Y Z U S T X V W
- F | H I G B C A E F D Q R P K L J N O M Z . Y T U S W X V
- G | D E F G H I A B C M N O P Q R J K L V W X Y Z . S T U
- H | F D E I G H C A B O M N R P Q L J K X V W . Y Z U S T
- I | E F D H I G B C A N O M Q R P K L J W X V Z . Y T U S
- J | S T U V W X Y Z . A B C D E F G H I J K L M N O P Q R
- K | U S T X V W . Y Z C A B F D E I G H L J K O M N R P Q
- L | T U S W X V Z . Y B C A E F D H I G K L J N O M Q R P
- M | Y Z . S T U V W X G H I A B C D E F P Q R J K L M N O
- N | . Y Z U S T X V W I G H C A B F D E R P Q L J K O M N
- O | Z . Y T U S W X V H I G B C A E F D Q R P K L J N O M
- P | V W X Y Z . S T U D E F G H I A B C M N O P Q R J K L
- Q | X V W . Y Z U S T F D E I G H C A B O M N R P Q L J K
- R | W X V Z . Y T U S E F D H I G B C A N O M Q R P K L J
- S | J K L M N O P Q R S T U V W X Y Z . A B C D E F G H I
- T | L J K O M N R P Q U S T X V W . Y Z C A B F D E I G H
- U | K L J N O M Q R P T U S W X V Z . Y B C A E F D H I G
- V | P Q R J K L M N O Y Z . S T U V W X G H I A B C D E F
- W | R P Q L J K O M N . Y Z U S T X V W I G H C A B F D E
- X | Q R P K L J N O M Z . Y T U S W X V H I G B C A E F D
- Y | M N O P Q R J K L V W X Y Z . S T U D E F G H I A B C
- Z | O M N R P Q L J K X V W . Y Z U S T F D E I G H C A B
- . | N O M Q R P K L J W X V Z . Y T U S E F D H I G B C A
EKIAIJEBRP.ZOXHAOLKXMBWSPENLGKIIJYRDEYJQYOYISHMLQPRPNHKEPHNOLOMBCRDMGNXRSHBCQOVZFNIRIQFGPONEFDXAO.ILFHLCJEPVC..K
RTXAYBREAOWMYWXAWVYYXDIUBUSHKMVQWMJWVBHDBDNNEIBANTFECVXE.LVAFYBIMLTBD.PNYLCCCYNUN.XUJPVGQE.CFHPNRMYRPPLBBATDXMMG
SBLAQUSHWKSCBVJADHFTEIJTXPIVXRKYIANOOOXUOWCSRG.TKFUUYLGEHVFZ.B.DZOR.AABJVVACVBFVVALFWRNGRVAGFCB.LBQOT.LAUIFMRBBX

(每个板块只有上述三个文本块之一)。


.这解码为(包括要忽略的前导)

.SMALL.GREEN.BOAT.WITH.BROWN.HOT.MILK.ON.LOW.COLD.MOON.AT.TOP.OF.GOOD.RED.CAR.LIT.MY.BLACK.FAIR.GOLD.TABLE.SPOON

这是使用拉丁方格对密码短语的各个字母执行的手动 Shamir 秘密共享。在描述整个系统之前,我将通过一个使用 3 个符号的示例来介绍该原理。

如果密钥由 中的n位数字组成012,记下 K j其中 1 ≤ jn,例如120221.. 我们可以进行如下处理:

  • 一个盘子被标记E,后面跟着n 个随机数字012,记为 E j
      例如E012101..
  • 一个牌号R后面有n位数字012,记为R j,其中
      R j = (3 + E j - K j ) % 3;[其中 % 是模运算符]
      例如R222210..
  • 一个盘子S后面标有n个数字012,记为S j,其中
      S j = (3 + R j - K j ) % 3;
      例如S102022..

要恢复任何两个板块的密钥,请使用
    K j = (3 + E j - R j ) % 3;
    K j = (3 + R j - S j ) % 3;
    K j = (3 + S j - E j ) % 3;
取决于使用的板。这将恢复密钥。每个单独的盘子都是随机的,因此根本没有关于密钥的任何线索。

等效地,编码和解码可以使用这个减法表:

    | 0 1 2
----+------
- 0 | 0 1 2
- 1 | 2 0 1
- 2 | 1 2 0

这适用于三个以上的符号,通过以 3 为底表示。26 个字母和特殊符号.(用于空格)可以写为以 3 为底的三位数字,字母表ABCDEFGHIJKLMNOPQRSTUVWXYZ.由 000 到 222 表示。减法表 ( - ) 是盘子上的那个。

ABCDEFGHIJKLMNOPQRSTUVWXYZ.除了第一个是 之外,一个盘子具有均匀随机的字符E,另外两个盘子是根据密钥准备的,虚拟 K 0设置为.

    R j = E j - K j
    S j = R j - K j

解码是根据方程:

    K j = E j - R j
    K j = R j - S j
    K j = S j - E j

车牌的E R S开头允许识别它们,并导致.作为第一个字符的解密。