Method of selecting startup programs

The method enables flexible security configuration in microcontrollers by selecting startup programs based on register and signal states, enhancing application development and user memory access in microcontrollers with single security mode implementation.

FR3160026A1Pending Publication Date: 2025-09-12STMICROELECTRONICS INT NV
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
FR2024002333
Authority / Receiving Office
FR · FR
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-03-08
Publication Date
2025-09-12

AI Technical Summary

Technical Problem

Existing microcontroller architectures do not allow for the selection of multiple security levels, necessitating a single high-security mode, which complicates application development and restricts user memory access.

Method used

A method for selecting startup programs based on reading multiple registers and a signal state during microprocessor reset, allowing a single security mode to be implemented, enabling flexible security configuration and user memory access.

Benefits of technology

Facilitates application development without high-security constraints, allowing user memory to be fully utilized and maintaining portability across architectures with varying security options.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Method for selecting boot programs The present description relates to a method for selecting a boot program of a microprocessor (110) of a microcontroller (100), from among several boot programs (ST_iNoIsolation, STiRoT, RSS) contained in one or more memories (104, 112, 120) of the microcontroller, in which several registers (TZEN, PRODUCT_STATE) of the microcontroller are read first during a reset of said microprocessor and this reading conditions, with a state of at least one signal present on a boot terminal (BOOT_PIN) of the microcontroller, the selection of the boot program. Figure for the abstract: Fig. 2
Need to check novelty before this filing date? Find Prior Art

Description

Title of the invention: Method for selecting startup programs Technical field

[0001] The present description relates generally to methods for selecting startup programs in microcontroller microprocessors, as well as microcontrollers implementing such methods. Prior art

[0002] Many electronic circuits such as microcontrollers including systems on chip (SOC) include an architecture which allows the level of security of the resources and memories which are used by the applications implemented in these circuits to be chosen.

[0003] However, some architectures do not allow, as a rule, to choose between several levels of security. Summary of the invention

[0004] There is a need to provide methods for making it possible to choose to implement several levels of security in a circuit having an architecture that does not, as a rule, allow a choice between several levels of security.

[0005] One embodiment overcomes all or part of the drawbacks of the known methods.

[0006] One embodiment provides a method of selecting a program of starting a microprocessor of a microcontroller, from among several starting programs contained in one or more memories of the microcontroller, in which several registers of the microcontroller are read first during a reset of said microprocessor and this reading conditions, with a state of at least one signal present on a starting terminal of the microcontroller, the selection of the starting program.

[0007] According to one embodiment, a first startup program of a system memory of the microcontroller is configured to, when selected, implement a configuration of the microprocessor so that it is in a single security mode.

[0008] According to one embodiment, said single security mode is a first security mode where, when an unsecured transaction requires access to a secure resource of the microprocessor, an error is returned.

[0009] According to one embodiment, in the first security mode, when a secure transaction requires access to a non-secure resource of the microprocessor, then an error is returned.

[0010] According to one embodiment, the first startup program is configured to modify a value of a security register representative of the size of a prohibited access region of the system memory containing the first startup program, so that at least said first startup program is not accessible.

[0011] According to one embodiment, said value of the security register can only be incremented.

[0012] According to one embodiment, the modification of said value of the security register consists of an increase greater than one bit.

[0013] According to one embodiment, at least one application is executable from a user memory of the microcontroller, different from the system memory and configured with the first security mode, after the selection of the first startup program.

[0014] According to one embodiment, the system memory is a read-only memory or a memory configured to operate as a read-only memory.

[0015] According to one embodiment, upon initialization of the system, if: - a first option register has a first value; - a second option register has a second or a third value; and - the signal present on said start terminal is in a first state; then the first boot program is selected from system memory.

[0016] According to one embodiment, upon initialization of the system, if: -the first option register has the first value; - the second option register has the second value; and - the signal present on said starting terminal is in a second state; then a second boot program is selected from system memory.

[0017] According to one embodiment, upon initialization of the system, if: -the first option register has the first value; and - the second option register has one of a fourth, fifth, and sixth value; and - the signal present on said start terminal is in the first or second state; then the first start program is selected in the system memory.

[0018] According to one embodiment, upon initialization of the system, if: -the first option register has the seventh value; - the second option register has the second value; and - the signal present on said starting terminal is in the first state; then a third boot program is selected in a user memory different from the system memory.

[0019] According to one embodiment, upon initialization of the system, if: -the first option register has a seventh value; - the second option register has the second or third value; and - the signal present on said start terminal is in a second state; then a start program, different from the first program, is selected in the system memory.

[0020] One embodiment provides a microcontroller, comprising a microprocessor, a system memory and a user memory, and configured to implement the method as described above. Brief description of the drawings

[0021] These characteristics and advantages, as well as others, will be explained in detail in the following description of particular embodiments given without limitation in relation to the attached figures among which:

[0022] [Fig.l] represents, very schematically and in the form of blocks, an example of an integrated circuit of the type to which the described embodiments apply;

[0023] [Fig.2] illustrates an embodiment of a method for selecting startup programs for the circuit of [Fig.l]; and

[0024] [Fig.3] illustrates another mode of implementation of a method for selecting startup programs of the circuit of [Fig.l]. Description of the embodiments

[0025] The same elements have been designated by the same references in the different figures. In particular, the structural and / or functional elements common to the different embodiments may have the same references and may have identical structural, dimensional and material properties.

[0026] For the sake of clarity, only the steps and elements useful for understanding the described embodiments have been shown and are detailed.

[0027] Unless otherwise specified, when referring to two elements connected to each other, this means directly connected without intermediate elements other than conductors, and when referring to two elements connected (in English "coupled") to each other, this means that these two elements can be connected or be connected by means of one or more other elements.

[0028] In the following description, when reference is made to absolute position qualifiers, such as the terms "front", "back", "top", "bottom", "left", "right", etc., or relative position qualifiers, such as the terms "above", "below", "upper", "lower", etc., or to orientation qualifiers, such as the terms "horizontal", "vertical", etc., reference is made unless otherwise specified to the orientation of the figures.

[0029] Unless otherwise specified, the expressions "about", "approximately", "substantially", and "of the order of" mean to within 10% or 10°, preferably to within 5% or 5°.

[0030] [Fig.l] represents, very schematically and in the form of blocks, an example of an electronic circuit 100 of the type to which the described embodiments apply.

[0031] The circuit 100 comprises a non-volatile memory 104 (FLASH MEMORY), for example of the FLASH memory type, capable of communicating, via a communication bus 114, with a non-volatile memory interface 106 (FLASH INTERFACE) configured to write or read data in and from the non-volatile memory 104. In one example, system programs and / or applications, such as startup programs, are implemented in the memory 104.

[0032] The circuit 100 further comprises, for example, a processing unit 110 (CPU) comprising one or more processors under control of instructions stored in a system instruction memory 112 (INSTR MEM). The instruction memory 112 is, for example, a volatile memory of the random access type (Random Access Memory, RAM). The processing unit 110 and the memory 112 communicate, for example, via a system bus 140 (data, address and control). The FLASH memory 104 is connected to the system bus 140 via the non-volatile memory interface 106 and via the bus 114. The device 100 further comprises an input / output interface 108 (FO interface) connected to the system bus 140 to communicate with the outside.

[0033] The circuit 100 further comprises, for example, another memory 120 (USER MEM) of non-volatile type or RAM type. This memory 120 is connected to the system bus 140 directly or via a memory interface (not shown) whose role is, for example, similar to the interface 106.

[0034] The device 100 may integrate other circuits implementing other functions (for example, one or more volatile and / or non-volatile memories, other processing units), symbolized by a block 116 (FCT) in [Fig.l]. Among these other circuits, the circuit 100 comprises for example a read-only or static memory 118 (ROM).

[0035] One or more startup programs of the circuit are for example transferred directly to the memory 104 during factory programming processes. The startup program(s) must not be modified once transferred to flash memory 104, except by resetting the circuit 100. To do this, provision is made to lock access to the area of ​​the flash memory containing the startup program so that it is impossible to access it without restarting. This is done for example by implementing a register (HDPL), for example monotonically increasing, the value of which is representative of the size of a prohibited access region of the memory containing the startup program(s), so that the startup program(s) is not accessible. For example, when the value of the HDPL register is 1, the boot program located in a region of memory associated with the value 1 can be executed. After execution, the HDPL value is incremented to 2, which prohibits access to the boot program located in the region of memory associated with the value 2. If a second boot program has been loaded into memory in sectors between HDPL 1 and HDPL2, then it can be executed and then the HDPL value is incremented to 3, which prohibits access to both boot programs located in the regions of memory associated with the values ​​1 and 2. Applications are then, for example, implemented in the memory without having the same level of access restriction.

[0036] In certain architectures, such as for example those of the ARM® v8.0-M or ARM® CORTEX® M33 type, by selecting an option during development, for example by changing the value of a user option byte, the resources or memories of the circuit but also certain programs can be partitioned with different security levels. This mechanism is called in these examples "Trustzone". A first security level (secure in English) is for example implemented by establishing that, when a non-secure transaction requires access to a secure resource of the microprocessor, then an error is returned for example on the bus 140 and when a secure transaction requires access to a non-secure resource of the microprocessor, then an error is also returned.The rest of the circuit and / or programs is then, for example, implemented with less strict security principles where, for example, programs having a security level lower than the first level can only access the non-secure resources and memories of the circuit 100.

[0037] In some architectures, such as those of the ARM® CORTEX® M85 or ARMV8.1-M type, there are no options to choose whether or not to partition the resources, memories and programs of the circuit with different security levels. In these architectures, only the high security level is made available. In other words, in these architectures, the "Trustzone" mechanism cannot be natively deactivated. There is therefore a basic isolation (called for example TZIsolation) between resources, memories or programs having the first security level and a less secure mode. This can pose problems for easily developing applications that do not require implementing security isolation, such as the "Trustzone" mechanism, or that simply do not even need to be secured.

[0038] The embodiments described provide for implementing a method for selecting a startup program for a microprocessor of a microcontroller, from among several startup programs contained in one or more memories. of the microcontroller, in which several registers of the microcontroller are read first during a reset of said microprocessor and this reading conditions, with a state of at least one signal present on a start terminal of the microcontroller, the selection of the start program.

[0039] This makes it possible to avoid, for example, the systematic implementation of a system for partitioning resources, memories or programs between several security levels. It is thus possible to obtain a single security level or to generate a single security level for all the resources, memories and programs used.

[0040] This also makes it possible to obtain a software solution that facilitates the development of applications that do not require a high level of security. Such a mode is, for example, known as "legacy".

[0041] This also allows a startup program, which avoids the systematic implementation of a resource partitioning system, to be integrated as native code by the manufacturer directly into a system memory that contains all the manufacturer's programs. An advantage resulting from this is that a user memory, different from the system memory, can thus be completely freed.

[0042] Furthermore, this ensures the portability of programs previously developed on architectures which still allowed the activation of a partition of resources, memories or programs between several security levels to be chosen by changing user option bytes.

[0043] [Fig. 2] illustrates an embodiment of a method for selecting startup programs of the microcontroller of [Fig. 1]. More particularly, the example shown illustrates a method for selecting startup programs of the processing unit 110, in other words of a microprocessor, of the microcontroller 100. These startup programs are present either in a user memory, for example the memory 120, or in a so-called system memory such as the memory 104 or 112.

[0044] In a step 202 (START RESET), the microprocessor 110 is reset, for example with an interruption of the power supply or by the implementation of specific commands.

[0045] In a subsequent step 204 (CHECK TZEN, PRODUCT_STATE REGISTERS, AND BOOT_PIN VALUES), several TZEN, PRODUCT_STATE registers of the microcontroller 100, as well as a state of at least one signal present on a boot terminal (BOOT_PIN) of the microcontroller 100, are read first. The values ​​of the TZEN or PRODUCT_STATE registers are called user option bytes.

[0046] The TZEN register corresponds for example to a register present in old architectures, for example of the ARM® v8.0-M or ARM® CORTEX® M33 type. In these old architectures, they made it possible to choose to implement a partitioning of the microprocessor resources, for example if TZEN=1, or on the contrary not to implement partitioning, for example in the case where TZEN=0. In the new architectures, natively, such a register is no longer taken into account and a partitioning is implemented as standard. Here, the value of this register is read, even if it does not, as such, make it possible to deactivate the basic partitioning of the microprocessor 110.

[0047] The value of the PRODUCT_STATE register corresponds to a state of the life cycle of the microcontroller 100. The PRODUCT_STATE register can have several values. At the time of manufacturing, the state is recorded as “OPEN”, then “PROVISIONNING”, then “PROVISIONNEE”, then “TZ-CLOSED” then “CLOSED” or “LOCKED”. These different states of the PRODUCT_STATE register can be used to allow different subcontractors to intervene during the manufacturing of the microcontroller 100.

[0048] The "OPEN" state corresponds to the factory default state of the microcontroller. It allows the configuration of the startup program, the implementation of protection with a security register (HDPL) whose value is representative of the size of a prohibited access region of the system memory. In this state, debugging is open without limits.

[0049] The “PROVIONNING” state corresponds to a state of the microcontroller in which debugging is only open for applications whose security register value (HDPL) is greater than a given number, for example 3. In this state, encryption is performed on the data areas containing security keys.

[0050] The “PROVISIONNED” state, also called “iROT-PROVISIONNED”, corresponds to a state subsequent to the “PROVIONNING” state. In this state, certain programs used at startup as well as data are no longer accessible. From this state, higher levels can be updated.

[0051] The “TZ-CLOSED” state corresponds to a state where the programs that use the resources dedicated to the “secure” security mode of the “Trustzone” architecture have been installed. In this state, the applications dedicated to the other “non-secure” security mode can be developed or loaded.

[0052] The "CLOSED" then "LOCKED" state corresponds to the final stage of the product. In the "CLOSED" state, all debugging accesses are closed and can only be accessed by strong authentication. With this strong authentication, however, regression is possible. In the "LOCKED" state, all debugging accesses are closed, even with strong authentication.

[0053] The state of the signal(s) present on one or more BOOT_PIN start terminals of the microcontroller 100 corresponds for example to a high (1) or low (0) state. The user can choose to apply for example a voltage VDD for the high state or ground for the low state on this terminal.

[0054] Reading the TZEN and PRODUCT_STATE registers, as well as reading the state on the BOOT_PIN start terminal of the microcontroller 100, is performed first after the reset.

[0055] In a step 206 (SELECT BOOT PROGRAM), subsequent to step 204, the values ​​read from the TZEN and PRODUCT_STATE registers, and from the state on the BOOT_PIN boot terminal of the microcontroller 100, condition the selection of the boot program.

[0056] The selection operation consists of implementing the startup program which is stored in one or more memory areas each delimited for example by two or more memory addresses.

[0057] The selection can be made in a system memory such as memories 104, 112 for a more secure application, but also from a user memory, for example memory 120. In one example, the system memory 104, 112 cannot be written or read by the user who only has access to the user memory 120.

[0058] Thus the user, who is for example a subcontractor or a professional user integrating the microcontroller into these products, can implement his application in the desired level of security, during a customization phase of the microcontroller, from the user memory 120.

[0059] Table 1 below corresponds for example to a data bank which serves as a reference for the selection of the boot program (BOOT_SELEC), or equivalently to the memory area corresponding to this program, according to the values ​​read from the TZEN and PRODUCT_STATE registers, and the state on the BOOT_PIN boot terminal, but also optionally from a register called BOOT_UBE.

[0060] [Tables 1] TZEN PRODUCT_STATE BOOT_PIN BOOTJJBE BOOT_SELEC 0 OPEN 0 N / A ST-iNoIsolation 0 1 N / A Bootloader 0 PROVISIONING N / AN / A ST-iNoIsolation 0 PROVISIONED, CLO SED, LOCKED N / AN / A ST-iNoIsolation 1 OPEN 0 N / A User mem 1 OPEN 1 0xB4 Bootloader 1 OPEN 1 0xC3 STiROT 1 PROVISIONING N / AN / A RSS 1 PROVISIONED, TZ-CLOSED, CLOSED, LOCKED N / A 0xC3 STiROT 1 N / A 0xB4 User mem

[0061] In TABLE 1, the value N / A means that the result of the selection does not depend on the value in the corresponding box having N / A.

[0062] The ST-iNoIsolation, Bootloader, STiROT, and RSS programs are for example stored in different system memory areas 104, 112. These programs are for example protected by monotonically increasing values ​​of the HDPL security register.

[0063] In view of Table 1, it is possible that a boot program is selected in a user memory 120 (User mem), for example when TZEN=1, PRODUCT_STATE=0 and the state BOOT_PIN=0.

[0064] According to Table 1, when the option register TZEN has a value of 0, when the register PRODUCT_STATE has the value OPEN or PROVISIONING and the signal present on the start terminal BOOT_PIN is at 0, then the address area ST_iNoIsolation, or equivalently the start program ST_iNoIsolation present in this address area, is selected in the system memory.

[0065] When the TZEN option register has a value of 0, and the PRODUCT_STATE register has the value PROVISIONING, then the ST_iNoIsolation boot program is selected from system memory regardless of the state on the BOOT_PIN terminal.

[0066] The same applies when TZEN has the value 0, and the second option register PRODUCT_STATE has a value among the values ​​PROVISIONED, CLOSED or LOCKED; and this, whatever the state of the signal present on the BOOT_PIN start terminal.

[0067] The ST_iNoIsolation boot program is configured to, when selected, configure the microprocessor 110 to be in a single secure or non-secure security mode depending on the value of TZEN. By selecting the ST_iNoIsolation boot program stored in the system memory 104, 112, it becomes possible to initialize applications in the user memory 120 with the same security mode. The ST_iNoIsolation boot program is further configured to initialize the entire memory seen by the application (non-volatile and volatile memories) in the same security mode, for example secure. In other words, the ST-iNoIsolation program emulates the chosen security mode. The applications implemented, for example by a customer or a subcontractor, in the user memory 120, will be in the security mode chosen with TZEN.

[0068] Optionally, the ST_iNoIsolation program is configured to change the HDPL value from HDPL1 to HDPL3 to prevent functions of the secure boot program(s) from being implemented in system memory 104,112 once executed.

[0069] Optionally, the ST_iNoIsolation program is configured to allow debugging for memory areas with a value of HDPL3 only. In addition, it can be configured to implement an authentication method for accessing debugging that is a password level and not a certificate.

[0070] After the ST_iNoIsolation program has been selected, the microprocessor 110 implements an application, in the user memory 120, with the security mode provided by the TZEN register.

[0071] [Fig.3] illustrates another mode of implementation of a selection method of startup programs of the circuit of [Fig.l]. More particularly, the illustrated example describes the user memory 120, and the system memory 104,112.

[0072] In the example shown, the system memory 104,112 is for example configured to emulate a read-only memory (ROM).

[0073] In the example shown, the system memory 104, 112 comprises programs 316 (RSS), 314 (STiROT) which are, for example, successive startup programs previously loaded and, for example, protected by zones using increasing HDPL values.

[0074] In [Fig.3], the system memory 104,112 further comprises the program 312 (DebugAuthent) which is placed for example between a memory address dedicated to the program 314 (STiROT) and a memory address dedicated to the program 310 (ST-iNoIsolation). The program 312 is for example called when authentication for debugging is planned. The system memory 104,112 also comprises the program 306 (Bootloader) placed after an end memory address of the program 310 (ST-iNoIsolation). In one example, this memory area where the ST-iNoIsolation boot program is stored cannot be modified once loaded (immutable in English).

[0075] When the microprocessor 110 is reset, the TZEN and PRODUCT_STATE registers are read, as well as the state of the signal on the BOOT_PIN terminal. If these values ​​correspond, using table TABLE 1, to the ST-iNoIsolation program - or equivalently to the memory area corresponding to the ST-iNoIsolation program - then the microprocessor will start by executing the ST-iNoIsolation program that will configure the microprocessor, and possibly the entire microcontroller 100, to be in a single secure or non-secure security mode as defined by the value of the TZEN register. The microprocessor 110 will then execute the application 308 (Appli Nolsolation), from the user memory 120 (User memory). The entire memory 120 is thus available to the user, who is for example a subcontractor.

[0076] The fact that the microprocessor 110 could not itself natively enter the input to choose the security mode thus becomes transparent to the user since the choice is reintroduced through the use of the TZEN register associated with the ST-iNoIsolation program.

[0077] Various embodiments and variants have been described. Those skilled in the art will understand that certain features of these various embodiments and variants could be combined, and other variants will occur to those skilled in the art. In particular, the choice of the boot program may be made by also taking into account the value of the BOOT_UBE register as shown in table TABLE 1.

[0078] Finally, the practical implementation of the embodiments and variants described is within the reach of the person skilled in the art from the functional indications given above. In particular, with regard to the values ​​of table TABLE 1, the person skilled in the art will be able to modify its values ​​as he wishes while nevertheless trying to maintain transparency of use on the TZEN register compared to previous uses.

Claims

Claims

1. Method for selecting a startup program of a microprocessor (110) of a microcontroller (100), from among several startup programs (ST_iNoIsolation, STiRoT, RSS) contained in one or more memories (104, 112, 120) of the microcontroller, in which several registers (TZEN, PRODUCT_STATE) of the microcontroller are read first during a reset of said microprocessor and this reading conditions, with a state of at least one signal present on a startup terminal (BOOT_PIN) of the microcontroller, the selection of the startup program.

2. The method of claim 1, wherein a first boot program (ST_iNoIsolation) of a system memory of the microcontroller is configured to, when selected, implement a configuration of the microprocessor to be in a single secure mode (secure, non-secure).

3. The method of claim 2, wherein said single security mode is a first security mode (secure) where, when a non-secure transaction (non-secure) requires access to a secure resource of the microprocessor, an error is returned.

4. The method of claim 3, wherein, in the first security mode, when a secure transaction requires access to an unsecured resource of the microprocessor, then an error is returned.

5. Method according to any one of claims 2 to 4, in which the first boot program (ST_iNoIsolation) is configured to modify a value of a security register (HDPL) representative of the size of a prohibited access region of the system memory (104, 112) containing the first boot program (ST_iNoIsolation), so that at least said first boot program (ST_iNoIsolation) is not accessible.

6. Method according to claim 5, wherein said value of the security register (HDPL) can only be incremented.

7. Method according to claim 6, wherein the modification of said value of the security register (HDPL) consists of an increase greater than one bit (HDPL1 to HDPL3).

8. Method according to any one of claims 2 to 7, in which at least one application (Appli Nolsolation) is executable from a user memory (120) of the microcontroller, different from the system memory and configured with the first security mode, after the selection of the first boot program (ST_iNoIsolation).

9. The method of any one of claims 2 to 8, wherein the system memory is a read-only memory or a memory configured to operate as a read-only memory.

10. Method according to any one of claims 2 to 9, wherein, at initialization of the system, if: - a first option register (TZEN) has a first value (TZEN=0); - a second option register (PRODUCT_STATE) has a second or a third value (OPEN, PROVISIONING); and - the signal present on said boot terminal (boot pin) is at a first state (0); then the first boot program (ST_iNoIsolation) is selected in the system memory (104,112).

11. Method according to claim 10, wherein, at initialization of the system, if: - the first option register (TZEN) has the first value (TZEN=0); - the second option register (PRODUCT_STATE) has the second value (Open); and - the signal present on said boot pin is at a second state (1); then a second boot program (Bootloader) is selected in the system memory.

12. Method according to claim 10 or 11, wherein, at initialization of the system, if: - the first option register (TZEN) has the first value (TZEN=0); and - the second option register (PRODUCT_STATE) has one of a fourth, a fifth and a sixth value (PROVISIONED, CLOSED, LOCKED); and - the signal present on said boot terminal (BOOT_PIN) is in the first or second state (0,1); then the first boot program (ST_iNoIsolation) is selected from the system memory.

13. Method according to any one of claims 10 to 12, wherein, at initialization of the system, if: - the first option register (TZEN) has a seventh value (TZEN=1); - the second option register (PRODUCT_STATE) has the second value (OPEN); and - the signal present on said boot terminal (BOOT_PIN) is in the first state (0); then a third boot program (User mem) is selected in a user memory (120) different from the system memory.

14. Method according to claim 13, wherein, at initialization of the system, if: - the first option register (TZEN) has the seventh value (TZEN=1); - the second option register (PRODUCT_STATE) has the second or third value (OPEN, PROVISIONING); and - the signal present on said boot terminal (BOOT_PIN) is at a second state (1); then a boot program (STiROT,Bootloader,RSS), different from the first program, is selected in the system memory (104,112).

15. A microcontroller, comprising a microprocessor (110), a system memory (104,112) and a user memory (120), and configured to implement the method according to any one of the preceding claims.