Virtual subscriber identity module distribution
By leveraging HSM and container group technologies through a virtual SIM distribution server, efficient and secure SIM distribution is achieved, solving the challenges of seamless authentication and large-scale SIM distribution in existing technologies, and supporting rapid authentication and data exchange among multiple client devices.
Patent Information
- Application Number
- CN202480021100.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-02-24
- Filing Date
- 2024-02-22
- Publication Date
- 2025-11-14
AI Technical Summary
There is a lack of efficient, secure and seamless virtual SIM distribution solutions in the current technology, which poses a challenge, especially when it comes to the rapid authentication and data exchange of a large number of devices in the context of the Internet of Things.
A virtual SIM distribution server is provided, which uses a hardware security module (HSM) to store SIM data, dynamically allocates SIMs through container groups, supports efficient and secure authentication of multiple client devices, and achieves seamless SIM data exchange through a network communication interface.
It achieves efficient, secure and seamless SIM distribution, supports rapid authentication and data exchange for a large number of devices, reduces reliance on physical SIM cards, improves system flexibility and security, and complies with operator network standards.
Smart Images

Figure CN120958860A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to the field of computer programs and systems, and more particularly to servers, client devices, and methods for distributing Virtual Subscriber Identity Modules (SIMs). Background Technology
[0002] Numerous systems and procedures are available on the market for authenticating devices and authorizing telecommunications for network operators. A SIM card is an integrated circuit (IC) designed to securely store an International Mobile Subscriber Identity (IMSI) number and its associated keys, used to identify and authenticate subscribers on devices such as mobile phones. SIM cards are typically made of PVC with embedded contacts and semiconductors. All data included in the SIM card (also known as SIM data) is housed within a Universal Integrated Circuit Card (UICC), with the SIM as its primary component. Due to language misuse, the term SIM can refer to the UICC, and the term "SIM card" refers to the entire unit, not just the UICC.
[0003] Other SIM technologies include embedded SIM (eSIM). An eSIM is an integrated circuit that is directly soldered to a printed circuit board connected to a device or mobile device and cannot be removed from the device. Standards are provided for the easy reprogramming of eSIMs using new SIM data.
[0004] Against this backdrop, there is still a need for improved virtual SIM distribution solutions. Summary of the Invention
[0005] Therefore, a Virtual Subscriber Identity Module (SIM) distribution server is provided. The server includes a network communication interface. The server also includes a memory storing one or more SIMs. Each SIM contains confidential data, identification data, and operational data. The memory includes a Hardware Security Module (HSM) that stores corresponding data for each corresponding SIM. The corresponding data at least includes the confidential data of the corresponding SIM. Additionally, the server includes a processor coupled to the network communication interface and the HSM. The processor is configured to access the memory to selectively retrieve each SIM. Accessing the memory includes accessing the HSM to selectively retrieve the corresponding data of each SIM stored on the HSM. The processor is also configured to create and execute multiple pods. Each pod contains a scheduler and multiple SIMs retrieved from the memory. The processor is also configured to receive SIM allocation requests via the network communication interface. The processor is further configured to immediately select a corresponding pod upon receiving the SIM allocation request via the network communication interface. The processor is also configured to establish a secure connection for exchanging SIM-related data via the network communication interface, as scheduled by the scheduler of the respective container group. The processor is also configured to select a corresponding SIM within the respective container group. Additionally, the processor is configured to exchange data related to the corresponding SIM via the network communication interface.
[0006] The server may include one or more of the following:
[0007] - The processor is configured to receive multiple inbound requests and dynamically allocate SIMs as the number of inbound requests increases or decreases;
[0008] - Upon receiving a SIM allocation request via the network communication interface, the processor is immediately further configured to perform the following alternatively:
[0009] --Generate a batch containing multiple signed credentials, each signed credential associated with a corresponding SIM; or
[0010] --When dynamically allocating one or more SIMs, the signed credentials are generated as needed;
[0011] - The memory further includes a database storing one or more client identifiers, and the processor is further configured to associate the stored client identifier corresponding to the client with the SIM-related data immediately after the SIM is assigned to the client;
[0012] -For each SIM:
[0013] --The confidential data includes authentication keys and / or carrier codes;
[0014] --The identification data includes an Integrated Circuit Card Identifier (ICCID) and / or an International Mobile Subscriber Identity (IMSI); and / or
[0015] --The operational data includes an authentication counter;
[0016] - The confidential data for each SIM includes an authentication key and / or carrier code, and the processor is configured to:
[0017] --Upon receiving a telecommunications request for the corresponding SIM, the identification data is immediately sent via the network communication interface;
[0018] Upon receiving an authorization request, authorization data is immediately generated from the authentication key, the carrier code, or the authentication counter, and the authorization data is sent via the network communication interface;
[0019] --Upon receiving an authentication failure notification via the network communication interface, the authentication counter is immediately incremented.
[0020] A client device is also provided, which includes a network communication interface and a processor, the processor being configured to communicate with the server via the network communication interface in order to send a SIM allocation request to the server and exchange SIM-related data with the server via a secure connection.
[0021] A method is also provided performed by a virtual SIM distribution server, which communicates with multiple client devices via a communication network. The method includes a client device sending a SIM allocation request to the server. The method further includes the server receiving the SIM allocation request. The method also includes, immediately after receiving the SIM allocation request, the server selecting a corresponding container group. A secure connection for exchanging SIM-related data with the client devices is established by a scheduler of the corresponding container group. The server selects a corresponding SIM within the corresponding container group. The method further includes exchanging data related to the corresponding SIM between the server and the client devices.
[0022] The method may include one or more of the following:
[0023] The method further includes the server receiving multiple inbound requests from several client devices, and dynamically allocating SIMs as the multiple inbound requests increase or decrease;
[0024] - The method further includes being performed by the server immediately upon receiving the SIM allocation request:
[0025] --Generate a batch containing multiple signed credentials, each signed credential associated with a corresponding SIM; or
[0026] --When dynamically allocating one or more SIMs, the signed credentials are generated as needed;
[0027] The method further includes, immediately after the SIM is assigned to the client, the server associating the stored client identifier corresponding to the client with the SIM-related data;
[0028] -For each SIM:
[0029] --The confidential data includes authentication keys and / or carrier codes;
[0030] --The identification data includes an Integrated Circuit Card Identifier (ICCID) and / or an International Mobile Subscriber Identity (IMSI); and / or
[0031] --The operation data includes an authentication counter;
[0032] - The confidential data for each SIM includes an authentication key and / or carrier code, wherein the server performs the following:
[0033] --Upon receiving a telecommunications request for the corresponding SIM, the identification data is immediately sent via the network communication interface;
[0034] Upon receiving an authorization request, authorization data is immediately generated from the authentication key, the carrier code, and the authentication counter, and the authorization data is sent via the network communication interface; and
[0035] --Upon receiving an authentication failure notification via the network communication interface, the authentication counter is immediately incremented.
[0036] A computer program for a virtual SIM distribution server and / or client device is further provided. The program includes instructions for performing the method.
[0037] A further computer-readable storage medium is provided on which a computer program is recorded. Attached Figure Description
[0038] Non-limiting examples will now be described with reference to the accompanying drawings, in which:
[0039] - Figures 1 to 9The diagram illustrates the provided solution. Detailed Implementation
[0040] refer to Figure 1 A Virtual Subscriber Identity Module (SIM) distribution server 1000 is proposed. Server 1000 includes a network communication interface 1010. Server 1000 also includes a memory 1020 storing one or more SIMs. Each SIM contains confidential data, identification data, and operational data. The memory 1020 includes a hardware security module 1030 (HSM), which stores corresponding data for each SIM. The corresponding data includes at least the confidential data of the corresponding SIM. Additionally, server 1000 includes a processor 1030 coupled to the network communication interface 1010 and the HSM.
[0041] Processor 1030 is configured to access memory 1020 to selectively retrieve each SIM. Memory 1020 contains access to HSMs to selectively retrieve corresponding data for each SIM stored on the HSMs. Processor 1030 is also configured to create and execute multiple container groups. Each container group contains a scheduler and multiple SIMs retrieved from memory 1020. Processor 1030 is also configured to receive SIM allocation requests via network communication interface 1010.
[0042] The processor 1030 is also configured to immediately select the appropriate container group upon receiving a SIM allocation request via the network communication interface 1010. The processor 1030 is also configured by the scheduler of the appropriate container group to establish a secure connection for exchanging SIM-related data via the network communication interface 1010. The processor 1030 is also configured to select the appropriate SIM for the appropriate container group. Additionally, the processor 1030 is also configured to exchange data related to the appropriate SIM via the network communication interface 1010.
[0043] This server 1000 constitutes an improved solution for virtual SIM distribution. In practice, virtual SIM distribution is secure, efficient, and seamless for end users. This is because the server 1000 relies on multiple container groups to schedule multiple SIMs. Since multiple container groups are configured to exchange data related to the corresponding SIM with the client after receiving a SIM allocation request, the server 1000 allows for device authentication on the carrier network in a cloud environment. On the device side, the hardware required for SIM authentication to integrate with the carrier network is reduced, and can even be eliminated. In fact, the device does not need to have hardware suitable for SIM authentication, such as a SIM card slot or integrated eSIM; integration on the carrier network is seamless for the terminal device. On the server side, due to the generation of multiple container groups, the method allows for efficient and dynamic distribution. Each container group can include multiple (hundreds, or even thousands) SIMs, and these SIMs can be added as needed. In other words, the memory and HSM can be used to add new SIMs or delete existing SIMs stored in the HSM as needed.
[0044] For example, compared to solutions that use SIM racks, the server 1000 allows for high scalability. Such solutions, for instance, rely on SIM racks that store multiple SIM cards. However, this service is limited by the actual number of (physical) SIM cards stored in that rack. In other words, such solutions are limited by the number of physical SIM cards controlled on each rack. In contrast, the server increases the number of SIMs available for distribution, has higher reusability, and is suitable for large-scale deployment of connected objects on carrier networks. Essentially, container groups are threads within a processor, allowing for highly parallelized SIM distribution. This is particularly useful in the context of the Internet of Things (IoT), where one can expect even a million new connected devices per hour. In this context, the server-provided solution does not increase the bill of materials for connected objects while maintaining or increasing network security. It seamlessly shares infrastructure with client devices (because SIM distribution is entirely digital). Furthermore, its full compatibility with carrier network standards significantly reduces deployment time.
[0045] Furthermore, virtual SIM distribution is particularly reliable and secure. In fact, because the processor 1030 is configured to access the HSM to selectively retrieve the corresponding data (which includes at least the confidential data of the corresponding SIM, as well as the creation and execution of container groups) stored on the HSM, the confidential data constituting the SIM is always secure. In effect, the HSM provides highly secure storage, and therefore confidential data is protected from security vulnerabilities when not in use. Additionally, SIM allocation meets, for example, the protocol and security requirements defined by GSMA (SGP.01, SGP.02, SGP.11). Moreover, when container groups are created and executed, the HSM no longer needs to be accessed, thereby reducing security vulnerabilities during SIM distribution; data sharing is performed in real-time between the HSM and container groups. Furthermore, because the server exchanges data related to the corresponding SIM via a network communication interface, the server is fully compatible with existing eSIM frameworks. Therefore, client devices can communicate over operator networks using SIMs distributed by the server as if they were using a local SIM, for example, in the form of a SIM card or eSIM, the difference being that the SIM distributed by the server is completely virtual / remote. The integration of client devices into the operator's network is seamless and transparent to end users because the switching occurs on the network rather than locally on the client device.
[0046] refer to Figure 2 Furthermore, a client device 2000 is proposed, including a network communication interface 2020 and a processor 2010. The processor 2010 is configured to communicate with the server 1000 via the network communication interface 2020 (for example, via network 2030) to send a SIM allocation request to the server 1000. Additionally, the processor 2010 is configured to exchange SIM-related data with the server 1000 via a secure connection.
[0047] For example, the client device 2000 may be a mobile device, such as a smartphone or tablet; alternatively, it may be any smart device installed in a vehicle or residence. Alternatively, the client device may not be equipped with a SIM card slot.
[0048] refer to Figure 1 and 2Both methods further propose a method (also referred to as the "system method") performed by a virtual SIM distribution server 1000 communicating with multiple client devices 2000 via a communication network. The system method includes a client device sending a SIM allocation request to the server 1000. The system method also includes the server 1000 receiving the SIM allocation request. The system method further includes the server 1000 immediately selecting a corresponding container group upon receiving the SIM allocation request. The system method also includes a scheduler for the corresponding container group establishing a secure connection for exchanging SIM-related data with the client devices. The system method further includes the server 1000 selecting a corresponding SIM within the corresponding container group. The system method also includes the exchange of data related to the corresponding SIM between the server 1000 and the client devices.
[0049] A further proposed method (also referred to as the "server method") is executed by a virtual SIM distribution server 1000. The server method includes accessing a memory 1020 to selectively retrieve each SIM. The memory 1020 contains access to an HSM to selectively retrieve corresponding data for each SIM stored on the HSM. The server method also includes creating and executing multiple container groups, each container group containing a scheduler and multiple SIMs retrieved from the memory 1020. The server method also includes receiving a SIM allocation request. Upon receiving a SIM allocation request, the server method immediately further includes selecting a corresponding container group. The server method also includes establishing a secure connection for exchanging SIM-related data by a scheduler for the corresponding container group. The server method also includes selecting a corresponding SIM for the corresponding container group. The server method further includes exchanging data associated with the corresponding SIM.
[0050] A method (also referred to as the "client method") executed by a client device is further proposed. The client method includes communicating with server 1000 to send a SIM allocation request to server 1000. Additionally, the client method exchanges SIM-related data with server 1000.
[0051] The methods described herein are computer-implemented. This means that the steps (or substantially all steps) of the methods are performed by at least one computer or any similar system. Therefore, the steps of the methods are performed by a system, server, or device and may be performed fully or semi-automatically. In some instances, the triggering of at least some steps of the methods can be performed through user-computer interaction. The required level of user-computer interaction may depend on the anticipated level of automation and be balanced with the needs of the implementing user's intentions. In some instances, this level may be user-defined and / or predefined.
[0052] A typical example of a computer implementation of the method is to use a system suitable for this purpose to execute the method. The system (e.g., server 1000 or client device) may include a processor 1030 coupled to memory 1020, on which a computer program including instructions for executing the method is recorded.
[0053] The computer program may include instructions executable by the virtual SIM distribution server 1000 and / or by a client device (e.g., by the virtual SIM distribution server alone or by the client device alone), the instructions including components for causing the system to perform the method. The program may be recorded on any data storage medium, including the memory of the distribution server 1000 and / or the memory of the client device. For example, the program may be implemented in a digital electronic circuit system or in computer hardware, firmware, software, or a combination thereof. The program may be implemented as a device, for example, tangibly embodied in a machine-readable storage device for use in a product executed by a programmable processor 1030. The method steps may be executed by the programmable processor 1030, which executes the program of instructions to perform the function of the method by manipulating input data and producing output. Therefore, the processor 1030 may be programmable and coupled to receive data and instructions from a data storage system, at least one input device, and at least one output device, and to transmit data and instructions to the data storage system, at least one input device, and at least one output device. If desired, the application program may be implemented using a high-level procedural or object-oriented programming language or in assembly or machine language. In any case, the language may be a compiled or interpreted language. The program may be a complete installer or updater. In any case, the application of the program on the system generates instructions for performing the method. For example, the computer program may be stored and executed on a server 1000 in a cloud computing environment, which communicates with one or more client devices across a network. In this case, the processing unit executes the instructions included in the program, thereby causing the method to be performed in the cloud computing environment.
[0054] Server 1000 is used for virtual SIM distribution. In other words, the server is configured to provide SIM-related data to one or more (e.g., multiple, such as 100 or even 1,000 or more) client devices to allow authentication of one or more client devices to a carrier network associated with the SIM (e.g., a telephone network, such as a 3G, 4G or 5G network) and thereby allow the exchange of data (e.g., voice, text or other data, such as multimedia data) through said carrier network.
[0055] The operator network can be any operator network, such as a 2G, 3G, 4G, or 5G operator network. A 2G operator network is a second-generation cellular network under the GSM standard. By implementing the same time-switching technology as digital fixed-line telephones, 2G operator networks are essentially dedicated to telephone use. 2G operator networks enable the establishment of an electronic path between the caller and the receiver, which is a bidirectional and symmetrical link that only the two communicators can use during the call duration. This can be referred to as circuit switching technology.
[0056] In 2G operator networks, the application that gives the SIM card behavior is the STK (SIM Toolkit). For example, in a SIM card, the STK allows the UICC to interact with the outside world in a specific way through programmed commands.
[0057] The difference between 3G and 2G operator networks lies not only in the use of different frequency bands, but also in the fact that 3G operator networks are not limited by the GSM standard. 3G operator networks comply with the UMTS standard and allow for high-speed connections. This connection facilitates access to websites and various multimedia applications. ST's 3G counterpart is USAT (USIM Application Toolkit). 3G operator networks may further include the use of Java cards, which are smart card operating systems capable of running applications written in Java. A Java card can consist of three parts: an API, a runtime environment, and a virtual machine.
[0058] 4G carrier networks allow access at higher speeds than 3G.
[0059] Compared to 4G carrier networks, 5G carrier networks offer increased security. In fact, a 5G SIM should be an inviolable secure component. 5G carrier networks are designed to ensure complete subscriber anonymity because this component currently allows for eavesdropping on communications or SIM cloning. Current mobile security is essentially based on the confidentiality of the authentication elements within the mobile carrier network. 5G carrier networks achieve this confidentiality by encrypting the ISMI (International Subscriber Mobile Identity) code.
[0060] Server 1000 includes a network interface. For example, the network interface may include one or more Ethernet ports, one or more Wi-Fi ports, and / or one or more carrier network interfaces, such as GSMA interfaces (e.g., ES3 interfaces). The network interface may be configured to communicate with multiple client devices via a communication network (e.g., a Wi-Fi network and / or another type of network).
[0061] Server 1000 includes a memory 1020 on which one or more SIMs are stored, such as one or more non-volatile memories like hard disk drives and / or solid-state drives (SSDs). A SIM is a data structure (e.g., an organized collection of data) that includes data for identification and authentication on an operator network (e.g., a GSM, 3G, 4G, or 5G network).
[0062] As is well known in the telecommunications and SIM technology field, each SIM contains confidential data, identification data, and operational data. Confidential data can be data that should be known only to the operator's network, and can be compared by the operator's network to authorize access to the operator's network. For example, confidential data may contain one or more authentication keys, confidential keys, or encryption keys. Identification data is data that allows the identification of a customer and / or operator. In other words, identification data specifies that the client device is associated with the operator's network. Identification data may contain a serial number and / or a serial code. Operational data is other data that constitutes the SIM and allows it to be used for authentication and / or data transmission (for example, to verify that authentication has been performed correctly).
[0063] Confidential data may contain an authentication key, sometimes represented as "Ki". The authentication key may be a 128-bit value used to authenticate the SIM to an operator's network (e.g., a GSM mobile network). Alternatively, confidential data may contain an operator code. The operator code (also represented as "oPc") may be a secret identifier for the operator's network.
[0064] The identification data may include an Integrated Circuit Card Identifier (ICCID). The ICCID can be a unique serial number used to identify the SIM profile. Alternatively, the identification data may include an International Mobile Subscriber Identity (IMSI). The IMSI can be any set of values used to establish a connection to the operator's network, and may include the mobile country code, mobile network code, and mobile subscriber identification number.
[0065] Operational data may include an authentication counter. The authentication counter can be any value, such as a value p that tracks the number of attempts to connect to the carrier's network; for example, p = 3 means that three authentication attempts have been made.
[0066] Each SIM may also include other data, such as a list of services the user can access, and / or two passwords: a Personal Identification Number (PIN) for general purposes and a Personal Unlock Key (PUK) for unlocking the PIN. For example, in Europe, the other data may be a Serial Number (SSN), which may also be accompanied by an International Commodity Number (IAN) or a European Commodity Number (EAN).
[0067] The memory 1020 includes a hardware security module (HSM). The HSM can be configured to securely store data, for example, by encrypting or decrypting the stored data. The HSM stores corresponding data for each corresponding SIM, including at least the confidential data of the corresponding SIM. In other words, the HSM stores authentication keys and / or operator codes for each corresponding SIM. Optionally, all data contained in each SIM (i.e., confidential data, identification data, and operational data) can be stored on the HSM. Alternatively, only a portion of the data can be stored on the HSM, such as only confidential data.
[0068] Processor 1030 is configured to access memory 1020 to selectively retrieve each SIM. In other words, the processor is configured to read data constituting each SIM and copy said data from (non-volatile) memory 1020 to volatile memory (e.g., RAM) for processing. Optionally, the processor may be configured to write to at least some (e.g., all) of the data. In other words, the processor may be configured to read only memory 1020 or read and write to memory 1020. Accessing memory 1020 to selectively retrieve each SIM includes accessing the HSM to selectively retrieve corresponding data of each SIM stored on the HSM. In other words, processor 1030 is configured to select one (or all) of confidential data, identification data, and operational data from the HSM contained on each SIM, such as confidential data from memory 1020, identification data, and operational data from the HSM.
[0069] Processor 1030 is configured to create and execute multiple container groups. A “container group” refers to a processing thread or execution unit that has been allocated CPU processing resources and storage resources, for example, accessing non-volatile memory 1020 to obtain data and occupying space in RAM (i.e., volatile memory 1070). This container group can be executed by processor 1030 using an appropriate framework (e.g., supported in the Kubernetes framework). Each container group contains a scheduler and multiple SIMs retrieved from (non-volatile) memory 1020. A “scheduler” refers to any set of instructions used to obtain information from network communication interface 1010 (e.g., SIM allocation requests detailed below) and to select the resources (e.g., SIMs) contained in the container group. Multiple SIMs (e.g., 100 or more, or even 1,000 or more) are retrieved from non-volatile memory 1020 and thus stored in volatile memory 1070. In other words, once the container group is created and executed, the HSM no longer needs to be accessed (e.g., especially for accessing the confidential data of each SIM contained in the container group). In other words, at least the confidential data is instantiated on the volatile memory 1070, so that all subsequent accesses to this data are performed on the volatile memory 1070.
[0070] Processor 1030 is configured to receive SIM allocation requests via network communication interface 1010. An "allocation request" refers to any type of data that initiates the association of SIM-related data with a specific client device, enabling this data to be used by the client to authorize the client to perform telecommunications activities through the operator network. For example, a SIM allocation request can be any type of data, such as data transmitted from an external client device (e.g., via Wi-Fi, Bluetooth, or another wireless communication network or alternatively a wired network), including instructions for allocating (i.e., assigning) SIM-related data (in other words, data associated with the corresponding SIM) to this client device. The processor may also be configured to receive SIM disaffection requests. In other words, the processor may be configured to receive any type of data that terminates (or suspends) the association of SIM-related data with a client device, thereby depriving the client device of authorization to perform telecommunications activities through the operator network.
[0071] Upon receiving a SIM allocation request via network communication interface 1010, processor 1030 is immediately configured to select a suitable container group. The selection of a suitable container group can be random; for example, any container group may be suitable. In an example, the selection can be performed based on the number of available SIMs (i.e., those not yet allocated to other client devices) contained in the container group.
[0072] Upon receiving a SIM allocation request via network communication interface 1010, processor 1030 is immediately configured to establish a secure connection via the scheduler of the corresponding container group to exchange SIM-related data through network communication interface 1010. In other words, the scheduler can select a communication port via network communication interface 1010, allowing server 1000 to be securely connected (e.g., to an external client device). The secure connection can be any type of protocol used for securely sending SIM-related data, such as the SGP O2eSIM framework defined by GSMA or using TLS via HTTP.
[0073] In instances using the HTTP protocol, the scheduler can establish multiple TLS keys and credentials for performing data exchange. Therefore, the scheduler can perform, for example, SSL with mutual authentication in the first exchange with the client device. The scheduler can generate a private key and a CSR (Credential Signing Request) and provide them to the client device. If the object is already registered on the system, the scheduler can provide SSL credentials to that object. The exchange can be secured via HTTP over TLS. The scheduler can store this credential along with its private key and now use SSL with mutual authentication. For each subsequent connection, the client device and server 1000 can establish a connection protected by SSL with mutual authentication. Server 1000 can be configured to retrieve the client device's configuration, which specifically contains the type of SIM that should be associated with this client device. Server 1000 can contact a manager service (implemented in software) to request a SIM based on the retrieved configuration. The manager software can automatically retrieve the SIM corresponding to the client device's profile type and exchange commands with the SIM to begin its attachment to the network. At this point, to save time, certain routine exchanges between the modem and the SIM can be automated between server 1000 and the SIM. The return of this exchange is provided to the client device via the software manager. The remainder of the network authentication exchange is performed as if it were done using a physical SIM card, with the modem communicating with the SIM via server 1000.
[0074] After receiving a SIM allocation request via the network communication interface 1010, the processor 1030 is immediately configured to select the appropriate SIM for the appropriate container group.
[0075] Processor 1030 can also be configured to detect available SIMs configured in a given container group. In an example, if processor 1030 determines that a given container group containing multiple SIMs does not contain any free SIMs (in other words, the SIMs in the container group have been assigned to other client devices), then processor 1030 can be configured to dynamically add more SIMs to the given container group. For example, processor 1030 can be configured to add more than 100 SIMs to the container group when it is determined that the container group contains 1,000 SIMs and 999 SIMs have been assigned to client devices. For example, processor 1030 can be configured to automatically detect whether SIMs are available for assignment to client devices and add more SIMs as needed.
[0076] The processor 1030 is also configured to exchange data related to a corresponding SIM via a secure connection established with an external client device through the network communication interface 1010. In other words, a corresponding SIM is assigned to the client device and the server 1000 exchanges SIM-related data to allow authentication of the client device on the operator network and to allow the client device to exchange data over the operator network.
[0077] In this example, the confidential data for each SIM may include an authentication key and / or a carrier code.
[0078] The processor 1030 can be configured to immediately send identification data via the network communication interface 1010 upon receiving a telecommunications request for the corresponding SIM. A "telecommunications request" refers to any request by the client device to connect to the operator's network. A telecommunications request can be executed at any time and in any manner, such as when assigning a SIM to a client device. For example, the processor 1030 can send the SIM's IMSI to the operator's network.
[0079] The authorization request (performed by the operator network) may include a random number. The random number may be based on the IMSI and an authentication key (which may be known to the operator network). The processor 1030 may also be configured to generate authorization data from the authentication key, operator code, or authentication counter immediately upon receiving the authorization request (performed by the operator network after sending identification data), and to send the authorization data via the network communication interface 1010. For example, the generation of the authorization data (also represented as a signed response “SRES_2”) may include signing the authorization request with the authentication key (e.g., signing the random number).
[0080] The processor 1030 can also be configured to immediately increment the authentication counter upon receiving an authentication failure notification via the network communication interface 1010. For example, an authentication failure notification may be received when the carrier network determines that the authorized data does not match the corresponding data (also denoted as SRES_1) of the carrier network, such as when the signed response SRES_2 does not match the data SRES_1. If no authentication failure notification is received (for example, if there is a match between the data SRES_2 and SRES_1), then the client device can perform data communication via the carrier network.
[0081] This makes virtual SIM distribution secure, efficient, and seamless for end users. The increased efficiency is due to the server 1000 relying on multiple container groups to schedule multiple SIMs. In other words, the server 1000 allows for the efficient distribution of SIMs to multiple client devices in the form of a cloud service, which is seamless for client devices and can be scaled on demand. In fact, the server 1000 is based on the fact that SIM-specific elements are retained on the server 1000 while maintaining authentication of client devices. The server 1000 and client devices are linked via a secure connection (e.g., a secure IP link), on which SIM-related data is exchanged to allow authentication on the carrier network (e.g., in the form of authentication sequence APDUs). Because the SIM is housed in a container group, the container group calculates the result of the allocation request and returns the result in the classic format of SIM authentication, thus reducing the impact of not inserting a SIM card into the client device (e.g., in the form of latency). Furthermore, the actual data of the SIM is not transmitted to the client device; that is, the corresponding data for each SIM (including confidential data and / or identification data and operational data) is not transmitted to the client device, ensuring that sensitive information is never exposed to security vulnerabilities. The authentication process between the client device and the operator's network is performed on the server side; in other words, it is completely transparent to the client side.
[0082] In this example, the exchange of SIM-related data can be performed using the APDU protocol.
[0083] As is known in the telephone field, a SIM (for example, in the form of a SIM card) is the slave device and the operator network is the master device. The server can utilize this configuration. The server 1000 and the operator network can form a master-slave network, enabling the operator network to issue APDU commands corresponding to requests and the server 1000 to issue responses.
[0084] There are four types of command APDUs that can be exchanged between server 1000 and the carrier network:
[0085] - APDU commands consisting of exchanges that do not contain data (i.e., neither in requests made by the operator network nor in responses made by server 1000).
[0086] - An APDU command consisting of exchanges that do not contain data in the request made by the operator but contain data in the response made by server 1000. This type of exchange corresponds to the instruction sent from server 1000.
[0087] - An APDU command consisting of an exchange in which a request made by the operator network contains data, but a response made by server 1000 does not contain data. This corresponds to an instruction to server 1000.
[0088] - An APDU command consisting of an exchange of data in which both the request made by the operator network and the response made by the server 1000 contain data, the exchange corresponding to bidirectional commands that are received and sent.
[0089] An APDU request consists of two parts: the first part is a 4-byte header (CLAINS P1 P2). CLA indicates the instruction class. INS corresponds to the instruction type, which usually corresponds to the order of read, write, record, etc. P1 and P2 specify parameters that can be the objects of the action. The second part is the command body (which may be optional), which contains the data to be transmitted (if it exists) and its size.
[0090] Processor 1030 can be configured to receive multiple inbound requests. Processor 1030 can also be configured to dynamically allocate SIMs as multiple inbound requests increase or decrease. "Dynamically allocate" means that processor 1030 is configured to modify the allocation of SIMs based on the demand level arising from the multiple inbound requests. For example, the method can immediately cancel the allocation of a SIM to a client device after, for instance, detecting the absence or activity of a given client device in real-time or near real-time.
[0091] In this example, processor 1030 can be configured to detect disconnection of a client device. Processor 1030 can also be configured to detect voluntary triggering of this disconnection (also known as "graceful shutdown"). Processor 1030 can also be configured to detect implicit triggering, meaning that the client device has not exchanged data with the container group within a predetermined time period.
[0092] The processor can send a request to shut down the SIM assigned to the client. For example, the processor can execute this request on a container group via a scheduler and receive images from the SIM. If the SIM is no longer needed or is assigned to another device, the processor can encrypt the SIM into the HSM.
[0093] Alternatively or (for example, in parallel with the above examples), if a given container group has insufficient capacity (for example, 999 SIMs may already be allocated on a container group that holds 1,000 SIMs), the processor can be configured to add a new SIM to the container group. This SIM can be randomly selected from the HSMs. Therefore, the SIM can be adapted for allocation to new client devices.
[0094] This increases the flexibility of SIM distribution based on existing demand levels.
[0095] Upon receiving a SIM allocation request via network communication interface 1010, processor 1030 can immediately be further configured to generate a batch comprising multiple signed credentials. In other words, processor 1030 can be further configured to generate a set of the multiple signed credentials. A signed credential can be any data that allows authorization to a client device to be allocated to a given SIM. Each signed credential can be associated with a corresponding SIM. Therefore, credentials can be generated as a batch and shared to make the SIM available to the device.
[0096] Alternatively, the processor 1030 may be further configured to generate signed credentials as needed when dynamically allocating one or more SIMs. This improves the security of SIM distribution because only authorized client devices are permitted to be assigned to a given SIM.
[0097] The memory 1020 may further include a database.
[0098] A "database" refers to any collection of data (i.e., information) organized for searching and retrieval (e.g., relational databases, such as those based on a predefined structured language (e.g., SQL)). When stored in memory, a database allows for rapid searching and retrieval by a computer. Databases are structured to facilitate the storage, retrieval, modification, and deletion of data through various data processing operations. A database can consist of a file or a set of files, which can be broken down into records, each consisting of one or more fields. Fields are the basic units of data storage. Users primarily retrieve data through queries. Using keywords and sorting commands, users can quickly search, rearrange, group, and select fields across many records to retrieve or create reports on specific data aggregations according to the rules of the database management system used.
[0099] The database may have stored one or more client identifiers. Each client identifier may be a piece of data that uniquely identifies a client device.
[0100] The processor 1030 can be further configured to immediately associate a stored client identifier corresponding to the client with SIM-related data after the SIM is assigned to the client. In other words, the processor 1030 can be configured to associate the client identifier with the exchanged SIM-related data in a database. This improves the efficiency of assigning SIMs to client devices. In effect, at the database level, the server maintains a unique client device-SIM link and security, preventing two SIMs from being associated with the same client device.
[0101] We will now discuss an example of how client identifiers are associated with the SIM-related data exchanged.
[0102] In this example, the server can receive requests for client devices using SIM in order to integrate new clients for SIM distribution.
[0103] Processor 1030 can be configured to generate client-related data in response to this request. Processor 1030 can be configured to exchange personalized data with the MNO for configuration within its core network. Processor 1030 can be configured to create a personalized script for each SIM. The script is adapted as needed and provided to the SIM pre-configuration interface. The SIM pre-configuration interface can issue a command to initiate this script to a white SIM image, which creates a personalized SIM image (i.e., a client identifier with the exchanged SIM-related data). The processor can be configured to send this SIM image to the SIM manager for storage in the HSM (e.g., awaiting possible initiation in a container group).
[0104] Processor 1030 can be configured to delete a SIM from the server. For example, processor 1030 can be configured to receive a client request to delete a SIM. Processor 1030 can be configured to disconnect the SIM associated with this request (e.g., if the SIM has been assigned to a client device). Processor 1030 can be configured to delete the association between the client identifier and the exchanged SIM-related data in the database. Processor 1030 can be configured to update the status of this SIM to "deleted". For example, processor 1030 can be configured to explicitly delete the SIM (e.g., associated with an inactive client) from the database after a predetermined number of days, such as X days (e.g., 1 day or longer).
[0105] As mentioned, using HSM is a secure storage solution, especially compared to other conceivable solutions such as those based on pure software (e.g., SSM). In fact, HSM uses a dedicated processor specifically designed to operate in a security role. Therefore, HSM is specifically optimized for providing cryptographic operations—that is, encrypting and decrypting data—ensuring SIM data is managed with a high degree of trust (i.e., high resistance to cyberattacks, sabotage, and / or threats). In contrast, SSM is a program running on a general-purpose computer, which remains vulnerable to attack.
[0106] We will now discuss options for further enhancing security.
[0107] As mentioned, the secure connection can be an HTTP connection via TLS (i.e., an HTTPS connection). This connection can be a TLSv1.3 connection. Therefore, the server ensures that the exchange of SIM-related data is encrypted, for example, after mutual authentication using ECDSA.
[0108] Therefore, compared to communication that utilizes a traditional SIM (which is physically exposed to vulnerabilities), the client achieves a virtual connection without requiring any physical entity to implement high security, thanks to the secure connection.
[0109] Processor 1030 may be further configured to receive a CSR. The CSR is received via TLS. The list of CSRs may be a list of unique identifiers (e.g., identifiers that provide identity to a client device). The unique identifier may be in any format, such as text. Processor 1030 may also be configured to verify the authenticity of the CSR, which is accomplished by verifying the CSR signature using an embedded public key. Verification of authenticity is accomplished by verifying that the unique identifier of the CSR is known and associated with the corresponding device. Processor 1030 may also be configured to generate X.509 credentials. Processor 1030 may also be configured to decrypt a SIM allocation request using the X.509 credentials via an HTTP connection via TLS. In other words, the method may be configured to obtain a SIM allocation request from a client identified in the CSR. The SIM allocation request may include instructions for obtaining the corresponding SIM. The HTTP connection via TLS may be an HTTPS connection.
[0110] The instruction used to obtain the corresponding SIM can be an HTTPS retrieval request. For obtaining SIM data over an HTTPS connection, the HTTPS retrieval request is actually highly secure.
[0111] The processor 1030 can be further configured to generate and send an answer-to-request (ATR) message as a response. The ATR message may include information about the SIM, such as the SIM's operator or other data required by the device. In other words, the ATR message includes data in the same format expected of a physical SIM card. Therefore, the server allows the simulation of data exchange with an actual physical SIM card. Thus, the data exchange is transparent to the device and only requires data exchange between the server and the device. This avoids the use of dedicated operations that would require additional circuitry and / or resources (e.g., on a modem).
[0112] Exchanging data related to the corresponding SIM via the network communication interface may include receiving HTTPS retrieval requests. Since the HTTP protocol is text-based, all binary data can be converted to hexadecimal form. The HTTPS retrieval request may include data related to APDU commands. Data exchange may also include sending response APDU (rAPDU) commands from the server. rAPDU data may be received in hexadecimal and converted to binary before being sent back to the modem.
[0113] APDU commands may include SIM operation data. APDU commands may be those specified by relevant standards (e.g., ISO 7816), and therefore the SIM operation data may be those specified by said standards. Thus, the APDU payload is transparently transmitted to the client device.
[0114] The processor 1030 can be further configured to immediately disconnect the secure connection after determining that no SIM-related data exchange has occurred after a predetermined time period (for example, a predetermined number of minutes, such as 5 minutes or longer). This allows unused resources to be reallocated to other devices.
[0115] In this example, the server can receive SIM allocation requests via the main network through a network communication interface. SIM-related data can be used to connect to a different operator network than the main network. As discussed above, this operator network could be, for example, a 2G, 3G, 4G, and / or 5G operator network. As described above, the server can exchange SIM-related data with the client device via the network communication interface. Therefore, the client device can receive SIM-related data transparently.
[0116] The main network can be one of a wireless network (e.g., WiFi), a carrier network, or a radio network.
[0117] The following text is for reference only. Figures 3 to 7 Describe an instance of server 1000 and client device 2000.
[0118] exist Figure 3 The text discusses another implementation scheme for server 1000.
[0119] The server in this example includes a central processing unit (CPU) 1030 connected (coupled) to an internal communication bus 1120, and random access memory (RAM) 1070 (i.e., volatile memory) may also be connected to the bus. Optionally, the server may be further equipped with a graphics processing unit (GPU) (not shown), which may be associated with a video random access memory 1100 connected to the bus. An optional mass storage device controller 1040 manages access to mass storage devices 1020 (i.e., non-volatile memory), such as hard disk drives and / or HSMs. Mass storage devices suitable for tangibly representing computer program instructions and data include all forms of non-volatile memory, including HSMs and (by way of example) semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; disks, such as internal hard disks and removable disks; magneto-optical disks. Mass storage devices may also store databases. A mass storage device is any hardware suitable for this storage and may include several physically distinct parts (e.g., one for programs and one possibly for databases). Any of the foregoing may be supplemented by or incorporated into a specially designed ASIC (Application-Specific Integrated Circuit). Network interface 1010 manages access to network 1050. The server may optionally include a haptic device, such as a cursor control, keyboard, etc. A cursor control is used in the server to allow the user to selectively position the cursor at any desired location on display 1070. Additionally, the cursor control allows the user to select various commands and input control signals. The cursor control includes several signal generating devices for inputting control signals to the system. Typically, the cursor control may be a mouse, with buttons used to generate signals. Alternatively or additionally, the server system may include a sensitive pad and / or a sensitive screen.
[0120] Figure 4 This diagram illustrates a server implementation scheme. As components, the server may include an application server that spawns and runs multiple container groups, and an HSM (Hardware Management System) that protects confidential data.
[0121] The server may include a data generation module 4010. The data generation module (also referred to as the "provisioning interface") creates an initial provisioning profile for each SIM. Such SIMs are loaded into the appropriate container group for SIM distribution and saved to the database 4020 (also referred to as the Subscription Manager Secure Routing (SM-SR) EIS database).
[0122] The server can store data in the SM-SR EIS database. For Subscription Manager Data Preparation (SM-DP) and SM-SR, the server can be considered an Electronic Universal Integrated Circuit (eUICC), although it is completely virtual.
[0123] The server may include an ES3 interface 4030 (GSMA) between the SM-DP 340 (which may be a third-party device) and the SM-SR.
[0124] The SM-DP profile can be transmitted (or downloaded) to the provisioning interface 4010 via SM-SR 4050. The provisioning interface 4010 behaves similarly to eUICC for SM-DP. SM-DP profile download can be performed using ES8 protocol transactions encapsulated in ES5 according to the GSMA protocol.
[0125] The configuration process follows the profile download procedure defined by the GSMA SGP.02 standard. Each SIM behaves similarly to an eUICC in receiving a GSMA profile from a remote SM-DP. The profile is stored as a security domain in the server profile database 4060. Sensitive data is stored in the HSM 4070.
[0126] The processor can be configured to implement a SIM manager module 4080, which manages the lifecycle of a container group containing one or more (e.g., multiple) SIM instances 4090. The SIM manager module 4080 is responsible for launching SIM instances and assigning SIM profiles to each SIM instance. The SIM manager module also manages logic to delete profiles or reuse each SIM profile for a corresponding client device. The processor can utilize the Kubernetes coordinator to implement scheduling for each SIM.
[0127] The server may also include an interface 4120 with a reporting and monitoring module and a profile database 4060, the reporting and monitoring module providing the status of the SIM.
[0128] The server can interface with external client devices (not depicted) 4120. Therefore, the server is configured to provide standard SIM functionality, such as for 4G and 5G network authentication.
[0129] The server may also include an HTTP notification interface to replace standard SMS push, in order to open an HTTPS channel for document downloads.
[0130] Therefore, the server employs a unique architectural approach because it provides a fully virtualized SIM solution that meets the protocol and security requirements defined by GSMA (SGP.01, SGP.02, SGP.11).
[0131] Full virtualization of SIM cards can be implemented within the Linux architecture.
[0132] The server allows the sharing of HSM cryptographic processors (which store SIM keys) in real time via a SIM pool, which is contained in a group of containers that can be deployed using a Kubernetes environment.
[0133] The combined use of HSMs for storing confidential data (such as HSMs for storing Class 1 data) and container groups for distributing SIMs (such as those deployed in a Kubernetes container environment) allows for incremental improvements to the solution, thereby enabling efficient and scalable SIM distribution.
[0134] Traditional UICCs and eUICCs (in other words, SIM cards or eSIMs) require a single dedicated processor per card. In contrast, servers allow computation to be centralized on a server processor for multiple SIMs, enabling significant economies of scale.
[0135] Traditional UICC and eUICC security rely on a secure element and physical separation between the two SIM cards. In contrast, servers utilize Linux and cloud infrastructure to provide a similar level of security. For example, SIM separation can be ensured by having the SIM run as a separate Linux process with its own dedicated memory space. When not in use, each SIM image can be stored in the HSM.
[0136] The server control device is bound to the SIM card. Registration of the device on the server requires, for example, registering the device's EMEI.
[0137] Once the device is registered, the SIM client software can be installed on the device via the interface to be assigned a server's credential authority and granted SSL certificates.
[0138] This credential authority allows for: First, mutual authentication between client devices and servers using SSL. Second, blocking unwanted devices using credential denial. Third, simplifying the manufacturing process because the same client software is installed on the same devices. Distinguishing between each device is automatically handled by the credential authority of the client device, interface, and server.
[0139] Figure 5 Another implementation scheme for the demonstration server.
[0140] The server's processor can be configured to include the following modules: SIM client 5010 (also referred to as "SIM gateway"), server user portal 5020, client adapter 5030, SIM manager 5040, container group accommodating SIM 5050, and credential authority 5060.
[0141] SIM client 5010 may include client software, which is an application that runs on a client device and communicates with a server via a communication interface in order to be assigned to a SIM. Once the client device is assigned, it exchanges SIM commands between, for example, a local modem and the SIM.
[0142] It should be noted that, although Figure 4 , 5 6 and 8 represent the terms "veSIM" and "ceSIM" in different ways, but in the context of this disclosure, both can refer to the same SIM, and another term can be "CloudSIM". Therefore, Figure 4 , 5 The servers shown in 6 and 8 may be the same entity (e.g., "CloudSIM Server").
[0143] User Portal 5020 provides a graphical user interface and API set to allow users to: register client devices, manage profile templates, and manage device pools. User Portal 5020 also provides a list of events for each device and can notify users of the device's connection and disconnection from the SIM's operator network.
[0144] User portal 5020 also provides a connection list for each device, which is mapped to profile type, duration, and date.
[0145] The client adapter 5030 is a module within the server environment responsible for directly interfacing with the client device. In other words, the client adapter 5030 may include receiving SIM allocation requests via a network communication interface.
[0146] The client adapter 5030 accepts the inbound request and verifies the inbound request by querying the user portal 5020 (for example, performing verification of whether the client device is registered) and the credential authority 5060 to verify the validity of the credentials (by verifying, for example, credentials, IMEI, and others).
[0147] Once the client is authenticated, the client adapter 5030 assigns a SIM to the client device and enables SIM command exchange between the client device and the SIMs assigned to the client device that are contained in the container group.
[0148] The SIM manager 5040 is configured to perform the following actions: when not in use, store the SIM in the HSM, making the SIM available to the scheduler, thereby managing the SIM's state (e.g., available or in use) and lifecycle. The SIM manager 5040 is also configured to assign the SIM to a client device verified by the client adapter. The SIM manager is further configured to interface with the HSM to ensure the SIM is fully protected within the HSM.
[0149] SIMs are housed in container groups. Multiple SIMs are housed in corresponding container groups to provide improved system resource utilization efficiency.
[0150] Each container group holds SIMs (approximately 1,000 in the current implementation) and a scheduler. The number of container groups and the number of SIMs per container group are managed by the SIM coordinator 5070. The SIM coordinator 5070 enables automatic scaling up and down of container groups.
[0151] The connection between the client adapter 5030 and the SIM is completed directly, with the scheduler responsible for selecting an available TCP port and executing start and stop commands based on the decisions of the coordinator 5070.
[0152] The credential authority 5060 is configured to provide the client adapter 5030 with the signed credentials required to authenticate client devices. The credential authority may provide a revocation list for a subset of the signed credentials. Alternatively, if the client software, keys, and credentials are pre-installed on the client device, the signed credentials can be generated in batches and shared with the relevant factory; or if the client software is installed on the device after production, the signed credentials can be generated in real-time. Security measures are in place to ensure that only the correct device can request credentials independently.
[0153] Figure 6 This diagram illustrates the communication between the server and the client device. Figure 6 The diagram illustrates the IP link established between the client and the device. The client can request to be assigned a SIM 6010. The client device can send an IMSI request to the server, which can be responded to as the MSI_M message. The client can send an authentication vector to the server for authentication by the server 6030. After a successful notification, the client device can send a connection notification to the server 6040. All of this process is seamless and transparent to the end user.
[0154] Figure 7 A flowchart illustrating the system methodology.
[0155] The system method includes a client device from a plurality of client devices sending an S10 SIM allocation request to a server. The system method also includes a server receiving an S20 SIM allocation request. The system method further includes, immediately after receiving the S30 SIM allocation request, a server selecting a corresponding container group for S31. The system method also includes, a scheduler for the corresponding container group establishing a secure connection for exchanging SIM-related data with the client device for S32. The system method further includes, a server selecting a corresponding SIM for the corresponding container group for S33. The system method further includes, an exchange of S34 SIM-related data between the server and the client device.
[0156] Figure 8 This diagram illustrates another flowchart of communication between server 810 and client device 820. Device 820 is shown communicating with modem 821 (optional).
[0157] Server 810 receives an encrypted CSR list 830 including an identifier from the client device. Server 810 generates an X.509 credential. The processor of server 810 is configured to use the X.509 credential and the encrypted CSR list to decrypt a SIM allocation request over an HTTP connection via TLS.
[0158] After the aforementioned steps, the client device is considered to have been registered.
[0159] The flowchart details how the SIM allocation request is obtained.
[0160] Client device 820 sends an HTTPS retrieval request 850. The HTTPS retrieval request includes instructions for obtaining the corresponding SIM, such as a hyperlink (e.g., GET). https: / / cloudsim-server-url / asset? init=1 Instructions in the form of ) are used. As described above, the processor of server 810 is configured to retrieve the SIM.
[0161] The processor of server 810 transmits an Request Response (ATR) 860 to client device 820, thereby exchanging SIM-related data with the client device. Optionally, the device may transmit the ATR to a modem.
[0162] The device transmits ADPU 870 to server 810. As can be understood from the diagram, several APDUs can be sent during SIM data exchange. The device can send an retrieval request for sending APDUs, such as a GET request. https: / / cloudsim- server-url / asset? apdu=APDU-in-hexaAPDUs can be sent in any format (e.g., hexadecimal). The processor of server 810 can be configured to perform data conversion, such as conversion to binary. The processor of the server can be configured to transmit response APDUs (rAPDUs). rAPDU 880 can be converted to the same format as when it was received, such as conversion to hexadecimal.
[0163] The flowchart also shows that the secure connection is immediately disconnected after a predetermined time period when it is determined that no SIM-related data exchange has occurred.
[0164] Figure 9 The diagram illustrates the connection between server 910 and the device. The client device (e.g., a smartphone) includes a CPU 920, a modem, and an ISObus for internal communication therebetween. The CPU is configured to transmit data to server 910 via a main network 930. The main network can be a wireless network, a carrier network, or a radio network. Once the method is executed and the CPU receives SIM-related data from server 910 via main network 930, the modem can use the received SIM to exchange data with carrier network 940. Therefore, the client device can perform SIM communication via carrier network 940. The carrier network is different from the main network. The client can send a SIM allocation request 910 according to the steps described above. Therefore, the client device can perform SIM-enabled communication transparently.
Claims
1. A Virtual Subscriber Identity Module (SIM) distribution server (1000), comprising: - Network communication interface (1010), - A memory (1020) storing one or more SIMs, each SIM containing confidential data, identification data, and operational data. The memory (1020) includes a hardware security module (HSM) storing corresponding data for each SIM, the corresponding data including at least the confidential data of the corresponding SIM. - A processor (1030) coupled to the network communication interface and the HSM, the processor (1030) being configured to: --Accessing the memory to selectively retrieve each SIM includes accessing the HSM to selectively retrieve the corresponding data of each SIM stored on the HSM; --Create and execute multiple container groups, each container group containing a scheduler and multiple SIMs retrieved from the memory; --Receive SIM allocation request via the network communication interface; --Upon receiving the SIM allocation request via the network communication interface, the following operations are performed immediately: ---Select the appropriate container group; ---A secure connection for exchanging SIM-related data via the network communication interface is established by the scheduler of the corresponding container group; ---Select the corresponding SIM for the corresponding container group; and --- Data related to the corresponding SIM is exchanged via the network communication interface.
2. The server of claim 1, wherein the processor (1030) is configured to receive a plurality of inbound requests and dynamically allocate SIMs as the plurality of inbound requests increase or decrease.
3. The server according to claim 1 or 2, wherein upon receiving a SIM allocation request via the network communication interface (1010), the processor (1030) is immediately further configured to alternatively execute: - Generate a batch comprising multiple signed credentials, each signed credential associated with a corresponding SIM; or - When dynamically allocating one or more SIMs, the signed credentials are generated as needed.
4. The server according to any one of claims 1 to 3, wherein the memory (1020) further includes a database storing one or more client identifiers, and the processor (1030) is further configured to associate the stored client identifier corresponding to the client with the SIM-related data immediately after the SIM is assigned to the client.
5. The server according to any one of claims 1 to 4, wherein, For each SIM: - The confidential data includes authentication keys and / or carrier codes; - The identification data includes an Integrated Circuit Card Identifier (ICCID) and / or an International Mobile Subscriber Identity (IMSI); and / or - The operational data includes an authentication counter.
6. The server of claim 5, wherein the confidential data of each SIM includes an authentication key and / or a carrier code, and the processor (1030) is configured to: - Upon receiving a telecommunications request for the corresponding SIM, the identification data is immediately sent via the network communication interface; - Upon receiving an authorization request, authorization data is immediately generated from the authentication key, the operator code, or the authentication counter, and the authorization data is sent via the network communication interface; and -Upon receiving an authentication failure notification via the network communication interface, immediately increment the authentication counter.
7. The server according to any one of claims 1 to 6, wherein the secure connection is an HTTP connection via TLS.
8. The server of claim 7, wherein the processor is further configured to: --Receive the CSR via TLS, the CSR having a list of unique identifiers; --The authenticity of the CSR is verified by confirming that the unique identifier of the CSR is known and associated with the corresponding device; --Generate X.509 voucher; - Use the X.509 credentials to decrypt the SIM allocation request over the TLS-connected HTTP connection; in: The SIM allocation request includes instructions for obtaining the corresponding SIM.
9. The server of claim 8, wherein the instruction for obtaining the corresponding SIM is an HTTPS retrieval request.
10. The server of claim 9, wherein the processor is further configured to generate and send a request-response message in response to the HTTPS acquisition request for obtaining the corresponding SIM.
11. The server according to claim 8, 9 or 10, wherein exchanging data related to the corresponding SIM via the network communication interface includes receiving an HTTPS retrieval request including data related to an APDU command, and sending a response APDU (rAPDU) command from the server.
12. The server of claim 11, wherein the APDU command includes SIM operation data.
13. The server according to any one of claims 1 to 12, wherein the processor is further configured to immediately disconnect the secure connection after determining, after a predetermined time period, that no SIM-related data exchange has occurred.
14. The server according to any one of claims 1 to 13, wherein the server receives the SIM allocation request via the main network through the network communication interface, and the SIM-related data enables connection to an operator network different from the main network.
15. The server of claim 14, wherein the main network is one of a wireless network, a carrier network, or a radio network.
16. A client device (2000) comprising a network communication interface and a processor (2010), the processor (2010) being configured to communicate with a server according to any one of claims 1 to 15 via the network communication interface (2020) to send a SIM allocation request to the server and exchange SIM-related data with the server via a secure connection.
17. A method performed by a virtual SIM distribution server according to any one of claims 1 to 15, the virtual SIM distribution server communicating via a communication network with a plurality of client devices, each according to claim 16, the method comprising: - The client device sends a (S10) SIM allocation request to the server; - The server receives the SIM allocation request (S20); -Upon receiving the SIM allocation request (S30) from the server, the following operations are immediately performed: --The server selects (S31) the appropriate container group; --A secure connection is established (S31) by the scheduler of the corresponding container group for exchanging SIM-related data with the client device; --The server selects the corresponding SIM for the corresponding container group (S32); and -- Data related to the corresponding SIM is exchanged between the server and the client device (S33).
18. The method of claim 17, further comprising receiving multiple inbound requests from a plurality of client devices by the server, and dynamically allocating SIMs as the plurality of inbound requests increase or decrease.
19. The method of claim 18, further comprising, immediately thereafter, the server performs the following alternative action upon receiving the SIM allocation request: - Generate a batch comprising multiple signed credentials, each signed credential associated with a corresponding SIM; or - When dynamically allocating one or more SIMs, the signed credentials are generated as needed.
20. The method according to any one of claims 17 to 19, further comprising, immediately after the SIM is assigned to the client, the server associating a stored client identifier corresponding to the client with the SIM-related data.
21. The method according to any one of claims 17 to 20, wherein, For each SIM: - The confidential data includes authentication keys and / or carrier codes; - The identification data includes an Integrated Circuit Card Identifier (ICCID) and / or an International Mobile Subscriber Identity (IMSI); and / or - The operation data includes an authentication counter.
22. The method of claim 21, wherein the confidential data of each SIM includes an authentication key and / or a carrier code, and wherein, Executed by the server: - Upon receiving a telecommunications request for the corresponding SIM, the identification data is immediately sent via the network communication interface; Upon receiving an authorization request, authorization data is immediately generated from the authentication key, the operator code, and the authentication counter, and the authorization data is sent via the network communication interface; and -Upon receiving an authentication failure notification via the network communication interface, immediately increment the authentication counter.
23. The method according to any one of claims 17 to 22, wherein the secure connection is an HTTP connection via TLS.
24. The method of claim 23, wherein the processor is further configured to: --Receive the CSR via TLS, the CSR having a list of unique identifiers; --The authenticity of the CSR is verified by confirming that the unique identifier of the CSR is known and associated with the corresponding device; --Generate X.509 voucher; --Use the X.509 credentials to decrypt the SIM allocation request over the TLS-connected HTTP connection; in: The SIM allocation request includes instructions for obtaining the corresponding SIM.
25. The method of claim 24, wherein the instruction for obtaining the corresponding SIM is an HTTPS retrieval request.
26. The method of claim 25, further comprising generating and sending a request-response message to reply to the HTTPS acquisition request for obtaining the corresponding SIM.
27. The method of claim 24, 25 or 26, wherein exchanging data related to the corresponding SIM via the network communication interface includes receiving an HTTPS retrieval request including data related to an APDU command, and sending a response APDU (rAPDU) command from the server.
28. The method of claim 27, wherein the APDU command includes SIM operation data.
29. The method according to any one of claims 17 to 28, further comprising immediately disconnecting the secure connection after determining that no SIM-related data exchange has occurred after a predetermined time period.
30. The method according to any one of claims 17 to 29, wherein the server receives the SIM allocation request via the main network through the network communication interface, and the SIM-related data enables connection to an operator network different from the main network.
31. The method of claim 30, wherein the main network is one of a wireless network, a carrier network, or a radio network.
32. A computer program for a virtual SIM distribution server according to any one of claims 1 to 15 and / or a client device according to claim 16, the program comprising instructions for performing the method according to any one of claims 17 to 31.
33. A computer-readable storage medium having a computer program as described in claim 32 recorded thereon.