有关白盒加密

news2024/11/14 20:54:54

白盒密码技术白皮书

有关白盒的概念

其实白盒黑盒之类概念其实是软件保护方面的概念,在很多方面都有应用,例如

黑盒:

传统的加密技术是默认假定处于黑盒中的,也就是假定攻击者无法获得密钥。具体而言,认为攻击者并未实质性地接触到密钥(执行加密或者解密的算法)或者任何内部操作,仅仅能观察到一些外部信息或者操作,这些信息包括系统内的明文(输入)或者密文(输出),并且认为代码执行以及动态加密不可被观察。

灰盒:

灰盒认为攻击者可以实质性地接触到部分密钥或者泄露的信息(也就是所谓的边信道信息)。边信道分析攻击(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算法根据用户密钥信息设计均匀、非线性的单项扩散变换,保证由配置数据到用户密钥的不可逆性,根据参数配置信息生成相应的密码部件,构建用于加密的密码墙
在这里插入图片描述具体而言,密钥通过特定算法生成与之一一对应的配置参数,配置参数确定了密码墙中的密码砖、数据回流、交织层等各个组件的信息。根据配置信息生成的密码墙即为与密钥唯一对应的白盒加密算法,可理解为将标准加密算法中的各类组件和过程进行随机重组,生成与密钥唯一对应的独一无二的新算法。密码墙的示例结构如图所示
在这里插入图片描述
通过密钥生成与密钥绑定的独一无二的密码墙(即白盒算法)后,可将数据输入密码墙中以实现加密,加密步骤如图所示。攻击者无法通过密码墙恢复出密钥信息,可以抵抗白盒密钥攻击。
在这里插入图片描述

参考资料

【密码篇】白盒加密基本思想
物联网场景下的白盒加密技术
密码技术的现状与白盒化发展趋势

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PMP证书含金量如何,打算以后从事项目管理这一行业的有没有必要考这个证书?

建议考一个,虽然说这一纸证书实际不能带来多少利益,只是一个资格证书,项目管理行业入门证书,但是现在很多企业招聘要求中写了“有 PMP 证书”优先录取,还是考一个有备无患。含金量问题一直备受关注,总结了一…

操作系统(1.1)--引论

目录 一、操作系统的目标和作用 1.操作系统的目标 2.操作系统的作用 2.1 OS作为用户与计算机硬件系统之间的接口 2.2 OS作为计算机系统资源的管理者 2.3 0S实现了对计算机资源的抽象 3. 推动操作系统发展的主要动力 二、操作系统的发展过程 1.无操作系统的计算机系统…

Web3中文|日本元宇宙经济“狂飙”

2月27日,三菱、富士通和其它科技公司发布关于建立“日本元宇宙经济区”的协议,表示将联手从角色扮演游戏的角度创建开放的元宇宙基础设施,以推动日本的Web3战略。据了解,日本一直在努力将Web3技术纳入其国家议程,去年1…

规范哈夫曼编码和Deflate算法

经过常规的哈夫曼编码以后,我们需要将每个符号对应的码字记录下来,比较容易想到的是按照字母序记录每个字母的编码,这样的好处是字母与码字的映射关系被隐式记录: 假设字母表 A{a1,a2,a3,a4,a5}\mathcal{A}\{a_1,a_2,a_3,a_4,a_5\…

基于数据驱动的电动车电池数据分析(一)

基于数据驱动的电动车电池数据分析(一) 欢迎关注笔者的微信公众号 笔者过去一年多的时间都在国内一家头部新能源企业实习,主要参与一些数据分析和平台研发的工作。在工作中积累了一些数据分析的经验,其中新能源领域比较多的是一…

曾经被人们看成是异想天开的产业互联网,或许终将会实现

一波还未平息,一波又起。元宇宙的热度还未彻底散去,ChatGPT已经成为了名符其实的新风口。如果用一个概念来定义现在这样一个热点和风口频出的时代的话,我想,用产业互联网或许是再合适不过的了。对此,可能有人并不认同。…

【设计模式】21.访问者模式

概述 定义: 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 结构 访问者模式包含以下主要角色: 抽象访问者(Visitor)角色:定义了对每一个元素&a…

Outlook邮箱登录不上?被阻止?这些方法教你解决

Outlook是微软的一款备受欢迎的应用软件,可以用来收发电子邮件、管理联系人信息、记日记、安排日程、分配任务等。然而最近就有很多朋友向东哥反映,有的时候没有办法正常登录outlook 邮箱,这是怎么回事呢?不用担心,今天…

揭秘可视化图探索工具 NebulaGraph Explore 是如何实现图计算的

前言 在可视化图探索工具 NebulaGraph Explorer 3.1.0 版本中加入了图计算工作流功能,针对 NebulaGraph 提供了图计算的能力,同时可以利用工作流的 nGQL 运行能力支持简单的数据读取,过滤及写入等数据处理功能。 本文将简单分享下 NebulaGr…

学习记录 --- Pytorch优化器

文章目录参考文献什么是优化器optimizer的定义optimizer的属性defaultsstateparam_groupsoptimizer的方法zero_grad()step()add_param_group()state_dict()、load_state_dict()优化一个网络同时优化多个网络当成一个网络优化当成多个网络优化只优化网络的某些指定的层调整学习率…

总结对Dva数据流向的简单理解

在刚刚接触Dva时,我最想知道的第一个问题就是: 1. Dva是什么? Dva官网文档的介绍是: dva 是体验技术部开发的 React 应用框架,将上面三个 React 工具库包装在一起,简化了 API,让开发 React 应…

[Datawhale][CS224W]图神经网络(八)

目录一、图神经网络1.1 为什么卷积神经网络 (CNN) 在图形上失败?1.2 一个GNN网络的结构如图:![在这里插入图片描述](https://img-blog.csdnimg.cn/20210606150918449.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cH…

MySQL实战解析底层---事务隔离:为什么你改了我还看不见

目录 前言 隔离性与隔离级别 事务隔离的实现 事务的启动方式 前言 和数据库打交道的时候,总是会用到事务最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱转账过程具体到程序里会有一系列的操作&#xff0…

高可用/性能

文章目录1.数据库系统架构发展(1)单库架构(2)主备架构(3)主从架构2.主从复制主从同步配置主从复制模式(1)异步复制(2)半同步复制(3)全…

用spectralayers 简单去一下人声做个伴奏

最近有个同事说有个工作要一个歌的伴奏不会下载问我能不能给下一个。问题是我五音不全,也不咋关注伴奏这方面的事儿,然后巧了,当天晚上就有个网上的大哥在群里聊天的时候说有个去人声比较给力的软件,我马上给要来了。 软件叫啥sp…

【代码随想录训练营】【Day29】第七章|回溯算法|491.递增子序列|46.全排列|47.全排列 II

递增子序列 题目详细:LeetCode.491 注意这道题求的是子序列,而不是子数组,子数组要求其数组是原数组的子集,且元素是连续的,而子序列只需要保证至少有两个元素即可,不需要关系元素是否连续。 所以一开始…

测试人员如何在测试环境数据库批量生成测试数据?方案分享

测试人员为了测试某个特定场景,往往需要在测试环境数据库中插入特定的测试数据来满足需求;性能测试时,常需要在测试环境生成大量可用测试数据来支持性能测试;建设持续集成持续交付体系时,我们往往也需要在测试环境生成…

【网络】套接字 -- TCP

🥁作者: 华丞臧. 📕​​​​专栏:【网络】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文章…

记录一次nginx转发代理skywalking白屏 以及nginx鉴权配置

上nginx代码 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; …

【2023】某python语言程序设计跟学第二周内容

本文说明: 案例内容为北理工python语言程序设计课程,如有不妥请联系! 目录蟒蛇绘制案例:执行结果:代码分析:举一反三:绘制一个五角星图案执行结果:turtle库根据案例简单说明&#xf…