跳到主要内容

虚拟时钟与硬件时钟的区别

简介

任何硬件加密锁,都需要一个稳定的时钟来保证软件许可对时间限制的准确性判断。目前常用的时钟处理方式有两种,一种叫虚拟时钟,一种叫硬件时钟。

虚拟时钟

精锐5 用户锁区分普通硬件锁和时钟硬件锁,精锐5普通用户锁搭载的时钟模块为虚拟时钟,锁内时间和本地时间有一定的关联程度。虚拟时钟可随本地时间小范围前调(调到过去时间,范围30min)和无限制后调(调到未来时间)。

虚拟时钟的设计原理:

  1. 通过命令将PC时间传入锁内。
  2. 锁上电后,比较第一次传入锁内的时间与FLASH中记录的时间,取较大的值作为虚拟时钟时间,在此基础上通过计数器不断增加虚拟时钟。
  3. 如果第一次传入锁内的时间大于FLASH中记录的时间,则更新FLASH中的时间,之后,每5分钟将虚拟时钟更新到FLASH中。
  4. 之后传入锁内的PC时间,如果PC时间大于虚拟时钟时间,则更新虚拟时钟到PC时间。
  5. 如果传入的PC时间小于虚拟时钟时间,则先检查是否满足小量回退条件,再检查是否满足大量回退条件,如果满足其中之一,则更新虚拟时钟到PC时间,否则不更新。
  6. 小量回退的条件为:虚拟时钟与PC时间的差值不超过当前PC时间与上次小量回退时PC时间的间隔的5%,且此间隔不小于10分钟。
  7. 大量回退的条件为:虚拟时钟与PC时间的差值不超过当前PC时间与上次大量回退时PC时间的间隔的0.3%,且不小于30秒,且此间隔不小于1小时。
  8. 大量回退的时间点记录在FLASH中,初始值为锁的生产时间。
  9. 小量回退的时间点记录在RAM中,初始值为锁上电后的虚拟时钟值。
  10. 时钟溢出后,时钟值停留在0xFFFFFFFF。

硬件时钟

精锐5 时钟锁也是一种用户锁,时钟锁是在精锐5普通用户锁的基础上,增加了硬件时钟模块,以可充电电池为支撑,可脱离计算机保证时钟的有效性。与普通用户锁最大的区别在于:时钟锁的时钟不受电脑时间影响,时钟的电量完全由可充电电池模块供应。

该电池模块用于为用户锁的时钟模块供电,保证加密锁在没有外部供电的情况下,时间继续能够运行大于240天。时钟锁可以用于对时钟要求特别敏感的软件使用,例如考试软件等。

时钟校准

硬件锁在初次使用或者长时间放置不用的情况下,难免会出现时钟偏差较大的情况,时钟偏差往往会影响软件的正常使用。精锐5 加密锁通过时钟校准的方式,将锁内时间校准到服务器时间,保证时钟有效性。

精锐5 时钟校准需要将硬件锁插入电脑,打开 Virbox 用户工具,查看硬件锁信息,通过时钟校准对锁进行校准,无论是精锐5 标准版用户锁,还说精锐5 时钟版用户锁,均使用此方法进行时钟校准。硬件锁的时钟校准工具必须依赖我公司部署与云平台上的时钟校准服务器,通过签发校准时钟信息包进行校准,而且要求PC机的时间和精确互联网时间相差不超过30min。

img

虚拟时钟和许可逻辑

精锐5 的虚拟时钟会根据 PC 时间和锁内时间自行调整,当插入PC 的时候,锁内根据 USB 供电单独计算一个时间,并且同步 PC 时间,且区分良性回滚和恶意回滚。

使用场景锁内表现备注/解决方案
PC 时钟比锁时钟间快,比如PC的时钟越走越快锁内时间跟 PC 同步检查 PC 时间并且互联网时间校准。
锁插在 PC 之后,PC 时间比锁走的慢 5% 以内锁每过 10 分钟会跟 PC 同步一次--
锁插在 PC 之后,PC 时间比锁走的慢 5% 以上锁不会 PC 同步,按照锁的时钟继续走检查 PC 时间并且互联网时间校准。
PC 时间由于使用微软的时钟校准,突然向未来跳,比如从当前 10:56 跳到 10:59锁会跟着 PC 同步(跟锁有通讯的情况下)。--
PC 时间由于使用微软操作系统的时钟校准触发的时间回滚,并且这种回滚间隔在一万秒以上,回滚量在间隔时间的千万之三之内,且不小于 30 秒。锁内时间回滚到 PC 时间,其它任意条件不满足,锁内时间按照锁内计数器增长。举个例子:当前 PC 时间 2017-05-18 11:00:00互联网时间 2017-05-18 10:59:00,PC 回滚之后,锁也会回滚到互联网时间。
两台 PC 时间不一样,锁内时间按照其中最大时间值同步
锁插上 PC,PC 时间比锁大按照 PC 时间同步
锁插上 PC,PC 时间比锁慢N天,并且总回滚量不超过千之三。锁按照 PC 时间回滚锁内会记录总回滚的 PC 时间点
锁插上 PC,PC 时间比锁慢N天,并且总回滚量超过千分之三锁按照自己最后一次正确时间累加时间