this is a tool for shamir
快速安装:
git clone https://github.com/lhxdz/shamir.git
cd shamir
make install
使用 shamir --version
来验证
输入门限值
root@DESKTOP-0GALLEM:~/project/shamir-tools# shamir encrypt -t 2 -n 3 "this is a secret.同时可以使用中文。"
necessary key: 6IznUBFJvXlEgv1jFCGH4OsE4zPmhPVcHvcyrzVXPOMjCuu1gZxZgbq1CAWmd_41HtWR0abOmnN2ZbElB9ojNixNHGK2ZVIXPpOHs8nffiT
+-------------------------+-------------------------------------------------------------------------------------------------------------+
| KEY X | KEY Y |
+-------------------------+-------------------------------------------------------------------------------------------------------------+
| 26NJWXnvHHD_5NG3WEZJY6c | 1qXaP2vhGW7j7hDFBvdwP5fyMxFUJFZKCNkPHJg5e1XhkM4X6dZaKlGRd4X2F_13CXA5E6TcTMJGZumnJdRrnokzw97X65T2M8HPmHN3oQ3 |
+-------------------------+-------------------------------------------------------------------------------------------------------------+
| 4jXIgA9Eugh_3RsPU0ttqvx | 4DkyYRocvXq46aZbQt79AHoIvRaSJ5gUuHlv6uh6EvwIn01mtf5GjPdfiRvcP_3LW8yin7eBVHjw7Th5Lo0f9QaUBUsyeLRvUT6sflsmfiq |
+-------------------------+-------------------------------------------------------------------------------------------------------------+
| 8aLeam8AWrI_3WJ6UTFhDUl | 1aGTxpXJMgfEs6x7scFeK3Al5H1H0Dm13miSdJESP78YcptNVm7G2KmW7tRun_XFOBNvqZnBI43NP5uFw3rnHDpifKQ6ebCd1m5fWTBFEA |
+-------------------------+-------------------------------------------------------------------------------------------------------------+
分别输入
lhx@DESKTOP-0GALLEM:~$ shamir decrypt -n 6IznUBFJvXlEgv1jFCGH4OsE4zPmhPVcHvcyrzVXPOMjCuu1gZxZgbq1CAWmd_41HtWR0abOmnN2ZbElB9ojNixNHGK2ZVIXPpOHs8nffiT -x 26NJWXnvHHD_5NG3WEZJY6c,4jXIgA9Eugh_3RsPU0ttqvx -y 1qXaP2vhGW7j7hDFBvdwP5fyMxFUJFZKCNkPHJg5e1XhkM4X6dZaKlGRd4X2F_13CXA5E6TcTMJGZumnJdRrnokzw97X65T2M8HPmHN3oQ3,4DkyYRocvXq46aZbQt79AHoIvRaSJ5gUuHlv6uh6EvwIn01mtf5GjPdfiRvcP_3LW8yin7eBVHjw7Th5Lo0f9QaUBUsyeLRvUT6sflsmfiq
this is a secret.同时可以使用中文。
或者:
lhx@DESKTOP-0GALLEM:~$ shamir decrypt -n 6IznUBFJvXlEgv1jFCGH4OsE4zPmhPVcHvcyrzVXPOMjCuu1gZxZgbq1CAWmd_41HtWR0abOmnN2ZbElB9ojNixNHGK2ZVIXPpOHs8nffiT -x 4jXIgA9Eugh_3RsPU0ttqvx -y 4DkyYRocvXq46aZbQt79AHoIvRaSJ5gUuHlv6uh6EvwIn01mtf5GjPdfiRvcP_3LW8yin7eBVHjw7Th5Lo0f9QaUBUsyeLRvUT6sflsmfiq,1aGTxpXJMgfEs6x7scFeK3Al5H1H0Dm13miSdJESP78YcptNVm7G2KmW7tRun_XFOBNvqZnBI43NP5uFw3rnHDpifKQ6ebCd1m5fWTBFEA -x 8aLeam8AWrI_3WJ6UTFhDUl
this is a secret.同时可以使用中文。
更多使用方式,请使用 shamir --help
现在大家很熟悉的加解密场景,可以看做A hash成 B,由B可以还原成原来的A
但是在某些场景下,需要将密钥拆分成许多子密钥,让每一方分别持有一个子密钥;需要密钥时,必须有一定数量的子密钥合在一起才能恢复出整个密钥。这样的过程称为密钥共享,更广义的,也可称为秘密共享
使用秘密共享方案进行密钥管理,有如下优点:
- 解决主密钥丢失即所有密钥丢失的问题
- 避免出现权限最高的个体
- 提高了密钥的安全性,因为攻击者必须获得足够多的子密钥才能恢复出主密钥
所有秘密共享方案中,最经典的要数Shamir于1979年提出的
- 将秘密
$S$ 分成$n$ 个子秘密 - 任何
$k$ 个子秘密合在一起能恢复出秘密$S$ - 任何
$\textless k$ 个子秘密合在一起无法恢复出秘密$S$
公共参数:参与方数
秘密分发:随机选取
再令
任取
任意给定
计算多项式
则
而多项式
最后计算