一种计算机系统时间防篡改方法及系统的制作方法_2

文档序号:8381282阅读:来源:国知局
间校验字符串文件C,若是,将文件C中内容写入检查点时间校验字符串数组Z ;否则,执行步骤40。
[0047]在本实施例的方案之前,首先介绍下本实施例中各种参数。确定检查系统时间相关的参数和方法,包括:
[0048]参考时间T:作为检查系统时间是否在有效范围内的参考。参考时间T是基于参考系统R中的系统时间(通常使用标准时间)获得的与当前时间对应的检查点时间,参考系统R中的程序Z将T转变为标准时间的检查点时间校验字符串s,供待检查系统在检查过程中使用。在一个检查周期内,参考时间T不会随系统时间的变化而变化,因此,对应的检查点时间校验字符串S也不会发生变化。
[0049]检查点时间T’:是基于待检查系统A中的系统时间获得的与当前时间对应的检查点时间,并根据T’、检查周期和起始时间能够计算出一系列的检查点时间,以表示允许的时间偏差范围。在一个检查周期内,以起止时间表示的允许的时间偏差范围不会随系统时间的变化而变化。
[0050]检查周期P:可为整数天、可使24被整除的整数小时或可使60被整除的整数分钟。例如,可以为I天、I小时、2小时、3小时、4小时、6小时、8小时、12小时、I分钟、2分钟、3分钟、4分钟、5分钟、6分钟、10分钟、12分钟、15分钟、30分钟均为可选择的检查周期。
[0051]准许的时间偏差范围tl至t2:为检查周期P的整数η倍,其中η彡1,T在tl至t2所确定的时间区间内。例如,tl至t2的为48小时,即+/-24小时,T为tl至t2间的中点时间,检查周期为10分钟。
[0052]检查点时间字符串构造方法S:是基准格式的检查点时间字符串的构造方法,基准格式检查点时间字符串的构造与系统时间、检查周期P和检查起点时间相关。通过检查点时间字符串构造方法S可以将系统时间转换为与系统时间最接近的,已经经过的,与检查起点时间间隔为P的整数倍的时间字符串。
[0053]例如,当前系统时间为2013年5月5日7:15,检查周期为I小时,检查起点时间为O点,则检查点时间字符串为2013050507。
[0054]这里的检查起点时间是检查点时间字符串构造方法S的参数之一,可以近似理解为周期性函数的相位角。为便于计算,可选择每日O时、每小时的O分等作为起点时间,此时可理解为相位角为O。例如,当前系统时间为2013年5月5日7:15,检查周期为I小时,检查起点时间为O点,则检查点时间字符串为2013050507。当前系统时间为2013年5月5日7:15,检查周期为I小时,检查起点时间为O点09分,则检查点时间字符串为201305050709ο
[0055]检查点时间字符串构造方式可以为:
[0056]a.YYYYMMDD:对应时间YYYY年MM月DD日,对应检查周期为P天,对应典型准许时间差异范围为n*p天。例如,20130505,对应检查周期可为I天或多天。
[0057]b.YYYYMMDDHH:对应时间YYYY年MM月DD日HH时,对应检查周期为P小时,起点时间可选定为每天O时,对应典型准许时间差异范围为n*p小时。例如,2013050520,对应检查周期可为I小时或多小时
[0058]c.YYYYMMDDHHmm:对应时间YYYY年MM月DD日HH时mm分,对应检查周期为P分钟,起点时间可选定为每小时O分,对应典型准许时间差异范围为n*p分钟。例如,201305052030,对应检查周期可为I分钟、2分钟、3分钟、5分钟、6分钟、10分钟、15分钟、30分钟。
[0059]散列函数F:通过散列算法将检查点时间字符串转换为长度为L位的检查点时间校验字符串S。其特征是不同的检查点时间字符串经过转换后得到的检查点时间校验字符串s不同。例如,通过散列函数F可以将2013050520转换为字符串“zVcO”,将2013050521转换为字符串“Yu8f”。
[0060]同时,需要周期性构造基于参考时间的检查点时间的检查点时间校验字符串S,以便检查过程中使用。可获得参考时间的计算机系统R中的程序Z将以P为周期利用方法S生成基准格式的检查点时间字符串,再通过散列算法F将该字符串转换为长度为L的检查点时间校验字符串s并输出。输出方式为用户界面或应用程序界面。
[0061]待检查系统时间的计算机系统A在系统启动过程中启动运行程序B,检查系统时间是否在有效范围内。
[0062]检查是否存在已保存的说明有效时间范围的检查点时间校验字符串文件C。
[0063]设置文件C的目的是避免每次系统重新启动都需要重新输入来自参考系统的检查点时间校验字符串S。只有在当前系统时间超出C所确定的时间范围时才需要重新验证。
[0064]程序B检查计算机系统中是否存在检查点时间校验字符串文件C,如果该文件不存在,则说明时间检查系统为初次运行,需要构造检查点时间校验字符串数组Z,并输入来自程序Z的检查点时间校验字符串S,以验证系统时间是否在有效范围内。此时跳转执行步骤40。
[0065]步骤20,获取当前系统时间,生成检查点时间字符串,通过散列算法F将字符串转换为长度为L的检查点时间校验字符串S。
[0066]如果检查点时间校验字符串文件C存在,则说明待检查系统时间的计算机系统A曾经运行过时间检查程序,并保存了上次运行时的有效的时间范围,将文件C中的内容写入检查点时间校验字符串数组Z。此时,需要根据系统当前时间,构建当前需要验证的检查点时间校验字符串S。获取当前系统时间,并利用方法S生成基准格式的检查点时间字符串,再通过散列算法F将该字符串转换为长度为L的检查点时间校验字符串S。
[0067]步骤30,检查数组Z中是否存在与检查点时间校验字符串s相同的字符串,若是,基于当前系统时间构造下一次检查点时间校验字符串数组Z’ ;否则,输出需要重新验证时间信息。
[0068]检查数组Z中是否存在与s相同的字符串,如果不存在,则说明数组Z所确定的有效时间范围已经失效,需要重新验证,输出需要重新验证时间信息,提示修正系统时间并等待确认,在确认后,重新执行步骤20。也就是当时间失效、重新验证后,使用来自参考时间系统的检查点时间校验字符串作为当前检查点时间校验字符串S。这里的参考系统是自行运行的参考时间提供系统,在待时间验证的系统时间验证过程中,使用来自参考系统的时间来验证待验证系统时间是否正确。
[0069]如果数组Z中存在与s相同的字符串,则说明当前系统时间尚未超出文件C所确定的有效时间范围,不需要来自参考时间系统的检查点时间校验字符串s,因此需基于当前系统时间构造检查点时间校验字符串数组Z’,其过程是获取当前系统时间,并通过检查点时间字符串转换方法S获得最近的一个检查点时间T’,并基于检查周期P计算生成在下一次检查时准许的时间范围内的所有检查点时间。
[0070]以检查点时间T’为例,准许时间范围为tl至t2为例,即T’_tl=n*p, t2_T’=n*p,η为正整数。
[0071]在下一周期检查中,所有在准许时间范围内的所有检查点时间有2η个,依次为:
[0072]Τ,-(η_1)*ρ,Τ,-(η_2)*ρ,Τ,-(η_3)*ρ,......Τ,+ρ......Τ,+(η_1)*ρ,Τ,+η*ρ
[0073]如当前系统时间为2013年5月5日7:15,当前检查点时间为7:00,检查周期为I小时,有效时间范围为+/-4小时,此时η=4,则下一次检查时,所有有效检查点时间为:
[0074]2013050504、2013050505、2013050506、2013050507、2013050508、2013050509、2013050510,2013050511
[0075]将上述检查点时间依次通过散列算法F转换长度为L的检查点时间校验字符串s放入数组Z’中,使数组中每个单元中的检查点时间校验字符串s顺序对应每个检查点时间。
[0076]步骤40,重新创建所述文件C,并将数组Z’中的内容保存在所述文件C中。
[0077]清除文件C中的内容或重新创建文件C,并将数组V中的内容保存在文件C中,使文件C中始终保存基于系统时间的有效时间范围描述。
[0078]步骤50,输出时间偏差在有效范围内的标志或信息。
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1