Abstract:
A method for protecting a computing apparatus against manipulation, which computing apparatus includes a plurality of components, which are designed to execute software and which have associated access rights is provided. The method includes the following steps: withdrawing a number of the access rights to the components during a starting process of the computing apparatus and specifying a subset of the access rights to the components on the basis of the withdrawn access rights, which subset cannot be changed during the execution of the software. By withdrawing access rights, the integrity protection is improved for the computing apparatus, because, in the event of a successful attack, the manipulations that can be performed by the manipulated software are limited. The disclosed further relates to a computer program product and to a device for protecting a computing apparatus against manipulation.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims priority to PCT Application No. PCT/EP2015/053044, having a filing date of Feb. 13, 2015, based off of German application No. DE 102014206006.0 having a filing date of Mar. 31, 2014, the entire contents of which are hereby incorporated by reference. 
     
    
     FIELD OF TECHNOLOGY 
       [0002]    The following relates to a method for protecting a computing apparatus against manipulation. In addition, the following relates to a computer program product and a device for protecting a computing apparatus against manipulation. 
       BACKGROUND 
       [0003]    The integrity of computing apparatuses such as industrial control systems is an essential objective for ensuring their correct functionality. During the operation of networked control systems, manipulation of the control system may occur via the data connection, for example, the Ethernet. To carry out such impermissible manipulations, for example, an attacker may take advantage of security vulnerabilities in the implementation. 
         [0004]    Therefore, there is a need to limit the manipulation which is able to be carried out via the malicious software or manipulated software, even in the event of a successful attack against the executed software of a control system or control device. 
         [0005]    For protecting against attacks, conventional protective measures are implemented, such as installing patches to close gaps, virus scanners, or application whitelisting. Nevertheless, it is not generally completely possible to rule out the occurrence of successful attacks. 
         [0006]    From the document WO 2012/119218 A, it is known to use a Linux kernel module for monitoring integrity. In addition, so-called trusted platform modules (TPMs) are known, which enable access to a cryptographic key only if a platform configuration register (PCR) of the TPM contains a predefined value. The value of the PCR is reset via a reset signal. 
         [0007]    During operation as well as during the startup of the software, a measured value may be supplemented, for example, a hash value of a software module. The new PCR value is obtained as a hash value of the current PCR value and the provided measured value. As a result, a call of such a function is enabled only if a certain software configuration exists (as a consequence of the measured value for updating the PCR), from which the expected PCR value is obtained. It is thus possible to verify the integrity of the boot process, since the identical sequence of PCR measured values exists only in the case of a non-manipulated boot process. 
         [0008]    However, this requires a complex cryptographic calculation. In addition, limitation of the different PCR values only affects a function of the TPM itself. However, a function of the main processor unit (main CPU) or the operating system executed on it is not limited by this. 
         [0009]    Furthermore, rights administration is generally known on IT systems, in which users (human users or system users) are able to call a function only if an authorization (access right) exists. On conventional systems, a primary user (root, administrator) is provided, which has any, i.e., all, rights. This may be implemented in such a way that the system does not perform an authorization check for such a primary user. Furthermore, so-called mandatory access control systems are known, in which authorizations are fixedly determined via attributes or features of the users and the accessed object, for example, as a function of a predetermined security step. However, such systems are very complex to administer. Furthermore, the additional checks disadvantageously result in delays. 
         [0010]    Furthermore, generally, an access control which is a function of a state is known (state-based access control). In this case, the current system state determines whether access is permissible or impermissible. Furthermore, with respect to functional safety-critical systems, sealing configuration settings is known. In this case, a human user is able to seal a safety configuration specified by him/her via a service interface. A sealed safety configuration cannot be modified via the service interface, only completely deleted. 
       SUMMARY 
       [0011]    An apsect relates to improving the protection of a computing apparatus against manipulation. 
         [0012]    Accordingly, a method for protecting a computing apparatus against manipulation is provided, which includes a plurality N, where N≧2, of components configured for executing software and having associated access rights. The method includes the steps of: revoking a number M, where 1≦M&lt;N, of the access rights to the components during a start process of the computing apparatus, and determining a subset X, which is invariable during the execution of the software, where X=N−M, of the access rights to the components, based on the revoked access rights. 
         [0013]    An access right associated with a component specifies the authorization or permission to access the access the component. However, if the access right associated with the component is absent, it is not possible to access the component. In particular, the access rights, i.e., the authorizations, which components associated with these access rights access, determine the configuration setting of the computing apparatus. 
         [0014]    During the start process of the computing unit, a number M of the access rights are thus revoked, and the subset X (X=N−M) of the access rights to the components during the execution of the software is thus established. Sealing of the configuration setting thus takes place during the start process. Subsequently, the configuration setting may no longer be modified by the executed software until the next system startup or reset. 
         [0015]    As a result, the integrity protection is improved for the computing apparatus, since the manipulations which are able to be carried out by the manipulated software are limited even in the event of a successful attack. 
         [0016]    The following example, in which a control device (embedded system) executes control software on a microcontroller (CPU) as a computing apparatus, is intended to illustrate embodiments of the present invention. During the start process (boot process), extensive authorizations (access rights) are required by the executed software in order to configure components, for example, hardware assemblies, or in order to start and configure software components. These functions may be implemented by so-called start scripts which are executed as an administrator user or root user (i.e., as a user having all authorizations). 
         [0017]    By means of the provided method for protecting against manipulation, the root user himself/herself revokes access rights (authorizations) for additional configurations after completion of the configuration. Changes to the configuration may no longer be made even by a root user; this is again possible only at the next system startup or reboot. 
         [0018]    Therefore, a configuration setting, for example, the call of a function or an API (application programming interface) of a microcontroller-based control device, may be carried out after a system start (reboot) by software executed on the microcontroller only until sealing of the configuration setting takes place. In particular, during the boot process, a configuration of operating system kernels may take place. After sealing has taken place, modification under software control is not possible even by the root user. Modification is again possible only after a new restart. 
         [0019]    In this context, manipulation may be understood to mean any unauthorized external intervention into the software of the computing apparatus which leads to undesirable changes in the software or data connected with it. Manipulation of the software may thus also lead to undesirable changes in the components (execution environment) of the computing apparatus, or to manipulation of the computing apparatus. 
         [0020]    As a result, in particular, write access may also be prevented via the revocation of certain access rights to certain configuration memories, such as EEPROM memories or flash memories, so that overwriting these memories is prevented during operation. 
         [0021]    According to one specific embodiment, the plurality of access rights is mapped via flags which may be stored in a memory device of the computing apparatus. 
         [0022]    As a result, the revocation of the access rights and the administration of the invariable subset of the access rights may be administered via these flags. In another variant, these flags may also be implemented in hardware. 
         [0023]    According to another specific embodiment, the computing apparatus is operated in a first operating mode, in which the plurality of access rights to the components exists (is set), and in a second operating mode following the first operating mode, in which only the ascertained subset of the access rights to the components exists. 
         [0024]    According to another specific embodiment, the first operating mode is designed as a boot process of the software on the computing apparatus. 
         [0025]    According to another specific embodiment, the second operating mode is designed as a normal operation of the computing apparatus with booted software. 
         [0026]    The normal operation may also be referred to as regular operation. 
         [0027]    According to another specific embodiment, the first operating mode and the second operating mode are differentiated via a single flag. 
         [0028]    For example, a set flag may indicate the first operating mode, whereas a flag which is not set may indicate the second operating mode. 
         [0029]    According to another specific embodiment, for storing the flag, a memory unit is used which is modifiable only in a single direction during the execution of the software via a command generated by means of software. 
         [0030]    In this specific embodiment, the flag may be set via a software instruction, but may be reset only via a hardware reset. This increases the security and the integrity protection of the computing apparatus. 
         [0031]    In this case, a digital flip-flop is preferably used as the memory unit for storing this single flag. 
         [0032]    The digital flip-flop constitutes a particularly simple and economical option for implementing this memory unit. 
         [0033]    According to another specific embodiment, the ascertained subset of the access rights is stored as a list or as a matrix in a memory device of the computing apparatus. 
         [0034]    This list may, for example, constitute a whitelist of approved program files or configuration files. This whitelist may be configured and then sealed in the operating system kernel. Subsequently, modification of the whitelist is no longer possible during operation, even by a user having root rights or administrator rights. After sealing is completed, the boot process is continued or application programs are started. 
         [0035]    According to another specific embodiment, the number of access rights to the components is revoked during the start process of the computing apparatus in the case of the occurrence of a predetermined event. 
         [0036]    According to another specific embodiment, the number of access rights to the components is revoked during the start process of the computing apparatus if a timer expires. 
         [0037]    According to another specific embodiment, the number of access rights to the components is revoked during the start process of the computing apparatus if a predetermined event occurs or if a certain timer expires. 
         [0038]    According to another specific embodiment, the components configured for the execution of the software include at least one hardware component, in particular a network interface, an input/output unit, a watchdog, a memory, a sensor, an actuator or a processor, and/or a software component, in particular a file or a process. 
         [0039]    According to another specific embodiment, the computing apparatus is a control device, a personal computer, an embedded device, a server, or a control computer. 
         [0040]    According to another specific embodiment, the software is an operating system, an operating kernel, a kernel module, a driver, a user-space program, or a loading routine. 
         [0041]    According to another specific embodiment, the following steps are provided: generating a piece of reference information, which is invariable during the execution of the software, for an integrity check of the computing apparatus during the start of the computing apparatus, according to which the subset of the access rights to the components is determined, and carrying out the integrity check by means of the generated piece of reference information. 
         [0042]    Furthermore, a computer program product is provided, which initiates the execution of the method as described above on a program-controlled apparatus. 
         [0043]    A computer program product, for example, a computer program means, may, for example, be provided or supplied as a storage medium, for example, a memory card, USB stick, CD-ROM, DVD, or also in the form of a downloadable file from a server in a network. This may, for example, take place in a wireless communication network via the transmission of a corresponding file via the computer program product or the computer program means. 
         [0044]    According to another aspect, a device for protecting a computing apparatus against manipulation is provided, which includes a plurality of components configured for executing software and having associated access rights. The device includes a first unit and a second unit. The first unit is configured to revoke (block) a number of the access rights to the components during a start process of the computing apparatus. The second unit is configured to determine a subset of the access rights to the components, which is invariable during the execution of the software, based on the revoked access rights. 
         [0045]    Each unit, for example, the first or second unit, may be implemented through hardware and/or also through software. In the case of an implementation through hardware, each unit may be designed as a device or as part of a device, for example, as a computer or as a microprocessor. In the case of an implementation through software, each unit may be designed as a computer program product, as a function, as a routine, as part of a program code, or as an executable object. 
         [0046]    The specific embodiments and features described for the provided method are correspondingly valid for the provided device. 
         [0047]    According to another aspect, a computing apparatus is provided which includes a plurality of components configured for executing software and having associated access rights, and a device as described above for protecting against manipulation of the computing apparatus. 
         [0048]    Additional possible implementations of embodiments of the present invention also include combinations, which are not explicitly mentioned, of features or specific embodiments described previously or below with respect to the exemplary embodiments. Those skilled in the art will also add individual aspects or improvements or enhancements to each basic form of embodiments of the present invention. 
     
    
     
       BRIEF DESCRIPTION 
         [0049]    Some of the embodiments will be described in detail, with reference to the following figures, wherein like designations denote like members, wherein: 
           [0050]      FIG. 1  shows a schematic flow chart of a first exemplary embodiment of a method for protecting a computing apparatus against manipulation; 
           [0051]      FIG. 2  shows a schematic flow chart of a second exemplary embodiment of a method for protecting a computing apparatus against manipulation; 
           [0052]      FIG. 3  shows a schematic block diagram of an exemplary embodiment of a device for protecting a computing apparatus against manipulation; 
           [0053]      FIG. 4  shows a schematic block diagram of an exemplary embodiment of a computing apparatus; 
           [0054]      FIG. 5  shows a schematic flow chart of a third exemplary embodiment of a method for protecting a computing apparatus against manipulation; 
           [0055]      FIG. 6  shows a schematic flow chart of a fourth exemplary embodiment of a method for protecting a computing apparatus against manipulation; and 
           [0056]      FIG. 7  shows a schematic flow chart of a fifth exemplary embodiment of a method for protecting a computing apparatus against manipulation. 
       
    
    
     DETAILED DESCRIPTION 
       [0057]      FIG. 1  depicts a schematic flow chart of a first exemplary embodiment of a method for protecting a computing apparatus against manipulation. 
         [0058]    The computing apparatus includes a plurality of components configured for executing software and having associated access rights. An access right associated with a component specifies the permission to access the component. However, if the access right associated with the component is absent, i.e., the access right is not granted, it is not possible to access the component. 
         [0059]    The access rights may be administered via flags. The flags are, for example, stored in a memory unit of the computing apparatus. The components of the computing apparatus configured for executing the software may include hardware components and/or software components. Examples of hardware components include network interfaces, input/output units, watchdogs, memories, sensors, actuators, or processors. The software components may include files or processes. 
         [0060]    The computing apparatus is, for example, a control device, a control system, an embedded control device, a personal computer, an embedded device, a server, or a control computer. The computing apparatus includes, for example, a microcontroller or a microprocessor. The software is, for example, an operating system, an operating kernel, a kernel module, a driver, a user-space program, or a loading routine. 
         [0061]    The method of  FIG. 1  includes the following steps S 11  and S 12 . 
         [0062]    In step S 11 , a number of the access rights to the components are revoked during a start process of the computing apparatus. If, for example, N refers to the plurality of the access rights and M refers to the number of revoked access rights, 1≦M&lt;N is valid. 
         [0063]    In step S 12 , a subset X of the access rights to the components, which is invariable during the execution of the software, is determined based on the revoked access rights (X=N−M). 
         [0064]    As a result, the computing apparatus is preferably operated in a first operating mode in which the plurality of the access rights to the components exists (is set), and in a second operating mode following the first operating mode in which only the ascertained subset of the access rights to the components exists. The first operating mode is, for example, a boot process of the software, wherein the second operating mode is then a normal operation or regular operation of the computing apparatus. For example, the first operating mode and the second operating mode are differentiated via a single flag. 
         [0065]    In particular, for storing the flag, a memory unit is used which is modifiable only in a single direction during the execution of the software via a command generated by means of software. Thus, this flag may be set via a software instruction, but may be reset only via a hardware reset. An example of such a memory unit is a digital flip-flop. The flag may also be referred to as a sealing flag. 
         [0066]    For example, the ascertained subset of the access rights is administered as a list or as a matrix. The number of access rights to the components is revoked during the start process of the computing apparatus in the case of the occurrence of a predetermined event (event-triggered) and/or if a timer expires (time triggered). As a result, the sealing of the configuration setting may take place via a software instruction (event-triggered) or automatically in a time-controlled manner, for example, after one minute or five minutes. The timer is preferably set during a reset or a system start. After the expiration of a predefinable period of time after a reset or a system restart, sealing thus takes place automatically. In particular, the memory unit may include the timer which automatically sets the flag of the memory unit after the expiration of the predefinable period of time following a hardware reset. 
         [0067]    The time-controlled variant may be designed as a backup variant and has the advantage that sealing automatically takes place independently of the executed software, i.e., even without the executed software explicitly initiating sealing. 
         [0068]      FIG. 2  shows a schematic flow chart of a second exemplary embodiment of a method for protecting a computing apparatus against manipulation. The computing apparatus, the software, and the components may have the characteristics and features as described for  FIG. 1 . 
         [0069]    The method of  FIG. 2  includes the steps S 21  to S 24 . 
         [0070]    In step S 21 , a piece of reference information for an integrity check of the computing apparatus during the start of the computing apparatus is generated and stored. This piece of reference information is to be invariable during the later execution of the integrity check. 
         [0071]    In step S 22 , a number of the access rights to the components are revoked during the start process of the computing apparatus. Thus, sealing takes place. In this case, write access to the piece of reference information stored in step S 21  is specifically blocked. For this purpose, the sealing flag may be set via a software instruction. 
         [0072]    In step S 23 , a subset of the access rights to the components, which is invariable during the execution of the software, is determined based on the revoked access rights. 
         [0073]    In step S 24 , an integrity check is carried out by means of the generated piece of reference information. The steps S 23  and S 24  may also be carried out in the reverse sequence or simultaneously. 
         [0074]      FIG. 3  depicts a schematic block diagram of an exemplary embodiment of a device  10  for protecting a computing apparatus  101  against manipulation. The computing apparatus  101  may include the characteristics and features as described for  FIG. 1 . An example of this computing apparatus  101  is shown in  FIG. 4 . 
         [0075]    The device  10  of  FIG. 3  includes a first unit  11  and a second unit  12 . 
         [0076]    The first unit  11  is configured to revoke a number of the access rights to the components during a start process of the computing apparatus  101 . 
         [0077]    The second unit  12  is configured to determine a subset of the access rights to the components, which is invariable during the execution of the software, based on the access rights revoked by means of the first unit  11 . 
         [0078]      FIG. 4  shows a schematic block diagram of an exemplary embodiment of a computing apparatus  101 . The computing apparatus  101  may be an embedded control device. The control device  101  includes an application area  102  (user mode, applications), an operating system area  103  (kernel mode, operating system), and hardware  104 . 
         [0079]    The application area  102  may contain various applications  105 ,  106 , and  107 . The hardware  104  includes a CPU  108 , various memories  109 ,  110 , for example, a RAM memory  109  and a flash memory  110 , an input/output unit  111 , and a network interface  112  (CNI communication network interface). The CPU  108  includes the device  10  according to  FIG. 3 . S/A modules  301 ,  303  may be coupled via the input/output unit  111 . The network interface  112  is configured to couple the computing apparatus  101  to a network  200 , for example, a LAN (local area network). 
         [0080]    The operating system  103  is executed on the hardware  104 , for example, as embedded Linux. The operating system kernel is executed in kernel mode  103 . The kernel  103  may call any operations, i.e., no access control is provided within the operating system kernel. The applications  105  to  107  are executed as processes via the kernel  103 . A (system) user is associated with a process (for example, as root, user, control). As a function thereof, authorizations (access rights) are associated with a process. A process is only able to call operating system functions if the required authorization exists. The operating system  103  is loaded from a boot loader during the start process. Multiple-stage boot concepts may also be implemented. For example, an initial boot loader may load a second-stage boot loader from the flash memory and execute it. This boot loader loads the operating system image from the flash memory  110  and executes it. This boot loader loads the operating system image from the flash memory  110  into the RAM memory  109  and passes the execution control. The operating system  103  starts at the beginning with the execution of boot scripts. In this case, for example, kernel modules are loaded into the operating system kernel. Hardware  104  is configured. Furthermore, system processes are started. At the end of the boot process, the application programs  105  to  107  are started. 
         [0081]      FIGS. 5 to 7  show three variants of how sealing may be integrated into the boot process. Thus,  FIG. 5  shows the following sequence of method steps S 50  to S 57 :
   S 50 : Reset;   S 51 : First stage of the boot loader;   S 52 : Second stage of the boot loader;   S 53 : OS boot loader;   S 54 : OS kernel;   S 55 : Startup scripts;   S 56 : Sealing the kernel configuration;   S 57 : Starting the application(s)   
 
         [0090]    In addition,  FIG. 6  shows the following sequence of method steps S 60  to S 68 :
   S 60 : Reset;   S 61 : First stage of the boot loader;   S 62 : Second stage of the boot loader;   S 63 : OS boot loader;   S 64 : OS kernel;   S 65 : Startup scripts (first part);   S 66 : Sealing the kernel configuration;   S 67 : Startup scripts (second part);   S 68 : Starting the application(s)   
 
         [0100]    Furthermore,  FIG. 7  shows the following sequence of method steps S 70  to S 79 :
   S 70 : Reset;   S 71 : First stage of the boot loader;   S 72 : Second stage of the boot loader;   S 73 : OS boot loader;   S 74 : OS kernel;   S 75 : Startup scripts (first part);   S 76 : Sealing the kernel configuration;   S 77 : Startup scripts (second part);   S 78 : Sealing reference information for integrity check   S 79 : Starting the application(s)   
 
         [0111]    Sealing may take place, for example, after the completion of the startup scripts (for example, see step S 55 ) or after completion of a first part of the startup scripts (for example, see step S 66 ). It is also possible to provide multiple seals (see steps S 76  and S 78 ), which relate to a different functionality or at least a somewhat different functionality. Thus, for example, a piece of reference information for an integrity check of the computing apparatus may be sealed (see step S 78 ) before the regular operating mode of the control device  101  is started. 
         [0112]    In the figures, identical or functionally identical elements have been provided with the same reference numerals, unless otherwise specified. 
         [0113]    Although the present invention has been described based on exemplary embodiments, it may be modified in manifold ways.