有关白盒加密
白盒密码技术白皮书
有关白盒的概念
其实白盒黑盒之类概念其实是软件保护方面的概念,在很多方面都有应用,例如
黑盒:
传统的加密技术是默认假定处于黑盒中的,也就是假定攻击者无法获得密钥。具体而言,认为攻击者并未实质性地接触到密钥(执行加密或者解密的算法)或者任何内部操作,仅仅能观察到一些外部信息或者操作,这些信息包括系统内的明文(输入)或者密文(输出),并且认为代码执行以及动态加密不可被观察。
灰盒:
灰盒认为攻击者可以实质性地接触到部分密钥或者泄露的信息(也就是所谓的边信道信息)。边信道分析攻击(Side Channel Analysis, SCA)利用了从密码系统运行过程中泄露的信息。泄露信息是通过被动观察时间信息、功率消耗、电磁辐射等而获得的。
白盒:
白盒即攻击者已经完全控制了整个操作过程且对此完全可见,攻击者可以自如地观察动态密码运行过程,并且内部算法的详细内容完全可见,可随意更改。举例而言,只要软件是在本地运行的,攻击者就可以通过调试器运行程序,并观察软件运行的过程。所有涉及解密部分的代码也就一览无余了。定义如下:
攻击者对主机和软件具有完全控制权
软件动态执行过程是可见的
加密算法内部细节完全可见、可修改
白盒密码
白盒密码技术是假定攻击者已经完全控制了整个加密的操作过程且对此完全可见,在这种情况下处理面临的严重威胁。黑客们可以不受限制的观察动态密码的运行过程(拥有示例密钥),并且内部算法的详细内容是完全可见,可随意更改。
尽管白盒密码技术的方法完全透明,但是它将密码进行了组合使得密钥不容易被提取。总而言之,白盒加密是能抵御白盒攻击的加密技术。
密钥明文通过白盒加密后会受到保护,它不会直接出现在内存中,所以不会被提取到。
白盒攻击
白盒攻击(White-Box Attack)是指攻击者对加密系统的运行环境和可执行程序拥有完全控制,可观察和修改任意的内部操作和数据,包括设备的CPU、寄存器、内存等数据等等,如图4所示。在白盒攻击环境下,密码算法的一般软件实现方式通常会导致密钥通过内存等途径直接泄露。
白盒攻击是三种攻击类型中最强的一种,且涉及到密码算法本身的理论安全性及其工程实现的应用安全性。如何设计能够抵抗白盒攻击,保护白盒环境下密钥和敏感数据不被攻击者窃取的有效方案是目前密码技术领域的一个重要问题。
将攻击类型和技术对应
白盒加密基本思想
白盒加密属于对称加密,是指能够在白盒环境下抵御攻击的一种特殊的加密方法。首先举个例子帮助理解,这里引用最早提出白盒加密实现方法的大牛Chow在论文《White-Box Cryptography and an AES》中所说的,“举一个极端的例子,就是将AES加密用一个简单的查表来表示,那么AES128可以用一个
bytes的表格替换,这样一来,AES就变成了一个完全的黑盒。”听起来很简单吧,但是这是极端情况,一个如此大的表,没有硬盘能够装得下,所以在具体算法实现的时候必须有针对性的进行优化。
核心思想:
核心思想是混淆,混淆的意思就是让人看不懂,如果说加密是隐藏信息,混淆就是是扰乱信息。它们之间的最大区别是,加密就是信息放进了保险箱,但是一旦我有了钥匙,我就能打开这个保险箱。而混淆则是让信息以一种完全无法理解的形式存在,尽量让人无法理解中间的过程(也就是只能看到输入和输出,但无法理解结果是如何得到的),但不影响信息本身发挥作用(一个加了密的程序,在源码未解密前是无法执行的,但是经过混淆的程序,可以正确执行)。
特点
传统的加密算法中算法和密钥是完全独立的,也就是说算法相同密钥不同则可以得到不同的加密结果,但白盒加密将算法和密钥紧密捆绑在了一起,由算法和密钥生成一个加密表和一个解密表,然后可以独立用查找加密表来加密,用解密表解密,不再依赖于原来的加解密算法和密钥。
优势:
正是由于算法和密钥的合并,所有可以有效隐藏密钥,与此同时也混淆了加密逻辑。具体而言白盒加密的一种实现思路就是将算法完全用查表来替代,因为算法已知,加密的密钥已知。所以将算法和密钥固化成查表表示,这就是白盒密钥的实现过程。
缺点:
有利必有弊,白盒加密由于需要将加密和解密的算法固化到表格中,势必要增加空间开销,因为要保存这一系列的表。具体在实现的过程中,大部分情况需要用时间换空间,需要对具体的实现算法进行优化,也就是样将大表分解成若干个小表,增加了查表的次数即时间开销但是减少了表占用的空间。
白盒密码技术
完全理想的白盒密码安全需要从基础理论到工程实现全方位的突破。主要的白盒密码技术包括以下几种:
混淆技术
通过密钥与算法的混淆,使得交给用户的密码功能是有限的,用户无法获取其他密码功能。一切都是算法,没有密钥或者密钥可以公开,是混淆理论发展的可能方向。把一个混淆的密码功能移交给用户的时候,所有的原理、系统结构和密钥都可以对用户公开。现代的非对称密码给出了这样的示例,例如,用户只能加密,不能解密;用户只能验证签名和不能仿造签名。混淆密码机制需要在非对称的密码理论上有更大的突破,区分出不同的独立的密码功能,确保一个密码功能不影响其他密码功能的安全,从而产生安全的完全白盒化的密码应用。
密钥隐藏技术
密钥隐藏技术是白盒密码的另一个重要思路,其方法是将需要保护的密钥隐藏到复杂的代码中,隐藏在系统中。直接的密钥隐藏技术一般采用密钥拆分技术,通过改变算法流程,将用户的密钥拆分成多个无关的子密钥,隐藏到系统的不同地方。需要密码执行的时候通过调用看似无关的密码函数计算出需要的密码计算结果。密钥分散隐藏到代码中是另一种密钥隐藏思路,需要有好的算法实现密钥与代码的混淆。通过代码混淆使得敌手通过代码分析无法获得算法和密钥,其安全的假设就是完全复制全部的代码是困难的。
尽管密钥隐藏技术依赖工程实现,难以做到完全白盒,但相关密钥隐藏技术已经成为现代密码系统安全的一种必备手段。特别是软件密码模块,不得不使用多种密钥隐藏技术来保护密钥安全。
密钥攻击容忍技术
当密钥隐藏技术被敌人破解的时候,我们是否有能力保证,即使敌手获得了部分密钥,我们的密码系统仍旧是安全的。密钥攻击容忍就是在这样一种白盒假设下的技术思考。密钥攻击容忍是在密钥保护,密钥检测和自毁的基础上对密钥安全的进一步延伸。
子密钥不影响密钥安全的密钥拆分技术是密钥攻击容忍技术的一种技术思路。通过将密钥拆分成多个无关的子密钥,并保证即使敌手获得部分子密钥也不影响原密钥的安全就可以构成一种密钥攻击容忍的解决方案。在密码算法设计上就具备密钥攻击容忍就更具有基础性意义。
多方协同密码计算
多方协同计算的本质就是在不信任的个体间进行协同,产生出各自满意的结果。在可信体系的支持下,协同计算是简单的。以可信计算为基础的可信体系能够确保信息的真实、完整、抗抵赖和合法使用,协同计算相对容易。当信任体系被打破或难以建立的时候,也就是现在的零信任假设下,我们的信任又无法建立,如何合作计算就成为多方协同密码计算的主要研究方向。
同态密码就是两方协同密码计算的代表性工作。甲方通过加密将数据交给乙方,乙方在完全不知道甲方信息内容的前提下,帮助甲方处理数据,返回处于密文状态的处理结果。甲方对处理结果进行解密得到明文的结论。利用同态密码的双方协作不需要建立强的信任关系,将原来加密隐藏的功能与委托计算的功能融合起来,使得对方能够进行计算而无法了解信息内容。
多方协同密码技术,是密码技术从通信保密到计算安全的一种思想变革,需要基础理论研究的大力支持。开放的安全多方协同计算必然会用到非对称的密码机制,以确保对某一方面的密码功能优势。我们要将一种数据的计算能力交给敌手,同时还用保证我们的交给敌手处理的信息的安全。这也是白盒化密码的基本思路。
从理论上说,签名和验签功能的分离就是一种功能拆分的非对称多方密码计算的范例。验证签名的代码和密钥可以完全开放,而只需要保护好自己的签名私钥就行。代理重加密技术可以让一方对信息进行重新加密而不需要了解信息内容;基于身份的加密能够确保只有拥有相应身份的人才能阅读信息。诸多非对称密码学的进展使我们有望在不远的将来拥有更多的多方安全密码计算的手段。
白盒密码构造
白盒密码的一般构造方法通常基于标准密码算法白盒化策略,通过将标准密码算法中的密钥与算法实现融合和混淆,使得密钥与加密程序不可区分,即使攻击者掌握了对白盒密码系统的控制能力,也无法进一步获取原始的密钥信息。
标准密码算法白盒化又可根据密钥是否可更新分为静态白盒技术与动态白盒技术两种
静态白盒:白盒生成后密钥是确定的,更新密钥需要重新生成并分发白盒。
动态白盒:白盒与密钥不完全绑定,可通过对输入中经白盒处理后的密钥进行替换实现密钥的更新。
白盒密码技术发展
白盒密码系统,包括入侵容忍的密码和密码应用系统,多方安全的密码协同,是密码系统发展的一个重要方向。密码系统应该确保即使攻击者获得系统结构和部分安全信息,密码系统依旧安全可控。
白盒密码技术就是在开放条件下的一种密码技术,采用的是开放的假设,具备更好的互联网适应能力。
开放的、白盒化的密码应用技术也是未来的重要方向。通过开放体系结构让建设参与者和使用者明确自己的责任和义务,更好地参与到密码应用系统的安全中来是大型密码应用的基本要求。比特币所依赖的区块链技术,就是一种白盒安全技术的典范。比特币的区块链系统不仅将原理全部公开,其运行的源代码也是完全公开的。这种在完全“开放”的环境下保证系统的安全也许是未来密码应用的主要方向。
SOTP密码算法体制
SOTP(Super One-Time-Password)密码算法体制是一种新型白盒密码。
SOTP算法根据用户密钥信息设计均匀、非线性的单项扩散变换,保证由配置数据到用户密钥的不可逆性,根据参数配置信息生成相应的密码部件,构建用于加密的密码墙
具体而言,密钥通过特定算法生成与之一一对应的配置参数,配置参数确定了密码墙中的密码砖、数据回流、交织层等各个组件的信息。根据配置信息生成的密码墙即为与密钥唯一对应的白盒加密算法,可理解为将标准加密算法中的各类组件和过程进行随机重组,生成与密钥唯一对应的独一无二的新算法。密码墙的示例结构如图所示
通过密钥生成与密钥绑定的独一无二的密码墙(即白盒算法)后,可将数据输入密码墙中以实现加密,加密步骤如图所示。攻击者无法通过密码墙恢复出密钥信息,可以抵抗白盒密钥攻击。
参考资料
【密码篇】白盒加密基本思想
物联网场景下的白盒加密技术
密码技术的现状与白盒化发展趋势
相关文章:
有关白盒加密
白盒密码技术白皮书 有关白盒的概念 其实白盒黑盒之类概念其实是软件保护方面的概念,在很多方面都有应用,例如 黑盒: 传统的加密技术是默认假定处于黑盒中的,也就是假定攻击者无法获得密钥。具体而言,认为攻击者并…...
C#学习系列之image控件配合ffmpeg播放视频(bitmap转image)
C#学习系列之image控件配合ffmpeg播放视频(bitmap转image)啰嗦ffmpeg输入格式与输出格式bitmap数据在image控件上显示数据转化总结啰嗦 关于音视频解码问题,采用海思解码库进行解码,存在C#托管调用动态库,会出现卡顿的…...
电容笔和Apple pencil有什么区别?开学季电容笔排行榜
与苹果的 Pencil相比,市面上常见的电容笔在压感上是没有具备重力压感,只具备着一种倾斜压感。对于绘画没有过高要求的话,其实一支普通的平替电容笔,就能为我们解决日常很多问题。它不仅可以用在办公上,也可以用在笔记、…...
【蓝桥杯每日一题】递归算法
🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 蓝桥杯 🌙我与杀戮之中绽放,亦如黎明的花…...
java 寻找2020
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝有一个数字矩阵,里面只包含数字 0 0 和 2 2。小蓝很喜欢 2020 2020,他想找 到这个数字矩阵中有多少个 2020 2020 。 小蓝只关注三种构成 …...
1.1 小白黑群晖构建,硬件推荐,硬件选购教程
构建一台黑群晖需要购买:CPU主板、散热器、内存条、机箱、电源、硬盘、网卡(可选)。物理机安装若需硬解需选择918/920此类机型系统进行安装。关联教程:黑群晖安装中的报错:https://guoqing.blog.csdn.net/article/deta…...
实验三、数字PID控制器的设计
实验三、数字PID控制器的设计 --- 直流闭环调速实验 一、实验目的 1.理解晶闸管直流单闭环调速系统的数学模型和工作原理;. 2. 掌握PID控制器参数对控制系统性能的影响; 3. 能够运用MATLAB/Simulink软件对控制系统进行正确建模并对模块进行正确的参数设置; 4.…...
python List和常用的方法
List:列表中包含多个数据,数据之间使用逗号分隔,索引从0开始。 空列表: dir:查看列表的所有方法 List常用方法:insert、append,extend、del、remove、pop、clear、count、index 增加insert(索引…...
PMP证书要怎么考,含金量怎么样?
对于新改版的PMP提纲,很多人都不知道如何去备考,这里我就总结一些经验,希望能帮助到大家!! 一,学习内容及考试形式? 学习内容:《PMBOK》项目管理知识体系指南,建议大家…...
MySQL实战解析底层---事务隔离:为什么你改了我还看不见
目录 前言 隔离性与隔离级别 事务隔离的实现 事务的启动方式 前言 和数据库打交道的时候,总是会用到事务最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱转账过程具体到程序里会有一系列的操作࿰…...
变更数据捕获(CDC)
从广泛意义上说,全球许多企业每天都需要通过频繁的数据批量处理与加载,来定期将数据从一个数据库迁移到另一个数据库(或数据仓库)。这类定期批量加载的工作,往往既耗费时间,又会消耗原始系统的大量处理能力。因此,管理…...
【移动端表格组件】uniapp简单实现H5,小程序,APP多端兼容表格功能,复制即用,简单易懂【详细注释版本】
前言: 由于最近需要做移动端的项目 有个pc端的后台系统里面需要移一部分页面过来 而里面就有很多的表格,我就开始惯例网上先找前人栽的树,我好乘凉 然后找了一圈发现,不管是主流的移动端ui库或者网上自己写的帖子,或者…...
电子技术——CMOS 逻辑门电路
电子技术——CMOS 逻辑门电路 在本节我们介绍如何使用CMOS电路实现组合逻辑函数。在组合电路中,电路是瞬时发生的,也就是电路的输出之和当前的输入有关,并且电路是无记忆的也没有反馈。组合电路被大量的使用在当今的数字逻辑系统中。 晶体管…...
【C++】C++11 新特性
目录 1.列表初始化 1.1. C98中使用{}初始化的问题 1.2. 内置类型的列表初始化 1.3. 自定义类型的列表初始化 2. 变量类型推导 2.1. 为什么需要类型推导 2.2. decltype类型推导 2.2.1 为什么需要decltype 2.2.2. decltype 3. 对默认成员的控制(default、delete) 3.1. …...
JPA 相关注解说明
jpa相关注解 JPA(Java Persistence API)是一种Java规范,定义了一套标准的对象关系映射(ORM)API,用于将Java对象映射到关系型数据库中。JPA旨在统一各种ORM框架之间的差异,提供一种标准化的ORM解…...
SAP 生产订单/流程订单中日期的解释
SAP 生产订单/流程订单中日期的解释 基本开始日期:表示订单的开始日期 基本完成日期:表示订单的完成日期 我们在输入基本开始日期和基本完成日期时需要关注 调度 下面的“类型”,其中有向前、向后、当天日期等: 调度类型 为向前…...
Java设计模式笔记——七大设计原则
系列文章目录 第一章 Java 设计模式之七大设计原则 文章目录系列文章目录前言一、单一职责原则1.案例分析2.改进二、开闭原则1.案例分析2.改进三、里氏替换原则1.案例分析2.改进四、依赖倒转原则五、接口隔离原则1.案例分析2.改进六、合成复用原则1.案例分析2.改进七、迪米特原…...
记录第一次接口上线过程
新入职一家公司后,前三天一直在学习公司内部各种制度文化以及考试。 一直到第三天组长突然叫我过去,给了一个需求的思维导图,按照这个需求写这样一个接口, 其实还不错,不用自己去分析需求,按照这上面直接开…...
时序预测 | MATLAB实现Rmsprop算法优化LSTM长短期记忆神经网络时间序列多步预测(滚动预测未来,多指标,含验证Loss曲线)
时序预测 | MATLAB实现Rmsprop算法优化LSTM长短期记忆神经网络时间序列多步预测(滚动预测未来,多指标,含训练和验证Loss曲线) 目录 时序预测 | MATLAB实现Rmsprop算法优化LSTM长短期记忆神经网络时间序列多步预测(滚动预测未来,多指标,含训练和验证Loss曲线)效果一览基本描…...
如何利用Level2行情数据接口追板和交易股票?
十档行情看得更深的A股行情软件,我们在盘口数据中可以看到,买一到买五以及卖一到卖五,共10个价位的挂单情况,但基于上证所的level-2行情软件,视野则扩展到了买一到买十以及卖一到卖十数据,无疑比所有免费软…...
MySQL常用的聚合函数
聚合函数聚合函数对一组值进行运算,并返回单个值。也叫组合函数函数作用COUNT(*|列名) 统计查询结果的⾏数AVG(数值类型列名)求平均值,返回指定列数据的平均值SUM (数值类型列名)求和,返回指定列的总和MAX(列名)查询指定列的最⼤值MIN(列名)查…...
如何评估模糊测试工具-unibench的使用
unibench是一个用来评估模糊测试工具的benchmark。这个benchmark集成了20多个常用的测试程序,以及许多模糊测试工具。 这篇文章(https://zhuanlan.zhihu.com/p/421124258)对unibench进行了简单的介绍,本文就不再赘诉,…...
2023初级会计详细学习计划打卡表!自律逆袭,一次上岸!
2023年初级会计职称考试报名时间:2月7日-28日考试时间:5月13日—17日给大家整理了《经济法基础》和《初级会计实务》两科超实用的学习打卡表重要程度、难易度、易错点、要求掌握内容、章节估分等都全部总结在一起,一目了然!为什么…...
【Python】Python项目打包发布(四)(基于Nuitka打包PySide6项目)
Python项目打包发布汇总 【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目) 【Python】Python项目打包发布(二)(基于Pyinstaller打包PyWebIO项目) 【Python】Pytho…...
一起Talk Android吧(第五百一十三回:Java中的byte数组与int变量相互转换)
文章目录整体思路示例代码各位看官们大家好,上一回中咱们说的例子是"自定义Dialog",这一回中咱们说的例子是" Java中的byte数组与int变量相互转换"。闲话休提,言归正转, 让我们一起Talk Android吧!在实际项目…...
22《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享
《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》 本人能力有限,如果错误欢迎批评指正。 第五章:Folding and Aggregation Are Cooperative Transitions (折叠和聚合是同时进行的) -蛋白质折叠的协同作…...
vue2 @hook 的解析与妙用
目录前言几种用法用法一 将放在多个生命周期的逻辑,统一到一个生命周期中用法二 监听子组件生命周期运行的情况运用场景场景一 许多时候,我们不得不在不同的生命周期中执行某些逻辑,并且这些逻辑会用到一些通用的变量,这些通用变量…...
网络技术|网络地址转换与IPv6|路由设计基础|4
对应讲义——p6 p7NAT例题例1解1例2解2例3解3例4解4一、IPv6地址用二进制格式表示128位的一个IPv6地址,按每16位为一个位段,划分为8个位段。若某个IPv6地址中出现多个连续的二进制0,可以通过压缩某个位段中的前导0来简化IPv6地址的表示。例如…...
MySQL运维知识
1 日志1.1 错误日志1.2 二进制日志查看二进制日志:mysqlbinlog ./binlog.000007purge master logs to binlog.000006reset mastershow variables like %binlog_expire_logs_seconds%默认二进制文件只存放30天,30天后会自动删除。1.3 查询日志1.4 慢查询日…...
易基因-MeRIP-seq揭示衰老和神经变性过程中m6A RNA甲基化修饰的保守下调机制
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。2023年02月22日,《美国国家科学院院刊》(Proc Natl Acad Sci USA)期刊发表了题为“Conserved reduction of m6A RNA modifications during aging and neurodegeneration is lin…...
陕西江川建设有限公司公司网站/友链交换不限内容
目录(?)[-] 一分离颜色通道 1split函数详解2merge函数详解 二多通道图像混合示例程序 本系列文章由浅墨_毛星云 出品,转载请注明出处。 文章链接: http://blog.csdn.net/poem_qianmo/article/details/21176257 作者:毛星云(浅墨…...
易语言做网站爆破工具/百度seo排名点击器app
说起物流大数据,你会想到什么? 因为量大,我首先想到的水,因为水会顺流而下,沿途支流不断汇集壮大,最后百川归海。同样地,数据流也会源源不断注入数据池、数据湖,于是有了信息海洋。 因为数据的…...
北京移动端网站开发/青岛seo排名公司
15版默认关闭三指拖动窗口,需要按住后再移动。 设置开启 三指拖动窗口功能如下: 左上角点击小苹果,系统偏好设置,第四行找到‘辅助功能’ 辅助功能,左侧列表里,找到‘鼠标与触控板’,右侧‘触控…...
房产网名字叫啥好听/河北搜索引擎优化
熟练掌握: (1)对于已知过程,设计出其活动记录; (2)对于已知程序,若采用栈式存储分配,随着程序的执行,画出相应动态栈,访问链(存取链&a…...
长治网站制作/网站推广的内容
RSA 实现 C# 加密首先我们来了解下什么是 RSA ,它属于不对称加密,其原理就是使用一个公钥一个私钥,公钥可以公开用以加密,私钥严格保密用于解密,那么这样大家知道了 RSA 适合于数据量不大的加密,比如加密…...
曲靖网站制作一条龙/游戏推广怎么找玩家
Atlassian In Action-Jira之指导思想(一) 太上,不知有之;其次,亲而誉之;其次,畏之;其次,侮之。信不足焉,有不信焉。悠兮,其贵言。功成事遂&#x…...