用于以改进的数据安全性传输启动代码的方法和装置与流程

文档序号:27948056发布日期:2021-12-11 15:53阅读:93来源:国知局
用于以改进的数据安全性传输启动代码的方法和装置与流程

1.本发明涉及一种用于以改进的数据安全性从编程设备向微控制器传输启动代码的方法。本发明还涉及一种编程设备和微控制器。本发明此外还涉及一种用途、程序元素和计算机可读介质。


背景技术:

2.尚未安装有任何可执行软件或固件的微控制器需要基本软件或固件(即所谓的启动代码)才能执行其功能。由于(至少在某些情况下)这是需要保密的软件,它至少在某些情况下是加密形式的。由于加密的软件本身无法在计算机或微控制器上执行,因此必须提供解密软件才能启动启动代码。传输该解密软件使得解密软件和加密的启动代码均易受到潜在攻击者的安全相关动作的影响,例如盗窃、不受控制的复制和/或修改解密软件和/或启动代码。


技术实现要素:

3.本发明的目的是,至少提高在某些所提及动作的情况下的传输安全性。
4.所述目的借助于独立专利权利要求的主题来实现。本发明的发展将从从属权利要求和随后的描述中显现。
5.根据第一方面,描述了一种用于以改进的数据安全性将软件从编程设备传输到微控制器的方法。
6.微控制器是被设计为或适合于执行预定义控制任务的计算机。在至少一些实施例中,微控制器可以被设计为或适合用作所谓的“通用计算机”,例如具有个人计算机的任务。微控制器可以是专用计算机或者可能是标准计算机,和/或使用标准软件和/或专用软件来执行其预期任务中的至少一些任务。软件可以是例如软件、固件、微代码、fpga可读指令和/或文件,它们可以或可能使用微控制器的某个组件来确定其序列。启动代码可以包含值得保护和/或可能需要保密的想法和/或例程。启动代码可以是加密形式,和/或可以以加密形式传输。
7.编程设备是至少适合于向微控制器传输软件、固件和/或其他文件的计算机。编程设备还适合于执行基于随机数生成的例程。编程设备被归类为受信任。此外,编程设备具有至少一个启动代码和一个解密软件,如果必要的话,在至少一个进一步的解密之后,它们可以在微控制器上执行。启动代码可以通过未被归类为受信任的线路从编程设备传输到微控制器。
8.该用于以改进的数据安全性从编程设备向微控制器传输启动代码的方法具有以下步骤:
9.a)通过该编程设备创建第一公钥、第一私钥和密码。
10.公钥/私钥对用作加密的依据。创建密钥和密码可以包括使用标准例程和/或使用特殊硬件来生成公钥/私钥对和随机数。
11.b)通过该编程设备生成用于在该微控制器上执行的启动加载程序二进制文件,该启动加载程序二进制文件至少包括:
12.‑
用于在该微控制器上执行的引导加载程序,
13.‑
该密码,
14.‑
通过该密码加密的该第一公钥,
15.‑
一组通过该密码加密的、用于在该微控制器上执行的启动加载程序例程,该组加密的启动加载程序例程包括:
16.用于生成第二公钥和第二私钥的生成例程,以及用于解密至少该第一公钥的解密例程;
17.‑
用于在该微控制器上执行的解密例程,其用于解密这些通过该密码加密的启动加载程序例程;
18.启动加载程序二进制文件可以实现为枚举软件部分的编译或这些部分的链。在修改中,这组通过密码加密的启动加载程序例程可以包括其他和/或进一步的例程,并且尤其可以是更广泛的。至少该引导加载程序具有可直接在微控制器上执行的代码。加密该组加密的启动加载程序例程可用于例如防止基本上在传输期间或在传输时间期间对启动加载程序例程进行操纵(“即时操纵”)。
19.c)通过该编程设备估计可容忍的总处理时间,其由步骤d)至f)的处理时间组成。
20.下文详细描述的步骤d)至f)基本上包括从编程设备到微控制器的第一数据量的传输时间、从微控制器到编程设备的第二数据量的传输时间、以及(例如包含在上述启动加载程序二进制文件中的)预定义例程的定义处理时间。如果启动加载程序二进制文件包括比上述例程更多或更少的待执行例程,则总处理时间可以相应地改变。“通过该编程设备”估计可容忍的总处理时间可以例如通过编程设备上的(例如使用文件大小的估计值的)例程来执行。该估计值可以基于一系列测量,这些测量重复测量用于说明性传输的步骤d)至f)的总处理时间(或在估计值之前已经对其进行测量)并使用这个总处理时间例如来确定该说明性传输的最大值和/或时间弥散。该估计可以例如由开发者执行和/或通过工具来支持。根据这一系列测量和/或通过其他方法确定和/或估计的总处理时间被传送到编程设备;编程设备将此时间用作估计的总处理时间。还可以根据这一系列测量(例如,根据所测量的时间弥散和/或其他因素)确定可容忍的总处理时间。
21.d)将该启动加载程序二进制文件从该编程设备传输到该微控制器。
22.启动加载程序二进制文件包含上述数据,或者在修改中包含更多或更少的数据或待执行例程。在修改中,密码也可以与启动加载程序二进制文件的其他部分分开传输;这可能会影响所估计的总处理时间。
23.e)通过该微控制器执行
24.该引导加载程序代码,
25.该用于解密这些通过该密码加密的启动加载程序例程的解密例程,以及
26.解密后的启动加载程序例程。
27.引导加载程序具有可直接在微控制器上执行的代码。引导加载程序例如可以首先执行“开始代码”,这可以例如取决于微控制器的细节。引导加载程序然后可以执行解密例程以解密这些通过密码加密的启动加载程序例程。启动加载程序二进制文件中包含(或以
其他方式传达)的密码可用于解密这些例程。然后,或者可能在预定义的暂停之后,可以执行启动加载程序例程。如果启动加载程序二进制文件包含上述例程,则在微控制器上执行以下启动加载程序例程:
28.‑
用于生成第二公钥/私钥对(并且可能用于通过第一公钥加密第二公钥)的生成例程,以及
29.‑
用于解密第一公钥的解密例程。
30.f)将该(可能加密后的)第二公钥从该微控制器传输到该编程设备。
31.g)如果步骤d)至f)的实际处理时间在该可容忍的总处理时间之外,则终止该方法。
32.该方法的上述步骤的运行和/或传输时间——以及可能还有其预定义的变化——可以在狭窄的框架内预先确定和/或(例如在上述一系列测量中)以小的偏差测量。例如,步骤d)至f)的可容忍的总处理时间可以例如根据测量的时间弥散和/或其他因素(例如在狭窄的时间范围内)从一系列处理时间的测量中确定。然后,可以将该可容忍的总处理时间与实际处理时间进行比较。因此,编程设备可以例如从步骤d)开始等待步骤f)的传输结束,只要其已被确定为可容忍的总处理时间。
33.h)如果步骤d)至f)的实际处理时间在该可容忍的总处理时间之内,则该编程设备通过该第二公钥加密该启动代码,并将加密后的启动代码从该编码设备传输到该微控制器。
34.因此,所描述的方法可用于更安全地将启动代码传输到微控制器。这至少显著阻碍和/或防止攻击者同时读取、修改启动加载程序二进制文件,和/或将修改的启动加载程序二进制文件而不是原始启动加载程序二进制文件加载到微控制器上。即使潜在的攻击者能够同时读取和/或实时操纵编程设备与微控制器之间(以及相反的方向上)的通信,该优点仍然存在。这是因为例如严格的时间限制(和检查)意味着例如潜在攻击者对传输的中断将被注意到。此外,操纵所需的动作将花费太长时间,因此将会被注意到。这些动作可以包括例如读取、识别、操纵和传输被操纵的启动加载程序二进制文件。加密后的启动代码也难以读取且难以用于微控制器的未授权编程。
35.在一个实施例中,该可容忍的总处理时间由最大总处理时间、最小总处理时间、或最大总处理时间与最小总处理时间之间的时间窗定义。
36.该实施例例如可以检测潜在攻击者是否中断传输和/或例如使用例程来替换启动加载程序二进制文件的部分,因为这会导致步骤d)至f)花费太长时间,即超过可容忍的总处理时间。该实施例还可以检测在步骤d)中发现传输之后,潜在攻击者是否如步骤f)中所预期的那样执行传输(或者“立即”执行传输),因为该传输将能够比最小总处理时间更快地发生。使用时间窗可以结合这些优点。
37.在一些实施例中,(启动加载程序二进制文件中的)该组加密的启动加载程序例程进一步包括用于产生预定义持续时间的暂停的例程。除了上述启动加载程序例程之外,该例程在步骤e)中在微控制器上执行。这些实施例可以具有改变的总处理时间。
38.该例程可以包括对定义长度的命令的预定义重复次数。可以通过随机数发生器选择暂停的持续时间。暂停的持续时间可以在预定义的最小长度与最大长度之间。暂停的持续时间只有编程设备知道;因此,该实施例允许进一步提高通过检查总处理时间而提高的
安全性。
39.在一些实施例中,(启动加载程序二进制文件中的)该组加密的启动加载程序例程进一步包括读保护例程。除了上述启动加载程序例程之外,该例程在步骤e)中在微控制器上执行。这些实施例可以具有改变的总处理时间。
40.该例程可以例如包括设置确定对存储器的某些区域或微控制器的整个存储器的读保护的寄存器。这可以防止读取例如微控制器的启动代码和/或其他存储器区域。
41.在一些实施例中,该组启动加载程序例程进一步包括用于读取微控制器的序号的例程,并且启动代码进一步包括该序号,具有以下进一步的步骤:
42.f1)还将该序号从微控制器传输到编程设备。这些实施例可以具有改变的总处理时间。
43.例如,这可以保证启动代码仅在该微控制器上执行——或者可能在一系列微控制器上执行。该序号还可以用于启动代码的(例如对于一系列微控制器有用和/或需要的)进一步特定修改。
44.在一个实施例中,启动加载程序二进制文件进一步包括第一公钥。此外,本实施例包括以下步骤:
45.f2)如果该微控制器发送的第一公钥与编程设备发送的第一公钥不同,则终止该方法。
46.步骤f2)在步骤f)以及可能在步骤f1)之后,并且在步骤g)和h)之前执行。本实施例可以具有改变的总处理时间。
47.这种检查进一步提高了检测到操纵的概率。
48.另一方面涉及一种用于以改进的数据安全性将启动代码传输到微控制器的编程设备,该编程设备被设计为
49.创建第一私钥和密码;
50.生成用于在该微控制器上执行的启动加载程序二进制文件,该启动加载程序二进制文件至少包括:
51.‑
引导加载程序,
52.‑
该密码,
53.‑
通过该密码加密的该第一公钥,
54.‑
一组通过该密码加密的、用于在该微控制器上执行的启动加载程序例程,该组加密的启动加载程序例程包括:
55.用于生成第二公钥和第二私钥的生成例程,以及
56.用于解密该第一公钥的解密例程;以及
57.‑
用于在该微控制器上执行的解密例程,其用于解密这些通过该密码加密的启动加载程序例程;
58.估计可容忍的总处理时间;
59.将该启动加载程序二进制文件从该编程设备发送到该微控制器;
60.从该微控制器接收至少一个第二公钥;
61.如果从发送该启动加载程序二进制文件到接收该第二公钥的实际处理时间在该可容忍的总处理时间之外,则终止该方法;以及
62.如果从发送该启动加载程序二进制文件到接收该第二公钥的实际处理时间在该可容忍的总处理时间之内,则通过该第二公钥加密该启动代码并将加密后的启动代码发送到该微控制器。
63.另一方面涉及一种用于以改进的数据安全性从编程设备传输启动代码的微控制器,该微控制器被设计为
64.从该编程设备接收启动加载程序二进制文件,该启动加载程序二进制文件包括至少一个引导加载程序代码、该密码、用于解密通过该密码加密的启动加载程序例程的解密例程、以及一组通过该密码加密的启动加载程序例程;
65.执行引导加载程序代码、解密例程和解密后的启动加载程序例程;
66.至少将该第二公钥发送到该编程设备;以及
67.从该编程设备接收加密后的启动代码。
68.另一方面涉及如上文和/或下文所述的编程设备、如上文和/或下文所述的微控制器、和/或如上文和/或下文所述的用于以改进的数据安全性从编程设备向微控制器传输启动代码的方法的用途。
69.另一方面涉及一种程序元素,当在编程设备上执行时,其指示该编程设备执行如上文和/或下文所述的方法。
70.另一方面涉及一种其上存储有如上所述的程序元素的计算机可读介质。
附图说明
71.为了进一步阐明,将基于附图中所示的实施例来描述本发明。这些实施例旨在仅应被理解为示例而不是限制。
72.图1示意性地示出了根据实施例的消息序列图。
具体实施方式
73.图1示出了消息序列图(msc)100,其示意性地概述了用于以改进的数据安全性从编程设备10向微控制器20传输启动代码的方法的实施例。编程设备10是至少适合于向微控制器传输软件、固件和/或其他文件的计算机。此外,编程设备10适合于执行基于随机数生成的例程。微控制器20是被设计为或适合于执行预定义控制任务的计算机。为此,微控制器20需要基本软件或固件(即所谓的启动代码)才能执行其功能。如果微控制器20上还没有任何可执行软件或固件,则微控制器20需要基本软件或固件,即所谓的启动代码。
74.在步骤101中,编程设备10创建第一公钥、第一私钥和密码。在步骤102中,编程设备10生成适合在微控制器20上执行的启动加载程序二进制文件。启动加载程序二进制文件至少包括用于在微控制器20上执行的引导加载程序、密码、通过该密码加密的第一公钥、一组通过该密码加密的、适合在微控制器20上执行的启动加载程序例程,以及适合在微控制器上执行、用于解密这些通过该密码加密的启动加载程序例程的解密例程。该组加密的启动加载程序例程包括至少一个用于生成第二公钥和第二私钥的生成例程,以及
75.用于解密第一公钥的解密例程。此外,该组加密的启动加载程序例程可以可选地例如还包括用于产生预定义持续时间的暂停的例程、读保护例程、用于读取微控制器的序号的例程、和/或适合在微控制器20上执行的进一步例程。该暂停有利地通过执行具有作为
相应微控制器特征的运行时行为的功能来产生。因此,暂停持续时间应理解为微控制器的可识别特征。
76.在步骤103中,编程设备10估计可容忍的总处理时间110,其由随后的步骤104至106的处理时间(由虚线框110标记)组成。该估计可以例如访问先前执行的一系列测量的时间段的统计。在步骤104中,启动加载程序二进制文件从编程设备10传输到微控制器20。该传输可以例如由编程设备10发起和/或执行。
77.在步骤105中,微控制器20执行引导加载程序代码、用于解密这些通过密码加密的启动加载程序例程的解密例程、以及该组通过密码加密的启动加载程序例程的至少一部分。在步骤106中,至少将第二公钥从微控制器20传输到编程设备10。传输可以例如由微控制器20发起和/或执行。
78.在步骤107中,编程设备10检查步骤104到106的实际处理时间。如果步骤104至106的实际处理时间在可容忍的总处理时间之外,则该方法终止(在msc中未示出)。根据启动加载程序例程和/或进一步的合理性检查和/或检查,该方法也可以在其他点终止。
79.如果步骤104至106的实际处理时间在可容忍的总处理时间之内,则通过第二公钥对启动代码进行加密,并且在步骤108中,将加密的启动代码从编程设备10传输到微控制器20。在步骤109中,然后可以在微控制器20上执行启动代码和/或进一步的程序段。
80.附图标记清单
81.10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
编程设备
82.20
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
微控制器
83.100
ꢀꢀꢀꢀꢀꢀꢀꢀ
消息序列图(msc)
84.101

109
ꢀꢀꢀꢀ
步骤
85.110
ꢀꢀꢀꢀꢀꢀꢀꢀ
可容忍的总处理时间
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1