CN103338107B - 密钥生成方法及密钥生成装置 - Google Patents
密钥生成方法及密钥生成装置 Download PDFInfo
- Publication number
- CN103338107B CN103338107B CN201310221653.8A CN201310221653A CN103338107B CN 103338107 B CN103338107 B CN 103338107B CN 201310221653 A CN201310221653 A CN 201310221653A CN 103338107 B CN103338107 B CN 103338107B
- Authority
- CN
- China
- Prior art keywords
- data
- error correction
- correcting code
- key
- sram
- 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.)
- Active
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例公开了密钥生成方法及密钥生成装置,所述密钥生成方法包括:选取静态随机存储器SRAM的预定地址段内的数据作为初始数据;获取与所述初始数据相对应的纠错码;使用所述纠错码对所述初始数据进行纠错生成纠错结果;根据所述纠错结果生成密钥。所述密钥生成装置包括:选取单元,获取单元,纠错单元,生成单元。
Description
技术领域
本发明涉及安全认证领域,尤其涉及密钥生成方法及密钥生成装置。
背景技术
智能卡(SMART CARD)是内嵌有可以执行一定预设程序或完成一定预设功能的智能卡芯片的塑料卡的统称,智能卡主要用于完成身份识别、支付等安全要求较高的认证功能。
在使用智能卡进行安全认证时,通常会使用到保存在智能卡中的密钥。密钥作为智能卡芯片的唯一标识信息,是识别智能卡和保证智能卡实现功能的重要信息,因此保证智能卡的密钥安全,防止密钥泄露,就成为保证认证安全的一项重要内容。
现有技术中,为了防止智能卡密钥的泄露,通常采用的方式是将预先生成的智能卡的密钥存储在非经授权无法访问的非易失性存储器(NVM,NONVOLATILE MEMORY)中。但是随着技术的发展,将智能卡的密钥保存在NVM中防止密钥泄露的方式已经逐渐被攻击者利用,攻击者已经可以有效的窃取保存在NVM中的密钥,使得现有防止密钥泄露的方法不再安全,智能卡的密钥泄露风险大。
发明内容
本发明实施例提供了密钥生成方法及密钥生成装置,以解决现有智能卡的密钥泄露风险大的问题。
第一方面,本发明实施例提供了一种密钥生成方法,该方法包括:选取静态随机存储器SRAM的预定地址段内的数据作为初始数据;获取与所述初始数据相对应的纠错码;使用所述纠错码对所述初始数据进行纠错生成纠错结果;根据所述纠错结果生成密钥。
结合第一方面,在第一种可能的实现方式中,所述在所述获取与所述初始数据相对应的纠错码之前,还包括:预先生成所述初始数据的纠错码;将所述纠错码保存到非易失性存储器NVM;所述获取与所述初始数据相对应的纠错码具体为:从所述NVM获取所述纠错码。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述预先生成所述初始数据的纠错码,包括:获取所述SRAM的预定地址段内数据的初始值变化率;选择能够对数据错误率大于或等于所述初始值变化率的数据进行纠错的算法作为基准算法;选取所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内数据作为基准数据;使用所述基准算法生成所述基准数据的纠错码。
结合第一方面,在第三种可能的实现方式中,所述获取与所述初始数据相对应的纠错码具体为:获取使用所述基准纠错算法生成的所述基准数据的纠错码,所述基准纠错算法为能够对数据错误率大于或等于所述SRAM的初始值变化率的数据进行纠错的纠错算法,所述基准数据为所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内的数据。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述根据纠错结果取得密钥包括:将所述纠错结果作为密钥;或者,从所述纠错结果中提取密钥。
第二方面,本发明实施例还提供了一种密钥生成装置,该装置包括:选取单元,用于选取所述SRAM的预定地址段内的数据作为所述初始数据;获取单元,用于获取与所述选取单元选取的所述初始数据相对应的纠错码;纠错单元,用于使用所述获取单元获取的所述纠错码对所述初始数据进行纠错生成纠错结果;生成单元,用于根据所述纠错单元生成的所述纠错结果生成密钥。
结合第二方面,在第一种可能的实现方式中,所述装置还包括:预设单元,用于预先生成所述预定地址段内的数据的纠错码;保存单元,用于将所述预设单元预先生成的纠错码保存到非易失性存储器NVM;所述获取单元具体用于,从所述非易失性存储器获取所述纠错码。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述预设单元包括:变化率获取子单元,用于获取所述SRAM的预定地址段内数据的初始值变化率;算法选择子单元,用于选择能够对数据错误率大于或等于所述初始值变化率的数据进行纠错的算法作为基准算法;数据预设子单元,用于选取所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内数据作为基准数据;纠错码生成子单元,用于使用所述算法选择单元选取的基准算法生成所述数据预设单元选取的所述基准数据的纠错码。
结合第二方面,在第三种可能的实现方式中,所述获取单元,具体用于获取使用所述基准纠错算法生成的所述基准数据的纠错码,所述基准纠错算法为能够对数据错误率大于或等于所述SRAM的初始值变化率的数据进行纠错的纠错算法,所述基准数据为所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内的数据。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式、第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述生成单元,具体用于将所述纠错结果作为密钥,或者具体用于从所述纠错结果中提取密钥。
与现有技术相比,本发明提供的密钥生成方法及密钥生成装置,智能卡可在需要密钥时,以使用SRAM中的原始数据生成智能卡的密钥,由于不再对密钥进行保存,而且SRAM中的原始数据的具有未知性和物理不可复制性,使得生成的密钥也具有物理不可复制性,大大减小智能卡的密钥泄露风险。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本发明的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本发明的主旨。
图1为本发明密钥生成方法的一个实施例的流程图;
图2为本发明预先生成所述初始数据的纠错码的一个实施例的流程图;
图3为本发明密钥生成装置的一个实施例框图;
图4为本发明密钥生成装置预设单元一个实施例框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
其次,本发明结合示意图进行详细描述,在详述本发明实施例时,为便于说明,表示装置结构的剖面图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本发明保护的范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。
参见图1,为本发明密钥生成方法一个实施例的流程图,该方法包括如下步骤:
步骤101,选取SRAM的预定地址段内的数据作为初始数据。
智能卡芯片上电后,智能卡芯片首先选取SRAM预定地址段中的原始数据作为用于生成密钥的初始数据。由于SRAM内部数据保持部分的结构的高度对称性,每一个SRAM在生产过程中都会生成一定的原始数据,由于原始数据的产生来自于生产工艺中的极细微误差,如:腐蚀,掺杂,金属生长等,由于这些误差可认为是随机的,不同的SRAM间、同一SRAM不同BIT间的上电初始数据是随机的相互没有关联的数据,所以每个SRAM在生产过中生成的原始数据也可以认为是随机的,这里所述的生产过程包括生产阶段和测试阶段。由于SRAM的初始状态是在生产过程中随机生成的状态,因此可以认为SRAM上电后的初始状态为未知的。由于SRAM的初始状态在每次上电后又会发生变化,而且这一变化也是随机变化,不同的SRAM中的原始数据和每次上电后发生的随机变化都不相同,因此可以认为每一个SRAM在生产出来后都会随机保存有一些原始数据,而且该原始数据是未知且是物理不可复制的(PHYSICAL UNCLONABLE)数据。
由于每个SRAM的原始数据都是随机产生的,所以当预定地址段足够宽时,不同的SRAM在同一的预定地址段所保存的数据也是各不相同的,因此当需要使用密钥时,只需要从SRAM预定地址段取出数据作为初始数据生成密钥。对同一个SRAM来说,只要是从SRAM同一预定地址段取出数据作为初始数据生成密钥,即可保证每次生成密钥的一致性。而对于两个不同的SRAM来说,即便是从同一预定地址段取出数据作为初始数据生成密钥,生成的密钥也不会相同。由于不同的SRAM中的数据是物理不可复制的原始数据,采用初始数据生成的密钥作为标识来区分不同的智能卡芯片及智能卡,可以实现密钥及与密钥对应的智能卡的物理不可复制功能(PUF,PHYSICAL UNCLONABLE FUNCTIONS)。
步骤102,获取与所述初始数据相对应的纠错码。
从理论上来说,SRAM同一存储单元的状态,即同一地址的数据,在每次上电后应当是相同的。但由于SRAM的初始状态容易受到受电压、温度、上电速度等外界因素的影响,在实际使用中,每次上电后,SRAM的每一存储单元的状态都可能会发生变化,即SRAM中的原始数据在某些位置会有比特跳变,使得两次上电后从同样位置读取到的同样数据宽度的数据也会细微有所不同,因此无法直接使用选取到的初始数据作为密钥或作为基准数据直接生成密钥。
虽然SRAM内的数据在每次上电后有可能发生不同的变化,但由于SRAM的结构特性,使得SRAM的初始值变化率会在一定范围之内,该初始值变化率可以通过测试得知,而且采用相同生产工艺生产的SRAM一般具有相同的初始值变化率。因此可以利根据初始值变化率选择一种纠错算法作为基准算法,选取所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内的数据为基准数据,生成该基准数据的纠错码。在智能卡芯片需要生成密钥时,采用错误检查和纠正(ECC,ERROR CORRECTING CODE)技术,对从该预定地址段内的获取的数据进行检查和纠正,使每次从该预定地址段内获取的数据都能恢复成与基准数据一致的数据,从而保证了每次生成的密钥都是一致的密钥。SRAM中同一地址段中获取到的数据即便是发生了变化也可以恢复为基准数据,从而解决无法使用SRAM原始数据作为密钥或作为基准数据直接生成密钥的问题。
智能卡芯片获取纠错码的方式有多种,智能卡芯片可以在每次需要使用纠错码时生成纠错码,或者智能卡芯片也可以获取由该智能卡芯片生成纠错码并保存在存储器上的纠错码,或者智能卡芯片也可以获取由外部设备生成并保存在存储器上的纠错码。
可选的,智能卡芯片可以预先生成所述初始数据的纠错码;然后将所述纠错码保存到存储器,该存储器可以为非易失性存储器NVM;在获取与所述初始数据相对应的纠错码时,智能卡芯片只需要从存储器中获取所述纠错码即可。具体来说,由智能卡使用基准纠错算法生成基准数据纠错码,然后保存在智能卡上或者保存在智能卡以外的NVM中,智能卡在需要使用纠错码时从该NVM中获取到纠错码,其中,基准纠错算法为能够对数据错误率大于或等于所述SRAM的初始值变化率的数据进行纠错的纠错算法,基准数据为所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内的数据。
可选的,由其他设备使用基准纠错算法生成的基准数据,预先生成所述初始数据的纠错码,然后再将纠错码保存在存储器上,基准纠错算法为能够对数据错误率大于或等于所述SRAM的初始值变化率的数据进行纠错的纠错算法,基准数据为所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内的数据,智能卡芯片在获取与所述初始数据相对应的纠错码时同样只需要从所述NVM获取所述纠错码即可。
由于在获取纠错码时,是根据预定地址段获取纠错码,而并非根据预定地段内的数据获取纠错码,因此预定地址段内数据的获取和纠错码的获取可以同时进行,或者也可以先获取其中任意一个,然后再获取其中另一个。
步骤103,使用所述纠错码对所述初始数据进行纠错生成纠错结果。
由于两次上电后从SRAM同一预定地址段读取到数据可能不相同,进而会造成两次生成的密钥不一致,为防止该情况发生,需要对获取到的初始数据进行纠错。具体做法为,在需要生成密钥时,智能卡芯片获取SRAM中预定地址段内的数据作为初始数据,并获取与该初始数据相对应的纠错码,然后使用纠错码对该初始数据进行检查和纠错,并得出纠错结果。由于纠错结果与基准数据一致,可以保证每次从SRAM预定地址段内获取的初始数据经过检查和纠错后都是一致的数据,纠错过程所采用的具体的纠错算法与产生纠错码的具体的算法相对应。
纠错过程的具体实现方式有多种,可选的,在生产智能卡芯片时,可以在智能卡芯片中写入相应的纠错程序,该程序与纠错算法相对应。智能卡芯片在需要生成密钥时,可以运行该程序对初始数据进行纠错,得出纠错结果。可选的,在生产智能卡芯片时,也可以在生产的智能卡芯片中加入专门的纠错器件(ERROR CORRECT),该器件与纠错算法相对应。在需要生成密钥时,智能卡芯片可以使用纠错器件对所述初始数据进行纠错,得出纠错结果,从而可以加快处理速度。
步骤104,根据所述纠错结果生成密钥。
由于从智能卡芯片获取到的初始数据经过了纠错处理过程,因此无论从SRAM中获取到的初始数据发生了什么样的变化,对初始数据进行纠错得到的该纠错结果依然是生成纠错码的基准数据,由于纠错结果与基准数据是一致而且是未知的数据,因此可以根据该纠错结果生成密钥,根据纠错结果生成的密钥与根据基准数据生成密钥是一致的。
可选的,由于纠错结果与基准数据相同,基准数据是未知的不可复制数据,因此可以直接使用纠错结果作为密钥。
可选的,使用密钥提取器件从所述纠错结果中提取密钥。智能卡芯片采用软件程序或硬件设备选取纠错结果中的某一段作为密钥,或者采用软件程序或硬件设备使用对纠错结果进行一定的数据变换之后得出的变换结果作为密钥,例如智能卡芯片对纠错结果进行哈希运算,将哈希运算的结果作为密钥使用。
从上述实施例可以看出,本发明提供的密钥生成方法可以使用SRAM中的原始数据,需要使用密钥时生成智能卡的密钥,由于不再对密钥进行保存,而且SRAM中的原始数据的具有未知性和物理不可复制性,使得生成的密钥也具有物理不可复制性,大大减小智能卡的密钥泄露风险。
参见图2,为本发明预先生成所述初始数据的纠错码一个实施例的流程图,该实施例详细说明了智能卡芯片或其他设备生成纠错码的过程,该方法包括如下步骤:
步骤201,获取SRAM的预定地址段内数据的初始值变化率。
在生成密钥时,通常不必使用SRAM全部的数据,只需要根据对密钥的实际需求选择一定数据宽度的数据即可,选取的数据过长反而会影响密钥生成速度,为密钥的使用带来不便。因此每次生成密钥时,只需要从SRAM中一个预定地址段中获取数据生成密钥,该地址段根据需要可以位于SRAM中的任何位置,即可以根据需要选定任何可用的地址段作为预定地址段。
发明人通过研究发现,虽然SRAM的初始数据在每次上电后有可能发生不同的变化,但由于SRAM的结构特性,使得SRAM的初始值变化率会在一定范围之内,而且该初始值变化率可以通过测试得知。例如,当数据长度为100,取智能卡芯片一万次上电的初始值,如果不同初始值值间比特差异最大的两个数的比特差异为10,则初始值变换率为10除以100,即为10%。经过测试,采用同样生产工艺的SRAM通常具有相同或非常近似的初始值变化率,以采用130nm工艺生产的6T型SRAM为例,对不同的生产批次生产的SRAM进行测试可知,采用该工艺生产的该类型的SRAM的初始值变化率一般都在10%之内。在实际使用中可以获取整个SRAM的初始值变化率,作为预定地址段中数据的初始值变化率,也可以只获取SRAM中该预定地址段中数据的初始值变化率。
智能卡芯片生成所述初始数据的纠错码,需要首先获取SRAM预定地址段内数据的初始值变化率,在获取SRAM预定地址段内数据的初始值变化率时,智能卡芯片可以从外部设备获取该智能卡芯片上的SRAM的初始值变化率,或者也可以自行通过测试获取SRAM的初始值变化率,或者也可以由技术人员向智能卡芯片写入该SRAM的变化率。
步骤202,选择能够对数据错误率大于或等于所述初始值变化率的数据进行纠错的算法作为基准算法。
由于纠错算法为一类算法,包括多种不同的具体算法,各种具体纠错算法的纠错强度和系统开销都不尽相同,因此需要根据初始值变化率选择能够纠正错误率为SRAM初始值变化率的纠错算法作为基准算法,同时该基准算法还要有尽量小的系统开销和纠错时间消耗。因此,在实际使用中,不同的初始值变化率的SRAM所对应的算法也不尽相同,例如,采用BCH16算法对数据进行纠错时,此算法只能够在数据错误小于15%时对数据进行纠错,只有在初始值变化率小于15%时才能够使用BCH16算法进行纠错,因此可以选择BCH16算法为130nm工艺生产6T型的SRAM的纠错算法。因此在实际使用中智能卡芯片可以根据获取到的初始值变化率从已经保存在智能卡芯片上的多个纠错算法中选择一个,具体来说可以预先在智能卡芯片中加入多个备选的纠错程序或纠错器件,智能卡芯片根据需要选取其中一个已经保存在存储器中的纠错程序或纠错器件。
步骤203,选取SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内数据作为基准数据。
由于SRAM中的数据在每一次上电之后都会发生一定的变化,两次上电后从同样位置读取到的同样数据宽度的数据也可能会有所不同,因此需要在智能卡芯片生产过程中选取SRAM在某次上电后的预定地址段中数据作为基准数据,并以此基准数据生成纠错码,使以后再次从预定地址段中获取的数据,可以根据纠错码恢复为该基准数据,根据从预定地址段中获取的数据生成的密钥不会发生变化。该基准数据可以为SRAM从第一次上电到首次生成密钥过程中任意一次上电后预定地址段中的数据,例如,可以选取智能卡芯片第一次上电时预定地址段中的数据为基准数据,或者也可以选择在对SRAM进行初始值变化率测试时某一次上电时预定地址段中的数据为基准数据。
在此需要说明的是,步骤203选取基准数据的过程与步骤201至步骤202选取基准算法的过程,在先后顺序上不做限定,可以先进行任意一个过程或者两个过程同时进行。
步骤204,使用所述基准算法生成所述基准数据的纠错码。
由于纠错算法和基准数据都已经选定,因此智能卡芯片可以使用选定的纠错算法基准算法对选定的基准数据进行处理得出纠错码,即智能卡芯片以选取到的纠错程序或纠错器件对选定的基准数据进行处理得出纠错码,以后每次需要生成密钥时,只要使用获取到的纠错码对获从预定地址段内获取到的数据进行检查与恢复,就可以将从预定地址段中获取到的数据恢复为与基准数据一致的数据,从而可以克服SRAM的存储单元状态发生变化,带来的数据变化。
从上述实施例可以看出,该实施例所述的方法的可以为SRAM中预定地址段中预定数据宽度的数据生成纠错码,为使用该预定地址段中数据生成密钥做好准备条件。
在此需要说明的是,上述步骤201至步骤204所述的预先生成所述初始数据的纠错码的过程可以由智能卡芯片来完成,也可以由其他专门用于生成纠错码的设备或装置来完成。智能卡在需要使用纠错码时,获取使用基准纠错算法生成的基准数据的纠错码,其中生成纠错码的基准纠错算法为能够对数据错误率大于或等于所述SRAM的初始值变化率的数据进行纠错的纠错算法,基准数据为所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内的数据。
与本发明密钥生成方法相对应,本发明还提供了密钥生成装置。
参见图3,为本发明密钥生成装置一个实施例框图。
该装置包括:选取单元301,获取单元302,纠错单元303,生成单元304。
其中,所述选取单元301,用于获取所述SRAM的所述预定地址段内数据作为初始数据。
由于每个SRAM的原始数据都是随机产生的,所以当预定地址段足够宽时,不同的SRAM在同一的预定地址段所保存的数据也是各不相同的,因此可以利用SRAM中物理不可复制的原始数据作为标识来区分不同的SRAM,从而区分不同的智能卡,进而实现密钥的PUF,当需要使用密钥时只需要选取单元301从SRAM同一地址段取出数据作为密钥或者根据从同一地址段取出的数据生成密钥即可。
所述获取单元302,用于从所述纠错码存储器获取所述纠错码。
在需要生成密钥时,获取单元302需要从智能卡芯片上的纠错码存储器中获取预设的纠错码,使用该纠错码可以使每次从SRAM中同一地址段中获取到的数据即便是发生了变化也可以恢复为基准数据。获取单元302,用于获取使用基准纠错算法生成的基准数据的纠错码,所述基准纠错算法为能够对数据错误率大于或等于所述SRAM的初始值变化率的数据进行纠错的纠错算法,所述基准数据为所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内的数据。
当获取单元302获取纠错码时,本发明密钥生成装置还可以包括:预设单元和保存单元。所述预设单元,用于预先生成所述预定地址段内的数据的纠错码;所述保存单元,用于将所述预设单元预先生成的纠错码保存到非易失性存储器NVM。所述获取单元302,具体用于从所述非易失性存储器NVM获取所述纠错码。
所述纠错单元303,用于使用所述获取单元302获取到的所述纠错码对所述选取单元301获取到的所述初始数据进行纠错生成纠错结果。
在需要生成密钥时,选取单元301获取SRAM中预定地址段内的数据作为初始数据,获取单元302从纠错码存储器获取预设的纠错码,纠错单元303使用获取单元302获取到的纠错码对选取单元301获取到的初始数据进行纠错,并得出纠错结果。纠错结果与基准数据一致,纠错过程所采用的具体的纠错算法与产生纠错码的具体的算法相对应。
可选的,在生产智能卡芯片时可以在智能卡芯片中写入与生成纠错码的基准算法相对应的纠错程序,智能卡芯片在需要生成密钥时,运行该程序并使用纠错码对初始数据进行纠错,得出纠错结果。
可选的,在生产智能卡芯片时也可以在生产的智能卡芯片中加入专门的纠错器件,在需要生成密钥时,智能卡芯片可以使用纠错器件对所述初始数据进行纠错,得出纠错结果,从而可以加快处理速度。
所述生成单元304,用于根据所述纠错单元303生成的所述纠错结果生成密钥。
由于从智能卡芯片获取到的初始数据经过了纠错处理过程,因此无论从SRAM中获取到的初始数据发生了什么样的变化,对初始数据进行纠错得到的该纠错结果依然是生成纠错码的基准数据,由于纠错结果与基准数据是一致而且是未知的数据,因此可以根据该纠错结果生成密钥,根据纠错结果生成的密钥与根据基准数据生成密钥是一致的。
可选的,由于纠错结果与基准数据相同,基准数据是未知的不可复制数据,因此生成单元304可以直接使用纠错结果作为密钥。
可选的,生成单元304使用密钥提取器件从所述纠错结果中提取密钥。生成单元304可以采用软件程序或硬件设备选取纠错结果中的某一段作为密钥,或者也可以采用软件程序或硬件设备使用对纠错结果进行一定的数据变换之后得出的变换结果作为密钥,例如智能卡芯片对纠错结果进行哈希运算,将哈希运算的结果作为密钥使用。
在纠错码生成之后,将纠错码保存至智能卡芯片上的纠错码存储器中,纠错码存储器可以为FLASH等NVM存储器,使得智能卡芯片掉电之后保存在纠错码存储器中的纠错码不会丢失,再次上电后纠错码也不会发生变化。保存在纠错码存储器中的纠错码可以在需要时被读出,用于恢复生成该纠错码的标准数据。保存在纠错码存储器中的纠错码还可作为芯片的唯一识别码,用于芯片的识别等其他用途。
从上述实施例可以看出,由于SRAM在生产过程中生成的原始数据有不可知性和不可复制性,因此可以选定其中的一段作为基准数据,采用本实施例所述的装置,在需要密钥时根据不可复制的基准数据生成的密钥,由于在智能卡芯片中只需要保存用于恢复基准数据的纠错码,而不需要保存密钥,因此可以有效的保证密钥的安全,防止密钥泄露。
参见图4,为本发明密钥生成装置预设单元一个实施例框图。
该装置包括:变化率获取子单元401,算法选择子单元402,数据预设子单元403,纠错码生成子单元404。
其中,所述变化率获取子单元401,用于获取所述SRAM的预定地址段内数据的初始值变化率。
由于需要根据SRAM的初始值变化率选择一种纠错算法实现ECC,对将要使用的数据可能发生的比特跳变进行处理,从而克服比特跳变带来的数据变化,因此变化率获取子单元401需要首先获得SRAM预定地址段中数据的初始值变化率。在实际使用中可以获取整个SRAM的初始值变化率,作为预定地址段中数据的初始值变化率,也可以只获取SRAM中该预定地址段中数据的初始值变化率。
所述算法选择子单元402,用于选择能够纠正数据错误率为所述变化率获取子单元401获取到的所述初始值变化率的纠错算法作为基准算法。
由于纠错算法为一类算法,包括多种不同的具体算法,各种具体纠错算法的纠错强度和系统开销都不尽相同,算法选择子单元402需要根据初始值变化率选择纠错算法,例如,可以选择BCH16算法为130nm工艺生产的6T型SRAM的纠错算法。
所述数据预设子单元403,用于选取SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内数据作为基准数据。
由于SRAM中的数据在每一次上电之后都会发生一定的变化,两次上电后从SRAM同一地址段读取到的同样数据宽度N的数据也可能会有所不同,因此数据预设子单元403需要在智能卡芯片生产过程中选取SRAM在某次上电后的预定地址段中数据N作为基准数据,并以此基准数据生成纠错码,使以后再从预定地址段中获取的数据,可以根据纠错码恢复为该基准数据,从而保证根据预定地址段中的数据生成的纠错码一致。该基准数据可以为SRAM从第一次上电到首次生成密钥过程中任意一次上电后预定地址段中的数据,例如,可以选取智能卡芯片第一次上电时预定地址段中的数据为基准数据,或者也可以选择在对SRAM进行初始值变化率测试时某一次上电时预定地址段中的数据为基准数据。
所述纠错码生成子单元404,用于使用所述算法选择子单元402选取的基准算法生成所述数据预设单元304选取的所述基准数据的纠错码。
由于纠错算法和基准数据都已经选定,因此纠错码生成子单元404可以使用选定的纠错算法,即基准算法对选定的基准数据进行处理得出纠错码,以后每次需要使用基准数据时,只要使用获取到的纠错码对获从预定地址段内获取到的数据进行纠错恢复,就可以将获取到的数据恢复为与基准数据一致的数据,从而可以克服SRAM的存储单元状态发生变化带来的数据变化,克服SRAM容易发生的比特跳变对数据的影响。
在此需要说明的是,该预设单元可以是本发明密钥生成装置的一个单元,在需要时也可以不作为密钥生成装置的一部分,而是作为一个专门的纠错码生成装置独立于密钥生成装置之外。预设单元作为独立的纠错码生成装置时,各个单元的作用与作为密钥生成装置的一部分相类似,在此就不再赘述。
从上述实施例可以看出,该实施例所述的装置的可以为SRAM中预定地址段中的数据生成纠错码,为使用该预定地址段中数据生成密钥做好准备。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种密钥生成方法,其特征在于,所述方法包括:
选取静态随机存储器SRAM的预定地址段内的数据作为初始数据;
获取与所述初始数据相对应的纠错码;
使用所述纠错码对所述初始数据进行纠错生成纠错结果;
根据所述纠错结果生成密钥;
其中,在所述获取与所述初始数据相对应的纠错码之前,还包括:
预先生成所述初始数据的纠错码;
将所述纠错码保存到非易失性存储器NVM;
所述获取与所述初始数据相对应的纠错码具体为:从所述NVM获取所述纠错码;
其中,所述预先生成所述初始数据的纠错码,包括:
获取所述SRAM的预定地址段内数据的初始值变化率;
选择能够对数据错误率大于或等于所述初始值变化率的数据进行纠错的算法作为基准算法;
选取所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内数据作为基准数据;
使用所述基准算法生成所述基准数据的纠错码。
2.如权利要求1所述的方法,其特征在于,所述获取与所述初始数据相对应的纠错码具体为,
获取使用所述基准纠错算法生成的所述基准数据的纠错码,所述基准纠错算法为能够对数据错误率大于或等于所述SRAM的初始值变化率的数据进行纠错的纠错算法,所述基准数据为所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内的数据。
3.如权利要求1或2所述的方法,其特征在于,所述根据纠错结果取得密钥包括:
将所述纠错结果作为密钥;
或者,从所述纠错结果中提取密钥。
4.一种密钥生成装置,其特征在于,所述装置包括:
选取单元,用于选取SRAM的预定地址段内的数据作为初始数据;
获取单元,用于获取与所述选取单元选取的所述初始数据相对应的纠错码;
纠错单元,用于使用所述获取单元获取的所述纠错码对所述初始数据进行纠错生成纠错结果;
生成单元,用于根据所述纠错单元生成的所述纠错结果生成密钥;
其中,所述装置还包括:
预设单元,用于预先生成所述预定地址段内的数据的纠错码;
保存单元,用于将所述预设单元预先生成的所述纠错码保存到非易失性存储器NVM;
所述获取单元,具体用于从所述非易失性存储器获取所述纠错码;
其中,所述预设单元包括:
变化率获取子单元,用于获取所述SRAM的预定地址段内数据的初始值变化率;
算法选择子单元,用于选择能够对数据错误率大于或等于所述初始值变化率的数据进行纠错的算法作为基准算法;
数据预设子单元,用于选取所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内数据作为基准数据;
纠错码生成子单元,用于使用所述算法选择单元选取的基准算法生成所述数据预设单元选取的所述基准数据的纠错码。
5.如权利要求4所述的装置,其特征在于,
所述获取单元,具体用于获取使用所述基准纠错算法生成的所述基准数据的纠错码,所述基准纠错算法为能够对数据错误率大于或等于所述SRAM的初始值变化率的数据进行纠错的纠错算法,所述基准数据为所述SRAM从第一次上电到首次生成密钥过程中任意一次上电后所述预定地址段内的数据。
6.如权利要求4或5所述的装置,其特征在于,
所述生成单元,具体用于将所述纠错结果作为密钥,或者从所述纠错结果中提取密钥。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310221653.8A CN103338107B (zh) | 2013-06-05 | 2013-06-05 | 密钥生成方法及密钥生成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310221653.8A CN103338107B (zh) | 2013-06-05 | 2013-06-05 | 密钥生成方法及密钥生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103338107A CN103338107A (zh) | 2013-10-02 |
CN103338107B true CN103338107B (zh) | 2016-12-28 |
Family
ID=49246212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310221653.8A Active CN103338107B (zh) | 2013-06-05 | 2013-06-05 | 密钥生成方法及密钥生成装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103338107B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105530097B (zh) * | 2014-09-30 | 2018-09-28 | 中国科学院数据与通信保护研究教育中心 | 一种基于sram puf的密钥提取方法及系统 |
CN107229578B (zh) * | 2017-07-14 | 2020-08-18 | 北京宏思电子技术有限责任公司 | 一种基于芯片生成非重复应用数据的方法及装置 |
CN109995507A (zh) * | 2019-04-19 | 2019-07-09 | 武汉大学 | 一种基于puf的密钥生成方法及装置、私钥存储方法 |
CN110677255A (zh) * | 2019-09-24 | 2020-01-10 | 中国电子科技集团公司第五十八研究所 | 一种基于sram的强puf工作电路和方法 |
CN112804678B (zh) * | 2021-04-15 | 2021-07-20 | 浙江口碑网络技术有限公司 | 设备注册、认证及数据传输方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102387013A (zh) * | 2010-08-31 | 2012-03-21 | 意法半导体(鲁塞)公司 | 集成电路中的密钥提取 |
CN102439897A (zh) * | 2009-05-22 | 2012-05-02 | 三菱电机株式会社 | 电子仪器、密钥生成程序、记录介质以及密钥生成方法 |
EP2544400A2 (en) * | 2011-06-20 | 2013-01-09 | Renesas Electronics Corporation | PUF based Cryptographic communication system and cryptographic communication method |
CN103020552A (zh) * | 2012-12-20 | 2013-04-03 | 天津联芯科技有限公司 | 基于sram的puf的片上自我注册系统及其实现方法 |
-
2013
- 2013-06-05 CN CN201310221653.8A patent/CN103338107B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102439897A (zh) * | 2009-05-22 | 2012-05-02 | 三菱电机株式会社 | 电子仪器、密钥生成程序、记录介质以及密钥生成方法 |
CN102387013A (zh) * | 2010-08-31 | 2012-03-21 | 意法半导体(鲁塞)公司 | 集成电路中的密钥提取 |
EP2544400A2 (en) * | 2011-06-20 | 2013-01-09 | Renesas Electronics Corporation | PUF based Cryptographic communication system and cryptographic communication method |
CN103020552A (zh) * | 2012-12-20 | 2013-04-03 | 天津联芯科技有限公司 | 基于sram的puf的片上自我注册系统及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103338107A (zh) | 2013-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6587188B2 (ja) | 乱数処理装置、集積回路カード、および乱数処理方法 | |
JP6617924B2 (ja) | 耐タンパ性を有する不揮発性メモリ装置および集積回路カード、不揮発性メモリ装置の認証方法、個体識別情報生成方法 | |
US9483664B2 (en) | Address dependent data encryption | |
CN103338107B (zh) | 密钥生成方法及密钥生成装置 | |
TWI652930B (zh) | 產生識別金鑰之裝置及方法 | |
US9542157B2 (en) | Random number generator and method for generating random numbers | |
US9646178B2 (en) | Secure data storage based on physically unclonable functions | |
US20160197899A1 (en) | Method of Dynamically Encrypting Fingerprint Data and Related Fingerprint Sensor | |
US11416417B2 (en) | Method and apparatus to generate zero content over garbage data when encryption parameters are changed | |
CN103403670A (zh) | 用于伪随机数生成的半导体存储器件 | |
US9851913B2 (en) | Methods for operating a memory array | |
CN104866456B (zh) | 电子装置和通信方法 | |
CN106205728A (zh) | 奇偶校验电路及包括该奇偶校验电路的存储器装置 | |
CN108985077A (zh) | 数据储存装置的控制器以及进阶数据抹除的方法 | |
JP6248354B2 (ja) | インクカートリッジチップ及び当該チップが用いられるインクカートリッジ | |
CN103716152B (zh) | 一种基于工艺偏差的芯片密钥产生方法及其电路 | |
CN103413097B (zh) | 加密方法、装置及安全芯片 | |
CN102750982A (zh) | 一种加密存储芯片的烧录方法及系统 | |
CN213876729U (zh) | 一种ssd主控芯片随机缓存保密电路 | |
US11210165B2 (en) | Inter-hamming difference analyzer for memory array and measuring and testing methods for inter-hamming differences of memory array | |
CN102567689A (zh) | 基于相变存储器的非易失内存数据机密性保护方法 | |
CN103793333A (zh) | 非易失性存储器加密的方法和装置以及非易失性存储器 | |
CN106100829A (zh) | 加密存储的方法及装置 | |
JP2014142891A (ja) | 半導体記憶装置 | |
CN113507362A (zh) | 基于四元组比较策略的ro puf密钥生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |