秘密分割的思想是将秘密以适当的方式拆分,拆分后的每一个份额由不同的参与者管理,单个参与者无法恢复秘密信息,只有若干个参与者一同协作才能恢复秘密消息。更重要的是,当其中任何相应范围内参与者出问题时,秘密仍可以完整恢复。
秘密分割是一种将秘密分割存储的密码技术,目的是阻止秘密过于集中,以达到分散风险和容忍入侵的目的,是信息安全和数据保密中的重要手段。
这里先学习两种秘密分割方案,第一种是Shamir方案,其数学原理是利用抛物线上的点值和拉格朗日插值定律恢复曲线,当有足够多的点的时候,秘密就可以被恢复;Asmuth-Bloom方案则是基于中国剩余定理的门限方案。具体原理见:https://webencrypt.org/secretsharing/ 可参考论文:可验证的Asmuth-Bloom门限秘密共享方案
举一个例子来说明秘密分割的有效性:
[AFCTF2018]花开藏宝地
题目给了五个压缩包,并提示打开三个压缩包便可解密,五个压缩包解密方法依次是:爆破数字秘密、爆破小写字母密码、爆破大写字母密码、伪加密、NTFS文件隐写,可参考https://blog.csdn.net/qq_41079177/article/details/102964134 。全部解压以后,发现是五个m1-x1对,再联想到花开(bloom),猜测是密码分割方案,于是只需要按照原理用一次中国剩余定理,再减去AP(或者模p)即可恢复原文。
1 | from Crypto.Util.number import * |