目录
一、软件加密目的
二、加密方式介绍
2.1 硬件加密
2.2 软件加密
三、软件加密方式
3.1非对称加密算法
3.2对称加密算法
四、数字签名
五、软件破解方式
参考文献
一、软件加密目的
防止软件被复制使用并恶意破坏,给企业和个人带来经济损失。
二、加密方式介绍
2.1 硬件加密
有授权芯片保护(一种与嵌入式开发板主控芯片相连的具有某种加解密或认证能力的芯片,例如LKT4200)、SRAM PUF保护
2.2 软件加密
软件水印技术(在软件中嵌入许可证水印-用于软件版权保护)、注册码(或产品序列号、注册文件)保护技术、嵌入式软件加壳技术(防止程序被反编译或非法修改,例如exe文件加壳压缩可以改变原程序的运行流程和特征,并且可以有效改变原程序的静态特征,在内存中执行时脱壳)、联网注册产品序列号保护。
三、软件加密方式
软件加密算法:公开密钥(非对称加密算法)、传统加密(对称密钥加密算法)
3.1非对称加密算法
执行步骤:在数据通信过程中,甲方将加密算法和公开密钥发送给乙方,乙方按照该加密方式将通信数据进行加密,并把加密后的数据发送给甲方,甲方依据私钥进行数据的解密,从而保证数据通信的安全。
常见的非对称加密算法:RSA、DSA
特点:加密和解密花费时间长、速度慢、安全性高
算法 | 加解密方式 | 特点及应用 |
RSA(1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼Leonard Adleman)一起提出) | 基于对极大整数做因数分解 | 目前无可靠攻击RSA算法的方式(大于768二进制位) |
DSA(Digital Signature Algorithm) | 基于整数有限域离散对数难题 | 一般用于数字签名 |
3.2对称加密算法
执行步骤:在数据通信之前双方共同确定一个共同的密钥,甲方把数据加密后发送给乙方,乙方依据商量一致的解密密钥对数据进行解密,类似的乙方将数据加密并发送给甲方的加解密方式也一样。其中的加密密钥和解密密钥具有一定的相关性,依据其中一个可推导出另一个,其中数据通信的安全性在于密钥的安全性,避免将密钥公开给第三方。
常见的对称式加密算法:DES、AES、IDEA
特点:加密效率高、速度快,但对密钥管理不便、安全性比非对称方式低
算法 | 密钥长度 | 加解密方式 | 特点及应用 |
DES(Data Encryption Standard)1972年IBM研制 | 56、64 | 参数Key(64位)、Data(进行加密的数据分组 64位)、Mode(模式:加密或解密) | 数据位不足时按某种方式填充 |
3DES(Triple Data Encryption Algorithm) | 对数据块应用3次DES加解密算法 | ||
AES(Advanced Encryption Standard) | 128、192、256 | C = E(K, P),其中P为明文,K为密钥,C为密文。涉及不同的模式(ECB、CBC、CFB和OFB)及填充方式选择 | https的加密方式,微信小程序的加密传输方式,安全性高 |
IDEA(International Data Encryption Algorithm) | 128 | 8轮次加密 | 数据块加密算法,加密轮次 |
四、数字签名
目的:保证消息来源的准确性和不可否认性,防止数据被篡改
数字签名过程:发送报文时,发送方用一个哈希函数将报文文本生成报文摘要,然后用发送方的私钥对该摘要进行加密,加密后的摘要作为报文的数字签名和报文内容一起发送给接收方;接收方接收到数据后,首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该报文是发送方的,流程图如下图所示。
如果两个摘要不相等,可能报文内容被修改过。
为防止接收方的公钥可能被替换,因此寻找第三方验证机构例如CA证书中心,CA证书中心使用私钥对公钥进行加密构成数字证书,并将该数字证书也发送给接收方,接收方在接收到该证书后使用CA颁发的公钥进行解密即可明确该公钥确实是发送方的。
数字签名涉及:哈希函数、接收者的公钥、发送方的私钥。
数字签名算法(哈希算法):MD2、MD4、MD5、HAVAL、SHA、SHA-1、SHA-2、HMAC、HMAC-MD5、HMAC-SHA1、RSA(私钥加密,公钥解密)、DSA(私钥加密,公钥解密)
算法 | 原理 | 散列值 | 特点 |
MD5 1992年公开 | MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值 | 128位 | 不适用于安全性验证(存在碰撞可能性) |
SHA-2 2001年发布(安全散列算法) | 将输入的数据分为固定长度的块,然后进行迭代压缩,最终产生一个固定长度的哈希值 | 可为224位、256位、384位、512位 | 安全性高,避免哈希值碰撞 |
五、软件破解方式
动态调试:将程序调入到相应的内存中,利用调试工具在程序执行的代码区加入断点调试,并分析整个程序的执行逻辑流程,并依据该逻辑流程仿制出功能相似的程序代码。
静态分析:对存储在静态存储区的代码文件和数据进行非法的破解。例如反汇编和反编译,其中的反汇编是将机器码转化为汇编代码,反编译是将代码转化为最终的源代码。
参考文献
[1] 用软件加密技术
[2] 浅谈常见的七种加密算法及实现 - 掘金
[3] https://www.cnblogs.com/Terry-Wu/p/10314315.html
[4] 基于授权芯片的认证库开发以及加密技术研究
[5]数字签名_百度百科
[6] 数字签名是什么? - 阮一峰的网络日志
[7] java - 一文彻底搞懂加密、数字签名和数字证书! - 个人文章 - SegmentFault 思否
[8] 软件加壳技术研究