产品资料搜索:

最新产品展示

  • LDM8035接触式模块
    接触式IC卡读写模块 支持SLE4442/4428 小型化 低功耗 方便使用
  • LDM522-MINI射频模块
    体积小(1.9cm*1.4cm) ISO14443-A以及Mifare, Ultrlight&EV1等的低功耗模块
  • LDM-A3射频读卡器
    支持ISO14443A/B 二代证ID 低功耗 免驱
  • LDM523射频读卡模块
    支持iso14443A/B 韦根接口 二代证ID
  • 使用LPC1700的代码读保护

    2009-12-9

    概述

    代码读保护是一种机制,使用户能够不同层次系统安全性保护他们的软件代码和硬件

    LPC1700器件有三种不同的安全级别:CRP1CRP2CRP3。每个模式增加了安全级别,并限制任何设备访问CRP3。在这应用笔记我们研究所有这些安全级别,以及如何使用它们。我们也提供一个例子来检验这些模式的。

    会用到KeilMCB1700评估板的Keil uVision3和 Flash Magic

    注意:虽然本应用笔记的例子经过详细的测试但是仍然强烈建议初步配置器件的安全级别低于CRP3。一旦代码被成功地保护于CRP3,将不能更改。

    Flash 存取方法

    一般来说,LPC1700闪存有两种不同的方式访问:
    使用JTAG编程接口:这种方法可以用Debug工具下载代码到器件并可以停止运行器件
    使用在系统编程(ISP):这种方法是通过引导加载器实现,使用UART0串行端口。

    理解 CRP安全级别

    顾名思义,代码读保护(CRP)为用户提供一个方法保护自己的代码不被从Flash被读取。这样,设计人员阻止未经授权的用户获得目标代码下载到另一个硬件平台。这种情况可以使用CRP1(代码阅读保护 等级1),如果使用CRP2CRP3JTAG访问将被阻止,所以JTAG没有办法读/擦除/写入闪存,ISP也无法读取Flash内容,只有Flash的更新可以执行。

    为进一步的提高安全等级,防止未经授权的用户更改代码,例如使用ISP,或者部分更新Flash或者破解。可以使用CRP2,这种情况允许通过ISP 更新部分Flash,但是这种方式不允许通过未经授权的用该修改现有代码,因为没有办法修改Flash,除非首先删除所有Flash的内容,这样现有代码也将被丢失。

    更高的安全级别是,在你的硬件上下载他自己的代码,这就是硬件保护,能阻止其他人重复使用硬件,在这种情况下,可以防止用户拉低P2.1脚进入ISP模式,这样未授权的用户不用通过ISP访问Flash,这种方式提供了最高层的保护。需要注意的是一旦使用了CRP3就没有办法更新Flash了,但是内部的用户代码可以调用ISP命令(即IAP),调用引导加载程序进入ISP模式。当我们在调用ISP命令,这时候会打开CRP3的保护,这意味着会降级我们的保护到CRP2,在这个保护级别我们依然无法读取Flash的内容,但是可以下载新的代码。所以当你使用CRP3的保护时,建议用户代码应该留一些这样的“后门”,为了打破CRP3的保护。

     

     全文下载 

     

     源代码   

    © 2014 龙达科技有限公司版权所有,所有内容未经许可严禁复制