用于鉴定程序代码真实性的方法和设备 【技术领域】
本发明涉及通讯系统。本发明的一个特殊目的就是提供一种用于检测软件可靠性的方法和系统。
本发明的目的在于提供一种用于鉴别存储在存储设备中的程序或程序代码真实性的方法,在这种方法中,对程序代码计算第一校验和,将该校验和与已知值的第二校验和作比较,并且作为对上述比较的响应,如果第一校验和与第二校验和匹配,就证明程序代码是真实的。
背景技术
移动网络,例如GSM网络(GSM:全球数字移动电话系统),最近变得非常普及。与移动网络相联系的附加服务也相应地加速发展。其应用领域是多方面的。移动电话可能作为用于例如小额购买,如软饮料和自动洗车的付款手段来使用。每天的日常生活,例如付款交易、银行服务等已经或在不久的将来都将成为目前移动电话中的功能。与以往地移动站相比,下一代的移动站在服务水平和数据传输容量方面都将有更大的提升。
通过作为电子支付一般必要条件的数字签名的帮助,就可能确保发送的信息和要识别的源地址的相干性。数字签名通过对发送的信息计算出的校验和用发送者的私有密钥进行加密来获得。因为没有人,除了发送者,知道私有密钥,所以当用发送者的公开密钥对加密信息进行解码时,接收者可能要确信信息没有经过修改,并且是使用只有发送者知道的私有密钥来生成的。一种在数字签名中使用的算法的实例是RSA计算算法,这是一种具有公开密钥和私有密钥,也可用于加密消息的加密系统。
在公开密钥的基础结构中,用户仅持有属于他/她自己的私有密钥,而所有的用户都可以获得公开密钥。公开密钥的这种存储方式,例如存储在电子邮件目录中,是不够的,因为可能有人会伪造它,并以密钥真实持有者的身份出现。取而代之的是需要鉴定和证明书,用作由可信方(证明机构)出据的证明其名字、标识号码和公开密钥是属于同一个人的证据。证明书通常是由公开密钥、名字和标识号码等结合组成,并经过证明机构用他/她私有密钥签署。
当数字签名消息的接收者希望确定消息的真实性时,首先他/她必须获得给予他/她公开密钥和名字的数字证明书。在这之后,他/她必须鉴别证明书。为了能够执行这步,他/她必须获得一些更多的用于鉴定所论的证明书的附加证明书(证明链)。
如果证明书是真实的,接收者通过使用随同证明书接收的公开密钥来鉴定消息。如果签名通过了验证,发送者就是证明书所指认的那个人。在证明过程中,要用到分组列表,该列表中输入了要取出使用的证明。证明书和分组列表都需要目录服务。
移动电话通过使用至少一部分嵌入的系统和软件已经实现。在这种情况下,对原始软件和功能作至少是部分的修改是可能的。使用修改过的软件,可以对意图修改帐户号码、应付的总数、数字签名等欺骗手段的电子支付消息内容进行改变,并同时提供给用户正确的交易信息。
目前,如果用户所使用的移动电话中所应用的软件是由制造商提供的原始软件或某些修改版本软件,就不可能让用户进行验证。如果移动电话用于银行服务,例如作为付款手段等,即使用户的设备所应用的是有效、原始的软件版本,也必须能够进行验证。
对于用户来说,最重要的事情就是能够验证显示屏和键盘的可靠性,安全性、与安全相关部分的原始性,例如订户的标识数据、密码和密钥码的存储器,以及设备使用的通讯信道的安全性和可靠性。另外,用户必须能够在未预期的时刻对软件进行随机验证,以便使软件没有事先准备好被验证。
在理论上,当使用一个hash函数SHA-1、MD5或等效函数以及一个有效Hash函数在移动电话软件上进行计算两个独立校验和已足够有效的情况下,软件可以通过使用称为直接验证方法来进行验证。第一校验和在移动电话上进行计算,而第二校验和由原始软件的供应商计算。第一和第二校验和相互进行比较,并且如果它们匹配,电话软件就是原始的。然而,随之而来的问题是修改或假冒的软件可能忽略程序中编码的程序计算,并且当用户要求时,仅将原始校验和作为第一校验和显示。
发明目的
本发明的目的在于消除或者至少是减少上述的缺点。本发明的一个特殊目的是揭示一种用于可靠验证移动站中软件的真实性和有效性的方法和系统,而本发明可以适用于对任何软件种类的验证。
本发明的进一步目的是揭示一种通过使用不同的服务提供商和服务的使用者所使用的确定设备和程序的真实性的可靠和可变的方法。
至于本发明的特征特性可以参照权利要求。
【发明内容】
本发明方法的基本原理是用于称为直接验证的验证。在这个程序中,原始软件的制造商宣告一个可变的询问或一组询问以及对应于每个询问的一个响应或校验和。询问是从由一个字符串、程序函数和输入组成的组中选出。当在随机时刻用户希望验证他/她所使用的软件的真实性,他/她将询问存储或输入使用该软件的设备中,例如移动电话。询问存储在与软件相同的存储器中,此后设备使用验证算法来计算在存储器空间中的校验和即响应。设备将这个响应送给用户,用户将它与对应于所给询问的响应进行比较,并且如果两个响应匹配,用户就知道该软件是真实的和原始的。通过使用这个程序,就可能对彼此具有相同起源的两个程序进行比较。当使用认为是安全和随机选择的询问的软件时,安全的软件所给予的响应可以和验证的软件所给予的响应进行比较。
用户可以例如从用户可以获得的安全网络服务上所保留的数据库,或用户能访问的任何类型的媒体中检索询问以及与之相对应的校验和。在相同的数据库中,也可以保持一个把与用户在他/自己的设备中输入的询问相同的询问输入其中的有效程序代码,用户在他/自己的设备中输入相同的询问,并对他/自己的设备给出的校验和与有效程序代码给出的校验和进行比较。
在本发明的方法中,第一校验和对程序代码计算,该校验和与认为有效的第二校验和进行比较,并且如果第一校验和与第二校验和匹配,作为上述比较的响应,程序代码被证明是真实的。
根据本发明,询问加入到程序代码中,并且仅在这之后,上述第一校验和就对程序代码和询问的组合来计算。在这个应用程序中,询问是一个输入,某个字符串或通过使用与给定某个结果相符合的计算来加入到程序代码中的相应数据。在本发明的一个应用中,程序代码和询问存储在存储空间中,并且对整个存储有上述程序代码和询问的存储空间计算校验和。加入的询问可以通过合适算法来修改,无论如何使用字符串,都产生加入到程序代码中的标准格式询问。在这种情况下,程序代码中的附加询问可能进行标准化,使得鉴定可更方便地执行。例如算法SHA-1不管询问长度,所产生的总是160位长的询问,它被作为标准长度的询问加入程序代码中。然而,在原始询问加入到程序代码之前,倘若使用熟知的经常从原始询问中产生相同的散列值的算法来对询问求散列,对其求散列法不能影响询问的可靠性或功能和校验和对。
在要验证的软件或程序代码中一个询问大小的存储区可能由询问来替代;询问可能加入到存储区或者,在询问实际上是空字符串的情况下,存储区可能为空白。另外,加入询问可能意味着在计算校验和之前移去某个程序代码段。在所有这些情况下,存储空间中计算的校验和是唯一、不可预期和仅依据程序代码和与询问的组。
在本发明的一个应用中,询问和其对应的校验和是从由询问和其对应的校验和组成的随机询问组中选出。新的询问和校验和对可能不断地生成,这使欺骗更困难。而且,以这种释放的存储区不能用来存储核对表的方式来选择询问和其对应的校验和,同样提高了可靠性。而且,存储设备不与外部数据库、终端设备或其他任何其可以检索或请求对应于询问的校验和的设备相连是很重要的。由本地软件单独执行必要的计算程序也是很重要的。
在本发明的另外一个应用中,鉴定过的程序代码可能以将鉴定过的程序代码的校验和与在同样询问上其他程序代码所给出的校验和进行比较的方式,用于对包含在相同软件或系统中的其他程序代码的鉴定。这涉及到,例如把第一用户鉴定过的程序代码用于第二用户的程序代码鉴定。在一个应用中,第一用户的移动电话可能将消息传送给第二用户的移动电话。这个消息将告知第二移动站用户可以用于验证他/她软件的询问。同样的结果也可以以网络向电话传输询问(例如在呼叫初始化期间)的方式用于自动验证,该电话通过传输计算好的校验和来响应。如果校验和无效,网络做出必要的结论,并告知用户和其他方这个事件。
与已有技术相比,本发明的优点在于由于嵌入已知可靠系统或软件的发明,就可以实现在某个时期之后验证的可靠性。
与已有技术相比,本发明的优点进一步在于校验和的计算不需要外部的功能,其可以集成在要验证的软件中。而且,本发明的解决方案是一种不需要同时使用公开密钥和私有密钥的方法。
而且,减少了对随机访问存储器的需要,因为程序代码不需要在设备中进行解码和修改。而且由于询问和其相应的校验和是动态变化的,所以事先并不知道对应于询问的校验和。在这种情况下,询问的产生可能是完全随机的。
【附图说明】
在下节,本发明将结合附图进行描述,其中
图1是代表本发明设备的示意图。
图2是通过使用框图来表示本发明中所描述的功能,和
图3代表如本发明所述的计算校验和的一个实例。
【具体实施方式】
图1的设备包括存储器1、处理器2、接收模块3、显示屏4和输入设备5。存储器分为静态部分A和动态部分B。动态部分B大小的选择是通过为了减少欺骗,对应于询问的校验和并不适合存储在其中的方式确定。存储器1,接收模块3、显示屏4和输入设备5与处理器2相连。如图1所述的设备的实例可以是由处理器1、存储器2、接收模块3、显示屏4和键盘以及中央处理单元组成的移动站。实质上,正被讨论的发明并不是通过使用本发明实现的设备本身,在电子交易中使用的各种设备也可能取代它。
另外,如图1所示的设备包括用于计算程序代码校验和的装置12,用于将预定询问加入到程序代码中的装置6和用于计算程序代码和询问组合的上述第一校验和的装置7。在一个应用中,当装置7和装置12例如可以使用经证明的程序代码实现,在这种情况下,它们被存储于存储器中。
而且,如图1所示的设备包括用于在存储空间中存储程序和询问的装置8和用于计算整个存储有上述程序代码和询问的静态存储空间的校验和的装置9。而且,设备包括通过键盘5用于接收存储设备上的询问的装置10。
图2是代表本发明功能的框图。询问和校验和的生成器26是外部证明机构,不是用户27,例如是推出原始程序代码的程序制造商或可信的第三方。用户从外部证明机构接收询问和相应的校验和,箭头20,例如从其安全的因特网站点。用户27激活设备的校验提示,箭头21。设备请求用户将询问输入设备,箭头22。设备可以是,例如移动电话。程序代码根据算法28读取,箭头23和24,并且使用适合的方法计算校验和。程序代码位于程序存储器29中。校验和可能通过例如使用hash函数来计算。Hash函数是例如MD和SHA-1。从算法28的应用程序中得出的校验和返回给请求它的用户27,箭头25。用户27,例如从他/她的移动电话的显示屏上,读取计算过的校验和,并且将其与外界证明机构给出的校验和进行比较。如果校验和匹配,设备的程序代码就是有效的。
关于实现校验方面的实质是事先不知道该询问。由于这个原因,不可能预见对应于询问的校验和。除那之外,为了获得期望的可靠性,输入的询问还必须足够长。进一步,校验和并不输入到程序中,在这种情况下程序不能根据校验和使自身适合于各种环境。当产生校验和时,要验证的整个程序代码使用一种算法来读取。询问和程序代码以特定方式组合,该方式使程序不能计算出校验和对应于原始程序代码的询问的组合结果,并且因而得出正确的结论。
图3代表如本发明所述产生校验和的较佳实施例。如本发明所述,用户希望确定他/她使用的软件的原始性。对于校验,产生一随机询问30以用来计算该校验。在这个实例中,询问30是由字符A、B、W、U、M和E组成的字符串。询问30的每个字符位于存储空间的某处。位置区域由位置算法32定义。位置算法如下起作用,例如以包含在询问中的字符加入到存储区域31的某个存储地址的方式或以在字符和位于某个存储地址内容之间执行某种计算机操作并把该计算结果放在所说存储地址的方式。箭头33示出校验算法的进程。当询问中含有的所有字符已位于期望的存储空间31中时,使用例如hash算法计算出整个存储区域的校验和。可作为hash算法的一个实例要提及的是MD5和SHA-1算法。
本发明并不局限于上述的应用实例,在权利要求定义的本发明的概念范畴中可以实现许多变化。