CN102651686A - 单片机在线可编程的身份认证方法 - Google Patents
单片机在线可编程的身份认证方法 Download PDFInfo
- Publication number
- CN102651686A CN102651686A CN2011100436905A CN201110043690A CN102651686A CN 102651686 A CN102651686 A CN 102651686A CN 2011100436905 A CN2011100436905 A CN 2011100436905A CN 201110043690 A CN201110043690 A CN 201110043690A CN 102651686 A CN102651686 A CN 102651686A
- Authority
- CN
- China
- Prior art keywords
- key
- chip microcomputer
- nonvolatile memory
- user
- algorithm module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种单片机在线可编程的身份认证方法,其包括:在单片机内设置安全验证码和安全密钥;先采用安全验证码的比对判断方法来进行第一重身份认证;在通过第一重身份认证后,通过安全密钥来进行第二重身份认证。本发明的方法,在单片机在线可编程接口开放的情况下,保证了芯片内部用户程序存储区不被未经授权的非法用户随意访问、程序读取或是下载恶意代码,从而实现既能通过在线可编程技术降低成品开发成本,又能保证用户程序安全性的问题。
Description
技术领域
本发明涉及一种单片机在线可编程的身份认证方法。
背景技术
在线可编程技术已经在很多单片机中得以实现,用户可以通过单片机上的专用在线可编程口,对其用户程序存储器进行修改(既更改系统软件),从而在不更改系统硬件的基础上,使产品得到升级,大大地降低了成品的开发成本。
但现有的支持在线可编程技术的传统单片机中,在安全方面或多或少都存在着隐患。主要有三种情况:一是没有安全认证,大多单片机只要在编程口上检测到一个或多个固定的序列,那么编程模式就被打开,用户可以进行程序访问,而这段固定序列是公开的,所以任何人都能进入编程模式;二是安全措施太简单,比如一些单片机具有程序区域锁功能,既当程序区锁位为编程(Program)状态时,程序区不可读也不可写,要对程序区进行擦写操作(即在线编程),必须先擦除(Erase)掉程序区锁位,擦除过程会把用户程序区也一并擦除掉,这种方式保证了原有的用户程序不能被读出,但保证不了用户程序存储器被恶意修改;三是在线可编程的次数有限,有很多单片机支持用户一次性或有限次在线可编程,但当程序测试稳定后,用户会编程(program)某些一次可编程(OTP)位,使系统再也回不到编程状态,由于此类单片机在线可编程次数有限,所以不能满足需要多次更新的需求。
单片机在线编程的安全性问题,大大制约了降低系统成品成本的可能性。比如在电表,水表和天燃气表领域,由于单片机内的程序有很高的安全性要求,不能随意地对其通过编程口进行访问,不然后果就非常严重了。
发明内容
本发明要解决的技术问题是提供一种单片机在线可编程的身份认证方法,解决单片机在线可编程的不安全问题。
为解决上述技术问题,本发明的单片机在线可编程的身份认证方法,其为在单片机内设置安全验证码和安全密钥;先采用安全验证码的比对方法来进行第一重身份认证;在通过第一重身份认证后,通过安全密钥来进行第二重身份认证。
本发明的方法中,采用安全验证码和安全密钥认证技术这两种手段,对用户的身份进行双重认证,只有在两重身份认证成功之后,才能通过在线可编程通信接口进行读写操作。同时本发明的方法中,进入在线可编程状态下,可对保存在存储器中安全验证码和安全密钥进行多次修改,进一步提高在线可编程的安全性。在单片机在线可编程接口开放的情况下,用以保证芯片内部用户程序存储区不被未经授权的非法用户随意访问,进行程序读取或是下载恶意代码,从而实现既能通过在线可编程技术降低成品开发成本,又能保证用户程序安全性的问题。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1为本发明的身份认证示意图;
图2为本发明的方法流程图。
具体实施方式
本发明的单片机在线可编程的身份认证方法,采用安全验证码和安全密钥形成两重身份认证。
一个具体的实例为:在单片机(通常在芯片上)上设有密钥算法模块(可为现成的安全算法模块)、随机数产生器、在线可编程通信接口和非易失性存储器(具体称为嵌入式非易失性存储器);在非易失性存储器内保存有安全验证码,用于和用户通过在线可编程通信接口输入的验证码进行比较,在用户机和单片机之间提供第一重安全身份认证;非易失性存储器内还保存有安全密钥,在用户通过第一重身份认证后,从随机数产生器中取出一段随机数并发送给用户,用户在接收到所述随机数后通过预存的安全密钥和密钥算法模块对所述随机数进行加密,并将加密后的随机数通过所述在线可编程通信接口返回所述单片机,所述单片机用密钥算法模块和所述安全密钥对所述加密后的随机数进行解密,而后与原始随机数进行比对判断,在用户和单片机之间提供第二重身份认证。通过两重身份认证后,单片机进入在线可编程状态,用户即可进行编程操作。非易失性存储器可分为信息引导区和用户程序区等,安全验证码和安全密钥一般存储在信息引导区下的信息区域,而用于的编程操作在用户程序区内进行。上述的安全密钥认证中,可采用现有的任意一种认证技术。
还可在非易失性存储器内保存安全锁位,用于在用户通过第二重身份认证后,当且仅当所有的安全锁位为擦除状态时,才允许用户对存储器的用户程序区进行读写访问,能有效避免可能的误操作。
上述方法中,在线可编程通信接口可为UART接口、SPI接口、I2C接口或其它通用单片机通信接口。非易失性存储器可为任意一种已知的类型,如Flash存储器或EEPROM存储器。而密钥算法模块可为DES密钥算法模块,此时非易失性存储器内保存的安全密钥为DES密钥。密钥算法模块也可为RSA密钥算法模块,相应地非易失性存储器内保存的安全密钥为RSA密钥。密钥算法模块还可为3DES密钥算法模块,相应地非易失性存储器内保存的安全密钥为3DES密钥。在具体使用中,用户端(上位编程器或上位机)也需要使用相同的密钥算法模块。
本发明的一个具体单片机在线编程身份认证过程,参见图1和图2给出,其中图1为使用本发明的单片机的配置示意图,图2为本发明的身份认证流程示意图:
1)单片机在上电或是系统复位后,系统在嵌入式非易失性存储器的信息引导区(Boot-loader)内执行程序,主要为初始化好单片机外设,打开在线编程通讯接口(可为UART接口),并且触发计时器(Timer)开始计时,Timer会在预设时间(如A时间)后产生中断;
2)在这个过程中,用户(如上位编程器)就开始以预设时间(如B时间)为单位间隔,不停地通过UART接口向单片机发送安全验证码(可为8比特的认证码);
在上述两个过程中,可产生如下几种情况:(1)在时间A内,如果单片机的UART接口没有接收到任何数据,则计数器产生中断,单片机响应中断,进行系统软复位,系统在嵌入式存储器用户程序区内执行程序;(2)在时间A内,如果单片机的UART接口接收到上位编程器发送的数据,但将该数据和预存在非易失性存储器中的安全验证码比较后,并不一致,此时单片机通过UART接口返回错误信息,让上位编程器重新发送安全验证码。如果尝试次数超时(即超过A时间),且第一重身份验证还未通过,那么单片机进行系统软复位,系统在嵌入式存储器用户程序区内执行程序;(3)在时间A内,如果单片机的UART接口接收到上位编程器发送的验证数据,且该验证数据与用户在非易失性存储器(如Flash)内预存的安全验证码一致,单片机通过UART接口返回正确消息;
上述的B时间,具体大小应满足一次上位机发送安全验证码,和单片机通过UART接口返回一个响应的时间;A时间的具体大小应是B时间的整数倍,即表示通信双方希望建立第一重安全验证的最多尝试次数。
3)在第一重安全验证通过之后,即进行密钥验证。单片机从其上随机数产生器(random number generator)中取出一段随机数,随机数的长度可由通讯双方决定,单片机通过UART接口将这段随机数发送给上位编程器;
4)上位编程器在接收到这段随机数后,用DES密钥算法模块和预定好的密钥(可为64比特密钥)对其进行加密,之后将加密的数据通过UART接口返送回单片机;
5)单片机在接收到这段加密数据后,通过其内的DES密钥算法模块和用户预存在非易失性存储器(具体可为Flash)上的密钥对此加密数据进行解密操作,并将解密结果与上轮自己产生的随机数进行比对,如果结果一致,那么通过第二轮身份验证,否则单片机通过UART接口返回认证错误信息,并重新进行步骤3到步骤5,尝试次数可由通讯双方预先决定。如果尝试次数超过预定值,且第二重身份认证还未通过,那么单片机进行系统软复位,系统在嵌入式存储器用户程序区内执行程序;
6)在通过双重认证后,单片机进入在线可编程状态,可直接进行编程操作。
还可在Flash内设置安全锁位(LOCK BIT),具体可设为3比特的LOCK BIT,用以决定用户程序存储区,保存在非易失性存储器内的安全验证码和密钥的访问权限。一个具体例子可参见表1,当3比特的安全锁位均为“000”时,为锁状态,不能进行编程操作;而在其他状态时,为未锁状态,可进行读写操作。在锁状态下时,当上位编程器发送解锁命令后,整个用户程序存储区会被同时擦掉,以防止用户通过MOVC指令读出原有的用户程序。解锁后,用户可以进行编程操作。也可以对8-bit验证码和64-bit密钥进行读写操作,通过这种方式,用户可以自行决定不定期地更换验证码和密钥,从而达到更高的在线可编程安全性。
表1
3-bit安全锁位 | 访问权限 |
“000” | 锁状态,不能读写; |
其它 | 未锁状态,可读写; |
本发明的方法中,对在线可编程模式下,没有超时的限制。当用户在线编程完成后,可重新编写安全锁位,使其状态回到锁状态(如“000”),锁住整个Flash。用户也可以通过上位机UART接口向单片机发送“退出”命令,单片机接受到此命令后,进行系统软复位,系统在嵌入式存储器用户程序区内开始执行新的程序。
本发明的单片机在线可编程的安全身份认证的方法和技术,大大地提升了单片机在线可编程的安全性,使未授权的用户不能对单片机内部的程序存储器进行读写访问,也不能随意地更改用户程序区域,从而使很多对安全性要求较高或者很高的单片机应用市场(比如电表,水表,天然气表)系统升级成本大大降低。
Claims (10)
1.一种单片机在线可编程的身份认证方法,其特征在于:在所述单片机内设置安全验证码和安全密钥;先采用安全验证码的比对判断方法来进行第一重身份认证;在通过第一重身份认证后,通过安全密钥来进行第二重身份认证。
2.如权利要求1所述的身份认证方法,其特征在于:在所述单片机上设有密钥算法模块、随机数产生器、在线可编程通信接口和非易失性存储器;在所述非易失性存储器内保存有安全验证码,用于和用户通过所述在线可编程通信接口输入的验证码进行比较,在用户机和单片机之间提供第一重身份认证;非易失性存储器内还保存有安全密钥,在用户通过第一重身份认证后,从所述随机数产生器中取出一段随机数并发送给用户,用户在接收到所述随机数后通过预存的安全密钥和密钥算法模块对所述随机数进行加密,并将加密后的随机数通过所述在线可编程通信接口返回所述单片机,所述单片机用密钥算法模块和所述安全密钥对所述加密后的随机数进行解密,而后与原始随机数进行比对,在用户和单片机之间提供第二重身份认证。
3.如权利要求2所述的身份认证方法,其特征在于:在所述非易失性存储器内还保存有安全锁位,用于在用户通过第二重身份认证后,当且仅当所有的安全锁位为擦除状态时,才允许用户进行读写访问。
4.如权利要求2或3所述的身份认证方法,其特征在于:所述在线可编程通信接口为UART接口、SPI接口或I2C接口。
5.如权利要求2或3所述的身份认证方法,其特征在于:所述非易失性存储器为Flash存储器或EEPROM存储器。
6.如权利要求4所述的身份认证方法,其特征在于:所述非易失性存储器为Flash存储器或EEPROM存储器。
7.如权利要求2或3所述的身份认证方法,其特征在于:所述密钥算法模块为DES密钥算法模块,所述非易失性存储器内保存的安全密钥为DES密钥。
8.如权利要求4所述的身份认证方法,其特征在于:所述密钥算法模块为DES密钥算法模块,所述非易失性存储器内保存的安全密钥为DES密钥。
9.如权利要求2或3所述的身份认证方法,其特征在于:所述密钥算法模块为RSA密钥算法模块,所述非易失性存储器内保存的安全密钥为RSA密钥。
10.如权利要求2或3所述的身份认证方法,其特征在于:所述密钥算法模块为3DES密钥算法模块,所述非易失性存储器内保存的安全密钥为3DES密钥。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100436905A CN102651686A (zh) | 2011-02-23 | 2011-02-23 | 单片机在线可编程的身份认证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100436905A CN102651686A (zh) | 2011-02-23 | 2011-02-23 | 单片机在线可编程的身份认证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102651686A true CN102651686A (zh) | 2012-08-29 |
Family
ID=46693582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100436905A Pending CN102651686A (zh) | 2011-02-23 | 2011-02-23 | 单片机在线可编程的身份认证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102651686A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103809995A (zh) * | 2012-11-15 | 2014-05-21 | 海尔集团公司 | 单片机及其在线升级方法和在线升级装置 |
CN104573567A (zh) * | 2013-10-17 | 2015-04-29 | 联芯科技有限公司 | 芯片编程加密保护方法及其系统 |
CN105722013A (zh) * | 2016-02-02 | 2016-06-29 | 深圳市文鼎创数据科技有限公司 | 蓝牙配对方法及装置 |
CN105930283A (zh) * | 2016-04-12 | 2016-09-07 | 珠海市魅族科技有限公司 | 一种存储信息的方法及移动终端 |
CN105939520A (zh) * | 2016-03-18 | 2016-09-14 | 李明 | 一种通信连接的建立方法、设备及系统 |
CN106201352A (zh) * | 2016-07-07 | 2016-12-07 | 广东高云半导体科技股份有限公司 | 非易失性fpga片上数据流文件的保密系统及解密方法 |
CN109448251A (zh) * | 2018-12-29 | 2019-03-08 | 益阳中屹智能科技有限公司 | 一种物联网智能燃气表 |
CN111767532A (zh) * | 2020-06-12 | 2020-10-13 | 上海橙群微电子有限公司 | 编程器鉴权方法和鉴权系统 |
CN111900958A (zh) * | 2020-06-19 | 2020-11-06 | 上海美仁半导体有限公司 | 随机数产生电路、芯片及家用电器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1670489A (zh) * | 2005-04-11 | 2005-09-21 | 西安华丰投资发展有限公司 | 一种ic卡智能燃气表 |
CN101288059A (zh) * | 2005-12-22 | 2008-10-15 | 香港应用科技研究院有限公司 | 利用安全令牌链的双重认证 |
CN101674304A (zh) * | 2009-10-15 | 2010-03-17 | 浙江师范大学 | 一种网络身份认证系统及方法 |
CN101888627A (zh) * | 2009-05-12 | 2010-11-17 | 中兴通讯股份有限公司 | 一种移动终端及保护其系统数据的方法 |
-
2011
- 2011-02-23 CN CN2011100436905A patent/CN102651686A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1670489A (zh) * | 2005-04-11 | 2005-09-21 | 西安华丰投资发展有限公司 | 一种ic卡智能燃气表 |
CN101288059A (zh) * | 2005-12-22 | 2008-10-15 | 香港应用科技研究院有限公司 | 利用安全令牌链的双重认证 |
CN101888627A (zh) * | 2009-05-12 | 2010-11-17 | 中兴通讯股份有限公司 | 一种移动终端及保护其系统数据的方法 |
CN101674304A (zh) * | 2009-10-15 | 2010-03-17 | 浙江师范大学 | 一种网络身份认证系统及方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103809995A (zh) * | 2012-11-15 | 2014-05-21 | 海尔集团公司 | 单片机及其在线升级方法和在线升级装置 |
CN104573567A (zh) * | 2013-10-17 | 2015-04-29 | 联芯科技有限公司 | 芯片编程加密保护方法及其系统 |
CN104573567B (zh) * | 2013-10-17 | 2017-11-10 | 联芯科技有限公司 | 芯片编程加密保护方法及其系统 |
CN105722013A (zh) * | 2016-02-02 | 2016-06-29 | 深圳市文鼎创数据科技有限公司 | 蓝牙配对方法及装置 |
CN105939520A (zh) * | 2016-03-18 | 2016-09-14 | 李明 | 一种通信连接的建立方法、设备及系统 |
CN105930283A (zh) * | 2016-04-12 | 2016-09-07 | 珠海市魅族科技有限公司 | 一种存储信息的方法及移动终端 |
CN106201352A (zh) * | 2016-07-07 | 2016-12-07 | 广东高云半导体科技股份有限公司 | 非易失性fpga片上数据流文件的保密系统及解密方法 |
CN109448251A (zh) * | 2018-12-29 | 2019-03-08 | 益阳中屹智能科技有限公司 | 一种物联网智能燃气表 |
CN111767532A (zh) * | 2020-06-12 | 2020-10-13 | 上海橙群微电子有限公司 | 编程器鉴权方法和鉴权系统 |
CN111900958A (zh) * | 2020-06-19 | 2020-11-06 | 上海美仁半导体有限公司 | 随机数产生电路、芯片及家用电器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102651686A (zh) | 单片机在线可编程的身份认证方法 | |
CN101681414B (zh) | 用于保护电子装置中的用户识别模块锁信息的方法及设备 | |
US8898477B2 (en) | System and method for secure firmware update of a secure token having a flash memory controller and a smart card | |
US7500098B2 (en) | Secure mode controlled memory | |
CN101345619B (zh) | 基于生物特征和移动密钥的电子数据保护方法及装置 | |
ES2881873T3 (es) | Procedimiento de protección de una ficha de pago | |
EP2989741B1 (en) | Generation of working security key based on security parameters | |
CN1659497B (zh) | 保护内存不受复位之后的攻击 | |
WO2020020329A1 (zh) | 一种支持匿名或实名的离线交易的数字钱包及使用方法 | |
KR20090007123A (ko) | 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템 | |
WO2005096158A1 (ja) | 利用認証方法、利用認証プログラム、情報処理装置および記録媒体 | |
JP2004295271A (ja) | カード及びパスコード生成器 | |
CN106059771A (zh) | 一种智能pos机密钥管理系统及方法 | |
TW202036347A (zh) | 資料儲存、驗證方法及裝置 | |
CN103782538A (zh) | 认证器 | |
CN104200156A (zh) | 一种基于龙芯处理器的可信加密系统 | |
CN101996154A (zh) | 支持可重组安全设计的通用处理器 | |
CN103269271A (zh) | 一种备份电子签名令牌中私钥的方法和系统 | |
CN109800605A (zh) | 一种安全计算机 | |
CN103914662A (zh) | 一种基于分区的文件加密系统的访问控制方法和装置 | |
CN101419557A (zh) | 一种程序下载控制方法 | |
CN102163267A (zh) | 固态硬盘安全访问控制方法、装置和固态硬盘 | |
CN105608775B (zh) | 一种鉴权的方法、终端、门禁卡及sam卡 | |
CN1331015C (zh) | 计算机安全启动的方法 | |
CN101673248B (zh) | 存储系统、控制器与数据保护方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C53 | Correction of patent of invention or patent application | ||
CB03 | Change of inventor or designer information |
Inventor after: Jing Weiliang Inventor after: Ji Xinhua Inventor before: Jing Weiliang |
|
COR | Change of bibliographic data |
Free format text: CORRECT: INVENTOR; FROM: JING WEILIANG TO: JING WEILIANG JI XINHUA |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120829 |
|
WD01 | Invention patent application deemed withdrawn after publication |