Communication authentication information between two operating systems

The method of generating and securely transmitting a random salt between OSs addresses credential deletion issues, ensuring secure and reliable provisioning operations by using transfer keys and encoding algorithms.

JP7833004B2Active Publication Date: 2026-03-18BLACKBERRY LTD
View PDF 5 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2024-09-18
Publication Date
2026-03-18

AI Technical Summary

Technical Problem

Existing systems face challenges in securely communicating provisioning authentication information between two operating systems, particularly in scenarios where credentials may be deleted during initialization processes like factory resets, necessitating secure regeneration and population of credentials for mutual transport layer security.

Method used

A method involving a primary operating system generating a first transfer key and a random salt, sending the salt wrapped in the key to a secondary OS, confirming receipt, and using the salt to generate a second transfer key for secure transmission of provisioning credentials, enhanced by encoding algorithms and hash operations.

Benefits of technology

Ensures secure and reliable communication of provisioning credentials between OSs, enhancing security and reliability in provisioning operations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007833004000001
    Figure 0007833004000001
  • Figure 0007833004000002
    Figure 0007833004000002
  • Figure 0007833004000003
    Figure 0007833004000003
Patent Text Reader

Abstract

To provide a method, a computer-readable medium, a memory device and a computer-implemented system for sending communicating credentials between two operating systems.SOLUTION: A method used to provide credentials for a provisioning operation includes: generating 202, by a first operating system (OS), a first transfer key; sending 212, from the first OS to a second OS, a random salt by using the first transfer key; generating 230, by the first OS, a second transfer key by using the random salt; and sending 232, from the first OS to the second OS, provisioning credentials by using the second transfer key.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to communication authentication information between two operating systems (OSs).

Background Art

[0002] In some implementations, authentication information can be communicated between two OSs. For example, during a provisioning operation, one OS can send provisioning authentication information to another OS.

Summary of the Invention

Means for Solving the Problems

[0003] The present invention provides, for example, the following items. (Item 1) Generating a first transfer key by a first operating system (OS); Sending a random salt from the first OS to the second OS by using the first transfer key; Generating a second transfer key by the first OS by using the random salt; Sending provisioning authentication information from the first OS to the second OS by using the second transfer key and a method including the above. (Item 2) The method according to the above item, wherein the provisioning authentication information includes at least one of a secret key of a certification authority (CA) or a certificate of the CA. (Item 3) Receiving a first response from the second OS by the first OS, wherein the first response includes data; Determining by the first OS that the data in the first response matches the random salt and further including the above method according to any one of the above items. (Item 4) The method according to any of the above items, wherein the data comprises a bitmask, each bit of the bitmask indicating whether the corresponding byte contains data or filler. (Item 5) The method described above for any of the items, wherein the data includes an indicator that points to either a continuous order or a reverse order. (Item 6) The method according to any of the above items, wherein whether the data matches the random salt is determined by performing a hashing function on the random salt to generate a hash result, and determining whether the hash result matches the data. (Item 7) The method according to any of the above items, wherein the first OS and the second OS operate on the same device, and the first OS and the second OS perform the Multi-Transport Layer Security (mTLS) process. (Item 8) A computer-readable medium, which, when executed, contains instructions that cause an electronic device to perform an action, The first operating system (OS) generates the first transfer key, By using the first transfer key, a random salt is sent from the first OS to the second OS, By using the aforementioned random salt, the first OS generates a second transfer key, By using the second transfer key, provisioning authentication information is transmitted from the first OS to the second OS. Computer-readable media, including [specific media]. (Item 9) The provisioning authentication information is a computer-readable medium as described in any of the above items, comprising at least one of the following: the private key of a Certificate Authority (CA) or the certificate of the said CA. (Item 10) The aforementioned operation is, The first OS receives a first response from the second OS, the first response comprising data, The first OS determines that the data in the first response matches the random salt. Computer-readable media as described in any of the above items, further including: (Item 11) The data is a computer-readable medium according to any of the above items, comprising a bitmask, where each bit of the bitmask indicates whether the corresponding byte contains data or filler. (Item 12) The data is contained in a computer-readable medium as described in any of the above items, which includes an indicator that points to either a sequential or reverse order. (Item 13) A computer-readable medium according to any of the above items, wherein whether the data matches the random salt is determined by performing a hashing function on the random salt to generate a hash result and determining whether the hash result matches the data. (Item 14) The first OS and the second OS operate on the same device, and the first OS and the second OS perform a Multi-Transport Layer Security (mTLS) process on a computer-readable medium as described in any of the above items. (Item 15) A computer implementation system, wherein the computer implementation system is One or more computers, One or more computer memory devices having a tangible, non-temporary, machine-readable medium that is interoperably coupled with one or more of the aforementioned computers and stores one or more instructions. Equipped with, The one or more instructions, when executed by the one or more computers, perform one or more actions, and the actions are The first operating system (OS) generates the first transfer key, By using the first transfer key, a random salt is sent from the first OS to the second OS, By using the aforementioned random salt, the first OS generates a second transfer key, By using the second transfer key, provisioning authentication information is transmitted from the first OS to the second OS. A computer-implemented system including this. (Item 16) The provisioning authentication information is a computer implementation system as described in any of the above items, comprising at least one of the following: the private key of a Certificate Authority (CA) or the certificate of the said CA. (Item 17) The aforementioned operation is, The first OS receives a first response from the second OS, the first response comprising data, The first OS determines that the data in the first response matches the random salt. A computer implementation system as described in any of the above items, further including the above items. (Item 18) The computer implementation system according to any of the above items, wherein the data comprises a bitmask, and each bit of the bitmask indicates whether the corresponding byte contains data or filler. (Item 19) A computer implementation system according to any of the above items, comprising an indicator that points to either a sequential or reverse order of the data. (Item 20) Whether the data matches the random sort is determined by executing a hashing function on the random sort to generate a hash result and determining whether the hash result matches the data, in the computer-implemented system according to any of the above items. (Abstract) Systems, methods, and software can be used to provide authentication information for provisioning operations. In some aspects, the method includes generating a first transfer key by a first operating system (OS), transmitting a random sort from the first OS to the second OS by using the first transfer key, generating a second transfer key by the first OS by using the random sort, and transmitting provisioning authentication information from the first OS to the second OS by using the second transfer key.

Brief Description of the Drawings

[0004] [ [Figure 1] FIG. 1 is a schematic diagram showing an exemplary system for providing provisioning operations according to an implementation.

[0005] [Figure 2] FIG. 2 is a diagram showing an exemplary process of provisioning operations according to an implementation.

[0006] [Figure 3] FIG. 3 is a diagram showing an exemplary encoding scheme according to an implementation.

[0007] [Figure 4] FIG. 4 is a flowchart showing an exemplary method of provisioning operations according to an implementation.

[0008] [Figure 5] FIG. 5 illustrates a high-level architecture block diagram of a computer according to an implementation. Similar reference numbers and designations in the various figures indicate similar elements. [Modes for carrying out the invention]

[0009] (Detailed explanation) In some cases, two operating systems (OSs) can run on the same device. The device can be a standalone device or a module within a system. During provisioning, the primary OS may trigger provisioning operations on the secondary OS. The primary OS may establish a device-specific Certificate Authority (CA) for the device and send the CA certificate and CA key to the secondary OS. In some implementations, the provisioning process may occur during the manufacturing phase, with both OSs storing provisioning credentials when the device is manufactured. However, in some cases, these provisioning credentials may be deleted during an initialization process, such as a factory reset. Therefore, runtime provisioning operations may be used to regenerate and populate provisioning credentials in both OSs to ensure that both OSs can communicate with each other using Mutual Transport Layer Security (mTLS).

[0010] In some cases, to securely provide shared confidential information, such as provisioning credentials, to a secondary OS, the primary OS can generate a first transfer key and a random salt. The primary OS can send the random salt, wrapped by the first transfer key, to the secondary OS. The secondary OS can obtain the random salt using an unwrapping operation. The secondary OS can send the random salt back to the primary OS to confirm receipt. In some cases, the secondary OS sends back the size of the random salt to the secondary OS to acknowledge receipt. In some cases, the secondary OS performs a hash operation on the random salt and sends the hashed random salt back to the primary OS. Both the primary and secondary OSs can use the random salt to generate a second transfer key and communicate the provisioning credentials using the second transfer key. In some cases, an encoding algorithm can be used to secure the transmission of the random salt between the primary and secondary OSs. These approaches improve the security of the provisioning operation. Figures 1-5 and the relevant descriptions provide additional details of these implementations.

[0011] Figure 1 is a schematic diagram showing an exemplary communication system 100 that provides provisioning operations according to the implementation. At a high level, the exemplary communication system 100 includes a vehicle 120 which is communicatively coupled to a client device 122. The vehicle 120 is also communicatively coupled to a server 130 over 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., spaceplanes, space shuttles, space capsules, space stations, satellites, etc.), vessels (ships, boats, hovercraft, submarines, etc.), railway vehicles (trains, trams, etc.), and other types of vehicles, including any combination of any of the above, whether currently existing or having come into existence. In the illustrated example, vehicle 120 includes one or more sensors 102, a vehicle component controller 104, a vehicle system processor 106, a communication subsystem 116, a user interface 118, memory 114, and an operation device 150, which are connected to a bus 110.

[0013] In some cases, a vehicle may include one or more sensors. One or more sensors can generate inputs that reflect the surroundings or environment inside the vehicle, such as video or audio inputs. Exemplary sensors may include cameras, microphones, lasers, radar, ultrasonic sensors, light detection and ranging (LIDAR), or any other sensors.

[0014] Vehicle 120 includes one or more sensors 102 that detect or measure information about Vehicle 120. Exemplary sensors 102 may include sensors that capture environmental information outside of Vehicle 120, such as cameras, microphones, lasers, radar, ultrasonics, light detection, ranging (LIDAR), and similar devices. These sensors can provide environmental inputs to an automated processing platform operating on Vehicle 120 for automated decision-making. Exemplary sensors 102 also include devices that capture information inside Vehicle 120, such as monitors for components like the engine, battery, fuel, electrical system, cooling system, and similar devices. These sensors can provide operational status and warnings to an automated processing platform operating on Vehicle 120. Exemplary sensors 102 may also include automated sensors that can detect the sound level inside Vehicle 120. Automated sensors can determine the noise level inside Vehicle 120 or provide inputs to other signal processors that determine noise levels.

[0015] Vehicle 120 includes a vehicle component controller 104. Although illustrated as vehicle component controller 104 in Figure 1, vehicle 120 may include two or more vehicle component controllers 104. A vehicle component controller 104 represents a controller that controls the operation of components on vehicle 120. Exemplary components may include the engine, accelerator, brakes, radiator, battery, steering wheel, transmission system, cooling system, electrical system, entertainment system, and other components of vehicle 120. For example, a vehicle component controller 104 may control the speaker system of vehicle 120, including controlling volume, balance, fade, and optionally other settings for the audio output inside vehicle 120. A vehicle component controller 104 may automatically operate each component according to input from a vehicle system processor 106 or a combination thereof. In some implementations, a vehicle component controller 104 may include data processing equipment.

[0016] The vehicle system processor 106 may include one or more processing components (alternatively referred to as “processors” or “central processing units (CPUs)”) configured to execute instructions related to one or more processes, steps, or actions for an automated processing platform operating on the vehicle 120. Generally, the vehicle system processor 106 executes instructions and manipulates data to perform the operations of the automated processing platform. The vehicle system processor 106 can receive input from sensors 102 and generate commands for vehicle component controllers 104. In some cases, the vehicle system processor 106 can perform automated operations. In some cases, the vehicle system processor 106 may include data processing equipment.

[0017] The communication subsystem 116 can be configured to provide wireless or wired communication for data or to control information of the vehicle 120. For example, the communication subsystem 116 can support transmission via wireless local area networks (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 System for Mobile communication (GSM®), Interim Standard 95 (IS-95), Universal Mobile Communications System (UMTS), CDMA2000 (Code Division Multiple Access), Evolved Universal Mobile Communications System (E-UMTS), Long Term Evaluation (LTE), LTE-Advanced, 5G, or any other radio access technology. The communication subsystem 116 may 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, one or more of the following: a display or touchscreen display (e.g., a liquid crystal display (LCD), a light-emitting diode (LED), an organic light-emitting diode (OLED), or a microelectromechanical system (MEMS) display), a keyboard or keypad, a trackball, 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] Memory 114 can be a computer-readable storage medium. Exemplary memory 114 includes volatile and non-volatile memory, magnetic media, optical media, random-access memory (RAM), read-only memory (ROM), removable media, and others. Memory 114 can store the operating system (OS) of the vehicle 120 and various other computer executable software programs for performing one or more of the processes, steps, and actions described above.

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

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

[0022] In one exemplary operation, for example, turning on the vehicle 120 by an engine start operation can trigger a power-up of the operation device 150. When the operation device 150 is powered up, the first OS 152 is first started and begins runtime operation. The first OS 152 then starts the second OS 154. The first OS 152 can check whether a provisioning operation is required. A provisioning operation may be required because a provisioning operation has not been performed before or a re-provisioning operation is required. The first OS 152 establishes a mutual transport layer security (mTLS) relationship with the second OS 154 by communicating shared confidential information. In some implementations, the first OS 152 can initiate the provisioning process by sending a runtime-generated random salt wrapped in a first transport key to the second OS 154. The random salt can be used to generate a second transport key used to transmit provisioning authentication information. Figures 2-4 and the relevant descriptions provide additional details of these implementations. In some implementations, a module or application within the first OS152 can be configured to perform some or all of these provisioning operations.

[0023] As shown in the figure, bus 110 provides a communication interface to components of an automated processing platform operating on vehicle 120. In some cases, bus 110 can 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 other combination thereof that interacts with the vehicle 120. For example, the client device 122 may interact with the operation device 150 for infotainment operations. The client device 122 may be an electronic device that includes, 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 any other electronic device. An exemplary endpoint may include a mobile device, an IoT (Internet of Things) device, an EoT (Enterprise of Things) device, a cellular phone, a personal digital assistant (PDA), a smartphone, a laptop, a tablet, a personal computer (PC), a pager, a portable computer, a portable gaming device, a wearable electronic device, a health / medical / fitness device, a camera, or any other mobile communication device that has components for communicating voice or data over a wireless or wired communication network. An electronic device may also be a peripheral such as a headset, a remote controller, or a display. Electronic devices can connect to the vehicle 120 using short-range communication technology. Short-range communication technology can be wireless, such as BT, NFC, or WLAN. It can also be wired, such as USB.

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

[0026] An exemplary communication system 100 includes a network 140. The network 140 represents an application, a set of applications, software, software modules, hardware, or a combination thereof, which 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 comprise one or more radio access technologies. In some implementations, the radio access technology may be Global System for Mobile Communication (GSM®), Interim Standard 95 (IS-95), Universal Mobile Communications System (UMTS), CDMA2000 (Code Division Multiple Access), Evolutionary Universal Mobile Communications System (E-UMTS), Long Term Evaluation (LTE), LTE-Advanced, 5G, or any other radio access technology. In some examples, the core network may be an Evolutionary Packet Core (EPC).

[0027] Although the elements in Figure 1 are shown to include various constituent parts, parts, or modules that implement various features and functionalities, these elements may, if necessary, instead include numerous submodules, third-party services, components, libraries, etc. Furthermore, the features and functionalities of various components can be combined into fewer components as needed.

[0028] Furthermore, although the processes and methods described herein are described using vehicle 120 in Figure 1 as an example, these processes and methods can also be used in other non-vehicle devices, where two operating systems run on the same device and communicate shared confidential information in the provisioning process. Moreover, the processes and methods can be used between two operating systems on different devices to communicate shared confidential information in the provisioning process.

[0029] Figure 2 is a flowchart illustrating an exemplary process 200 of provisioning operations, according to the implementation. Process 200 can be implemented by one or more entities shown in Figure 1, or by any other system or module that provides the provisioning operation. For example, process 200 can be implemented by the first OS 152 and the first OS 154 illustrated in Figure 2. The exemplary process 200 shown in Figure 2 can be implemented with additional operations, fewer operations, or different operations, which may be performed in the order shown or different orders.

[0030] An exemplary process 200 is initiated in step 202, triggering the provisioning process. In some implementations, process 200 can be triggered by the startup of a first OS 152. When the first OS 152 starts, it can check the provisioning storage to determine if some or all of the provisioning credentials are stored. As will be described later in step 232, the provisioning credentials may include entity keys, CA keys, entity certificates or CA certificates, or any combination thereof. In some implementations, these provisioning credentials are stored in specific storage so that they are accessible to a second OS 154. If the provisioning credentials are stored, the first OS 152 then checks whether these provisioning credentials are valid. The first OS 152 may determine whether these provisioning credentials are valid by attempting a cryptographic operation using them. Examples of cryptographic operations include encryption or decryption operations. Encryption or decryption operations may be based on the Advanced Encryption Standard (AES). If the cryptographic operation is successfully set up and proceeds to the next step, then the provisioning credentials are valid.

[0031] If the provisioning credentials are not stored or are invalid, the first OS152 proceeds to step 210 and starts the provisioning process.

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

[0033] In the illustrated example, the provisioning process is initiated by the first OS152. Alternatively, and in combination, the second OS154 can also initiate the provisioning process. For example, if the second OS154 determines that provisioning credentials are not available, it can send a provisioning request to the first OS152, triggering step 210.

[0034] In step 210, the first OS152 generates a first transfer key. In some implementations, the first transfer key can be generated based on a passphrase and a first salt. The passphrase is confidential and shared between the first OS152 and the second OS154. An example of a passphrase can be a password. The first salt is a fixed value accessible to both the first OS152 and the second OS154. An example of a first salt value can be a random or pseudo-random value. In some cases, the first salt can be generated by the manufacturer of the devices running the first OS152 and the second OS154. The first salt can be stored on a device accessible to both the first OS152 and the second OS154. In some cases, the first salt can be identical for multiple devices manufactured by the same manufacturer.

[0035] The first transfer key can be generated by using a key derivation function or key generation API as input, along with a passphrase and a first salt. Examples of key derivation functions or key generation APIs include the OpenSSL API or the EnVeloPe Key Derivation Function (EVP KDF).

[0036] In some cases, the first transfer key can be further processed by using a hash function. For example, the Secure Hash Algorithm 256-bit (SHA256 algorithm) can be applied to the first transfer key to extend it to 256 bits. Other hash functions can also be used.

[0037] The first OS152 also generates a random salt in step 210. The random salt can be generated by using a pseudorandom number generator. Since the random salt is generated at each runtime when process 200 is performed, and therefore unlike the first salt described earlier, the random salt is different for each device and different for each time the provisioning process is performed.

[0038] In step 212, the first OS152 sends a random salt wrapped with the first transfer key to the second OS154. The first OS152 performs a wrapping operation by using the first transfer key to generate ciphertext from the random salt input, and then sends the ciphertext to the second OS154.

[0039] In some cases, data communication between the first OS152 and the second OS154 can be implemented by using a memory transfer protocol such as Hypervisor ABstraction (HAB). Alternatively, or in combination, data communication between the first OS152 and the second OS154 can be implemented by other standardized communication protocols, such as the Transfer Control Protocol (TCP) or proprietary communication protocols.

[0040] At 220, the second OS154 receives the wrapped random salt and performs an unwrapping function to obtain the random salt. As previously described, the second OS154 has access to the same passphrase and first salt that the first OS152 used to generate the first transfer key. Therefore, the second OS154 can also use the passphrase and first salt to generate the first transfer key, and can use the first transfer key to unwrap the received wrapped random salt in order to obtain the random salt.

[0041] At step 222, the second OS154 sends a first response to the first OS152. The first response includes the random salt that has been decoded from step 220. By sending the decoded random salt back to the first OS152, the second OS154 indicates to the first OS152 that the random salt has been successfully received and decoded. Alternatively, or in addition, the second OS154 may send the size of the random salt to the first OS152 to acknowledge receipt of the random salt.

[0042] In some implementations, before sending the random salt in 222, a second OS154 can process the random salt by using a hash function. For example, the Secure Hash Algorithm 256-bit (SHA256) algorithm can be applied to the random salt to extend it to 256 bits. Other hash functions can also be used. Sending a hashed random salt can improve the security of the information being transmitted.

[0043] In some cases, to further enhance the security of the transmission between the first OS152 and the second OS154, an encoding scheme can be applied to the data being transmitted in step 212, step 222, or both. Figure 3 shows an exemplary encoding scheme 300 according to the implementation.

[0044] As shown in Figure 1, the input data 310 is encoded to generate encoded data 320. The encoded data is organized into one or more block groups. Each block group, for example block group 330, contains the 0th block 332. The 0th block 332 is a bitmask that indicates whether each of the remaining blocks in block group 330 is a data block or a filler block. In the illustrated example, the bitmask contains 8 bits, with the 1st, 3rd, 4th, and 6th bits set to "1", which indicates that the corresponding blocks, namely blocks 1, 3, 4, and 6, are data blocks. The rest of the blocks are filler blocks. The input data 310 can fill the data blocks sequentially, starting with block 1, then continuing with blocks 3, 4, and 6, skipping the filler blocks. Filler blocks can be filled with "1", "0", or randomly generated bits. After filling block group 330 with data blocks, if additional data exists in the input data 310, a second block group may be included. The second block group also begins with a bitmask block to indicate whether each remaining block in the second block group is a data block or a filler block. This process can be repeated until all input data 310 is included in the encoded data 320. In the illustrated example, each bitmask has 8 bits, and each block group has 9 blocks (8 blocks corresponding to each bit in the bitmask plus a bitmask block), and each block can be a byte. The size of the blocks and the size of the block groups can also be other numbers.

[0045] In some cases, bitmasks can be generated by using a random function. The bitmasks within each block group can be identical or different.

[0046] In some implementations, the encoded data 320 may also include an indicator 322. The indicator 322 can indicate a sequence of orders. For example, bits in the indicator 322 can be set to "0" to indicate the normal order and to "1" to indicate the reverse order. Alternatively, the indicator 322 can be a byte set to "0" to indicate the normal order and to "255" to indicate the 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 in addition, 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 in addition, the normal order can indicate that the indicator bits in the bitmask are consecutive, with the first bit corresponding to the first block after the bitmask, while the reverse order can indicate that the indicator bits in the bitmask are in reverse order, with the first bitmask corresponding to the last block in the block group. Alternatively, or in addition, the normal order can indicate that the indicator bits in the bitmask are set to "1" to represent data blocks and "0" to represent filler blocks, while the reverse order can indicate that the indicator bits in the bitmask are set to "0" to represent data blocks and "1" to represent filler blocks. In some cases, indicator 322 may contain multiple bits to indicate different kinds of orders as previously described. For example, one bit may indicate an order within a block group, another bit may indicate an order between block groups, and one or two more bits may indicate an order in a bitmask as previously described.In some implementations, indicator 322 or each bit within indicator 322 can be randomly generated.

[0047] The encoded scheme in Figure 3 can be used in step 212, and the wrapped random salt is encoded by using the encoded scheme. A data length indicator can 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 to obtain the wrapped random salt according to the indicators 322 in each block group and the first block 332. The second OS 154 then further decodes the wrapped random salt by unwrapping it with the first transfer key to obtain the random salt.

[0048] Alternatively, or in addition, the encoded scheme in Figure 3 may be used in step 222 to transmit a first response containing a random salt. A data length indicator may also be transmitted in step 222 to indicate the size of the input data before encoding.

[0049] Returning to Figure 2, in step 230, the first OS152 receives the first response and determines whether the data in the first response matches the random salt. If the first response is encoded using the encoded scheme in Figure 3, the first OS152 uses indicator 322 and the 0th block 332 in each block group to obtain the data in the first response. In some cases, as previously described, the data in the first response can be a hashed random salt. In some cases, the first OS152 can also perform hashing on the random salt using the same hashing function and compare the hashed result with the data in the first response. If the hashed result matches the data in the first response, the first OS152 can then conclude that the second OS154 has successfully obtained the random salt sent in step 212. Alternatively, the data in the first response can include the random salt without any hashing operation. In this case, the first OS152 can compare the data using the random salt to determine whether the second OS154 successfully obtained the random salt.

[0050] If the match is not successful, the first OS152 can return to step 210, generate another random salt, and repeat steps 212 through 222.

[0051] If the match is successful, then both the first OS152 and the second OS154 can use this random salt to generate the second transfer key. In some implementations, the second transfer key can be generated by using a key derivation function or key generation API with the passphrase (used in step 210 to generate the first transfer key) and the random salt as input. Examples of key derivation functions or key generation APIs include the OpenSSL API or EVP KDF. The second transfer key can be used to wrap provisioning credentials for transmission by the first OS152.

[0052] The first OS152 may generate provisioning credentials in response to finding a successful match in step 230. Alternatively, or in combination, some or all of the provisioning credentials may be generated before the successful match in step 230, for example, during step 210 or after step 212.

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

[0054] In step 232, the first OS152 sends provisioning credentials to the second OS154. The provisioning credentials are wrapped with the second transfer key. The first OS152 performs a wrapping operation by using the second transfer key to generate ciphertext from the provisioning credentials, and the ciphertext is then sent to the second OS154. The second OS154 obtains the provisioning credentials by using an unwrapping operation to unwrap the received ciphertext using the second transfer key.

[0055] In some cases, the type of provisioning credentials generated and the type of provisioning credentials being transmitted depend on specific security operations involved in the provisioning process. In one implementation, a device CA is provisioned by a first OS152. The first OS152 can send the CA private key and CA credentials to a second OS154 in one transmission or in separate transmissions. The second OS154 can instantiate and use the CA based on the received CA private key and CA credentials to generate an entity certificate for an entity, for example, an operating device 150. In some cases, each endpoint of a connection can be called an entity.

[0056] In other implementations, entity key pairs can be created in the first OS152 and the second OS154. In this case, the first OS152 sends the entity certificate to the second OS154. In yet another implementation, the third-party CA certificate is transmitted between the first OS152 and the second OS154, or vice versa, depending on which OS has internet access and which does not.

[0057] Figure 4 is a flowchart illustrating an exemplary method 400 of provisioning operations, according to its implementation. Method 400 can be implemented by one or more entities shown in Figure 1, or by any other system or module that provides the provisioning operation. For example, Method 400 can be implemented by the operation device 150 illustrated in Figure 1. The exemplary method 400 shown in Figure 4 can be implemented using additional operations, fewer operations, or different operations, which may be performed in the order shown or in a different order.

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

[0059] Figure 5 illustrates a high-level architectural block diagram of computer 500, according to its implementation. Computer 500 can be implemented as an operating device 150, a client device 122, a server 130, or any combination thereof. Computer 500 can also be used to implement the operations described in Figures 1-4. The diagrams shown are the only possible implementations of the subject matter described, and this disclosure is not intended to limit itself to a single described implementation. Those skilled in the art will understand that the components described can be connected, combined, and / or used in alternative ways consistent with this disclosure.

[0060] In some cases, the code package establishment process algorithm can be implemented in executable computing code, such as C / C++ executable code. In some cases, computer 500 may include a standalone Linux® system for running batch applications. In some cases, computer 500 may include a mobile or personal computer.

[0061] Computer 500 may include input devices such as a keypad, keyboard, touchscreen, microphone, voice recognition device, and other devices capable of receiving user information, as well as / or output devices that transmit information relating to the operation of the computer or GUI, including digital data, visual and / or auditory information.

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

[0063] At a high level, Computer 500 is an electronic computing device capable of receiving, transmitting, processing, storing, or managing data. According to some implementations, Computer 500 may also include, or be communicatively combined with, application servers, e-mail servers, web servers, caching servers, streaming data servers, business intelligence (BI) servers, and / or other servers.

[0064] Computer 500 can collect data on network events or mobile application usage events across network 110 from a web browser or client application, such as an installed plug-in. In addition, data can be collected by computer 500 from internal users (e.g., from a command console or by other appropriate access methods), external or third-party, other automated applications, and any other appropriate entities, individuals, systems, or components.

[0065] Each component of computer 500 can communicate using the system bus 512. In some implementations, any and / or all components of computer 500, both hardware and / or software, can interface with each other and / or interface 502 via the system bus 512 using the Application Programming Interface (API) 508 and / or service layer 510. The API 508 may include specifications for routines, data structures, and object classes. The API 508 may be either computer language independent or dependent and may refer to a complete interface, a single function, or a set of APIs. The service layer 510 provides software services to computer 500. The functionality of computer 500 may be accessible to all service consumers using this service layer. Software services such as those provided by the service layer 510 provide reusable, defined business functionality through defined interfaces. For example, an interface may be software written in Java®, C++, or other suitable language, and provide data in Extensible Markup Language (XML) format or other suitable format. While API 508 and / or Service Layer 510 are illustrated as integrated components of Computer 500, alternative implementations may illustrate API 508 and / or Service Layer 510 as standalone components related to other components of Computer 500. Furthermore, any or all components of API 508 and / or Service Layer 510 may be implemented as child modules or submodules of other software modules, enterprise applications, or hardware modules without departing from the scope of this disclosure.

[0066] Computer 500 includes interface 502. Although illustrated as a single interface 502 in Figure 5, two or more interfaces 502 may be used depending on the specific needs, requirements, or implementation of computer 500. Interface 502 is used by computer 500 to communicate with other systems in a distributed environment connected to a network (whether or not illustrated). Generally, interface 502 comprises logic that is encoded in software and / or hardware in a suitable combination and is capable of operating to communicate with the network. More specifically, interface 502 may comprise software that supports one or more communication protocols related to the communication, so that the hardware or interface hardware is capable of operating to communicate physical signals inside and outside computer 500.

[0067] Computer 500 includes at least one processor 504. Although illustrated as a single processor 504 in Figure 5, two or more processors may be used depending on the specific needs, requirements, or implementation of the computer. Generally, the processor 504 executes instructions and manipulates data in order to perform the operation of computer 500. Specifically, the processor 504 performs the functionalities disclosed in Figures 1-4.

[0068] Computer 500 also includes memory 514 for holding data for computer 500. Although illustrated as a single memory 514 in Figure 5, two or more memories may be used depending on the specific needs, requirements, or implementation of computer 500. While memory 514 is illustrated as an integrated component of computer 500, in alternative implementations, memory 514 may be located outside of computer 500.

[0069] Application 506 is an algorithmic software engine that provides functionality that conforms to the specific needs, requirements, or specific implementation of computer 500, particularly with respect to the functionality required for anomaly detection. Although illustrated as a single application 506, application 506 can be implemented on computer 500 as multiple applications 506. In addition, although illustrated as an integration with computer 500, in alternative implementations, application 506 can reside outside of computer 500.

[0070] Any number of computers 500 may be involved with the network or located outside the network and communicating through the network. Furthermore, this disclosure considers that many users may use one computer 500, or that one user may use many computers 500.

[0071] The implementation described for a subject may include one or more features, either individually or in combination.

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

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

[0074] The first feature is that it can be combined with any of the following features, and the provisioning credentials consist of at least one of the following: the Certificate Authority's (CA) private key or the CA's credentials.

[0075] The second feature, which can be combined with any of the preceding or following features, is that the first OS receives a first response from the second OS, the first response comprising data, and the first OS further determines that the data in the first response matches a random salt.

[0076] The third feature is that can be combined with any of the previous or following features, where the data comprises a bitmask, and each bit of the bitmask indicates whether the corresponding byte contains data or filler.

[0077] The fourth feature is one that can be combined with any of the previous or subsequent features and includes an indicator that the data points to either a continuous or reverse order.

[0078] The fifth feature can be combined with any of the previous or subsequent features, and whether the data matches the random salt is determined by running a hashing function on the random salt to generate a hash result and by determining whether the hash result matches the data.

[0079] The sixth feature is that it can be combined with any of the previous features, and that the first and second operating systems run on the same device, and that the first and second operating systems perform the Multi-Transport Layer Security (mTLS) process.

[0080] In the second implementation, the computer-readable medium contains instructions that cause an electronic device to perform an action when it is running, the action including generating a first transfer key by a first operating system (OS), sending a random salt from the first OS to a second OS using the first transfer key, generating a second transfer key by the first OS using the random salt, and sending provisioning credentials from the first OS to the second OS using the second transfer key.

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

[0082] The first feature is that it can be combined with any of the following features, and the provisioning credentials include at least one of the following: a Certificate Authority (CA) private key or a CA certificate.

[0083] The second feature is combinable with any of the preceding or following features, wherein the operation is such that the first OS receives a first response from the second OS, the first response comprising data, and the first OS determines that the data in the first response matches a random salt.

[0084] The third feature is that can be combined with any of the previous or following features, where the data comprises a bitmask, and each bit of the bitmask indicates whether the corresponding byte contains data or filler.

[0085] The fourth feature is one that can be combined with any of the previous or subsequent features and includes an indicator that the data points to either a continuous or reverse order.

[0086] The fifth feature can be combined with any of the previous or subsequent features, and whether the data matches the random salt is determined by running a hashing function on the random salt to generate a hash result and by determining whether the hash result matches the data.

[0087] The sixth feature is that it can be combined with any of the previous features, and that the first and second operating systems run on the same device, and that the first and second operating systems perform the Multi-Transport Layer Security (mTLS) process.

[0088] In the third implementation, the computer implementation system comprises one or more computers and one or more computer memory devices having tangible, non-temporary, machine-readable media that are interoperably coupled with one or more computers and store one or more instructions, the instructions performing one or more operations when executed by one or more computers, the operations including generating a first transfer key by a first operating system (OS), sending a random salt from the first OS to a second OS using the first transfer key, generating a second transfer key by the first OS using the random salt, and sending provisioning credentials from the first OS to the second OS using the second transfer key.

[0089] The aforementioned and other described implementations may optionally include one or more of the following features:

[0090] The first feature is that it can be combined with any of the following features, and the provisioning credentials include at least one of the following: a Certificate Authority (CA) private key or a CA certificate.

[0091] The second feature is combinable with any of the preceding or following features, and the operation further includes the first OS receiving a first response from the second OS, the first response comprising data, and the first OS determining that the data in the first response matches a random salt.

[0092] The third feature is that can be combined with any of the previous or following features, where the data comprises a bitmask, and each bit of the bitmask indicates whether the corresponding byte contains data or filler.

[0093] The fourth feature is one that can be combined with any of the previous or subsequent features and includes an indicator that the data points to either a continuous or reverse order.

[0094] The fifth feature can be combined with any of the previous or subsequent features, and whether the data matches the random salt is determined by running a hashing function on the random salt to generate a hash result and by determining whether the hash result matches the data.

[0095] The sixth feature is that it can be combined with any of the previous features, and that the first and second operating systems run on the same device, and that the first and second operating systems perform the Multi-Transport Layer Security (mTLS) process.

[0096] Implementations of the subject matter and functional operations described herein may be implemented in digital electronic circuits, in tangibly embodied computer software or firmware, in computer hardware including structures disclosed herein and their structural equivalents, or in one or more combinations thereof. A software implementation of the subject matter described herein may be implemented as one or more computer programs, which are modules of one or more computer program instructions encoded on a tangible, non-temporary computer-readable medium for execution by a computer or computer implementation system, or for controlling the operation of a computer or computer implementation system. Alternatively, or in addition, program instructions may be encoded in / on artificially generated propagating signals, such as mechanically generated electrical, optical, or electromagnetic signals generated to encode information for transmission to a receiving device for execution by a computer or computer implementation system. Computer storage media may be machine-readable storage devices, machine-readable storage boards, random or serial access memory devices, or a combination of computer storage media. Configuring one or more computers means that one or more computers have hardware, firmware, or software (or a combination of hardware, firmware, or software) installed on them, and that a particular computing operation is performed when the software is run by one or more computers. Computer storage media, however, are not propagating signals.

[0097] The terms “real-time,” “real (first)time” (RFT), “near(ly) real-time” (NRT), “quasi real-time,” or similar terms (as understood by those skilled in the art) mean that the action and response are in such close temporal proximity that an individual perceives the action and response as occurring substantially simultaneously. For example, the time difference between an action by an individual accessing data and a response to the display of the data (or the initiation of the display) can be less than 1 millisecond (ms), less than 1 second (s), or less than 5 seconds. When requested data does not need to be displayed (or initiated for display) instantaneously, it is displayed (or initiated for display) without any intentional delay, taking into account the computing system described and, for example, the time constraints required to collect, accurately measure, analyze, process, store, or transmit the data.

[0098] The terms “data processing device,” “computer,” “computing device,” or “electronic computer device” (or equivalent terms as understood by those skilled in the art) refer to data processing hardware and encompass all types of devices, machines, and equipment for processing data, including, for example, programmable processors, computers, or multiprocessors or computers. A computer is, or may also include, a special-purpose logic circuit, 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 computer implementation system, or a special-purpose logic circuit (or a computer or computer implementation system, or a combination of special-purpose logic circuits) can be hardware-based or software-based (or a combination of both hardware and software-based). A computer may optionally include code that creates an execution environment for computer programs, such as processor firmware, protocol stacks, database management systems, operating systems, or code that constitutes a combination of execution environments. This disclosure considers the use of a computer or computer implementation system having an operating system, such as LINUX®, UNIX®, WINDOWS®, MAC OS®, ANDROID®, or IOS, or a combination of operating systems.

[0099] Computer programs, also called or described as programs, software, software applications, units, modules, software modules, scripts, code, or other components, can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and can be deployed in any form for use in a computing environment, for example, including standalone programs, modules, components, or subroutines. Computer programs can correspond to files in a file system, although this is not always necessary. A program can be stored in a part of a file that holds other programs or data, for example, in a markup language document, in a single file dedicated to the program in question, or in one or more scripts stored in a number of coordinated files (for example, a file that stores one or more modules, subprograms, or parts of code). Computer programs can be deployed to run on one or more computers, and they can be located at one site or distributed across many sites and interconnected by a communication network.

[0100] While parts of a program illustrated in various diagrams can be illustrated as individual components, such as units or modules, that implement the described features and functionalities using various objects, methods, or other processes, a program may instead include subunits, submodules, third-party services, components, libraries, and other components as needed. Conversely, the features and functionalities of various components may be combined into a single component as needed. Thresholds used to make computational decisions can be determined statically, dynamically, or both statically and dynamically.

[0101] The methods, processes, or logic flows described represent one or more examples of functionality conforming to the disclosure and are not intended to limit the disclosure to implementations described or illustrated, but are intended to give the maximum conforming range of the principles and features described. The methods, processes, or logic flows described may be performed by one or more programmable computers running one or more computer programs to perform their functions by operating on input data and generating output data. The methods, processes, or logic flows may also be performed by special-purpose logic circuits, such as CPUs, FPGAs, or ASICs, and computers may also be implemented as special-purpose logic circuits.

[0102] A computer for executing computer programs can be based on a general-purpose or special-purpose microprocessor, both, or other types of CPUs. Generally, a CPU will receive instructions and data from memory and write them to memory. Essential elements of a computer are a CPU for making or executing instructions, as well as one or more memory devices for storing instructions and data. Generally, a computer will also include one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, and will be operablely coupled for receiving data from or transferring data from the mass storage devices, or both. However, a computer does not necessarily have to have such devices. Furthermore, a computer can be embodied in other devices, such as mobile telephones, personal digital assistants (PDAs), mobile audio or video players, game consoles, Global Positioning System (GPS) receivers, or portable memory storage devices (for example, to name a few, Universal Serial Bus (USB), flash drives).

[0103] Non-temporary computer-readable media for storing computer program instructions and data can include all forms of persistent / non-persistent or volatile / non-volatile memory, media, and memory devices, including, for 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 tapes, cartridges, cassettes, internal / removable disks), magneto-optical disks, and optical memory devices such as digital multi-purpose / video discs (DVDs), compact discs (CDs) ROMs, DVD+ / -R, DVD-RAM, DVD-ROMs, high-resolution / high-density (HD)-DVDs, and Blu-ray® / Blu-ray® discs (BDs), and other optical memory technologies. Memory can store a variety of objects or data, including caches, classes, frameworks, applications, modules, backup data, jobs, web pages, web page templates, data structures, database tables, repositories for storing dynamic information, or other appropriate information including arbitrary parameters, variables, algorithms, instructions, rules, constraints, or references. In addition, memory may include other appropriate data such as logs, policies, security or access data, or report files. The processor and memory can be complemented by or incorporated into special-purpose logic circuits.

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

[0105] The term "graphical user interface (GUI)" can be used singly or plural to describe one or more graphical user interfaces, and each of the displays of a particular graphical user interface. Therefore, GUI can represent, but is not limited to, any graphical user interface, including web browsers, touchscreens, or command-line interfaces (CLIs) that process information and efficiently display the results to the user. Generally, GUI can include some or all of the numerous user interface (UI) elements related to web browsers, such as interactive fields, pull-down lists, and buttons. These and other UI elements may be related to or represent the functionality of the web browser.

[0106] An implementation of the subject matter described herein may be implemented in a computing system, which may include, for example, backend components such as a data server, or middleware components such as an application server, or frontend components such as a client computer having a graphical user interface or a web browser through which a user can interact with the implementation of the subject matter described herein, or any combination of one or more such backend, middleware, or frontend components. The components of the system may be interconnected by wired or wireless digital data communication (or a combination of data communication), for example, any form or medium of a communication network. Examples of communication networks include local area networks (LANs), radio access networks (RANs), metropolitan area networks (MANs), wide area networks (WANs), global interoperability microwave access (WiMAX), and wireless local area networks (WLANs), and may use, for example, 802.11x or other protocols, all or part of the internet, other communication networks, or a combination of communication networks. Communication networks can communicate, for example, with Internet Protocol (IP) packets, Frame Relay frames, Asynchronous Transfer Mode (ATM) cells, voice, video, data, or other information between network nodes.

[0107] A computing system can include clients and servers. Clients and servers are generally geographically separated from each other and typically interact through a communication network. The client-server relationship arises from the advantages of computer programs running on each computer that have a client-server relationship with one another.

[0108] In some implementations, any or all components of a computing system, both hardware and / or software, may interface with each other, and / or may interface using APIs and / or a service layer. APIs may include specifications, data structures, and object classes for routines. APIs may be either language-independent or language-dependent and may refer to a complete interface, a single function, or a set of APIs. The service layer provides software services to the computing system. The functionality of various components of the computing system may be accessible to all service consumers through this service layer. Software services provide reusable, defined business functionality through defined interfaces. For example, an interface may be software written in Java®, C++, or XML format, or other suitable language, providing data in that format. APIs and / or the service layer may be integrated components and / or standalone components related to other components of the computing system. Furthermore, any or all components of the service layer may be implemented as child modules or submodules of other software modules, enterprise applications, or hardware modules, without departing from the scope of this disclosure.

[0109] This specification contains many specific implementation details, but these should not be interpreted as limitations on the scope of any inventive concept or claimable scope, but rather as descriptions of features that may be specific to a particular implementation of a particular inventive concept. Certain features described herein in the context of another implementation may also be implemented in a single implementation or in combination. Conversely, various features described in the context of a single implementation may also be implemented in multiple implementations, separately or in any subcombinations. Furthermore, features previously described may be described as operating in a certain combination and initially claimed as such, but in some cases one or more features from the claimed combination may be excluded from the combination, and the claimed combination may be directed towards a subcombination or a variation of a subcombination.

[0110] A specific implementation of the subject is described. Other implementations, alternatives, and substitutions of the described implementations are within the following claims, as will be apparent to those skilled in the art. Although the operations are depicted in a specific order in the drawings or claims, this should not be understood as requiring that such operations be performed in a specific order or sequence shown, or that all illustrated operations be performed (some operations may be arbitrarily conceivable), in order to achieve the desired result. In some cases, multitasking or parallel processing (or a combination of multitasking and parallel processing) may be performed, if it is deemed useful and appropriate.

[0111] The separation or integration of various system modules and components in previously described implementations should not be understood as requiring such separation or integration in all implementations. Rather, the described program components and systems can generally be integrated together in a single software product or packaged into a number of software modules.

[0112] Accordingly, the exemplary implementations previously described do not define or restrict this disclosure. Other modifications, substitutions, and alternatives are also possible without exceeding the scope of this disclosure.

[0113] Furthermore, any requested implementation is considered applicable to a computer system having at least a computer implementation method, a non-temporary computer-readable medium storing computer-readable instructions for performing the computer implementation method, and computer memory interoperably coupled with a hardware processor configured to perform the computer implementation method or instructions stored on the non-temporary computer-readable medium.

Claims

1. A method performed by one or more computers running a first operating system (OS) and a second operating system (OS), wherein the method is: The one or more computers mentioned above generate a first transfer key, The one or more computers transmit a random salt from the first OS to the second OS, wherein the random salt is wrapped in the first transfer key. The one or more computers generate a second transfer key based on the random salt, The one or more computers receive a first response from the second OS, wherein the first response comprises data, the data comprises a bitmask, and each bit of the bitmask indicates whether the corresponding byte comprises data or filler. The one or more computers determine that the data in the first response matches the random salt, The one or more computers transmit provisioning authentication information from the first OS to the second OS, wherein the provisioning authentication information is wrapped in the second transfer key. Methods that include...

2. The method according to claim 1, wherein the provisioning authentication information comprises at least one of the private key of a Certificate Authority (CA) or the certificate of the CA.

3. The method according to claim 1, wherein the data includes an indicator that points to one of a continuous order or a reverse continuous order.

4. The method according to claim 1, wherein whether the data matches the random salt is determined by generating a hash result by executing a hash function on the random salt and determining whether the hash result matches the data.

5. The method according to claim 1, wherein the first OS and the second OS operate on the same device, and the first OS and the second OS execute a multi-transport layer security (mTLS) process.

6. A non-temporary computer-readable medium, the non-temporary computer-readable medium containing instructions, which, when executed by one or more computers, cause the one or more computers to perform a plurality of operations, and the one or more computers are configured to run a first operating system (OS) and a second operating system (OS). The aforementioned multiple operations are, The one or more computers mentioned above generate a first transfer key, The one or more computers transmit a random salt from the first OS to the second OS, wherein the random salt is wrapped in the first transfer key. The one or more computers generate a second transfer key based on the random salt, The one or more computers receive a first response from the second OS, wherein the first response comprises data, the data comprises a bitmask, and each bit of the bitmask indicates whether the corresponding byte comprises data or filler. The one or more computers determine that the data in the first response matches the random salt, The one or more computers transmit provisioning authentication information from the first OS to the second OS, wherein the provisioning authentication information is wrapped in the second transfer key. Non-temporary computer-readable media, including [specific media].

7. The non-temporary computer-readable medium according to claim 6, wherein the provisioning authentication information comprises at least one of the private key of a Certificate Authority (CA) or the certificate of the CA.

8. The non-temporary computer-readable medium according to claim 6, comprising an indicator that points to one of a continuous sequence or a reverse continuous sequence of data.

9. The non-temporary computer-readable medium according to claim 6, wherein whether the data matches the random salt is determined by generating a hash result by executing a hashing function on the random salt and determining whether the hash result matches the data.

10. The non-temporary computer-readable medium according to claim 6, wherein the first OS and the second OS operate on the same device, and the first OS and the second OS execute a multi-transport layer security (mTLS) process.

11. A computer implementation system, wherein the computer implementation system is One or more computers, One or more computer memory devices interoperably coupled with the one or more computers, wherein the one or more computer memory devices have a tangible, non-temporary, machine-readable medium storing one or more instructions. Equipped with, When one or more instructions are executed by one or more computers, they perform one or more operations, and the one or more computers are configured to run a first operating system (OS) and a second operating system (OS). The one or more of the aforementioned actions are The one or more computers mentioned above generate a first transfer key, The one or more computers transmit a random salt from the first OS to the second OS, wherein the random salt is wrapped in the first transfer key. The one or more computers generate a second transfer key based on the random salt, The one or more computers receive a first response from the second OS, wherein the first response comprises data, and the data comprises an indicator pointing to one of a continuous sequence or a reverse continuous sequence. The one or more computers determine that the data in the first response matches the random salt, The one or more computers transmit provisioning authentication information from the first OS to the second OS, wherein the provisioning authentication information is wrapped in the second transfer key. A computer-implemented system including this.

12. The computer implementation system according to claim 11, wherein the provisioning authentication information comprises at least one of the private key of a Certificate Authority (CA) or the certificate of the CA.

13. The computer implementation system according to claim 11, wherein the data comprises a bitmask, each bit of the bitmask indicating whether the corresponding byte comprises data or filler.

14. The computer implementation system according to claim 11, wherein whether the data matches the random salt is determined by generating a hash result by executing a hash function on the random salt and determining whether the hash result matches the data.

15. The computer implementation system according to claim 11, wherein the first OS and the second OS operate on the same device, and the first OS and the second OS execute a multi-transport layer security (mTLS) process.

16. The method according to claim 1, wherein the provisioning authentication information comprises at least one of an entity secret key or an entity public key.

17. The method according to claim 1, wherein the provisioning authentication information comprises at least one of an entity certificate or a key encryption key.

18. The computer implementation system according to claim 11, wherein the provisioning authentication information comprises at least one of an entity secret key or an entity public key.

19. The computer implementation system according to claim 11, wherein the provisioning authentication information comprises at least one of an entity certificate or a key encryption key.

20. The provisioning authentication information comprises at least one of an entity secret key or an entity public key in the non-temporary computer-readable medium according to claim 6.

Citation Information

Patent Citations

  • Vehicle communication system and method of security communication therefor

    US20210119800A1

  • Cross platform credential sharing

    US20230098097A1

  • Secure importation of cryptographic credentials to an information handling system

    US20230130256A1

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

    WO2009044461A1

  • Adaptive acceleration of transport layer security

    WO2023107233A1