网络电子身份证中网络身份标识码的生成和校验控制方法 技术领域 本发明涉及身份管理和信息安全领域, 特别涉及互联网网络环境中的身份认证管 理技术领域, 具体是指一种网络电子身份证中网络身份标识码的生成和校验控制方法。
背景技术 互联网基础设施及应用在世界各国的迅猛发展, 各国社会的发展和运转已经与网 络密不可分, 对信息网络依赖度日益增加。 据 2011 年 7 月 CNNIC 发布的第 28 次统计调查报 告, 截至 2011 年 6 月底, 我国网民规模达到 4.85 亿人, 居世界第一, 普及率达到 36.2%, 超 过全球平均水平。现实社会中的问题会越来越多的反映到 “网络社会” 中, “网络社会” 所产 生的问题也将更充分地影响现实社会, 2011 年上半年, 遇到过病毒或木马攻击的网民达到 2.17 亿, 比例为 44.7%, 受害网民人数较 2010 年底增加 735 万。同时, 2011 年上半年, 有过 账号或密码被盗经历的网民达到 1.21 亿人, 半年增加 2107 万人, 占到网民总数的 24.9%, 较 2010 年底增加了 3.1 个百分点。网络安全与诚信问题已成为影响我国互联网发展最重 要的问题之一。
实施网络身份管理, 对整个社会公共领域而言, 可以有效遏制互联网虚拟性滥用 导致虚假信息、 不良信息泛滥现象 ; 对民生服务而言, 可以提供社会公共服务, 为公民提供 便利 ; 对于商业服务而言, 可以提供多样性的电子商务服务, 解决网络交易诚信问题, 已成 为我国社会和谐发展的迫切需求。 实现网络身份管理需要能够在表明网络上公民真实身份 的准确标识。 网络电子身份证 (electronic IDentity, 简称 eID) 是在现有居民身份管理体 系基础上, 以密码技术为基础, 以智能卡芯片为载体, 由公安机关统一签发给公民用于在互 联网上远程证实身份的网络电子身份证件, 具有权威性、 统一性、 普适性的特点。
现有网络身份标识符的形式主要有 :
(1) 自定义的用户名 ( 一般为字母数字混合形式 )、 电子邮箱名 (xx@xxx.xxx 形 式 ) 等, 与个人身份没有内在关联性且容易被窃取或滥用 ;
(2) 直接以姓名或身份证号等作为标识符, 容易暴露个人身份隐私。例如 : 现有各 类数字认证中心颁发的个人数字证书一般直接将个人身份信息 ( 如 : 姓名、 身份证号等 ) 作 为个人数字证书主题项 (subject)。
发明内容
本发明的目的是克服了上述现有技术中的缺点, 提供一种能够实现网络身份有效 管理和充分保护隐私的双重目的、 便于各个身份服务系统间的互联互通、 保护互联网应用 安全、 使用快捷方便、 工作性能稳定可靠、 适用范围较为广泛的网络电子身份证中网络身份 标识码的生成和校验控制方法。
为了实现上述的目的, 本发明的网络电子身份证中网络身份标识码的生成和校验 控制方法如下 :
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法, 所述的网络电子身份证通过客户端与服务器端相连接, 其主要特点是, 所述的方法包括以下步骤 :
(1) 服务器端进行初始化, 并预先进行随机数生成和分配处理 ;
(2) 服务器端接收客户端发送来的网络身份标识码生成请求, 并从中提取用户身 份识别信息 ;
(3) 服务器端对该身份识别信息进行审核处理 ;
(4) 如果审核未通过, 则进行信息提示, 并退出 ;
(5) 如果审核通过, 则根据所述的身份识别信息及所对应的随机数, 并进行加密编 码处理得到哈希值 ;
(6) 服务器端根据所述的哈希值生成网络身份标识码, 并将该网络身份标识码通 过所述的客户端发送至所述的网络电子身份证 ;
(7) 所述的网络电子身份证接收到客户端转发来的写入网络身份标识码的请求, 进行网络身份标识码校验处理操作, 并将结果通过所述的客户端反馈给所述的服务器端 ;
(8) 服务器端判断是否接收到客户端转发来的将网络身份标识码成功写入网络电 子身份证的信息 ;
(9) 如果未收到, 则进行错误信息提示, 并退出 ; (10) 如果收到, 则服务器端将该网络身份标识码存入数据库中, 并通知用户。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的预先进 行随机数生成和分配处理, 包括以下步骤 :
(11) 所述的服务器端通过真随机数生成器 TRNG 产生随机数 ;
(12) 所述的服务器端将所述的随机数作为卡片序列号信息直接写入对应的网络 电子身份证中 ;
(13) 所述的服务器端获取持有该网络电子身份证的用户身份识别信息, 并建立该 用户身份识别信息与随机数之间的对应关系。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的随机数 为 128 字节。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的用户身 份识别信息包括网络身份标识码的版本号、 用户证件号码、 用户姓名、 有效证件类型。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的有效证 件类型包括居民身份证、 居民户口簿、 中国护照、 军官证、 士兵证、 警官证、 港澳通行证、 台胞 证、 外国护照和其他证件。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的对该身 份识别信息进行审核处理, 包括以下步骤 :
(31) 服务器端判断所述的身份识别信息是否已经生成了对应的有效的网络身份 识别码 ;
(32) 如果是, 则返回审核未通过的结果 ;
(33) 如果否, 则返回审核通过的结果。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的进行信 息提示, 具体为 :
向用户发出 “用户审核未通过, 已申领过网络身份标识码” 的提示信息。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的进行加 密编码处理得到哈希值, 包括以下步骤 :
(51) 按照以下公式产生原始字符串 :
原始字符串= append( 用户证件号码, 用户姓名, 有效证件类型, 随机数 ) ;
其中, append 为字符串连接操作符 ;
(52) 对所述的原始字符串基于预设的加密算法进行填充和迭代压缩, 得到杂凑 值;
(53) 对所述的杂凑值基于预设的编码规则进行编码处理, 并得到哈希值。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的加密算 法可以为 SM3 密码杂凑加密算法或者 SHA256 加密算法。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的杂凑值 为 32 字节长度的二进制信息。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的编码规 则为 Base64 编码。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的哈希值 为 45 字节长度的字符串。 该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的根据哈 希值生成网络身份标识码, 具体为 :
按照以下公式产生网络身份标识码 :
网络身份标识码= append( 网络身份标识码的版本号, 哈希值, 预留位 ) ;
其中, append 为字符串连接操作符。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的预留位 为 2 个字节的字符串, 且默认值为 0。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的网络身 份标识码校验处理操作, 包括以下步骤 :
(71) 网络电子身份证进行初始化, 并读取用户身份识别信息和卡片序列号信息 ;
(72) 所述的网络电子身份证实时判断是否收到客户端发来的写入网络身份标识 码的请求 ;
(73) 如果否, 则重复上述步骤 (72) ;
(74) 如果是, 则读取该网络身份标识码中的哈希值, 并根据所述的身份识别信息 和卡片序列号信息进行加密编码处理得到卡片哈希值 ;
(75) 所述的网络电子身份证对所述的哈希值和卡片哈希值进行一致性校验 ;
(76) 如果验证通过, 则将该网络身份识别码写入, 并返回成功写入网络身份识别 码的结果 ; 如果验证不通过, 则直接返回写入网络身份识别码失败的结果。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的进行加 密编码处理得到卡片哈希值, 包括以下步骤 :
(741) 按照以下公式产生卡片原始字符串 :
卡片原始字符串= append( 用户证件号码, 用户姓名, 有效证件类型, 卡片序列号 信息 ) ;
其中, append 为字符串连接操作符 ;
(742) 对所述的卡片原始字符串基于预设的卡片加密算法进行填充和迭代压缩, 得到卡片杂凑值 ;
(743) 对所述的卡片杂凑值基于预设的卡片编码规则进行编码处理, 并得到卡片 哈希值。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的卡片加 密算法可以为 SM3 密码杂凑加密算法或者 SHA256 加密算法。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的卡片杂 凑值为 32 字节长度的二进制信息。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的卡片编 码规则为 Base64 编码。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的卡片哈 希值为 45 字节长度的字符串。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的进行一 致性校验, 包括以下步骤 : (751) 所述的网络电子身份证对所述的哈希值和卡片哈希值进行逐位比较 ;
(752) 如果两者完全一致吻合, 则返回验证通过的结果 ;
(753) 如果两者不完全吻合, 则返回校验不通过的结果。
该实现网络电子身份证中网络身份标识码的生成和校验控制的方法中的进行错 误信息提示, 具体为 :
所述的服务器端向客户端发送 “网络身份识别码生成失败” 的提示信息。
采用了该发明的网络电子身份证中网络身份标识码的生成和校验控制方法, 由于 其中的编码方法是根据 256 位杂凑密码算法 ( 国密 SM3 或 SHA256), 由用户证件号码、 用户 姓名和 128 字节随机数的字串进行运算得出的 32 字节二进制信息的 Base64 编码, 从而具 有唯一性、 计算开销小、 不可逆推的特点, 并达到了网络身份管理和隐私保护的双重目的 ; 同时, 网络身份标识符 (eID_code) 代表 eID 所对应公民身份的标识符, 与公民身份一一对 应, 其本身不含任何用户身份信息, 这样既确保了个人身份的真实性, 又可有效避免身份信 息曝光 ; 另一方面, 本发明通过对互联网身份管理与服务中的各类身份相关信息进行分析, 给出统一的 eID_code 编码方法规则, 并以此来认证、 交换、 保存、 管理身份信息, 从而便于 各个身份服务系统间的互联互通, 有效保护互联网应用安全和公民身份信息隐私, 使用快 捷方便、 工作性能稳定可靠、 适用范围较为广泛, 为建立统一的互联网身份管理与服务生态 系统奠定了坚实的基础。
附图说明
图 1 为本发明的网络电子身份证中网络身份标识码的生成和校验控制方法的整 体流程示意图。
图 2 为本发明的网络电子身份证中网络身份标识码的生成和校验控制方法中网 络身份标识码校验处理操作流程示意图。具体实施方式
为了能够更清楚地理解本发明的技术内容, 特举以下实施例详细说明。
请参阅图 1 和图 2 所示, 该实现网络电子身份证中网络身份标识码的生成和校验 控制的方法, 所述的网络电子身份证通过客户端与服务器端相连接, 其主要特点是, 所述的 方法包括以下步骤 :
(1) 服务器端进行初始化, 并预先进行随机数生成和分配处理, 包括以下步骤 :
(a) 所述的服务器端通过真随机数生成器 TRNG 产生随机数 ; 该随机数为 128 字 节;
(b) 所述的服务器端将所述的随机数作为卡片序列号信息直接写入对应的网络电 子身份证中 ;
(c) 所述的服务器端获取持有该网络电子身份证的用户身份识别信息, 并建立该 用户身份识别信息与随机数之间的对应关系 ; 该用户身份识别信息包括网络身份标识码的 版本号、 用户证件号码、 用户姓名、 有效证件类型 ; 该有效证件类型包括居民身份证、 居民户 口簿、 中国护照、 军官证、 士兵证、 警官证、 港澳通行证、 台胞证、 外国护照和其他证件 ;
(2) 服务器端接收客户端发送来的网络身份标识码生成请求, 并从中提取用户身 份识别信息 ;
(3) 服务器端对该身份识别信息进行审核处理, 包括以下步骤 :
(a) 服务器端判断所述的身份识别信息是否已经生成了对应的有效的网络身份识 别码 ;
(b) 如果是, 则返回审核未通过的结果 ;
(c) 如果否, 则返回审核通过的结果 ;
(4) 如果审核未通过, 则进行信息提示, 并退出 ; 该进行信息提示, 具体为 :
向用户发出 “用户审核未通过, 已申领过网络身份标识码” 的提示信息 ;
(5) 如果审核通过, 则根据所述的身份识别信息及所对应的随机数, 并进行加密编 码处理得到哈希值, 包括以下步骤 :
(a) 按照以下公式产生原始字符串 :
原始字符串= append( 用户证件号码, 用户姓名, 有效证件类型, 随机数 ) ;
其中, append 为字符串连接操作符 ;
(b) 对所述的原始字符串基于预设的加密算法进行填充和迭代压缩, 得到杂凑 值;
该加密算法可以为 SM3 密码杂凑加密算法或者 SHA256 加密算法, 也可以是其它合 适的算法 ; 该杂凑值为 32 字节长度的二进制信息 ;
(c) 对所述的杂凑值基于预设的编码规则进行编码处理, 并得到哈希值 ; 该编码 规则为 Base64 编码, 该哈希值为 45 字节长度的字符串 ;
(6) 服务器端根据所述的哈希值生成网络身份标识码, 并将该网络身份标识码通 过所述的客户端发送至所述的网络电子身份证 ; 该根据哈希值生成网络身份标识码, 具体 为:
按照以下公式产生网络身份标识码 :
网络身份标识码= append( 网络身份标识码的版本号, 哈希值, 预留位 ) ;其中, append 为字符串连接操作符 ; 该预留位为 2 个字节的字符串, 且默认值为0; (7) 所述的网络电子身份证接收到客户端转发来的写入网络身份标识码的请求, 进行网络身份标识码校验处理操作, 并将结果通过所述的客户端反馈给所述的服务器端 ; 该网络身份标识码校验处理操作, 包括以下步骤 :
(a) 网络电子身份证进行初始化, 并读取用户身份识别信息和卡片序列号信息 ;
(b) 所述的网络电子身份证实时判断是否收到客户端发来的写入网络身份标识码 的请求 ;
(c) 如果否, 则重复上述步骤 (b) ;
(d) 如果是, 则读取该网络身份标识码中的哈希值, 并根据所述的身份识别信息和 卡片序列号信息进行加密编码处理得到卡片哈希值, 包括以下步骤 :
(i) 按照以下公式产生卡片原始字符串 :
卡片原始字符串= append( 用户证件号码, 用户姓名, 有效证件类型, 卡片序列号 信息 ) ;
其中, append 为字符串连接操作符 ;
(ii) 对所述的卡片原始字符串基于预设的卡片加密算法进行填充和迭代压缩, 得 到卡片杂凑值 ; 该卡片加密算法可以为 SM3 密码杂凑加密算法或者 SHA256 加密算法, 也可 以为其它合适的加密算法 ; 该卡片杂凑值为 32 字节长度的二进制信息 ;
(iii) 对所述的卡片杂凑值基于预设的卡片编码规则进行编码处理, 并得到卡片 哈希值 ; 该卡片编码规则为 Base64 编码, 该卡片哈希值为 45 字节长度的字符串 ;
(e) 所述的网络电子身份证对所述的哈希值和卡片哈希值进行一致性校验, 包括 以下步骤 :
(i) 所述的网络电子身份证对所述的哈希值和卡片哈希值进行逐位比较 ;
(ii) 如果两者完全一致吻合, 则返回验证通过的结果 ;
(iii) 如果两者不完全吻合, 则返回校验不通过的结果 ;
(f) 如果验证通过, 则将该网络身份识别码写入, 并返回成功写入网络身份识别码 的结果 ; 如果验证不通过, 则直接返回写入网络身份识别码失败的结果 ;
(8) 服务器端判断是否接收到客户端转发来的将网络身份标识码成功写入网络电 子身份证的信息 ;
(9) 如果未收到, 则进行错误信息提示, 并退出 ; 该错误信息提示, 具体为 :
所述的服务器端向客户端发送 “网络身份识别码生成失败” 的提示信息 ;
(10) 如果收到, 则服务器端将该网络身份标识码存入数据库中, 并通知用户。
在实际使用当中, 本发明主要是提供网络电子身份证的网络身份标识符 (eID_ code) 的编码方法, 目前在网络身份管理领域, 尚没有相关解决方案。
eID_code 的编码方法是根据 256 位杂凑密码算法 ( 国密 SM3 或 SHA256), 由用户 证件号码、 用户姓名和 128 字节随机数的字串进行运算得出的 32 字节二进制信息的 Base64 编码, 具有唯一性、 计算开销小、 不可逆推的特点, 以达到网络身份管理和隐私保护的目的。
网络身份标识符 (eID_code), 是代表 eID 所对应公民身份的标识符, 与公民身份 一一对应, 其本身不含任何用户身份信息, 这样既确保了个人身份的真实性, 又可有效避免
身份信息曝光。今后 eID 在各行业各领域的应用中, eID_code 将作为各种应用服务的消息 / 会话的唯一标识符, 因此 eID_code 的编码方法是互联网身份管理的核心环节。
本发明通过对互联网身份管理与服务中的各类身份相关信息进行分析, 给出统一 的 eID_code 编码方法规则, 并以此来认证、 交换、 保存、 管理身份信息, 便于各个身份服务 系统间的互联互通、 保护互联网应用安全和公民身份信息隐私, 为建立统一的互联网身份 管理与服务生态系统奠定基础。
本发明结合互联网发展形势和网络身份管理的需求, 根据 256 位杂凑密码算法 ( 国密 SM3 或 SHA256), 提出了网络身份标识码 (eID_code) 的编码方法。其目标是实施我 国的网络身份管理, 为公民提供隐私信息的保护。
本发明可广泛地支持在以 eID 为载体解决电子政务、 电子商务、 网银、 网上支付等 领域的相关应用。
下面给出本发明中用到的定义 :
网络电子身份证 (eID) : eID 是 electronic Identity 的缩写, 是在现有居民身份 管理体系基础上, 以密码技术为基础, 以智能卡芯片为载体, 由公安机关统一签发给公民用 于在互联网上远程证实身份的网络电子身份证件, 具有权威性、 统一性、 普适性的特点。 网络身份标识码 (eID_code) : 是一段网络身份标识符, 与公民身份的一一对应, 且本身不含任何用户身份信息。eID_code 的长度为 48 字节, 类型为 String 各字节之间的 数字依次连接, 不留空格和任何其他字符 ( 例如 _, ~, 、 , \, /, & 等 )。
SM3 算法——全称为 SM3 密码杂凑算法 (SM3 Cryptographic Hash Algorithm)。 对长度为 l(l < 264) 比特的消息 m, SM3 杂凑算法经过填充和迭代压缩, 生成杂凑值, 杂凑值 长度为 32 字节 (256 比特 )。
SHA256 算法—— SHA(Secure Hash Algorithm, 译作安全散列算法 ) 是美国国家 安全局 (NSA) 设计, 美国国家标准与技术研究院 (NIST) 发布的一系列密码散列函数。NIST 发布了三个额外的 SHA 变体, 每个都有更长的讯息摘要。 以它们的摘要长度 ( 以位元计算 ) 加在原名后面来命名 : “SHA-256” 、 “SHA-384” 和 “SHA-512” 。它们发布于 2001 年的 FIPS PUB 180-2 草稿中, 随即通过审查和评论。
Base64 编 码 —— 按 照 RFC2045 的 定 义, Base64 被 定 义 为 : Base64 内 容 传 送 编码被设计用来把任意序列的 8 位字节描述为一种不易被人直接识别的形式。(The Base64Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable)。
网络电子身份证 (eID) 的编码对象是在中华人民共和国境内使用互联网上网的 所有网民。网络电子身份标识码 (eID_code) 编码方法的格式如下 :
(1) 编码格式 :
eID_version
BHash_Value eid_code_rvb说明如下 : eID_version : 表示 eID 的版本号, 占 1 个字节, 类型为 string。 BHash_Value : 表示杂凑值, 占 45 个字节, 类型为 string。它是根据国密 SM3( 或SHA256) 密码杂凑算法标准, 由用户证件号码 (IDnumber)、 用户姓名 (name)、 有效证件类型 (type)、 128 字节随机数的字串 (random_eid_hash) 进行运算得出的 32 字节二进制信息的 Base64 编码, 记为 BHash_Value。其计算公式如下 :
BHash_Value = Base64{(SM3|SHA256)[append(IDnumber||name||type||random_ eid_hash)]}......(1)
其中 “有效证件类型” 如表 1 中所示。
表 1 有效证件类型
eid_code_rvb : 表示预留位 (ReserVation Byte), 占 2 个字节, 类型为 string。默 认全填充 0。
即有 eID_code 的计算公式如下 :
eID_code = append(eID_version||BHash_Value||eID_code_rvb)......(2)
在用户在相关渠道申领到 eID 载体后, 需要上网通过客户端来激活载体, 获取其 网络身份标识码 (eID_code)。具体的生成的步骤如下 :
首先, 服务器端会预先通过真随机数生成器 (TRNG) 产生 128 字节的随机数, 赋值 给 string 类型的变量 random_eid_hash。 生成 2 字节 string 类型的预留位 eid_code_rvb, 值默认填充为 0。当服务器端收到客户端发送的 eID_code 生成请求, 服务器将从请求信息 中读取版本号 eid_version、 用户证件号码 (IDnumber)、 用户姓名 (name)、 有效证件类型 (type)。
然后, 为了保证用户 eID_code 的唯一性, 服务器将启动审核程序, 审核该用户是 否之前已经持有了有效的 eID, 即已经生成了有效 eID_code。服务器将拒绝为已经持有有 效 eID 的用户再次生成新的 eID_code, 并提示用户 “审核未通过, 已申领过 eID” 的信息。
如果审核通过了, 那么服务器将 IDnumber, name, type, random_eid_hash 连接起 来进行 SM3( 或 SHA256 算法 ) 的填充和迭代压缩, 生成 32 字节二进制信息的杂凑值, 再进 行 Base64 编码, 得到 45 字节的字符串。将该字符串与 eID_version 和 eid_code_rvb 连接 起来后组成 eID_code。
最后, 服务器将 eID_code 返回给客户端 ; 如果收到客户端将该 eID_code 成功写入 eID 的回复消息, 则将该 eID_code 存入到数据库, 并通知用户可查看其 eID_code 的消息 ;
否则提示客户端 “eID_code 生成失败” 信息。
网络身份标识码 (eID_code) 的验证方法如下 :
(1) 初始化, 读取用户证件号码 (IDnumber)、 用户姓名 (name)、 有效证件类型 (type) 和卡片 128 字节的序列文件 (card_sn)。
(2) 如果网络电子身份证的卡内收到客户端发来的写入 eID_code 请求, 则读取 BHash_Value, 并转 step 3, 否则转入等待流程。
(3) 调 用 连 接 函 数 append(), 令 string 类 型 变 量 Hash_origin = append(Idnumber, name, type, card_sn)。
(4) 对 Hash_origin 根据密码杂凑算法 SM3( 或 SHA256) 进行填充和迭代压缩, 生 成 32 字节二进制信息的杂凑值, 赋值给 Hash_card, 即:
Hash_card = (SM3|SHA256)[append(IDnumber||name||type||card_sn)] ;
(5) 对得出的 Hash_card 进行 Base64 编码, 得到 45 字节的字符串, 赋值给 BHash_ card, 即 BHash_card = Base64{Hash_card}。
(6) 激活卡内数据一致性校验指令 eid_code_verify, 对 BHash_card 和 BHash_ Value 进行校验, 如果校验结果一致, 则同意将 eID_code 写入请求, 否则拒绝 eID_code 写入 请求, 并向客户端提示 “eID_code 写入请求错误” 信息。
用户持有效证件通过相关渠道成功申领 eID 并激活后, 通过网络可以在相关 eID 管理系统中查询到其 eID_code。
表 2 不同类型证件的 eID_code 实例
为了方便描述, 以下结合公式 (1)、 (2) 说明 eID_code 的计算公式 ; 结合附图 1 说 明生成 eID_code 的实现步骤 ; 结合附图 2 说明卡内数据一致性验证的步骤。
eID_code 的计算公式如下 :
eID_version
BHash_Value eid_code_rvbBHash_Value = Base64{(SM3|SHA256)[append(IDnumber||name||type||random_ eid_hash)]}......(1)
eID_code = append(eID_version||Hash_Value||eID_code_rvb)......(2)
生成网络身份标识码 (eID_code) 的步骤如下 :
(1) 初始化, 通过真随机数生成器 (TRNG) 产生 128 字节的随机数, 赋值给 string 类型的变量 random_eid_hash。生成 2 字节 string 类型的预留位 eid_code_rvb, 值默认填 充为 0 ;
(2) 收到客户端发送的 eID_code 生成请求, 服务器从请求信息中读取版本号 eid_ version、 用户证件号码 (IDnumber)、 用户姓名 (name)、 有效证件类型 (type) ;
(3) 服务器启动审核程序 ; 如果审核通过, 转 step 4 ; 否则提示用户 “审核未通过, 已申领过 eID” 的信息 ;
(4) 调 用 连 接 函 数 append(), 令 string 类 型 变 量 Hash_origin = append(IDnumber, name, type, random_eid_hash) ;
(5) 对 Hash_origin 进行 SM3( 或 SHA256 算法 ) 的填充和迭代压缩, 生成 32 字节二 进制信息的杂凑值, 赋值给 Hash_Value, 即 Hash_Value = (SM3|SHA256)[Hash_origin] ;
(6) 对得出的 Hash_Value 进行 Base64 编码, 得到 45 字节的字符串, 赋值给 BHash_ Value, 即 BHash_Value = Base64[Hash_Value] ;
(7) 调用连接函数 append(), 将 eID_version、 BHash_Value 和 eid_code_rvb 连 接起来, 赋值给 eID_code, 即 eID_code = append(eID_version, BHash_Value, eid_code_ rvb) ;(8) 将 eID_code 返回给客户端 ; 如果收到客户端将该 eID_code 成功写入 eID 的 回复消息, 则转 step 9 ; 否则提示客户端 “eID_code 生成失败” 信息 ;
(9) 将该 eID_code 存入到数据库, 并通知用户可查看其 eID_code 的消息。
eID_code 在网络电子身份证的卡内的数据一致性校验的步骤如下 :
(1) 初始化, 读取用户证件号码 (IDnumber)、 用户姓名 (name)、 有效证件类型 (type) 和卡片 128 字节的序列文件 (card_sn) ;
(2) 如果卡内收到客户端发来的写入 eID_code 请求, 则读取 BHash_Value, 并转 step 3, 否则等待 ;
(3) 调用连接指令 append, 令 string 类型变量 Hash_origin = append(Idnumber, name, type, card_sn) ;
(4) 对 Hash_origin 根据密码杂凑算法 SM3( 或 SHA256) 进行填充和迭代压缩, 生 成 32 字节二进制信息的杂凑值, 赋值给 Hash_card, 即:
Hash_card = (SM3|SHA256)[append(IDnumber||name||type||card_sn)] ;
(5) 对得出的 Hash_card 进行 Base64 编码, 得到 45 字节的字符串, 赋值给 BHash_ card, 即 BHash_card = Base64[Hash_card] ; (6) 激活卡内数据一致性验证指令 eid_code_verify, 对 BHash_card 和 BHash_ Value 进行校验, 如果校验结果一致, 则同意将 eID_code 写入请求, 否则拒绝 eID_code 写入 请求, 并向客户端提示 “eID_code 写入请求错误” 信息。
本发明的上述方法, 能够在安全与隐私保护方面实现如下的特性 :
(1) 唯一性
网络电子身份证的身份标识符 eID_code, 根据公民的有效身份证件号码、 类型、 姓 名及随机数生成的, 利用 256 位杂凑密码算法确保 eID_code 的唯一性, 利用内部数据一致 性校验机制确保公民有效 eID_code 的唯一性, 实现与公民身份的一一对应。
(2) 隐私性
eID_code 本身不含任何用户身份信息 ( 如有效身份证件号码、 类型、 姓名等 ), 防 止了公民身份隐私信息的泄露。
(3) 不可逆性
eID_code 是根据 256 位杂凑密码算法 ( 国密 SM3 或 SHA256) 产生再用 Base64 编 码; 因为杂凑密码算法的逆向计算具有不可行性, Base64 编码会使得原信息难以辨识 ; 并 且, 由于计算过程中引入了 128 字节随机数作为因子, 使得暴力破解也变得不可行, 因此, 生成的 eID_code 具有不可逆推性。
(4) 可替换性
同于当前身份证号码的固定编码, eID_code 与公民个人身份信息对应关系一旦泄 露; 经过公民个人申请, 可以重新生成新的 128 字节随机数, 计算出新的 eID_code 替换旧的 eID_code, 从而持续保护用户隐私。
(5) 支持卡内安全验证
设计了专用 cos 指令 eid_code_verify, 实现对卡片拥有者身份一致性的卡内安 全验证 ; 设计了卡片拥有者身份一致性的在线安全验证流程。
采用了上述的网络电子身份证中网络身份标识码的生成和校验控制方法, 由于其
中的编码方法是根据 256 位杂凑密码算法 ( 国密 SM3 或 SHA256), 由用户证件号码、 用户姓 名和 128 字节随机数的字串进行运算得出的 32 字节二进制信息的 Base64 编码, 从而具有 唯一性、 计算开销小、 不可逆推的特点, 并达到了网络身份管理和隐私保护的双重目的 ; 同 时, 网络身份标识符 (eID_code) 代表 eID 所对应公民身份的标识符, 与公民身份一一对应, 其本身不含任何用户身份信息, 这样既确保了个人身份的真实性, 又可有效避免身份信息 曝光 ; 另一方面, 本发明通过对互联网身份管理与服务中的各类身份相关信息进行分析, 给 出统一的 eID_code 编码方法规则, 并以此来认证、 交换、 保存、 管理身份信息, 从而便于各 个身份服务系统间的互联互通, 有效保护互联网应用安全和公民身份信息隐私, 使用快捷 方便、 工作性能稳定可靠、 适用范围较为广泛, 为建立统一的互联网身份管理与服务生态系 统奠定了坚实的基础。
在此说明书中, 本发明已参照其特定的实施例作了描述。 但是, 很显然仍可以作出 各种修改和变换而不背离本发明的精神和范围。因此, 说明书和附图应被认为是说明性的 而非限制性的。