javascript加密实现,包括可信否认
javascript implementation of encryption including plausible deniability
是否有任何javascript加密实现,包括可信的否认?
我想要一些展示此处所述功能的东西:http://en.wikipedia.org/wiki/Deniable_encryption
可拒绝加密允许加密消息的发送者拒绝发送该消息。这需要一个值得信赖的第三方。一个可能的场景是这样的:
- 爱丽丝是鲍勃的妻子,鲍勃怀疑他的妻子通奸。她想和她的秘密情人卡尔交流。她创造了两把钥匙,一把用来保密,另一把用来牺牲。她把秘密钥匙(或两者)交给卡尔
- 爱丽丝为卡尔构建了一条无伤大雅的信息M1(打算在被发现的情况下透露给鲍勃),并为卡尔构建一封有罪的情书M2。她用M1和M2这两条信息构造了一个密文C,并通过电子邮件发送给卡尔
- 卡尔使用他的密钥解密M2(可能还有M1,以便也读取假消息)
- 鲍勃发现了给卡尔的电子邮件,开始怀疑并强迫爱丽丝解密邮件
- Alice使用牺牲密钥并向Bob透露无害的消息M1。由于Bob不知道另一个密钥,他不得不假设没有其他消息M2
有很多Javascript库提供加密原语,但我从未听说过任何包含可信否认的库。
您可以实现与TrueCrypt使用的加密方案类似的加密方案。它仅限于两组加密数据:诱饵数据和真正的秘密数据。但它的设计非常简单,所以如果你不需要超过2组数据,就去做吧。你可以修改它以允许超过2组,但它不能是"动态的"。
TrueCrypt文档页面对此进行了详细解释,但基本原理是加密数据包含每个数据集的固定宽度标头。标头包含有关其数据集的信息。在最基本的情况下,这将只是整个加密块中数据集开始的偏移量、该数据集的长度以及用于检查标头是否成功解密的某个金丝雀值。当用户提供密码时,系统会尝试解密第一个标头,如果失败,则会尝试解密下一个标头,直到成功或没有标头为止。如果成功,则解密标头中指定的字节。
这个方案是为文件系统加密而设计的,所以在你的系统中使用时会有一个很大的缺陷——当对手强迫你透露诱饵数据的密钥时,他会问为什么它的大小小于整个加密块的大小。
有趣的问题。这里和这里都有Javascript加密库,但您的用例不需要用Javascript实现,您可能最好使用不同的语言。
为什么?可拒绝加密是一种需要安全性的安全形式,根据定义,因此使用脚本语言实现它可能不是最好的方法(任何人都可以看到您的实现细节)。用一种强大的、计算能力强的语言编写它,并将其锁定在某个服务器上。
- CKEditor Widget-阻止编辑可编辑元素本身
- 下拉选择可自动更改第二个下拉选择
- knockoutjs可观察数组
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 包括用于facebook评论框的JavaScript SDK
- 手风琴可点击并悬停
- 将纯文本URL转换为可单击链接
- 一点javascript元编程&可链接的设置器
- 将事件聚焦/模糊在可编辑内容的元素上
- 带有加号的电话号码验证(可选)
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- javascript加密实现,包括可信否认
- 如何将页面上的所有电话号码更改为可点击链接,不包括特定类别的元素
- 内容可编辑获取位置,包括HTML
- PUT 期间不包括视图模式可观察属性
- 将可选择的复选框数量限制为三个(不包括一个)
- 在jQueryUI可排序的表之间移动一列,包括th
- 如何返回对象的所有属性及其值,包括可迭代的,自定义的和继承的
- jQuery UI的可拖动位置是否受到scrollTop的影响?(包括JSFiddle)