Communication credentials between two operating systems

By generating and using the transmission key between the primary OS and the secondary OS, the problem of the communication credentials being deleted during the initialization process is solved, and secure communication between OSes and secure transmission of credentials is realized.

CN119885214AActive Publication Date: 2025-04-25BLACKBERRY LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
CN202411152830.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-10-25
Filing Date
2024-08-21
Publication Date
2025-04-25
Estimated Expiration
2044-08-21

AI Technical Summary

Technical Problem

Communication credentials between two operating systems (OSs) may be deleted during initialization, resulting in the necessity of running time provisioning operations to ensure secure communication between OSs.

Method used

By generating and using a transport key between the primary and secondary OS, the primary OS sends a random salt to the secondary OS and confirms its reception through the unpacking operation, ensuring secure transmission and storage of the provisioning credentials.

Benefits of technology

The secure transmission and storage of provisioning credentials between two OSes ensures the security of mTLS communication and avoids the problem of credentials being deleted during initialization.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119885214A_ABST
    Figure CN119885214A_ABST
Patent Text Reader

Abstract

Embodiments of the present disclosure relate to communication credentials between two operating systems. Systems, methods, and software may be used to provide credentials for provisioning operations. In some aspects, a method includes generating, by a first operating system (OS), a first transmission key; transmitting a random salt from the first OS to a second OS by using the first transmission key; generating, by the first OS, a second transmission key by using the random salt; and transmitting a provisioning credential from the first OS to the second OS by using the second transmission key.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to communication credentials between two operating systems (OS). Background Art

[0002] In some implementations, credentials may be communicated between two OSs. For example, during a provisioning operation, one OS may send provisioning credentials to another OS. BRIEF DESCRIPTION OF THE DRAWINGS

[0003] Figure 1 is a schematic diagram showing an example system that provides provisioning operations according to an implementation.

[0004] Figure 2 is a flow chart showing an example process for provisioning operations according to an implementation.

[0005] Figure 3 is a diagram showing an example encoding scheme according to an implementation.

[0006] Figure 4 is a flow chart showing an example method of provisioning operations according to an implementation.

[0007] Figure 5 A high-level architectural block diagram of a computer according to an implementation is shown.

[0008] Like reference numbers and designations in the various drawings indicate like elements. DETAILED DESCRIPTION

[0009] In some cases, two operating systems (OS) can run on the same device. The device can be a stand-alone device or a module in a system. In a provisioning operation, the primary OS can trigger a provisioning operation on a secondary OS. The primary OS can set a device-specific certificate authority (CA) for the device and send the CA certificate and CA key (e.g., CA private key) to the secondary OS. In some implementations, the provisioning process can occur during the manufacturing phase, and both OS store provisioning credentials when the device is manufactured. However, in some cases, these provisioning credentials can be deleted during the initialization process (e.g., a factory reset operation). Therefore, a runtime provisioning operation can be used to regenerate and populate the provisioning credentials in both OSes to ensure that both OSes can communicate with each other using mutual transport layer security (mTLS).

[0010] In some cases, in order to provide a shared secret (e.g., a supply credential) to a secondary OS in a secure manner, the primary OS may generate a first transmission key and a random salt. The primary OS may send a random salt wrapped by a first transmission key to the secondary OS. The secondary OS may obtain the random salt using an unpacking operation. The secondary OS may send the random salt back to the first OS to confirm receipt of the random salt. In some cases, the secondary OS sends the size of the random salt back to the first OS to confirm receipt. In some cases, the secondary OS performs a hash operation on the random salt and sends the hashed random salt back to the first OS. Both the primary OS and the secondary OS may generate a second transmission key using the random salt and communicate the supply credential using the second transmission key. In some cases, an encoding algorithm may be used to protect the transmission of the random salt between the primary OS and the secondary OS. These methods improve the security of the supply operation. Figures 1 to 5 and associated descriptions provide additional details of these implementations.

[0011] Figure 1 1 is a schematic diagram showing an example communication system 100 that provides provisioning operations according to an implementation. At a high level, the example communication system 100 includes a vehicle 120 communicatively coupled to a client device 122. The vehicle 120 is also communicatively coupled to a server 130 via a network 140.

[0012] Vehicle 120 may include motor vehicles (e.g., automobiles, cars, trucks, buses, motorcycles, etc.), aircraft (e.g., airplanes, unmanned aerial vehicles, unmanned aerial vehicle systems, drones, helicopters, etc.), spacecraft (e.g., space shuttles, spacecraft, space stations, satellites, etc.), watercraft (e.g., ships, boats, hovercraft, submarines, etc.), rail vehicles (e.g., trains, trams, etc.), and other types of vehicles including any combination of any of the foregoing, whether currently existing or later appearing. In the example shown, vehicle 120 includes one or more sensors 102, vehicle component controllers 104, vehicle system processors 106, communication subsystems 116, user interfaces 118, memory 114, and operating devices 150 connected to bus 110.

[0013] In some cases, the vehicle may include one or more sensors. The one or more sensors may generate inputs, such as video or audio inputs, that reflect the surrounding environment or the environment inside the vehicle. Examples of sensors may include cameras, microphones, lasers, radars, ultrasonic waves, light detection and ranging (LIDAR), or any other sensors.

[0014] The vehicle 120 includes one or more sensors 102 that detect or measure information for the vehicle 120. Examples of the sensors 102 may include sensors that capture environmental information outside the vehicle 120, such as cameras, microphones, lasers, radars, ultrasound, light detection and ranging (LIDAR), etc. These sensors can provide environmental input to an automatic processing platform operating on the vehicle 120 to make automatic decisions. Examples of the sensors 102 may also include devices that capture information inside the vehicle 120, such as monitors for components such as engines, batteries, fuel, electronic systems, cooling systems, etc. These sensors can provide operating status and warnings to the automatic processing platform operating on the vehicle 120. Examples of the sensors 102 may also include acoustic sensors that can detect sound levels inside the vehicle 120. The acoustic sensor can determine the noise level inside the vehicle 120, or provide input to other signal processors that determine the noise level.

[0015] The vehicle 120 includes a vehicle component controller 104. Figure 1 104, but the vehicle 120 may include two or more vehicle component controllers 104. The vehicle component controller 104 represents a controller that controls the operation of components on the vehicle 120. Examples of components may include an engine, an accelerator, a brake, a radiator, a battery, a steering wheel, a transmission system, a cooling system, an electrical system, an entertainment system, and any other component of the vehicle 120. For example, the vehicle component controller 104 can control the speaker system of the vehicle 120, including controlling the volume, balance, attenuation, and any other settings for the audio output inside the vehicle 120. The vehicle component controller 104 can automatically operate the corresponding component based on the input from the vehicle system processor 106 or a combination thereof. In some implementations, the vehicle component controller 104 may include a data processing device.

[0016] The vehicle system processor 106 may include one or more processing components (optionally referred to as a "processor" or "central processing unit") configured to execute instructions related to one or more of the processes, steps, or actions of an automated processing platform operating on the vehicle 120. In general, the vehicle system processor 106 executes instructions and manipulates data to perform operations of the automated processing platform. The vehicle system processor 106 may receive inputs from the sensors 102 and generate commands to the vehicle component controller 104. In some cases, the vehicle system processor 106 may perform automated operations. In some cases, the vehicle system processor 106 may include a data processing device.

[0017] The communication subsystem 116 can be configured to provide wireless or wired communication for data or control information of the vehicle 120. For example, the communication subsystem 116 can support transmission through a wireless local area network (WLAN or WiFi), near field communication (NFC), infrared (IR), radio frequency identification (RFID), Bluetooth (BT), universal serial bus (USB), or any other short-range communication protocol. The communication subsystem 116 can also support global mobile communication system (GSM), interim standard 95 (IS-95), universal mobile telecommunication system (UMTS), CDMA2000 (code division multiple access), evolved universal mobile telecommunication system (E-UMTS), long term evolution (LTE), advanced LTE, 5G, or any other radio access technology. The communication subsystem 116 can include, for example, one or more antennas, receivers, transmitters, local oscillators, mixers, and digital signal processing (DSP) units. In some implementations, the communication subsystem 116 can support multiple input multiple output (MIMO) transmission. In some implementations, the receiver in the communication subsystem 116 can be an advanced receiver or a baseline receiver.

[0018] The user interface 118 may include, for example, any one of the following: a display or touch screen display (e.g., a liquid crystal display (LCD), a light emitting diode (LED), an organic light emitting diode (OLED), or a micro-electromechanical system (MEMS) display), a keyboard or keypad, a trackball, one or more of a speaker or a microphone. The user interface 118 may also include an I / O interface, such as a universal serial bus (USB) interface.

[0019] The memory 114 may be a computer-readable storage medium. Examples of the memory 114 include volatile and non-volatile memory, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), removable media, etc. The memory 114 may store the operating system (OS) of the vehicle 120 and various other computer-executable software programs for performing one or more of the above-described processes, steps, or actions.

[0020] The operating device 150 represents an application, a set of applications, software, a software module, hardware, or any combination thereof that can be configured to perform one or more specific operations of the vehicle 120. In some implementations, the operating device 150 can be a module that controls the infotainment operation of the vehicle 120, for example, the operating device 150 can interact with the sensor 102 to obtain data and present it on the user interface 118, the operating device 150 can also receive user input from the user interface 118, and control the speaker or screen to output video or music.

[0021] In some implementations, both the first OS 152 and the second OS 154 can run on the operating device 150. The first OS 152 may also be referred to as the main OS. The first OS 152 may be configured to interact with control components in the vehicle 120 related to the driving operation of the vehicle 120 (e.g., some of the sensors 102 (e.g., LIDAR), the vehicle system processor 106, and the vehicle component controller 104 involved in the automatic processing platform). The second OS 154 may also be referred to as a secondary OS. The second OS 154 may be configured to interact with the user interface 118, the communication subsystem 116, and external devices such as the client device 122 and the server 130. In one example, the first OS 152 may be a real-time embedded OS. The second OS 154 may be ANDROID or IOS. In some implementations, the first OS 152 does not have access to components outside the vehicle 120, while the second OS 154 may interact with devices outside the vehicle 120 through the communication subsystem 116.

[0022] In one example operation, the turning on of the vehicle 120 (e.g., by an engine start operation) can trigger the power-on of the operating device 150. When the operating device 150 is powered on, the first OS 152 is first started to start the runtime operation. The first OS 152 then starts the second OS 154. The first OS 152 can check whether a provisioning operation is required. The provisioning operation may be required because the provisioning operation has not been performed before or the provisioning operation needs to be performed again. The first OS 152 establishes a mutual transport layer security (mTLS) relationship with the second OS 154 by communicating a shared secret. In some implementations, the first OS 152 can initiate the provisioning process by sending a random salt generated by the runtime and wrapped with a first transmission key to the second OS 154. The random salt can be used to generate a second transmission key, which is used to transmit the provisioning credentials. Figures 2 to 4 , and the associated descriptions provide additional details of these implementations. In some implementations, a module or app within the first OS 152 can be configured to perform some or all of these provisioning operations.

[0023] As shown, bus 110 provides a communication interface for components of an autonomous processing platform operating on vehicle 120. In some cases, bus 110 may be implemented using a controller area network (CAN) bus.

[0024] The client device 122 represents an application, a set of applications, software, a software module, hardware, or any combination thereof that interacts with the vehicle 120. For example, the client device 122 may interact with the operating device 150 for infotainment operations. The client device 122 may be an electronic device, which may include, but is not limited to, any of the following: an endpoint, a computing device, a mobile device, a mobile electronic device, a user device, a mobile station, a subscriber station, a portable electronic device, a mobile communication device, a wireless modem, a wireless terminal, or another electronic device. Examples of endpoints may include mobile devices, IoT (Internet of Things) devices, EoT (Enterprise of Things) devices, cellular phones, personal data assistants (PDAs), smart phones, laptops, tablet computers, personal computers (PCs), pagers, portable computers, portable gaming devices, wearable electronic devices, health / medical / fitness devices, cameras, or other mobile communication devices having components for communicating voice or data via a wireless or wired communication network. The electronic device may also be a peripheral device, such as a headset, a remote control, or a display. The electronic device may be connected to the vehicle 120 using short-range communication technology. The short-range communication technology may be wireless, such as BT, NFC, WLAN, or wired, such as USB.

[0025] The server 130 represents an application, a collection of applications, software, a software module, hardware, or any combination thereof that can be configured to manage the operation of the vehicle 120. In some implementations, the server 130 can interact with the operating device 150 for safety or infotainment operations.

[0026] The example communication system 100 includes a network 140. The network 140 represents an application, a set of applications, software, a software module, hardware, or a combination thereof that can be configured to transmit data between a server 130 and a vehicle 120 in the communication system 100. The network 140 includes a wireless network, a wired network, or a combination thereof. For example, the network 140 may include one or more of a radio access network (RAN), a core network (CN), and an external network. The RAN may include one or more radio access technologies. In some implementations, the radio access technology may be a global system for mobile communications (GSM), an interim standard 95 (IS-95), a universal mobile telecommunications system (UMTS), CDMA2000 (code division multiple access), an evolved universal mobile telecommunications system (E-UMTS), long term evolution (LTE), advanced LTE, 5G, or any other radio access technology. In some instances, the core network may be an evolved packet core (EPC).

[0027] Although Figure 1The elements are shown as including various component parts, portions or modules that implement various features and functions, but instead, these elements may appropriately include several sub-modules, third-party services, components, libraries, etc. In addition, the features and functions of various components may be appropriately combined into fewer components.

[0028] In addition, although the use Figure 1 The processes and methods in the present disclosure are described as an example of the vehicle 120 in FIG. 1 , but these processes and methods can also be used in other non-vehicle devices where two OSs operate on the same device and communicate a shared secret during the provisioning process. In addition, these processes and methods can be used between two OSs on different devices to communicate a shared secret during the provisioning process.

[0029] Figure 2 is a flow chart of an example process 200 of implementing a provisioning operation. Process 200 may be performed by Figure 1 The process 200 may be implemented by one or more of the entities shown or any other system or module that provides provisioning operations. Figure 2 The first OS 152 and the second OS 154 shown in FIG. Figure 2 The example process 200 shown may be implemented using additional, fewer, or different operations that may be performed in the order shown or in a different order.

[0030] The example process 200 begins at step 202, where the provisioning process is triggered. In some implementations, the process 200 may be triggered by the startup of the first OS 152. When the first OS 152 is started, the first OS 152 may check the provisioning storage to determine whether some or all of the provisioning credentials are stored. As will be discussed later in step 232, the provisioning credentials may include an entity key, a CA key, an entity credential, or a CA credential, or any combination thereof. In some implementations, these provisioning credentials are stored in a specific storage so that they are accessible to the second OS 154. If the provisioning credentials are stored, the first OS 152 continues to check whether these provisioning credentials are valid. The first OS 152 may determine whether these provisioning credentials are valid by attempting an encryption operation using the provisioning credentials. Examples of encryption operations include encryption operations or decryption operations. The encryption operation or decryption operation may be based on an advanced encryption standard. If the encryption operation is successfully set to proceed to the next step, the provisioning credentials are valid.

[0031] If the provisioning credentials are not stored or are invalid, the first OS 152 continues with step 210 to begin the provisioning process.

[0032] In some implementations, the second OS 154 can determine whether a provisioning process is required by checking whether the provisioning credentials are available. In some implementations, the provisioning credentials are stored in a keystore accessible to the second OS 154. The second OS 154 can check the keystore to determine whether the provisioning credentials are available. If the provisioning credentials are available, the second OS 154 can continue to operate. If the provisioning credentials are not available, the second OS 154 will wait to receive the provisioning credentials.

[0033] In the example shown, the provisioning process is initiated by the first OS 152. Alternatively or in combination, the second OS 154 may also start the provisioning process. For example, if the second OS 154 determines that the provisioning credentials do not exist, the second OS 154 may send a provisioning request to the first OS 152 to trigger step 210.

[0034] At step 210, the first OS 152 generates a first transmission key. In some implementations, the first transmission key may be generated based on a pass phrase and a first salt. The pass phrase is a secret shared between the first OS 152 and the second OS 154. An example of a pass phrase may be a password. The first salt is a fixed value accessible to both the first OS 152 and the second OS 154. An example of a first salt value may be a random or pseudo-random value. In some cases, the first salt may be generated by the manufacturer of the device running the first OS 152 and the second OS 154. The first salt may be stored on a device accessible to both the first OS 152 and the second OS 154. In some cases, the first salt may be the same for multiple devices manufactured by the same manufacturer.

[0035] The first transport key may be generated by using a key derivation function or a key generation API using the pass phrase and the first salt as input. Examples of key derivation functions or key generation APIs include OpenSSL APIs or EnVeloPe Key Derivation Function (EVP KDF).

[0036] In some cases, the first transmission key can be further processed by using a hash function. For example, a secure hash algorithm 256-bit (SHA 256) algorithm can be applied to the first transmission key to expand the first transmission key to 256 bits. Other hash functions can also be used.

[0037] The first OS 152 also generates a random salt at step 210. The random salt may be generated by using a pseudo-random number generator. Because the random salt is generated at each run time when the process 200 is executed, unlike the first salt discussed previously, the random salt is different for each device and is different each time the provisioning process occurs.

[0038] At 212 , the first OS 152 sends the random salt wrapped using the first transport key to the second OS 154 . The first OS 152 performs the wrapping operation by generating a ciphertext from the random salt input using the first transport key, and then the ciphertext is sent to the second OS 154 .

[0039] In some cases, data communication between the first OS 152 and the second OS 154 can be achieved by using a memory transfer protocol such as hypervisor abstraction (HAB). Alternatively or in combination, data communication between the first OS 152 and the second OS 154 can be achieved by other standardized communication protocols, such as the Transmission Control Protocol (TCP) or a proprietary communication protocol.

[0040] At 220, the second OS 154 receives the wrapped random salt and performs an unwrapping function to obtain the random salt. As previously discussed, the second OS 154 has the same pass phrase and first salt as the pass phrase and first salt used by the first OS 152 to generate the first transmission key. Therefore, the second OS 154 can also use the pass phrase and the first salt to generate the first transmission key, and can use the first transmission key to unwrap the received wrapped random salt to obtain the random salt.

[0041] At 222, the second OS 154 sends a first response to the first OS 152. The first response includes the decoded random salt from step 220. By sending the decoded random salt back to the first OS 152, the second OS 154 indicates to the first OS 152 that the random salt has been successfully received and decoded. Alternatively or additionally, the second OS 154 may send the size of the random salt to the first OS 152 to confirm receipt of the random salt.

[0042] In some implementations, the second OS 154 may process the random salt by using a hash function before sending the random salt at 222. For example, a secure hash algorithm 256-bit (SHA256) algorithm may be applied to the random salt to extend the random salt to 256 bits. Other hash functions may also be used. Sending the hashed random salt may improve the security protection of the transmitted information.

[0043] In some cases, to further increase the security of transmissions between the first OS 152 and the second OS 154 , an encoding scheme may be applied to the data transmitted at step 212 , step 222 , or both. Figure 3 is a diagram showing an example encoding scheme 300 according to an implementation.

[0044] like Figure 3As shown in , input data 310 is encoded to generate coded data 320. The coded data is organized into one or more block groups. For example, each block group of block group 330 includes a zeroth block 332. The zeroth block 332 is a bit mask indicating whether each of the remaining blocks in the remaining blocks in the block group 330 is a data block or a padding block. In the example shown, the bit mask includes 8 bits, and the first, third, fourth and sixth bits are set to "1", which indicates that the corresponding blocks (i.e., blocks 1, 3, 4 and 6) are data blocks. The remaining blocks in the block are padding blocks. The input data 310 can be filled with data blocks in sequence, starting from block 1, and then continuing to blocks 3, 4 and 6, which skips the padding blocks. The padding blocks can be filled with "1", "0" or randomly generated bits. If there is additional data after the data blocks in the padding block group 330 in the input data 310, a second block group can be included. The second block group also starts with a bit mask block to indicate whether each of the remaining blocks in the second block group is a data block or a padding block. This process can be repeated until all input data 310 are included in the encoded data 320. In the example shown, each bit mask has 8 bits and each block group has 9 blocks (8 blocks corresponding to each bit in the bit mask, plus the bit mask block), and each block can be bytes. The size of the block and the size of the block group can also be other numbers.

[0045] In some cases, the bit mask may be generated by using a random function. The bit mask in each block group may be the same or different.

[0046] In some implementations, the encoded data 320 may also include an indicator 322. The indicator 322 may indicate a sequential order. For example, a bit in the indicator 322 may be set to "0" to indicate a normal order, and set to "1" to indicate a reverse order. Alternatively, the indicator 322 may be a byte that is set to "0" to indicate a normal order, and set to "255" to indicate a reverse order. In some implementations, the normal order may indicate that the data is filled from the first data block to the last data block in each block group, while the reverse order may indicate that the data is filled from the last data block to the first data block in each block group. Alternatively or additionally, the normal order may indicate that the data is filled from the first block group to the last block group, while the reverse order may indicate that the data is filled from the last block group to the first block group. Alternatively or additionally, the normal order may indicate that the indicator bits in the bit mask are sequential, where the first bit corresponds to the first block after the bit mask, and the reverse order may indicate that the indicator bits in the bit mask are in reverse order, where the first bit corresponds to the last block in the block group. Alternatively or additionally, the normal order can indicate that the indicator bit in the bit mask is set to "1" to represent the data block and is set to "0" to represent the padding block, and the reverse order can indicate that the indicator bit in the bit mask is set to "0" to represent the data block and is set to "1" to represent the padding block. In some cases, indicator 322 can include multiple bits to indicate the order of different types discussed before. For example, one bit can indicate the order within the block group, another bit can indicate the order between the block groups, and another one or two bits can indicate the order of the bit mask discussed before. In some implementations, indicator 322 or each bit in indicator 322 can be randomly generated.

[0047] Figure 3 The encoding scheme in may be used in step 212, where the wrapped random salt is encoded using the encoding scheme. A data length indicator may also be transmitted in step 212 to indicate the size of the input data before encoding. The second OS 154 will first decode the data according to the indicator 322 and the first block 332 in each block group to obtain the wrapped random salt. The second OS 154 then further decodes the wrapped random salt by unpacking using the first transmission key to obtain the random salt.

[0048] Additionally or alternatively, in step 222, Figure 3 The first response including the random salt may be transmitted using the encoding scheme in step 222. A data length indicator may also be transmitted in step 222 to indicate the size of the input data before encoding.

[0049] return Figure 2 At step 230, the first OS 152 receives the first response and determines whether the data in the first response matches the random salt. Figure 3 , the first OS 152 uses the indicator 322 and the zeroth block 332 in each block group to obtain the data in the first response. In some cases, as discussed previously, the data in the first response may be a hashed random salt. In this case, the first OS 152 may also hash the random salt using the same hash function and compare the hash result with the data in the first response. If the hash result matches the data in the first response, the first OS 152 may infer that the second OS 154 has successfully obtained the random salt sent at step 212. Alternatively, the data in the first response may include a random salt that has not been hashed. In this case, the first OS 152 may only compare the data with the random salt to determine whether the second OS 154 has successfully obtained the random salt.

[0050] If the match is unsuccessful, the first OS 152 may return to step 210 and generate another random salt, and repeat steps 212 to 222 .

[0051] If the match is successful, both the first OS 152 and the second OS 154 can use the random salt to generate the second transport key. In some implementations, the second transport key can be generated by using a key derivation function or a key generation API using the pass phrase (used to generate the first transport key in step 210) and the random salt as input. Examples of key derivation functions or key generation APIs include OpenSSL APIs or EVP KDF. The second transport key can be used to wrap the provisioning credentials to be sent by the first OS 152.

[0052] First OS 152 may generate provisioning credentials in response to finding a successful match at step 230. Alternatively or in combination, first OS 152 may generate some or all of the provisioning credentials prior to a successful match at step 230 (eg, during step 210 or after step 212).

[0053] The provisioning credentials may include one or more of the following: a device CA private key, a device CA public key, a device CA certificate, an entity private key, an entity public key, an entity certificate, a key encryption key used to wrap a private key, and other credentials.

[0054] At step 232, the first OS 152 sends the provisioning credentials to the second OS 154. The provisioning credentials are wrapped using the second transmission key, the first OS 152 performs a wrapping operation by using the second transmission key to generate a ciphertext from the provisioning credentials, and the ciphertext is then sent to the second OS 154. The second OS 154 obtains the provisioning credentials by using an unwrapping operation to unwrap the received ciphertext using the second transmission key.

[0055] In some cases, the type of provisioning credentials generated and the type of provisioning credentials transmitted depends on the specific security operations associated with the provisioning process. In one implementation, the device CA is provisioned by the first OS 152. The first OS 152 can send the CA private key and CA credentials to the second OS 154 in one transmission or in separate transmissions. The second OS 154 can instantiate the CA based on the received CA private key and CA credentials and use it to generate entity credentials for an entity (e.g., operating device 150). In some cases, each endpoint of the connection can be referred to as an entity.

[0056] In another implementation, the entity key pair may be created in the first OS 152 and the second OS 154. In this case, the first OS 152 sends the entity certificate to the second OS 154. In yet another implementation, the third-party CA certificate is transmitted between the first OS 152 and the second OS 154, or vice versa, depending on which OS has access to the Internet and which OS does not.

[0057] Figure 4 is a flow chart showing an example method 400 of provisioning operations according to implementation. The method 400 may be performed by Figure 1 400 may be implemented by one or more entities shown in , or any other system or module that provides provisioning operations. Figure 1 This is achieved by the operating device 150 shown in FIG. Figure 4 The example method 400 shown in FIG. 4 may be implemented using additional, fewer, or different operations that may be performed in the order shown or in a different order.

[0058] At 402, the first OS generates a first transmission key. In some cases, the first OS generates the first transmission key by deriving the first transmission key from a pass phrase and a first salt value. At 404, the first OS sends a random salt to the second OS by using the first transmission key. At 406, the first OS generates a second transmission key by using the random salt. In some cases, the first OS generates a second transmission key from the pass phrase and the random salt. At 408, the first OS sends provisioning credentials to the second OS by using the second transmission key.

[0059] Figure 5 1 shows a high-level block diagram of a computer 500 according to an implementation. The computer 500 can be implemented as an operating device 150, a client device 122, a server 130, or any combination thereof. The computer 500 can also be used to implement Figures 1 to 4The operations discussed in the description are merely one possible implementation of the subject matter described and are not intended to limit the disclosure to a single described implementation. Those of ordinary skill in the art will appreciate the fact that the described components may be connected, combined, and / or used in alternative ways consistent with the present disclosure.

[0060] In some cases, the processing algorithm established by the code grouping can be implemented with executable computing code, such as C / C++ executable code. In some cases, the computer 500 can include an independent Linux system running a batch processing application. In some cases, the computer 500 can include a mobile or personal computer.

[0061] Computer 500 may include a computer that includes input devices such as a keypad, keyboard, touch screen, microphone, voice recognition device, other devices that can accept user information, and / or output devices that transmit information associated with the operation of the computer, including digital data, visual and / or audio information or a GUI.

[0062] The computer 500 may function as a client, a network component, a server, a database or other persistence, and / or any other component. In some implementations, one or more components of the computer 500 may be configured to operate within a cloud computing-based environment.

[0063] At a high level, the computer 500 is an electronic computing device operable to receive, transmit, process, store or manage data. According to some implementations, the computer 500 may also include, or be communicatively coupled to, an application server, an email server, a web server, a cache server, a streaming data server, a business intelligence (BI) server and / or other servers.

[0064] Computer 500 may collect data of web events or mobile application usage events from a web browser or client application (e.g., installed plug-in) via network 110. In addition, data may be collected by computer 500 from internal users (e.g., from a command console or through another suitable access method), external or third parties, other automated applications, and any other suitable entity, person, system, or computer.

[0065] Each of the components of the computer 500 can communicate using a system bus 512. In some implementations, any and / or all components (hardware and / or software) of the computer 500 can interact with each other and / or with the interface 502 through the system bus 512 using an application programming interface (API) 508 and / or a service layer 510. The API 508 can include specifications for routines, data structures, and object classes. The API 508 can be independent of or dependent on a computer language and refers to a complete interface, a single function, or even an API set. The service layer 510 provides software services to the computer 500. The functions of the computer 500 can be accessible to all service consumers using the service layer. Software services such as those provided by the service layer 510 provide reusable, defined business functions through defined interfaces. For example, the interface can be software written in Java, C++, or other appropriate languages ​​that provide data in an extensible markup language (XML) format or other appropriate formats. Although shown as an integrated component of computer 500, alternative implementations may show API 508 and / or service layer 510 as separate components relative to other components of computer 500. Furthermore, any or all portions of API 508 and / or service layer 510 may be implemented as a child or sub-module of another software module, enterprise application, or hardware module without departing from the scope of the present disclosure.

[0066] Computer 500 includes interface 502. Although Figure 5 502, but two or more interfaces 502 may be used depending on the specific needs, expectations, or specific implementation of the computer 500. The interface 502 is used by the computer 500 to communicate with other systems in a distributed environment connected to a network (whether or not shown). Typically, the interface 502 includes logic encoded in software and / or hardware in an appropriate combination and is operable to communicate with the network. More specifically, the interface 502 may include software supporting one or more communication protocols associated with the communication, so that the hardware of the network or interface is operable to communicate physical signals within and outside the computer 500.

[0067] Computer 500 includes at least one processor 504. Although Figure 5 500, but two or more processors may be used depending on the particular needs, desires, or particular implementation of the computer. In general, processor 504 executes instructions and manipulates data to perform the operations of computer 500. Specifically, processor 504 performs Figures 1 to 4 The functionality disclosed in .

[0068] The computer 500 also includes a memory 514 for storing data for the computer 500. Figure 5500, two or more memories may be used depending on the particular needs, desires, or particular implementation of the computer 500. Although the memory 514 is shown as an integral component of the computer 500, in alternative implementations, the memory 514 may be external to the computer 500.

[0069] The application 506 is an algorithmic software engine that provides functionality (particularly with respect to functionality required for anomaly detection) according to the specific needs, desires, or specific implementation of the computer 500. Although shown as a single application 506, the application 506 may be implemented as multiple applications 506 on the computer 500. Furthermore, although shown as integrated into the computer 500, in alternative implementations, the application 506 may be external to the computer 500.

[0070] There may be any number of computers 500 associated with the network or external to the network and communicating through the network. Furthermore, the present disclosure contemplates that many users may use one computer 500, or that one user may use multiple computers 500.

[0071] Implementations of the described subject matter may include one or more features, alone or in combination.

[0072] For example, in a first implementation, a method includes: generating a first transmission key by a first operating system (OS); sending a random salt from the first OS to a second OS by using the first transmission key; generating a second transmission key by the first OS by using the random salt; and sending provisioning credentials from the first OS to the second OS by using the second transmission key.

[0073] Optionally, the aforementioned and other described implementations may each include one or more of the following features:

[0074] A first feature, combinable with any of the following features, wherein the provisioning credential comprises at least one of a private key of a certificate authority (CA) or a certificate of the CA.

[0075] A second feature, combinable with any of the previous or following features, further includes receiving, by the first OS, a first response from the second OS, wherein the first response includes data; and determining, by the first OS, that the data in the first response matches the random salt.

[0076] A third feature, combinable with any of the previous or following features, wherein the data comprises a bit mask, each bit of the bit mask indicating whether a corresponding byte comprises data or filler.

[0077] A fourth feature, combinable with any of the previous or following features, wherein the data includes an indicator indicating one of a sequential order or a reverse sequential order.

[0078] A fifth feature, combinable with any of the previous or following features, wherein determining whether the data matches the random salt is performed by performing a hash function on the random salt to generate a hash result and determining whether the hash result matches the data.

[0079] A sixth feature, combinable with any of the previous features, wherein the first OS and the second OS run on the same device, and the first OS and the second OS perform a multi-transport layer security (mTLS) process.

[0080] In a second implementation, a computer-readable medium includes instructions that, when executed, cause an electronic device to perform operations including: generating a first transmission key by a first operating system (OS); sending a random salt from the first OS to a second OS by using the first transmission key; generating a second transmission key by the first OS by using the random salt; and sending provisioning credentials from the first OS to the second OS by using the second transmission key.

[0081] Optionally, the aforementioned and other described implementations may each include one or more of the following features:

[0082] A first feature, combinable with any of the following features, wherein the provisioning credential comprises at least one of a private key of a certificate authority (CA) or a certificate of the CA.

[0083] A second feature, combinable with any of the previous or following features, the operation further comprises receiving, by the first OS, a first response from the second OS, wherein the first response comprises data; and determining, by the first OS, that the data in the first response matches the random salt.

[0084] A third feature, combinable with any of the previous or following features, wherein the data comprises a bit mask, each bit of the bit mask indicating whether a corresponding byte comprises data or filler.

[0085] A fourth feature, combinable with any of the previous or following features, wherein the data includes an indicator indicating one of a sequential order or a reverse sequential order.

[0086] A fifth feature, combinable with any of the previous or following features, wherein determining whether the data matches the random salt is performed by performing a hash function on the random salt to generate a hash result and determining whether the hash result matches the data.

[0087] A sixth feature, combinable with any of the previous features, wherein the first OS and the second OS run on the same device, and the first OS and the second OS perform a multi-transport layer security (mTLS) process.

[0088] In a third implementation, a computer-implemented system includes: one or more computers; and one or more computer memory devices, the one or more computer memory devices being interoperably coupled with the one or more computers and having a tangible, non-transitory machine-readable medium storing one or more instructions, which, when executed by the one or more computers, perform one or more operations including: generating, by a first operating system (OS), a first transmission key; sending a random salt from the first OS to a second OS by using the first transmission key; generating, by the first OS, a second transmission key by using the random salt; and sending provisioning credentials from the first OS to the second OS by using the second transmission key.

[0089] Optionally, the aforementioned and other described implementations may each include one or more of the following features:

[0090] A first feature, combinable with any of the following features, wherein the provisioning credential comprises at least one of a private key of a certificate authority (CA) or a certificate of the CA.

[0091] A second feature, combinable with any of the previous or following features, the operation further comprises receiving, by the first OS, a first response from the second OS, wherein the first response comprises data; and determining, by the first OS, that the data in the first response matches the random salt.

[0092] A third feature, combinable with any of the previous or following features, wherein the data comprises a bit mask, each bit of the bit mask indicating whether a corresponding byte comprises data or filler.

[0093] A fourth feature, combinable with any of the previous or following features, wherein the data includes an indicator indicating one of a sequential order or a reverse sequential order.

[0094] A fifth feature, combinable with any of the previous or following features, wherein determining whether the data matches the random salt is performed by performing a hash function on the random salt to generate a hash result and determining whether the hash result matches the data.

[0095] A sixth feature, combinable with any of the previous features, wherein the first OS and the second OS run on the same device, and the first OS and the second OS perform a multi-transport layer security (mTLS) process.

[0096] The implementation of the subject matter and functional operations described in this specification can be implemented in digital electronic circuit devices, in tangibly embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or a combination of one or more of them. The software implementation of the described subject matter can be implemented as one or more computer programs, in other words, one or more modules of computer program instructions encoded on a tangible non-transient computer-readable medium for execution by a computer or a computer-implemented system or to control its operation. Alternatively or additionally, program instructions can be encoded in / on artificially generated propagation signals, for example, machine-generated electrical, optical or electromagnetic signals, which are generated to encode information for transmission to a receiver device for execution by a computer or a computer-implemented system. Computer storage media can be machine-readable storage devices, machine-readable storage substrates, random or serial access memory devices, or a combination of computer storage media. Configuring one or more computers means that the one or more computers have installed hardware, firmware or software (or a combination of hardware, firmware and software) so that when the software is executed by one or more computers, specific computing operations are performed. However, computer storage media are not propagation signals.

[0097] The terms "real-time", "real time", "realtime", "real(r) time (RFT)", "near real time (NRT)", "quasi real time" or similar terms (as understood by one of ordinary skill in the art) mean that an action and a response are close in time such that an individual perceives the action and the response to occur substantially simultaneously. For example, the time difference for display of the data (or initiation of display) may be less than 1 millisecond (ms), less than 1 second (s), or less than 5s after the individual's action to access the data. Although the requested data need not be displayed (or initiated for display) instantly, the requested data is displayed (or initiated for display) without any intentional delay, taking into account the processing limitations of the described computing systems and, for example, the time required to collect, accurately measure, analyze, process, store or transmit the data.

[0098] The term "data processing apparatus", "computer", "computing device" or "electronic computer device" (or equivalent terms as understood by one of ordinary skill in the art) refers to data processing hardware, and includes all types of apparatus, devices and machines for processing data, including, by way of example, a programmable processor, a computer, or a plurality of processors or computers. A computer may also be or further include a dedicated logic circuit device, such as a central processing unit (CPU), a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). In some implementations, a computer or a computer-implemented system or a dedicated logic circuit device (or a combination of a computer or a computer-implemented system and a dedicated logic circuit) may be hardware-based or software-based (or a combination of hardware-based and software-based). A computer may optionally include code that creates an execution environment for a computer program, for example, code constituting a processor firmware, a protocol stack, a database management system, an operating system or a combination of execution environments. The present disclosure contemplates the use of a computer or computer-implemented system with an operating system or a combination of operating systems, such as LINUX, UNIX, WINDOWS, MAC OS, ANDROID or IOS.

[0099] A computer program that may also be referred to or described as a program, software, software application, unit, module, software module, script, code or other component may be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and may be deployed in any form, including, for example, as a stand-alone program, module, component or subroutine for use in a computing environment. A computer program may but need not correspond to a file in a file system. A program may be stored in a part of a file preserving other programs or data, for example, in one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple collaborative files, for example, files storing one or more modules, subroutines or code portions. A computer program may be deployed to execute on a computer or on multiple computers located at a site or distributed across multiple sites and interconnected by a communication network.

[0100] Although the program portions shown in the various figures may be shown as separate components, such as units or modules, that use various objects, methods, or other processes to implement the described features and functions, the program may instead appropriately include several sub-units, sub-modules, third-party services, components, libraries, and other components. Conversely, the features and functions of the various components may be appropriately combined into a single component. The thresholds used for computational determination may be determined statically, dynamically, or both statically and dynamically.

[0101] The described methods, processes, or logic flows represent one or more examples of functionality consistent with the present disclosure and are not intended to limit the present disclosure to the implementations described or shown, but are intended to conform to the broadest scope consistent with the described principles and features. The described methods, processes, or logic flows may be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output data. The methods, processes, or logic flows may also be performed by dedicated logic circuit devices, and computers may also be implemented as dedicated logic circuit devices, such as CPUs, FPGAs, or ASICs.

[0102] The computer for executing the computer program can be based on a general or special microprocessor, both of them or another type of CPU. Usually, the CPU will receive instructions and data from the memory and write to the memory. The basic element of the computer is the CPU for executing instructions, and one or more memory devices for storing instructions and data. Usually, the computer will also include one or more large-capacity storage devices for storing data, such as magnetic disks, magneto-optical disks or optical disks, or be operably coupled to one or more large-capacity storage devices, receive data from one or more large-capacity storage devices or transfer data to one or more large-capacity storage devices, or both. However, the computer does not need to have such a device. In addition, the computer can be embedded in another device, such as a mobile phone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a global positioning system (GPS) receiver, or a portable memory storage device such as a universal serial bus (USB) flash drive, which is just to give a few examples.

[0103] Non-transitory computer-readable media for storing computer program instructions and data may include all forms of permanent / non-permanent or volatile / non-volatile memory, media and memory devices, including, by way of example, semiconductor memory devices such as random access memory (RAM), read-only memory (ROM), phase change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM) and flash memory devices; magnetic devices such as magnetic tapes, cassettes, cartridges, internal / removable disks; magneto-optical disks; and optical memory devices such as digital versatile / video disks (DVD), compact disk (CD) ROM, DVD+ / -R, DVD-RAM, DVD-ROM, high-definition / density (HD)-DVD and Blu-ray / Blu-ray discs (BD) and other optical memory technologies. The memory may store various objects or data, including caches, classes, frameworks, applications, modules, backup data, jobs, web pages, web page templates, data structures, database tables, repositories storing dynamic information or other appropriate information including any parameters, variables, algorithms, instructions, rules, constraints or references. In addition, the memory may include other appropriate data, such as logs, policies, security or access data or report files. The processor and memory may be supplemented by or incorporated into a dedicated logic circuit device.

[0104] In order to provide interaction with the user, the implementation of the subject matter described in this specification can be implemented on a computer having a display device for displaying information to the user, such as a cathode ray tube (CRT), a liquid crystal display (LCD), a light emitting diode (LED) or a plasma monitor, and a keyboard and a pointing device, such as a mouse, a trackball or a trackpad, through which the user can provide input to the computer. A touch screen can also be used to provide input to the computer, such as a tablet computer surface with pressure sensitivity or a multi-point touch screen using capacitance or electrical sensing. Other types of devices can be used to interact with the user. For example, the feedback provided to the user can be any form of sensory feedback (e.g., a combination of visual, auditory, tactile or feedback types). Input from the user can be received in any form, including sound, voice or tactile input. In addition, the computer can interact with the user by sending documents to and receiving documents from a client computing device used by the user (e.g., by sending a web page to the web browser in response to a request received from a web browser on the user's mobile computing device).

[0105] The term "graphical user interface (GUI)" may be used in the singular or plural to describe one or more graphical user interfaces and each display in a display of a particular graphical user interface. Thus, a GUI may represent any graphical user interface, including but not limited to a web browser, a touch screen, or a command line interface (CLI) that processes information and effectively presents the information results to a user. Typically, a GUI may include several user interface (UI) elements, some or all of which are associated with a web browser, such as interactive fields, drop-down lists, and buttons. These and other UI elements may relate to or represent the functionality of a web browser.

[0106] The implementation of the subject matter described in this specification can be implemented in a computing system, which includes a back-end component, such as a data server, or includes a middleware component, such as an application server, or includes a front-end component, such as a client computer with a graphical user interface or a web browser, through which a user can interact with the implementation of the subject matter described in this specification, or includes any combination of one or more such back-end, middleware or front-end components. The components of the system can be interconnected by any form or medium of wired or wireless digital data communication (or a combination of data communication) such as a communication network. Examples of communication networks include local area networks (LANs), wireless access networks (RANs), metropolitan area networks (MANs), wide area networks (WANs), global interoperability for microwave access (WIMAX), wireless local area networks (WLANs) using, for example, 802.11x or other protocols, all or part of the Internet, another communication network, or a combination of communication networks. Communication networks can communicate between network nodes using, for example, Internet Protocol (IP) packets, frame relay frames, asynchronous transfer mode (ATM) cells, voice, video, data, or other information.

[0107] The computing system may include clients and servers. Clients and servers are generally remote from each other and generally interact through a communication network. The relationship of client and server arises by virtue of computer programs running on respective computers and having a client-server relationship to each other.

[0108] In some implementations, any or all of the components (hardware and / or software) of the computing system can interact with each other and / or use APIs and / or service layers to interact. APIs may include specifications for routines, data structures, and object classes. APIs may be independent of or dependent on computer languages ​​and refer to complete interfaces, single functions, or even API collections. The service layer provides software services to the computing system. The functions of the various components of the computing system can be accessed via the service layer for all service consumers. Software services provide reusable, defined business functions through defined interfaces. For example, the interface may be software written in JAVA, C++, or other appropriate languages ​​that provide data in XML format or other appropriate formats. APIs and / or service layers may be integrated and / or independent components associated with other components of the computing system. In addition, without departing from the scope of the present disclosure, any or all parts of the service layer may be implemented as children or submodules of another software module, enterprise application, or hardware module.

[0109] Although this specification contains many specific implementation details, these should not be interpreted as limitations on the scope of any inventive concept or the scope of the claimed protection, but as descriptions of features peculiar to the specific implementation of a particular inventive concept. Certain features described in the context of separate implementations in this specification may also be implemented in combination in a single implementation. Conversely, the various features described in the context of a single implementation may also be implemented in multiple implementations individually or in any sub-combination. In addition, although the previously described features may be described as acting in certain combinations and even initially claimed as such, in some cases, one or more features from the claimed combination may be deleted from the combination, and the claimed combination may be directed to a sub-combination or a variation of a sub-combination.

[0110] A specific implementation of the subject matter has been described. Other implementations, changes, and permutations of the described implementations are within the scope of the appended claims, as will be apparent to those skilled in the art. Although operations are depicted in a particular order in the accompanying drawings or claims, this should not be construed as requiring that such operations be performed in the particular order shown or in a continuous order to achieve the desired result, or that all of the operations shown (some operations may be considered optional) be performed. In some cases, multitasking or parallel processing (or a combination of multitasking and parallel processing) may be advantageous and are performed where deemed appropriate.

[0111] The splitting or integration of various system modules and components in the previously described implementations should not be understood as requiring device splitting or integration in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.

[0112] Therefore, the example implementations described above do not define or constrain the present disclosure. In the case of not departing from the scope of the present disclosure, there may be other changes, substitutions and alterations.

[0113] Furthermore, any claimed implementation is considered applicable to at least one computer-implemented method; a non-transitory computer-readable medium storing computer-readable instructions to perform the computer-implemented method; and a computer system comprising a computer memory interoperably coupled to a hardware processor configured to perform the computer-implemented method or the instructions stored on the non-transitory computer-readable medium.

Claims

1. A method comprising: A first transmission key is generated by a first operating system OS; sending a random salt from the first OS to the second OS by using the first transport key; generating, by the first OS, a second transport key by using the random salt; as well as Provisioning credentials are sent from the first OS to the second OS using the second transport key. 2 . The method of claim 1 , wherein the provisioning credential comprises at least one of a private key of a certificate authority (CA) or a certificate of the CA.

3. The method according to claim 1, further comprising: receiving, by the first OS, a first response from the second OS, wherein the first response includes data; as well as A determination is made, by the first OS, that the data in the first response matches the random salt. 4 . The method of claim 3 , wherein the data comprises a bit mask, each bit of the bit mask indicating whether a corresponding byte comprises data or filler.

5. The method of claim 3, wherein the data includes an indicator indicating one of a sequential order or a reverse sequential order.

6. The method of claim 3, wherein whether the data matches the random salt is determined by performing a hash function on the random salt to generate a hash result and determining whether the hash result matches the data. 7 . The method of claim 1 , wherein the first OS and the second OS are run on the same device, and the first OS and the second OS perform a multi-transport layer security (mTLS) process.

8. A computer-readable medium comprising instructions, which, when executed, cause an electronic device to perform operations comprising: A first transmission key is generated by a first operating system OS; sending a random salt from the first OS to the second OS by using the first transport key; generating, by the first OS, a second transport key by using the random salt; as well as Provisioning credentials are sent from the first OS to the second OS using the second transport key.

9. The computer-readable medium of claim 8, wherein the provisioning credentials include at least one of a private key of a certificate authority (CA) or a certificate of the CA.

10. The computer-readable medium of claim 8, the operations further comprising: receiving, by the first OS, a first response from the second OS, wherein the first response includes data; as well as A determination is made, by the first OS, that the data in the first response matches the random salt.

11. The computer-readable medium of claim 10, wherein the data comprises a bit mask, each bit of the bit mask indicating whether a corresponding byte comprises data or filler.

12. The computer-readable medium of claim 10, wherein the data includes an indicator indicating one of a sequential order or a reverse sequential order.

13. The computer-readable medium of claim 10, wherein whether the data matches the random salt is determined by performing a hash function on the random salt to generate a hash result and determining whether the hash result matches the data. 14 . The computer-readable medium of claim 8 , wherein the first OS and the second OS are run on the same device, and the first OS and the second OS perform a multi-transport layer security (mTLS) process.

15. A computer-implemented system comprising: one or more computers; as well as One or more computer memory devices interoperably coupled with the one or more computers and having a tangible, non-transitory, machine-readable medium storing one or more instructions that, when executed by the one or more computers, perform one or more operations comprising: A first transmission key is generated by a first operating system OS; sending a random salt from the first OS to the second OS by using the first transport key; generating, by the first OS, a second transport key by using the random salt; and Provisioning credentials are sent from the first OS to the second OS using the second transport key.

16. The computer-implemented system of claim 15, wherein the provisioning credentials include at least one of a private key of a certificate authority (CA) or a certificate of the CA.

17. The computer implemented system of claim 15, the operations further comprising: receiving, by the first OS, a first response from the second OS, wherein the first response includes data; as well as A determination is made, by the first OS, that the data in the first response matches the random salt.

18. The computer-implemented system of claim 17, wherein the data comprises a bit mask, each bit of the bit mask indicating whether a corresponding byte comprises data or filler.

19. The computer implemented system of claim 17, wherein the data includes an indicator indicating one of a sequential order or a reverse sequential order.

20. The computer implemented system of claim 17, wherein whether the data matches the random salt is determined by performing a hash function on the random salt to generate a hash result and determining whether the hash result matches the data.

Citation Information

Patent Citations

  • Method for mutual symmetric authentication between a first application and a second application

    US20200177563A1

  • Vehicle communication system and method of security communication therefor

    US20210119800A1

  • Secure storage of passwords

    US20210157939A1

  • Device access control program, device access control method, and information processor

    WO2009044461A1