Asemica:一种贫血的马尔可夫链式密码

2020-09-05 05:19:04

Asemica是一种对称密码,其密钥是文档,其密文看起来像明文。例如,此纯文本:

为了实现这一点和任何适用的专利权利要求,在任何情况下,自由程序(包括计算机或主要组件)都是基于自由程序的,除非And Fitability for Aggregation通过程序的命令或数据进行终端交互,或者法院命令给适当的法律通知造成损失。但是,如果程序的寻址方式如被更改的那样寻址,从而版权许可应用可用于AND或A的实现的这些要求,则在任何情况下,除非And或A。

任何一段明文都应该产生任意数量的密码等价密文,当给定相同的文档密钥(称为语料库文件)时,所有这些密文都将解密为初始明文。关于输入文件的所有信息都以大多数密文单词之间的状态表示,从而使密文变得无关紧要(意思是没有意义)。

要生成此示例,我们可以使用GNU GPL版本3作为语料库文件。它作为LICENSE.txt包含在此发行版中。然而,通常情况下,语料库文件越大、越复杂,密文应该越短。要执行此示例操作,请克隆此项目并运行以下命令:

它将输出与上面的密文相似的密文(尽管可能不完全相同)。要解密密文,您可以将密文保存到文件(使用-o参数),或者通过管道将其传回到另一个Asemica进程:

$echo";Meet@Joe';s,6 pm";|./asemica enc-c LICENSE.txt|./asemica dec-c LICENSE.txt。

Asemica还可以读写这些文件,而不是从标准输入和输出数据流中读取它们:

$ECHO";与@Joe';s,6 pm&34;>;Pla.txt$./asemica enc-c LICENSE.txt-i Pla.txt-o cipher.txt$cat cipher.txt应用程序会面,即使是其他程序的默示保修也是如此。自由如果在适当的版权通知内传播该安排或任何进一步的限制(如适用于适用这些内容的法律),并且如果您的受版权保护的材料根据版本添加,则对通过修改或改编所有民事责任以与商标法下的ABSOLUTELYNO费用一起操作而显示的所有通知免责声明。/asemica dec-c LICENSE.不放弃针对所有版本使用的责任。/asemica dec-c LICENSE./asemica dec-c license./asemica dec-c LICENSE./asemica dec-c LICENSE.

密文格式化的某些方面是自由格式的。您可以添加空格、标点符号和HTML标记,并且可以自由更改密文中出现的任何字母的大小写。所有这些更改都不会使密文无法解密。其中一些格式化选项是内置的:例如,您可以让Asemica格式化您的密文,使其看起来像一封电子邮件。

确定费用是否免费的免费版权许可,但在!其所有由此产生的版权的未来版本也将转让。或者是适销性的失败或者任何。包括任何适用条款在内的默示条款是否适用于相应的法律机构?但是,请注意,如果该计划的寻址方式与更改后的寻址方式相同,则此要求也会发生变化。随节申请做终端互动。通过安装信息必须足以使用销售报价有效。如果条件定义。

如果要将文档密钥存储在远程服务器(可通过HTTP或HTTPS访问)上,则可以使用与传递文件名相同的方式将该URL传递给-c参数:

此特定示例将使用Project Gutenberg的莎士比亚“哈姆雷特”的eText作为文档密钥对您的纯文本进行编码:

上天忏悔,但这是危险的精神错乱,Ros Good Laertes Laertes Laer和Guild I&39;I‘ll涂抹我的删节是在女仆的两条腿Oph和Ber之间他结束的项目应该给予基督徒的确切命令或退款,也不是孵化o;呃,作为哈姆雷特,我是我的水手他Fran Nay,那是所有午夜的波尔。

Asemica是用Perl编写的,当被要求通过HTTP或HTTPS加载远程语料库时,它使用cURL。它不依赖于通常的Perl发行版中没有的任何库,因此它应该可以在任何能够同时运行Perl和cURL的系统上运行。作者只在Linux(Ubuntu10.10)和MacOSX(10.6.6)上测试过它。

Asemica主要通过语料库文件工作:用作密钥的文档。此语料库文件可以是HTML或纯文本,也可以是纯文件或Asemica应该加载的远程URL。输出文本的感觉将完全取决于所选的语料库,并不是所有的文档都能像键一样发挥作用。

理想情况下,这个语料库文件应该很大(超过5000字左右),并且在语言上足够多样化,足以包含足够数量的转换退出状态(如下所述)。如果你选择的语料库不能很好地作为一把钥匙,Asemica会建议你找一个更好的,尽管你总是可以用武力来运行它,并抱着最好的希望。

Asemica的核心是从语料库文件计算出的马尔可夫链状态转移矩阵。至少,Asemica在给定的语料库中查找至少七个唯一的有意义的转换标记。单个有意义的转换令牌被定义为在文档中出现至少16次的唯一单词,每次后面跟着一个不同的单词。通常,文档中存在的有意义的转换令牌越多,密文就越短。

这个矩阵对语料库中的特定模式进行编码:哪些单词后面跟了多少次其他单词。这些转换(即单词后跟N个单词)被计数并分类为有意义的转换(具有16个或更多退出状态的转换)和无意义的转换。有意义的转换之所以称为这样的转换,是因为它们最低限度能够序列化半字节数据(即半字节),并随后被系统地遍历。无法序列化半字节的无意义转换被随机遍历。此属性允许单个输入明文生成多个加密等价密文。

Asemica是在几天内编写的,目的是证明一个概念:使二进制数据看起来像计划文本是可能的。它还没有经过密码完整性测试,也不打算单独用作密码。它的最佳用途是与更传统的密码配对,以掩盖甚至在一开始就使用密码的事实:

$ECHO";Meet@joe';s,6 pm&34;|openssl bf-pass Pass:Something|\>;./asemica enc-c https://www.gutenberg.org/cache/epub/2265/pg2265.txt\>;-f电子邮件但是,就像诺曼·雷尔为Go所做的雕刻一样。退出、腾飞和行会我们将等待丹麦霍尔财富之州的到来。有什么可以告诉我之后,哈姆和吉尔登斯特恩是如何来到哈姆雷特的。霍雷肖·桑,要么悲痛,要么向吉尔登斯特恩致敬!Pol';在上帝面前,鬼魂,火腿在一旁,并捐赠哈姆雷特所有丹麦什么。进军可能要提防哈姆雷特进入哈姆女王进军什么格特鲁德?格特鲁德小丑诺曼底国王死火腿破产了。当我的床上躺着哈姆雷特的父亲皇后。这成了法国人送给他的礼物,他是最雄辩的音乐。哈姆雷特的誓言更好,吉尔登斯特恩的朋友们去丹麦。哈姆雷特相信它还在叫我吗?等等,我的。

将此输出保存到名为';letter.txt&39;的文件中,或者通过电子邮件将其发送给同时安装了OpenSSL和asemica的任何人,都可以使用相同的语料库和密码对其进行解密:

$./asemica dec-i Letter.txt-c\>;https://www.gutenberg.org/cache/epub/2265/pg2265.txt\>;|openssl bf-d-pass通行证:omethingmeet@joe;s,下午6点。

这种方法允许各方之间的安全通信,而不像传统的加密方法(如二进制或Base64编码)那样依赖于第三方。

用法:./asemica(enc|dec)-c<;corpus_file>;[-i<;input_file>;][-o<;output_file>;][-f<;format>;][--force][--help]选项:-c/--corpus:指定语料库文件名或URL-i/--input:指定输入文件名(缺省为STDIN)-o/--output:指定输出文件名(缺省为STDOUT)-f/--format:指定输出格式(缺省为None)--force:在不够复杂的语料库上强制运行时--help:显示此消息-v/--Verbost:递增详细程度设置(。仅返回单词列表电子邮件:将输出格式设置为看起来像非正式电子邮件诗:如果您希望输出看起来像poetryEXAMPLES echo";message";|./asemica enc-c corpus.txt-o asemic.txt./asemica dec-c corpus.txt-i asemic.txt

请将任何评论、问题、建议、错误报告或功能请求发送至Danne Stayskal [email protected]。如果你是一名程序员,请随时贡献自己的力量。

此程序是免费软件:您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新发布和/或修改它,可以是许可证的第3版,也可以是(您可以选择的)任何更新版本。

这个程序是分发的,希望它将是有用的,但没有任何保证;甚至没有隐含的保证适销性或适合某一特定目的。有关详细信息,请参阅GNU通用公共许可证。

您应该已经收到了GNUGeneralPublicLicense的副本,以及这个程序。如果没有,请参阅http://www.gnu.org/licenses/.