首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用人工智能进行密码分析

利用人工智能进行密码分析
EN

Cryptography用户
提问于 2019-07-26 08:23:26
回答 5查看 2.3K关注 0票数 6

如果给出大量的密码文本和相应的明文示例,是否可以对AI进行培训,将其解密为所提供的示例?如果是的话,是否有任何在线例子证明了这一点?

例如,让我们想象出密码是一个简单的7 shift ceaser shift,我们列出了数千个例子,如下所示

代码语言:javascript
复制
olssv,hello 
ifl,bye
dvysk,world

神经网络能不能对这些例子进行训练,然后显示一个新的密码文本,而不是在训练集中,如"isbl“,并正确地推断结果为”蓝色“?

EN

回答 5

Cryptography用户

回答已采纳

发布于 2019-09-04 11:32:19

是的,它可以适用于简单的密码。下面是一个简单的例子:

代码语言:javascript
复制
# dependencies
import numpy as np

# machine learning
from keras.models import Sequential
from keras.layers import Dense

# constants
BASE = 97
MAX = 26

# let's assign a = 1, z = 26, ciphertext x and decrypted value y
y = np.arange(0,MAX,1)
x = np.roll(y,-7)

model = Sequential()
model.add(Dense(256, input_dim=1, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(MAX, activation='softmax'))

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

history = model.fit(x, y, epochs = 500, verbose=0)

for x_test in [['o', 'l', 's', 's', 'v'], \
               ['i','f','l'], \
               ['d', 'v', 'y', 's', 'k']]:
  x_test = list(map(lambda x: ord(x) - BASE, x_test))
  # print (x_test)

  pred = model.predict_classes(x_test)
  print(list(map(lambda x: chr(x + BASE), pred)))

预测产出:链接在这里

“h”、“e”、“L”、“L”、“o” ‘w’,‘o’,‘r’,‘L’,‘d’

票数 8
EN

Cryptography用户

发布于 2020-01-05 11:45:21

你在文献中描述的黑匣子式的端到端学习最好的例子可能是格雷达纳斯用递归神经网络学习谜团的工作。它们实现了他们研究的受限版本的Enigma的功能密钥恢复,但与传统的密码分析相同的机制相比,它们需要更多的数据和计算能力。报纸本身自由地指出了这一点;黑匣子,端到端学习解密才是困难的。

链接:

博客帖子 代码

但是,在黑匣子设置之外,您可以做得更好。在写这篇文章的时候,我所知道的最好的参考是我的密码2019年论文改进了对使用深度学习的圆环减少的Speck32 32/64的攻击。论文的主要攻击破坏了11轮Speck32 32/64,比以前最好的密码分析快了大约200倍:

空谈 代码

该代码还包含(本文在脚注中描述)一种使用相同方法对12轮Speck的实用攻击。

最后,人工智能与机器学习是不一样的,甚至不一定要使用机器学习。考虑到这一点,例如使用SMT Solvers自动化Beck、Zinkus和Green选择的密文攻击,我认为也可以算作“使用人工智能技术进行密码分析”:

WAC2 2谈话

票数 5
EN

Cryptography用户

发布于 2019-07-26 08:57:41

这取决于加密。但对于所有简单的单字母替换,答案都是肯定的。而且不需要中性网,但最简单的分类器能工作。你把它训练在密码文字的字母上,而明文字母是课程。要将解密应用于未知文本,只需让它独立地对密码中的每个字母进行分类,然后将结果连在一起以获得明文。

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/72175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档