本文探讨了针对数字信号处理器(DSP)的程序加密与解密技术,旨在保障DSP应用程序的安全性及防止逆向工程。
在DSP应用程序的安全机制中,加密与解密是非常重要的环节。本段落将详细介绍两种加密方法及一种解密方式,并提供详细的步骤供学习使用。
### 加密方法
#### 显示法
1. 在Debug Configurations下拉菜单中选择Program。
2. 选中Loadsymbols only选项并点击Apply。
3. 点击Debug,确保CCS与目标板建立连接成功。
4. 进入Memory Map菜单,选择On-Chip Flash以查看相关界面。
5. 修改CodeSecurity Password中的Key0~Key7。注意不要将所有键值设置为零,否则会导致芯片永久锁定。
6. 设置好密码后点击ProgramPassword进行加密操作。
7. 点击Lock完成整个过程。
#### 隐式法
1. 创建并保存一个名为.asm的文件,并将其添加到项目中与其他源代码一起编译。该文件应包含以下内容:
```assembly
.sect csmpasswds
.int 0xFFFF ;PWL0 (LSW of 128-bit password)
.int 0xFFFF ;PWL1
.int 0xFFFF ;PWL2
.int 0xFFFF ;PWL3
.int 0xFFFF ;PWL4
.int 0xFFFF ;PWL5
.int 0xFFFF ;PWL6
.int 0xFFFF ;PWL7 (MSW of 128-bit password)
.sect csm_rsvd
.loop (3F7FF5h - 3F7F80h + 1)
.int 0x0000
.endloop
```
2. 在CMD文件中添加以下内容:
```assembly
MEMORY{
...
CSM_RSVD : origin = 0x3F7F80, length = 0x000076
...
CSM_PWL : origin = 0x3F7FF8, length = 0x000008
}
SECTIONS{
...
csmpasswds : > CSM_PWL PAGE = 1
csm_rsvd : > CSM_RSVD PAGE = 1
... }
```
完成上述步骤后,程序即被加密。接下来只需将生成的.out文件提供给Flash烧写人员即可。
### 解密方法
解密DSP程序时,请遵循以下步骤:
1. 如显示法中所述的第一步,建立CCS与目标板之间的连接。
2. 输入已设置好的Key0~Key7密码,并点击Unlock按钮。此时会弹出相应提示信息。
3. 选择Erase Flash进行Flash数据的擦除操作;如果成功,则表明程序已经解密完成。
需要注意的是,在使用128位加密时,必须通过硬件复位来辅助CCS执行解密过程。而仅对高64位进行加密的情况下则无需如此步骤。
具体实现方式为:在上电前将GPIO34引脚拉低,并于之后恢复其默认状态。
以上便是DSP程序中常用的加密和解密方法,希望对你有所帮助。