具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明一个实施例提供一种嵌入式系统安全通信方法,以图1中所示为例,包括如下步骤:
步骤11:终端获取外部软件数字证书,从所述数字证书中获得外部软件数字签名以及外部软件公钥;
步骤12:终端验证所述数字签名,若合法,则产生对称密钥,使用对称密钥应用对称加密算法对外部软件数字证书加密,并使用所述外部软件公钥对所述对称密钥加密;
步骤13:终端将加密后的数字证书以及加密后的对称密钥组成数字信封发送给外部软件,以便外部软件根据所述终端的数字证书验证所述终端是否合法;
步骤14:在外部软件验证所述终端合法后,终端以数字信封方式发送消息给外部软件,以及接收外部软件以数字信封方式发送的消息。
本发明实施例终端和外部软件采用同一认证中心(CA,CertificationAuthority)发布的数字证书,对于终端的数字证书,CA中心使用指定的不对称加密算法,对每个终端产生一对公钥、私钥对(key pair)。CA选择某一根密钥ROOT-KEYx,对产生的终端公钥,加上IMEI或其他标识符数据通过HASH算法生成摘要Digest,再用根密钥ROOT-KEYx的私钥对摘要Digest值进行签名产生相应的数字证书。CA将终端的数字证书及相应的ROOT-KEYx发给终端作为保密数据进行安全存储。
对于外部软件的数字证书,采用CA中心指定的不对称加密算法,CA中心为外部软件产生一对公私钥(key pair),CA使用外部软件的版本信息及其他数据,通过HASH算法产生消息摘要,再选择某一ROOT-KEYx,用其私钥进行签名,“证书头+所有数据+签名”组成数字证书,再用已选择的ROOT-KEYx的私钥对整个数字证书进行加密,形成外部软件的加密数字证书;CA将加密数字证书+ROOT-KEY的公钥一起发给外部软件作为保密数据进行安全存储;本发明实施例所述外部软件包括PC软件或其他使用终端接入无线网络的系统,如网关(Gateway),机顶盒等外部软件。对于PC软件来说,CA可以针对PC软件的某种特征,如PC软件所安装的PC机硬件配置,或针对PC软件特有的数据产生有时间期限(时间戳)的数字证书。本发明实施例所述的PC软件的安全存储方法可以采用常用的USB key,也可以采用PC上已有的硬件、软件方法,例如新技术文件系统(NTFS,New Technology File System)中提供的安全文件系统。
CA中心产生多个公私钥对(POOT-KEYx,x=1,2,…N)作为根密钥ROOT-KEY,ROOT-KEY的密钥应使用1024位或2048位,CA中心负责管理根密钥的私钥安全性;在生成终端和外部软件数字证书过程中使用的所述ROOT-KEYx为从多个根密钥ROOT-KEY中选择的一个根密钥。所述根密钥与使用根密钥的终端的种类对应,不同种类的终端使用不同的根密钥,降低了因一个根密钥失密而所有相关产品被破解的概率。
所述终端和外部软件中除安全保存所述CA分配的根密钥、数字证书外,还安全保存有所述CA分配的本终端的公私钥对,以及指定的其他终端的数字证书。例如,在终端中还保存有终端的私钥及外部软件的数字证书,在外部软件中还保存有外部软件的私钥及终端的数字证书。
在步骤11中,一个实施例所述终端获取外部软件数字证书,从所述数字证书中获得外部软件数字签名以及外部软件公钥的方法包括:终端获取外部软件加密数字证书,使用存储的根密钥的公钥解密所述数字证书获得外部软件数字签名以及外部软件公钥。
在步骤11中,终端获取外部软件数字证书后,所述方法还包括:
检查数字证书内容,获得数字证书允许的功能和范围以及数字证书有效时间。在数字证书中对功能和使用范围作了限制,在数字证书中预置许可的功能和使用范围,结合数字证书有效时间,可以用来防止数字证书被滥用和非法扩大化使用。例如,将终端支持的功能分类为A、B、C和D,而外部软件发来的证书中仅写了A和B,则终端只允许外部软件使用功能A、B,如这时外部软件要求终端提供C或D的功能,则终端有权拒绝,即回复要求超出范围,或不予处理。
在步骤12中,终端验证所述数字签名是否合法,即验证所述数字签名是否有效,具体验证方法为现有技术,本发明对此不做限定。
在步骤12中,对于对称密钥的产生算法,可以由终端和外部软件之间预先协商确定,也可以由CA指定。终端与外部软件使用同样的随机数、时间信息等作为输入参数,使用约定的或CA指定的算法产生单次会话使用的对称密钥,也可以称为会话密钥。所述对称加密算法可以由终端和外部软件之间预先协商确定,也可以由CA指定。
在步骤13中,一种实施例所述外部软件根据所述终端的数字证书验证所述终端是否合法包括:使用外部软件的私钥解密出对称密钥,使用解密出的对称密钥解密出所述终端的数字证书,根据所述终端的数字证书验证所述终端是否有效。
在步骤14中,所述终端以数字信封方式发送消息给外部软件包括:产生对称密钥,使用对称密钥应用对称加密算法对消息加密,并使用所述外部软件公钥对所述对称密钥加密;将加密后的消息以及加密后的对称密钥组成数字信封发送给外部软件。
所述产生的对称密钥可以每间隔预定时间更换;或也可以每次都产生不同的对称密钥。
在步骤14中,接收外部软件以数字信封方式发送的消息后,所述方法还包括:使用终端的私钥解密出对称密钥,使用解密出的对称密钥解密出消息。
从上述描述可知,本发明实施例在通信双方互相验证对方合法后,双方采用各自独立的数字信封方式发送消息,不但省略了密钥交换过程,降低了密钥交换环节的风险,而且数字信封的使用保证了各个传输方向上的信息安全;每个发送方可按照自己的规则独立切换对称密钥,进一步增强了安全性。本发明实施例对数字证书的安全存储及传输方案减少了破解数字证书和公钥的机会,增强了通信过程的整体安全性。
为进一步理解本发明,下面以不同场景对嵌入式系统安全通信方法进行详细介绍,
场景一:嵌入式系统中终端与PC软件交互,PC软件使用USB key,PC软件的私钥存储于USB key内,加解密操作仅在USB key内进行,具体操作流程如图2中所示,包括如下步骤:
步骤20:PC软件发送连接请求消息(PC Request),同时携带PC软件当前的通用协调时间UTC;
本步骤中PC软件可使用明文发送该连接请求消息。
步骤21:终端收到该连接请求消息后,发送本终端标识信息作为响应消息给该PC软件;
本发明实施例中终端的标识信息可以为单板的IMEI或CA为终端分配的唯一的公私钥对作为终端的唯一标识信息。
步骤22:PC软件从USB key中取出相应的加密数字证书发给终端;
PC软件接收到连接响应消息后,确定与终端连接成功,则可以判断是否有USB key,如有USB key,则从USB key中取出相应的加密数字证书Pse,发送给终端;
步骤23:终端收到数字证书后,用已存储的ROOT-KEYx的公钥对加密数字证书进行解密,解密成功后再对数字证书中的数字签名验证是否有效,包括有效周期的检验,同时取出PC软件的公钥Ps1备用;
终端检查数字证书允许的功能和范围,如发现是针对“PC软件非特定终端”的证书,即PC软件与某一类的所有终端均可通信,终端则准备发送自己的数字证书D1(包含公钥)给PC软件,一种实施例发送自己的数字证书给PC软件的方法包括:
首先,产生一个会话密钥Ku1,通过Ku1采用对称加密算法对D1进行加密生成D1’,再用PC软件的公钥Ps1对Ku1加密生成Ku1’,将Ku1’+D1’组成数字信封E1发给PC软件;该会话密码是一种对称密钥。
步骤24:PC软件收到终端发来的数字信封E1后,先用本身的私钥解密Ku1’得到Ku1,然后用Ku1解密D1’得到D1,再对D1证书验证是否有效,包括有效周期的检验,有效则取出D1中终端的公钥Pu1备用;
所有解密和验证均在USB Key中进行。
PC软件与终端之间的互相验证通过后,PC软件可以和终端之间执行进一步的操作。
PC软件可按照同样的方法产生数字信封发送命令或请求给终端,例如:产生对称密钥Kp1,用Kp1及对称加密算法对发送给终端的命令\请求的消息进行加密生成CR’,再用终端的Pu1对Kp1加密生成Kp1’,Kp1’+CR’组成数字信封S1发给终端。
步骤25:终端解密出PC软件发来的数字信封S1后,根据命令\请求消息的要求准备回复数据R1,终端对发送给PC软件的数据通过数字信封方式发送;
例如,终端可选择新的会话密钥Ku2加密R1,也可选择使用上次的Ku1。也就是说,终端可按照一定的规则自行选择切换会话密钥Ku。
步骤26:PC软件使用数字信封给终端发送命令或请求;
同样,PC软件可按照一定的规则自行选择切换会话密钥Kp。
上述处理流程中,任一验证过程失败将导致流程终止。
终端和PC软件间可以通过定时器来维护链路的连续性(HeartbeatTimer),如定时器超时仍未收到对方数据,则本次加密通信过程结束。下次通信需重新启动以上所述的双向认证和加密传输过程。
本实施例终端和PC软件之间的通信进行双向认证和加密传输,通过数字证书确认对方的合法身份,通过数字信封保证信息的安全传输,加密密钥由发送方独立选择切换,保证了传输接口上的数据安全;使嵌入式通信终端与相应的外部软件之间的通信更加安全、可靠。
场景二:嵌入式系统中终端与PC软件交互,PC软件未使用USB key,私钥由PC软件加密存储,具体操作流程如图3中所示,包括如下步骤:
步骤30:PC软件发送连接请求消息(PC Request),同时携带PC软件当前的通用协调时间UTC;
本步骤中PC软件可使用明文发送该连接请求消息。
步骤31:终端收到该连接请求消息后,发送本终端标识信息作为响应消息给该PC软件;
本发明实施例中终端的标识信息可以为单板的IMEI或CA为终端分配的唯一的公私钥对作为终端的唯一标识信息。
步骤32:PC软件根据终端的唯一标识信息查找相应的数字证书(包含PC软件的公钥、终端的公钥)和ROOT-KEYx,将相应的数字证书发给终端;PC软件同时取出终端对应的公钥P1备用;本发明一个实施例所述PC软件根据终端的唯一标识信息查找相应的数字证书的方法包括:PC软件预先存储一个或多个将用于通信的终端的证书,并对这些证书建立一个索引表,索引表以终端的特定标识信息作为索引值,如每个终端都有唯一值的IMEI,则PC软件以该终端的唯一作为索引来查找相应的数字证书。
PC软件接收到连接响应消息后,确定与终端连接成功,则可以判断是否有USB key,如没有USB key,则根据终端的唯一标识信息查找数字证书Pse,发送给终端;
步骤33:终端收到数字证书后,用已存储的ROOT-KEYx的公钥对加密数字证书进行解密,解密成功后再对数字证书中的数字签名验证是否有效,包括有效周期的检验;
终端检查数字证书允许的功能和范围,如发现是针对自己的公钥及IMEI,则回复PC软件UE Confirm,同时取出PC软件的公钥Ps1备用以及证书的许可功能及使用范围。
步骤34:PC软件收到终端发来的UE Confirm,使用数字信封的方式向终端发送命令或请求(command、Request)开始进一步的操作。
例如,该以数字信封方式发送命令或请求的方法包括:首先产生会话密钥(对称密钥)Kp1,用Kp1及对称加密算法对command/request进行加密生成CR’,再用终端的Pu1对Kp1加密生成Kp1’,Kp1’+CR’组成数字信封S1发给终端(PC Command)。
步骤35:终端解密PC软件发来的数字信封S1后,根据命令\请求消息判断其是否有效(证书中已许可)后并准备回复数据R1,终端以数字信封方式发送回复的内容;一个实施例所述根据命令\请求消息判断其是否有效的方法包括:如前面所述,在数字证书中会指明终端可接受PC哪些类功能,而该条命令\请求消息可归类到某一类功能的其中一条,终端判断这一具体命令\请求消息是否在证书已指明可接受的类别中,如果在,则命令有效,否则命令无效。
该终端自行选择发送方向的会话密钥(对称密钥)Ku1对R1加密生成R1’,再用Ps1对Ku1加密生成Ku1’,Ku1’+R1’组成数字信封发给PC软件,该终端可按照一定的规则自行选择切换对称密钥Ku。
步骤36:PC软件使用数字信封给终端发送命令或请求;
同样,PC软件可按照一定的规则自行选择切换会话密钥Kp。
上述处理流程中,任一验证过程失败将导致流程终止。
终端和PC软件间可以通过定时器来维护链路的连续性(HeartbeatTimer),如定时器超时仍未收到对方数据,则本次加密通信过程结束。下次通信需重新启动以上所述的双向认证和加密传输过程。
本实施例终端和PC软件之间的通信进行双向认证和加密传输,通过数字证书确认对方的合法身份,通过数字信封保证信息的安全传输,加密密钥由发送方独立选择切换,保证了传输接口上的数据安全;使嵌入式通信终端与相应的外部软件之间的通信更加安全、可靠。
本发明实施例还提供一种嵌入式系统安全通信终端,如图4所示,包括:获取单元40、验证单元41、加密单元42、以及发送单元43;
所述获取单元40,用于获取外部软件数字证书,从所述数字证书中获得外部软件数字签名以及外部软件公钥;
所述验证单元41,用于验证所述数字签名是否合法;
所述加密单元42,用于产生对称密钥,使用对称密钥应用对称加密算法对发送给外部软件的消息加密,并使用所述外部软件公钥对所述对称密钥加密;该产生的对称密钥可按照一定的规则自行选择切换,例如,每次产生不同的对称密钥或每间隔预定时间更换产生的对称密钥。该发送给外部软件的消息包括本终端的数字证书、请求或命令等。将本终端的数字证书加密传输给外部软件以便于外部软件对本终端进行合法性验证,实现双向身份验证的目的。
所述发送单元43,用于将加密单元加密后的消息以及加密后的对称密钥组成数字信封发送给外部软件。
如图5所示,所述终端还可以包括:
存储单元44,用于安全存储数字证书、根密钥、本终端私钥以及指定的其他终端的数字证书。和/或
第一解密单元45,用于使用存储的根密钥的公钥解密所述数字证书获得外部软件数字签名以及外部软件公钥。
如图6所示,所述终端还可以包括:
接收单元46,用于接收以数字信封方式发送的消息;
第二解密单元47,用于使用本终端的私钥解密出所接收的数字信封方式发送的消息的对称密钥,使用解密出的对称密钥解密出所接收的消息。
本实施例所述安全通信终端和PC软件之间的通信进行双向认证和加密传输,通过数字证书确认对方的合法身份,通过数字信封保证信息的安全传输,加密密钥由发送方独立选择切换,保证了传输接口上的数据安全;使嵌入式通信终端与相应的外部软件之间的通信更加安全、可靠。
本发明实施例还提供一种嵌入式系统,如图7所示,该系统包括:外部软件71以及如上面实施例所述的安全通信终端70;
所述安全通信终端70,用于获取外部软件数字证书,从所述数字证书中获得外部软件数字签名以及外部软件公钥,验证所述数字签名是否合法,若合法,则产生对称密钥,使用对称密钥应用对称加密算法对发送给外部软件的消息加密,并使用所述外部软件公钥对所述对称密钥加密,将加密单元加密后的消息以及加密后的对称密钥组成数字信封发送给外部软件。具体功能及结构同上面实施例中所述,此处不再赘述。
所述外部软件71,用于验证所述终端是否合法,若合法,则采用数字信封方式发送消息给所述终端。所述采用数字信封方式发送消息给所述终端包括:产生对称密钥,使用对称密钥应用对称加密算法对发送给终端的消息加密,使用终端的公钥对所述对称密钥加密,将加密后的消息和对称密钥组成数字信封发送给所述终端。
所述外部软件71,还用于安全存储数字证书、根密钥、本软件私钥以及指定的其他终端的数字证书。
所述终端70与所述外部软件71之间可通过USB等物理接口承载,本发明实施例对于USB接口的承载及驱动不做限定。
本实施例所述嵌入式系统,终端和PC软件之间的通信进行双向认证和加密传输,通过数字证书确认对方的合法身份,通过数字信封保证信息的安全传输,加密密钥由发送方独立选择切换,保证了传输接口上的数据安全;使嵌入式通信终端与相应的外部软件之间的通信更加安全、可靠。
综上所述,本发明实施例实现了嵌入式系统的安全通信,也就是嵌入式通信终端和PC软件之间的通信进行双向认证和加密传输,通过数字证书确认对方的合法身份,通过数字信封保证信息的安全传输,加密密钥由发送方独立选择切换,保证了传输接口上的数据安全;使嵌入式通信终端与相应的外部软件之间的通信更加安全、可靠。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一计算机可读存储介质中,例如只读存储器(简称ROM)、随机存取存储器(简称RAM)、磁盘、光盘等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。