如何设计最安全的加密机制

人类的聪明才智无法编制出人类智慧无法破译的密码。----埃德加.阿兰.伯弈, 1841

构建无法破解的密码体系,是众多数学家、计算机科学家和工程师们所追求的极致目标。事实上,密码学的发展史与人类的文字史一样长,从古代的换位法(历史上能追溯的比较早的凯撒密码就是利用把字母移动一定的位数来实现加密和解密的),到工业时代的机械轮转法(工业时代的大多数密码机使用的方法,如二战时期著名的Enigma密码机),再到现代的高级密码标准的建立,密码学的发展也反映着人类智慧的进步。

正如信息论创始人香龙所说,设计一个“出色”的密码系统,仅仅依靠确信“标准的密码分析方法无法破译”是不够的,我们必须确保“任何方法都无法轻易破解”。这其实是一项非常艰难的任务,因为“任何方法”也包括我们今天尚未发现的方法。

实际上,只有一次一密乱码本才是真正不可破解的密码系统,也即无论密码分析者获得多少密文,无论密码分析者拥有多么强大的计算能力,他都没办法得出明文的任何信息。然而一次一密乱码本要求密钥的长度至少与明文一样长,密钥的传输和保存成了这种密码体系难以得到应用的关键。

在今天的密码学中,我们更关心在“计算上”不可破译的密码系统,也即一个密码系统在有限的时间和有限的计算资源的情况下难以破译,则我们认为这个密码系统是计算安全的。

在计算机科学中,“难以计算”往往指的是计算复杂度是与问题的规模成指数级的关系(也即问题的规模每增加一个点,计算复杂度则会翻倍),“易于计算”指的是计算复杂度与问题的规模是多项式级别的关系(也即问题的规模每增加一个点,计算复杂度则以线性或有限的速度增加)。同样对于密码系统来说,难以破译的意思指的在计算上必须是难的。

然而,我们现在还没有办法确信某个短密钥(密钥长度要远小于明文长度)的加密算法在已知任意的明文-密文对的情况下是难于破解的,如果这种加密算法存在的话,我们就可以直接利用其构造出单向函数。而单向函数的存在性问题目前还是计算机科学领域未知的问题,单向函数如果存在,则可直接得出计算机科学领域最为重要的命题P vs NP的解决(插一句题外话,P vs NP问题被排在21世纪七大未解数学难题的首位,其解决在数学、计算机科学、密码学、哲学等多个领域都具有重要意义)。

我们暂时绕开P vs NP问题的讨论,回到“安全的加密机制”的设计上来,“混淆”与“扩散”是当今设计密码算法的两种主要方法,最早系统化的介绍混淆与扩散方法的文献来自香龙的文章《通讯理论中的保密原理》,简单来讲,混淆的目的是使密文和密钥的关系变得尽可能的复杂;扩散的目的则是使明文和密文的关系变得尽可能的复杂。现在主流的加密算法如AES、DES等都是充分地使用了这两种方法。

在密码学中,再完美的协议设计也必须以抵抗各种可能的攻击为基本原则。线性攻击和差分攻击方法作为当今密码学界最为常见和最为重要的两种攻击方法,基本覆盖了绝大多数的可能的攻击手段。线性攻击属于已知明文攻击方法,它主要通过寻找明文和密文之间的某种有效的线性逼近,将密码与随机置换区分开,从而恢复密钥或密钥的部分信息。差分攻击比线性攻击的破坏性更高,属于选择明文攻击方法,它主要通过比较有特定区别的明文在加密后的密文差异情况来分析密钥的。目前线性攻击方法几乎对所有分组密码机制都有效,差分攻击方法看起来对攻击DES有效(此处“攻击有效”还带着很强的主观性,并没有任何数学上或逻辑上的证明)。

基于上面讲到的密码协议设计方法和抵抗攻击的原则,我们设计了一种全新的加密算法,并将其命名为Eagle加密算法,其详细的设计方案见论文《Eagle: A new symmetric encryption algorithm against any linear attacks and differential attacks (The existence of one-way function means P!=NP)》,该算法的核心特征在于引入了不可见的随机性,对于已知任意分组的明文-密文对,密钥空间中的每个密钥,都能找到合适的加密方式,这与其他的加密算法有着本质的区别。比如AES、DES加密算法中,已知任意的明文-密文对,密钥肯定是唯一确定了的,只是寻找密钥的过程可能在“计算上”是很难的。而在Eagle加密算法中,任意的明文-密文对都是独立加密的,且已知或选择任意的明文-密文对,密钥的任何特征都没法获取,这是因为密钥空间中的任何密钥都可以找到满足条件的加密方式,使得明文-密文对成立。从组合数学的角度,这也可以看成任意的明文-密文对与密钥是完全独立的,在理论上满足充分混淆和充分扩散的特性,且能完全抵抗线性攻击和差分攻击。

以上的描述也可以这样简单理解,对于传统的加密机制,锁给定,只会有一把钥匙能打开,理论上只要把每把钥匙都尝试一遍,就可以找到那把唯一的钥匙。对于Eagle加密机制来说,锁与钥匙是完全独立的,锁给定,每把钥匙都能找到打开的方法。

在论文《Eagle: A new symmetric encryption algorithm against any linear attacks and differential attacks (The existence of one-way function means P!=NP)》的最后,我们进一步强化设计了一个加密机制,“破译它”是满足单向函数性质的,这也等于解决了P vs NP的问题。当然这一部分,这里就不详细展开了。

[参考文献]
1 GaoMing, Eagle: A new symmetric encryption algorithm against any linear attacks and differential attacks (The existence of one-way function means P!=NP. 2021
————————————————

「算法介绍」如何设计最安全的加密机制相关推荐

  1. 「算法介绍」我国学者声称证明了p≠np

    是的,你们没有听错,最近在多个平台上都浏览到这篇文章<Eagle: A new symmetric encryption algorithm against any linear attacks ...

  2. new ext.toolbar控制按钮间距_按钮规范系列 - 「按钮尺寸」的设计详解

    理论上,按钮的使用规则与设计逻辑对于产品设计人员而言,是必备的基础知识.但是市面上关于按钮设计的解析文章相对较少,所以我继上一篇「取消按钮的设计思路」之余,继续带来一篇关于「按钮尺寸的设计解析」. 希 ...

  3. 「免费版Axure」原型设计工具!

    Axure 是一款经典的原型设计工具,但需要下载电脑端软件使用,对新手要求较高,且在线协作效率低,使用成本较高.即时设计是一款免费在线原型设计工具,支持导入 Axure 文件进行二次布局.评审.演示和 ...

  4. 3d标注_告别繁琐,浩辰3D「文本特征」让设计更智慧!

    在日常设计过程中,设计工程师总会遇到需要在各种塑料.铸造或锻造零件的模型上,标注企业标准化标签或零件号的情况.浩辰3D软件除了能够快速且高效地完成3D模型的设计与装配,还能在各种3D模型上实现文本精准 ...

  5. 建站百科|「联系我们」页面设计指南(内附案例)

    这是[建站百科]专栏第4篇原创内容,由我在建站行业从业10年.给上万公司搭建过网站的经验总结而来. 01/ 2018年,国外一家网站HubSpot Research做过一次信任调查,数据显示,有55% ...

  6. 「第一弹」电子设计大赛应该准备什么?

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 引 言 最近有许多小伙伴,给我留言说,想参加电子设计竞赛,却不知道如何准备. 对于我 ...

  7. 「业务架构」通过设计实现业务模型架构

    过去的架构师往往把他们的注意力集中在一个静态的物体上.我认为动态变化更重要:人的动态变化,他们与空间和环境条件的互动. ---------------------------------------- ...

  8. 「算法时空」星球视频目录

    本星球主打算法三部曲iPad Pro手写录制视频,精讲如下三本算法巨著: 已讲完<算法导论>(Introduction to Algorithms, 3rd edition, CLRS) ...

  9. 微信小程序并发服务器架构,「系统架构」如何设计一个健壮高效的微信小程序登录方案...

    登录涉及的面比较多:触发场景上,各种页面各种交互路径都可能触发登录:交互过程上,既需要用户提供/证明id,也需要后端记录维护,还需要保证安全性:复用场景上,既是通用功能,需要多场景多页面甚至多小程序复 ...

  10. 「算法学习」:贪心算法找零问题

    找零算法,找零??? 假设你是一个商店老板,你需要给顾客找零n元钱,你手上有的钱的面值为:100元,50元,20元,5元,1元.请问如何找零使得所需要的钱币数量最少? 例子:你需要找零126元,则所需 ...

最新文章

  1. 软件从业人员如何激发敏捷团队?
  2. 系统架构师学习笔记_第五章(下)_连载
  3. (转) GPG入门教程
  4. avisynth_c.h:825:3: error: unknown type name ‘HMODULE’
  5. StoreFront 登陆页面的话持续时间
  6. Java自动类型转换和强制类型转换
  7. java10---点餐系统
  8. 有哪些激光雷达SLAM算法?
  9. unique path 阶梯
  10. 新手购买单反终极攻略--谈谈现场验机的要领与要点
  11. 百度富文本编辑器UEditor的使用
  12. 线性规划问题及单纯形法-目标函数值极小大M法
  13. 计算机毕业设计php的仓库管理系统(源码+系统+mysql数据库+Lw文档)
  14. java火柴人吃豆豆,4399游戏火柴人吃豆豆全图文通关攻略分享
  15. 【Easyx库】(1)
  16. 爱运动的人身体都不差----基于墨刀原型工具的健康软件设计
  17. 第二十八节:Java基础-进阶继承,抽象类,接口
  18. 蓝牙最新版本6.0_连续看影视最新版本下载2021-连续看影视无广告不升级版v1.6.0 安卓版...
  19. oracle 10g clusterware,OracleClusterware10g/11g进程详解
  20. 利用ArcMap更改shp图层坐标系

热门文章

  1. 移动硬盘在服务器上读不出来怎么办,移动硬盘无法识别的usb设备怎么办
  2. 用计算机绘制函数图像结题报告,《几何画板》在高中数学教学中的应用小课题结题报告...
  3. java关于考核 源码,java+mysql年终教师考核系统的设计+源代码
  4. cipher命令(转)
  5. 锐捷客户端linux安装,锐捷smp客户端安装(linux)
  6. FreeTextBox的使用
  7. 数据结构严蔚敏清华大学pdf_2021年清华(清华大学)电子信息考研
  8. python停用词表整理_python停用词表
  9. vfp保存为html,建立,生成,运行VFP菜单
  10. Navicat for MySql管理工具 中文破解版