An encrypted call method, device, terminal and storage medium

By using different session keys and the ECDH algorithm to negotiate a shared key during encrypted calls, the problem of low call security caused by the use of the same key by various terminals in existing technologies is solved, thus achieving higher call security and data protection.

CN114697955BActive Publication Date: 2026-02-06HUAWEI TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202011613563.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-12-30
Publication Date
2026-02-06
Estimated Expiration
2040-12-30

Smart Images

  • Figure CN114697955B_ABST
    Figure CN114697955B_ABST
Patent Text Reader

Abstract

The application provides a method and device for encrypted communication, a terminal and a storage medium, and relates to the technical field of communication. The method comprises the following steps: a first terminal has a first session key of the first terminal, and a second session key corresponding to each of one or more second terminals in communication with the first terminal. During the communication, the first terminal encrypts the communication data of the first terminal by using the first session key, and sends the encrypted communication data to a server. And / or, the first terminal receives the encrypted communication data from at least one of the one or more second terminals, and decrypts the encrypted communication data of the at least one second terminal by using the second session key corresponding to the at least one second terminal, to obtain the communication data of the at least one second terminal. Thus, in the encrypted communication process, the keys used by each terminal for encrypting the communication data are different, and the security of the communication can be improved.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present application relates to the technical field of communication, in particular to an encrypted call method and device, a terminal and a storage medium. BACKGROUND

[0002] With the rapid development of communication technology, audio / video call has gradually become the main communication method in people's daily life and work. The privacy security of the call is also becoming more and more important. Therefore, it is usually necessary to encrypt the call data. In this way, key negotiation needs to be performed between each terminal participating in the encrypted call.

[0003] In the related art, the call system architecture includes a server, a key center and multiple terminals. In the process of establishing an encrypted call connection, after the server receives an encrypted call request of a certain terminal in the multiple terminals, the server requests a key from the key center, the key center generates a key for this encrypted call and sends it to the server. Then, the server sends the key to each terminal in the multiple terminals. In this way, each terminal can use the key to encrypt or decrypt the call data.

[0004] However, in the above implementation, since the key used is uniformly generated by the key center, that is, each terminal uses the same key for encryption or decryption, the security of the call is low. SUMMARY

[0005] The present application provides an encrypted call method, device, terminal and storage medium, which solves the problem that each terminal uses the same key for encryption or decryption in the prior art, resulting in low security of the call.

[0006] To achieve the above object, the present application adopts the following technical solutions:

[0007] In a first aspect, an encrypted call method is provided, applied to a first terminal, the first terminal having a first session key of the first terminal and a second session key corresponding to one or more second terminals in communication with the first terminal, the method comprising:

[0008] During the communication between the first terminal and the one or more second terminals, the first terminal sends call data of the first terminal encrypted by the first session key to a server; and / or,

[0009] The first terminal receives encrypted call data from at least one second terminal of the one or more second terminals, and decrypts the encrypted call data of the at least one second terminal using the second session key corresponding to the at least one second terminal to obtain the call data of the at least one second terminal.

[0010] Thus, in the encrypted call process, the keys used by the terminals for encrypting the call data are different, which can improve the security of the call. In addition, in the embodiment of the application, the server does not need to decrypt the encrypted call data, and the server only needs to transmit the encrypted call data, which can prevent the call data from being leaked, thereby improving the security of the call.

[0011] As an example of the present application, before the first terminal and one or more second terminals call, the method further comprises:

[0012] In the process of key negotiation, the first terminal determines a first shared key and the first session key, the first shared key is a shared key used between the first terminal and a target terminal, the target terminal is any one of the one or more second terminals;

[0013] The first terminal sends a first negotiation key to the server, the first negotiation key is obtained by the first terminal encrypting the first session key according to the first shared key;

[0014] The first terminal obtains a second negotiation key from the server, the second negotiation key is obtained by the target terminal encrypting a second session key based on the first shared key, the second session key is used to decrypt the call data of the target terminal in the encrypted call process;

[0015] The first terminal decrypts the second negotiation key based on the first shared key to obtain the second session key.

[0016] In the process of key negotiation, the first terminal determines a first negotiation key between the first terminal and a target terminal, and uploads it to the server, so that the target terminal decrypts the first session key after obtaining the first negotiation key from the server. In addition, the first terminal obtains a second negotiation key from the server to obtain a second session key by decrypting the second negotiation key, thereby realizing key negotiation.

[0017] As an example of the present application, the determination of the first shared key comprises:

[0018] Obtaining the public key of the target terminal;

[0019] Generating the first shared key based on the private key of the first terminal and the public key of the target terminal through an elliptic curve Diffie-Hellman key exchange (ECDH) algorithm, the private key of the first terminal is generated by the first terminal through the ECDH algorithm.

[0020] That is, the first terminal and the target terminal respectively determine a public-private key pair through the ECDH algorithm, so that the first terminal and the target terminal can determine the shared key between them through the ECDH algorithm after exchanging the public key.

[0021] As an example of the present application, the obtaining of the public key of the target terminal comprises:

[0022] Sending an encrypted call request to the server, the encrypted call request being used to request to establish an encrypted call connection;

[0023] Receiving an encrypted call response from the server, the encrypted call response carrying the public key of the target terminal.

[0024] Thus, in the process of establishing an encrypted call connection, the public key of the opposite terminal can be obtained through signaling interaction, avoiding the need to increase new signaling and saving signaling overhead.

[0025] As an example of the present application, the obtaining of the public key of the target terminal comprises:

[0026] Sending an encrypted call request to the server, the encrypted call request being used to request to establish an encrypted call connection;

[0027] After receiving the encrypted call response from the server, sending a first query request to the server, the first query request being used to request the public key of the target terminal;

[0028] Receiving a first query response fed back by the server based on the first query request, the first query response carrying the public key of the target terminal.

[0029] When receiving the encrypted call response sent by the target terminal, it can be determined that the public key of the target terminal has been stored in the server. Therefore, the first terminal can send a first query request to the server to obtain the public key of the target terminal.

[0030] As an example of the present application, the first terminal is a calling terminal, and the determining of the first shared key comprises:

[0031] The first terminal obtains the public key of the target terminal and the key version number of the public-private key pair of the target terminal stored in the server by the server;

[0032] If the first terminal determines that the latest acquired key version number is inconsistent with the key version number stored locally by the target terminal, the first terminal re-executes the operation of acquiring the key version number of the server's latest stored public key of the target terminal and the public-private key pair of the target terminal from the server until it determines that the latest acquired key version number is consistent with the key version number stored locally by the target terminal.

[0033] If the first terminal determines that the latest acquired key version number is consistent with the key version number stored locally by the target terminal, the first terminal generates the first shared key based on the private key of the first terminal and the latest acquired public key of the target terminal from the server by using the ECDH algorithm, wherein the private key of the first terminal is generated by the first terminal by using the ECDH algorithm.

[0034] In the key negotiation process between the first terminal and the target terminal, when the first shared key is determined, the first terminal acquires the key version number of the latest stored public key of the target terminal and the public-private key pair of the target terminal from the server, and performs verification based on the latest acquired key version number. If the first terminal determines that the latest acquired key version number is inconsistent with the key version number stored locally by the target terminal, the first terminal returns to the operation of acquiring the key version number of the server's latest stored public key of the target terminal and the public-private key pair of the target terminal from the server. Until the verification is consistent, it indicates that the key version numbers of the first terminal and the target terminal are consistent, so the first terminal determines the first shared key based on the latest acquired public key of the target terminal, and determines the first negotiation key based on the first shared key. Then, the first negotiation key is uploaded to the server, and the second negotiation key is acquired from the server. In this way, the first terminal and the target terminal can perform key negotiation based on the same version of the public key, thereby improving the consistency and effectiveness of the key negotiation.

[0035] As an example of the present application, the method further comprises:

[0036] Regenerating the public-private key pair after the encrypted communication with one or more second terminals ends;

[0037] Sending the public key in the regenerated public-private key pair and the key version number of the regenerated public-private key pair to the server.

[0038] Regenerating the public-private key pair after the encrypted communication ends, and sending the public key in the regenerated public-private key pair and the key version number of the regenerated public-private key pair to the server for storage. In this way, when the first terminal and one or more second terminals perform encrypted communication next time, the latest stored public key and key version number can be acquired from the server.

[0039] In a second aspect, an encrypted communication device is provided, which is applied to a first terminal, the first terminal having a first session key of the first terminal and second session keys corresponding to one or more second terminals in communication with the first terminal, the device comprising:

[0040] a communication module configured to send, to a server, communication data of the first terminal encrypted by the first session key during an encrypted communication process between the first terminal and the one or more second terminals; and / or,

[0041] a decryption module configured to receive encrypted communication data of at least one of the one or more second terminals, and decrypt the encrypted communication data of the at least one second terminal by a second session key corresponding to the at least one second terminal to obtain communication data of the at least one second terminal.

[0042] In an example of the present disclosure, the communication module is further configured to:

[0043] determine a first shared key and the first session key during a key agreement process, the first shared key being a shared key used between the first terminal and a target terminal, the target terminal being any one of the one or more second terminals;

[0044] send, to the server, a first agreement key, the first agreement key being obtained by the first terminal from the first shared key and the first session key;

[0045] obtain, from the server, a second agreement key, the second agreement key being obtained by the target terminal from a second session key based on the first shared key, the second session key being used to decrypt communication data of the target terminal during the encrypted communication process;

[0046] decrypt the second agreement key based on the first shared key to obtain the second session key.

[0047] In an example of the present disclosure, the communication module is configured to:

[0048] obtain a public key of the target terminal;

[0049] generate the first shared key based on a private key of the first terminal and the public key of the target terminal by an Elliptic Curve Diffie-Hellman (ECDH) algorithm, the private key of the first terminal being generated by the first terminal through the ECDH algorithm.

[0050] In an example of the present disclosure, the communication module is configured to:

[0051] sending an encrypted call request to the server, the encrypted call request being used to request to establish an encrypted call connection;

[0052] receiving an encrypted call response from the server, the encrypted call response carrying a public key of the target terminal.

[0053] As an example of the present application, the call module is used to:

[0054] sending an encrypted call request to the server, the encrypted call request being used to request to establish an encrypted call connection;

[0055] after receiving an encrypted call response from the server, sending a first query request to the server, the first query request being used to request a public key of the target terminal;

[0056] receiving a first query response fed back by the server based on the first query request, the first query response carrying the public key of the target terminal.

[0057] As an example of the present application, the first terminal is a calling terminal, and the call module is used to:

[0058] obtaining, from the server, a public key of the target terminal and a key version number of a public-private key pair of the target terminal stored by the server most recently;

[0059] in a case where it is determined that the key version number obtained most recently is inconsistent with a key version number stored locally by the target terminal, re-executing the operation of obtaining, from the server, the public key of the target terminal and the key version number of the public-private key pair of the target terminal stored by the server most recently, until it is determined that the key version number obtained most recently is consistent with the key version number stored locally by the target terminal;

[0060] in a case where it is determined that the key version number obtained most recently is consistent with the key version number stored locally by the target terminal, generating the first shared key based on a private key of the first terminal and the public key of the target terminal obtained from the server most recently by using the ECDH algorithm, the private key of the first terminal being generated by the first terminal by using the ECDH algorithm.

[0061] As an example of the present application, the call module is further used to:

[0062] in a case where the encrypted call with the one or more second terminals ends, re-generating a public-private key pair;

[0063] sending, to the server, a public key in the re-generated public-private key pair and a key version number of the re-generated public-private key pair.

[0064] In a third aspect, a terminal is provided, which includes a processor and a memory in its structure. The memory is configured to store a program supporting the terminal to execute the method of any one of the first aspect, and store data used in implementing the method of any one of the first aspect. The processor is configured to execute the program stored in the memory. The terminal can further include a communication bus configured to establish a connection between the processor and the memory.

[0065] In a fourth aspect, a computer readable storage medium is provided, which stores instructions, when executed on a computer, cause the computer to execute the method of any one of the first aspect.

[0066] In a fifth aspect, a computer program product is provided, which includes instructions, when executed on a computer, cause the computer to execute the method of the first aspect.

[0067] The technical effects obtained by the second aspect, the third aspect, the fourth aspect and the fifth aspect are similar to the technical effects obtained by the corresponding technical means in the first aspect, which will not be repeated here.

[0068] The technical scheme provided in the present application can bring at least the following beneficial effects:

[0069] The first terminal includes a first session key of the first terminal, and a second session key corresponding to each of one or more second terminals in communication with the first terminal. During the communication between the first terminal and the one or more second terminals, the first terminal encrypts the communication data of the first terminal by using the first session key, and then sends the encrypted communication data to a server. In addition, the first terminal receives encrypted communication data from at least one of the one or more second terminals, and decrypts the encrypted communication data of the at least one second terminal by using the second session key corresponding to the at least one second terminal, to obtain the communication data of the at least one second terminal. In this way, in the encrypted communication process, the keys used by each terminal to encrypt the communication data are different, which can improve the security of the communication. BRIEF DESCRIPTION OF DRAWINGS

[0070] Figure 1 A structural diagram of a terminal provided by an embodiment of the present application;

[0071] Figure 2 A schematic diagram of a system architecture provided by an embodiment of the present application;

[0072] Figure 3 A communication interface display of a terminal in an application scenario provided by an embodiment of the present application;

[0073] Figure 4 A call interface display diagram of a terminal in another application scenario provided by an embodiment of the present application;

[0074] Figure 5 A flowchart of an encrypted call method provided by an embodiment of the present application;

[0075] Figure 6 A flowchart of a key negotiation method provided by an embodiment of the present application;

[0076] Figure 7 A flowchart of another encrypted call method provided by an embodiment of the present application;

[0077] Figure 8 A flowchart of another encrypted call method provided by an embodiment of the present application;

[0078] Figure 9 A flowchart of another encrypted call method provided by an embodiment of the present application;

[0079] Figure 10 A flowchart of another encrypted call method provided by an embodiment of the present application;

[0080] Figure 11 A flowchart of another encrypted call method provided by an embodiment of the present application;

[0081] Figure 12 A structural diagram of an encrypted call device provided by an embodiment of the present application. DETAILED DESCRIPTION

[0082] In order to make the purpose, technical solutions and advantages of the present application clearer, the embodiments of the present application will be further described in detail below with reference to the drawings.

[0083] It should be understood that the "multiple" mentioned in the present application refers to two or more than two. In the description of the present application, unless otherwise specified, " / " represents the meaning of or, for example, A / B can represent A or B; "and / or" in the present application is only a description of the association relationship between the associated objects, which means that there can be three relationships, for example, A and / or B, which can represent the three cases of A alone, A and B together, and B alone. In addition, in order to clearly describe the technical solutions of the present application, the same items or similar items with basically the same functions and effects are distinguished by using "first", "second", etc. The skilled in the art can understand that "first", "second", etc. do not limit the quantity and execution order, and "first", "second", etc. also do not limit the difference.

[0084] Before the encrypted call method provided by the embodiments of the present application is described in detail, the execution subject involved in the embodiments of the present application is briefly introduced. As an example, the encrypted call method provided by the embodiments of the present application can be applied to a terminal with a call function. The call function includes an audio call function and / or a video call function, and the terminal has a call encryption capability, that is, the terminal can realize encrypted call. In an embodiment, the terminal can include but is not limited to a mobile phone, a tablet computer, an augmented reality (AR) / virtual reality (VR) device, a notebook computer, an ultra-mobile personal computer (UMPC), a netbook, a personal digital assistant (PDA).

[0085] Please refer to Figure 1 , Figure 1 is a structural schematic diagram of a terminal provided by the embodiments of the present application.

[0086] The terminal 100 can include a processor 110, an external memory interface 120, an internal memory 121, a universal serial bus (USB) interface 130, a charging management module 140, a power management module 141, a battery 142, an antenna 1, an antenna 2, a mobile communication module 150, a wireless communication module 160, an audio module 170, a loudspeaker 170A, a receiver 170B, a microphone 170C, a headset interface 170D, a sensor module 180, a key 190, a motor 191, an indicator 192, a camera 193, a display screen 194, and a subscriber identification module (SIM) card interface 195, etc. The sensor module 180 can include a pressure sensor 180A, a gyroscope sensor 180B, a barometric pressure sensor 180C, a magnetic sensor 180D, an acceleration sensor 180E, a distance sensor 180F, a proximity light sensor 180G, a fingerprint sensor 180H, a temperature sensor 180J, a touch sensor 180K, an ambient light sensor 180L, a bone conduction sensor 180M, etc.

[0087] It can be understood that the structure shown in the embodiments of the present application does not constitute a specific limitation on the terminal 100. In other embodiments of the present application, the terminal 100 can include more or fewer components than shown, or combine certain components, or split certain components, or different component arrangements. The components shown can be implemented in hardware, software, or a combination of software and hardware.

[0088] The processor 110 can include one or more processing units, for example: the processor 110 can include an application processor (AP), a modem processor, a graphics processing unit (GPU), an image signal processor (ISP), a controller, a memory, a video codec, a digital signal processor (DSP), a baseband processor, and / or a neural-network processing unit (NPU), etc. Different processing units can be independent devices or integrated in one or more processors.

[0089] The controller can be the nerve center and command center of the terminal 100. The controller can generate operation control signals according to instruction operation codes and timing signals, and complete the control of fetching and executing instructions.

[0090] The processor 110 can also be provided with a memory for storing instructions and data. In some embodiments, the memory in the processor 110 is a cache memory. The memory can save instructions or data that the processor 110 has just used or repeatedly uses. If the processor 110 needs to use the instructions or data again, it can directly call from the memory. This avoids repeated access and reduces the waiting time of the processor 110, thereby improving the efficiency of the system.

[0091] In some embodiments, the processor 110 can include one or more interfaces. The interfaces can include an inter-integrated circuit (I2C) interface, an inter-integrated circuit sound (I2S) interface, a pulse code modulation (PCM) interface, a universal asynchronous receiver / transmitter (UART) interface, a mobile industry processor interface (MIPI), a general-purpose input / output (GPIO) interface, a subscriber identity module (SIM) interface, and / or a universal serial bus (USB) interface, etc.

[0092] The I2C interface is a bidirectional synchronous serial bus, including a serial data line (SDA) and a serial clock line (SCL). In some embodiments, the processor 110 can contain multiple sets of I2C bus. The processor 110 can be coupled to the touch sensor 180K, the charger, the flash, the camera 193, etc. through different I2C bus interfaces respectively. For example, the processor 110 can be coupled to the touch sensor 180K through an I2C interface, so that the processor 110 and the touch sensor 180K communicate through the I2C bus interface, and the touch function of the terminal 100 is realized.

[0093] The I2S interface can be used for audio communication. In some embodiments, the processor 110 can contain multiple sets of I2S bus. The processor 110 can be coupled to the audio module 170 through the I2S bus, and communication between the processor 110 and the audio module 170 is realized. In some embodiments, the audio module 170 can deliver audio signals to the wireless communication module 160 through the I2S interface, and the function of answering a phone through a Bluetooth earphone is realized.

[0094] The PCM interface can also be used for audio communication, sampling, quantizing and encoding analog signals. In some embodiments, the audio module 170 and the wireless communication module 160 can be coupled through the PCM bus interface. In some embodiments, the audio module 170 can also deliver audio signals to the wireless communication module 160 through the PCM interface, and the function of answering a phone through a Bluetooth earphone is realized. Both the I2S interface and the PCM interface can be used for audio communication.

[0095] The UART interface is a universal serial data bus, which is used for asynchronous communication. The bus can be a bidirectional communication bus. It converts the data to be transmitted between serial communication and parallel communication. In some embodiments, the UART interface is usually used to connect the processor 110 and the wireless communication module 160. For example, the processor 110 communicates with the Bluetooth module in the wireless communication module 160 through the UART interface, and the Bluetooth function is realized. In some embodiments, the audio module 170 can deliver audio signals to the wireless communication module 160 through the UART interface, and the function of playing music through a Bluetooth earphone is realized.

[0096] The MIPI interface can be used to connect the processor 110 and the display screen 194, the camera 193 and other peripheral devices. The MIPI interface includes a camera serial interface (CSI), a display serial interface (DSI), and the like. In some embodiments, the processor 110 and the camera 193 communicate through the CSI interface to implement the photographing function of the terminal 100. The processor 110 and the display screen 194 communicate through the DSI interface to implement the display function of the terminal 100.

[0097] The GPIO interface can be configured by software. The GPIO interface can be configured as a control signal or as a data signal. In some embodiments, the GPIO interface can be used to connect the processor 110 and the camera 193, the display screen 194, the wireless communication module 160, the audio module 170, the sensor module 180, and the like. The GPIO interface can also be configured as an I2C interface, an I2S interface, a UART interface, a MIPI interface, and the like.

[0098] The USB interface 130 is an interface that conforms to the USB standard specification, and can be a Mini USB interface, a Micro USB interface, a USB Type C interface, or the like. The USB interface 130 can be used to connect a charger to charge the terminal 100, and can also be used to transmit data between the terminal 100 and peripheral devices. It can also be used to connect a headset to play audio through the headset. The interface can also be used to connect other terminals, such as AR devices and the like.

[0099] It can be understood that the interface connection relationship between the modules shown in the embodiments of the present application is only illustrative and does not constitute a structural limitation of the terminal 100. In other embodiments of the present application, the terminal 100 can also use different interface connection methods or combinations of multiple interface connection methods in the above embodiments.

[0100] The charging management module 140 is used to receive charging input from a charger. The charger can be a wireless charger or a wired charger. In some wired charging embodiments, the charging management module 140 can receive charging input from a wired charger through the USB interface 130. In some wireless charging embodiments, the charging management module 140 can receive wireless charging input through the wireless charging coil of the terminal 100. The charging management module 140 can charge the battery 142 while also supplying power to the terminal through the power management module 141.

[0101] The power management module 141 is configured to connect the battery 142 and the charging management module 140 to the processor 110. The power management module 141 receives input from the battery 142 and / or the charging management module 140 to power the processor 110, the internal memory 121, the external memory, the display 194, the camera 193, the wireless communication module 160, and the like. The power management module 141 can also be configured to monitor parameters such as the battery capacity, the number of battery cycles, the battery health status (leakage, impedance), and the like. In some embodiments, the power management module 141 can also be disposed in the processor 110. In some other embodiments, the power management module 141 and the charging management module 140 can be disposed in the same device.

[0102] The wireless communication functions of the terminal 100 can be implemented by the antenna 1, the antenna 2, the mobile communication module 150, the wireless communication module 160, the modem processor, and the baseband processor, and the like.

[0103] The antenna 1 and the antenna 2 are configured to transmit and receive electromagnetic wave signals. Each antenna in the terminal 100 can be configured to cover a single or multiple communication frequency bands. Different antennas can also be multiplexed to improve the utilization of the antennas. For example, the antenna 1 can be multiplexed as a diversity antenna for a wireless local area network. In some other embodiments, the antennas can be used in combination with a tuning switch.

[0104] The mobile communication module 150 can provide a solution for wireless communication including 2G / 3G / 4G / 5G and the like applied to the terminal 100. The mobile communication module 150 can include at least one filter, a switch, a power amplifier, a low noise amplifier (LNA), and the like. The mobile communication module 150 can receive electromagnetic waves from the antenna 1, filter, amplify, and the like the received electromagnetic waves, and transmit the processed signals to the modem processor for demodulation. The mobile communication module 150 can also amplify signals modulated by the modem processor and radiate the signals as electromagnetic waves through the antenna 1. In some embodiments, at least part of the functional modules of the mobile communication module 150 can be disposed in the processor 110. In some embodiments, at least part of the functional modules of the mobile communication module 150 and at least part of the modules of the processor 110 can be disposed in the same device.

[0105] The modem processor can include a modulator and a demodulator. The modulator is configured to modulate a low-frequency baseband signal to be transmitted into a medium-high frequency signal. The demodulator is configured to demodulate a received electromagnetic wave signal into a low-frequency baseband signal. The demodulator then transmits the demodulated low-frequency baseband signal to the baseband processor for processing. The low-frequency baseband signal processed by the baseband processor is transmitted to the application processor. The application processor outputs a sound signal through an audio device (not limited to a speaker 170A, a microphone 170B, etc.), or displays an image or a video through the display 194. In some embodiments, the modem processor can be a separate device. In other embodiments, the modem processor can be independent of the processor 110 and disposed in the same device as the mobile communication module 150 or other functional modules.

[0106] The wireless communication module 160 can provide a wireless communication solution applied to the terminal 100, including wireless local area networks (WLAN) such as wireless fidelity (Wi-Fi) networks, Bluetooth (BT), global navigation satellite system (GNSS), frequency modulation (FM), near field communication (NFC), infrared (IR) technology, and the like. The wireless communication module 160 can be one or more devices that integrate at least one communication processing module. The wireless communication module 160 receives electromagnetic waves via the antenna 2, performs frequency modulation and filtering processing on the electromagnetic wave signal, and transmits the processed signal to the processor 110. The wireless communication module 160 can also receive a signal to be transmitted from the processor 110, perform frequency modulation, amplification, and convert it into electromagnetic wave radiation via the antenna 2.

[0107] In some embodiments, antenna 1 and mobile communication module 150 of terminal 100 are coupled, and antenna 2 and wireless communication module 160 are coupled, so that terminal 100 can communicate with a network and other devices through wireless communication technology. The wireless communication technology can include global system for mobile communications (GSM), general packet radio service (GPRS), code division multiple access (CDMA), wideband code division multiple access (WCDMA), time-division code division multiple access (TD-SCDMA), long term evolution (LTE), BT, GNSS, WLAN, NFC, FM, and / or IR technology, etc. The GNSS can include global positioning system (GPS), global navigation satellite system (GLONASS), beidou navigation satellite system (BDS), quasi-zenith satellite system (QZSS), and / or satellite based augmentation systems (SBAS).

[0108] Terminal 100 implements a display function through a GPU, display screen 194, and an application processor, etc. The GPU is a microprocessor for image processing, connected to display screen 194 and the application processor. The GPU is used to perform mathematical and geometric calculations, for graphics rendering. Processor 110 can include one or more GPUs that execute program instructions to generate or change display information.

[0109] The display screen 194 is configured to display images, videos, and the like. The display screen 194 includes a display panel. The display panel can be a liquid crystal display (LCD), an organic light-emitting diode (OLED), an active-matrix organic light-emitting diode (AMOLED), a flex light-emitting diode (FLED), a Miniled, a MicroLed, a Micro-oLed, a quantum dot light emitting diodes (QLED), or the like. In some embodiments, the terminal 100 can include one or N display screens 194, where N is a positive integer greater than 1.

[0110] The terminal 100 can implement the photographing function through the ISP, the camera 193, the video codec, the GPU, the display screen 194, and the application processor.

[0111] The ISP is configured to process the data fed back by the camera 193. For example, when taking a photo, the shutter is opened, the light is transmitted to the camera photosensitive element through the lens, the light signal is converted into an electrical signal, and the camera photosensitive element transmits the electrical signal to the ISP for processing to convert it into an image visible to the naked eye. The ISP can also perform algorithm optimization on the noise, brightness, and skin color of the image. The ISP can also optimize the exposure, color temperature, and other parameters of the shooting scene. In some embodiments, the ISP can be arranged in the camera 193.

[0112] The camera 193 is configured to capture still images or videos. An object generates an optical image through a lens and projects it onto a photosensitive element. The photosensitive element can be a charge coupled device (CCD) or a complementary metal-oxide-semiconductor (CMOS) phototransistor. The photosensitive element converts the light signal into an electrical signal, which is then transmitted to the ISP to convert it into a digital image signal. The ISP outputs the digital image signal to the DSP for processing. The DSP converts the digital image signal into an image signal in a standard RGB, YUV, or the like format. In some embodiments, the terminal 100 can include one or N cameras 193, where N is a positive integer greater than 1.

[0113] The digital signal processor is used to process digital signals, in addition to being able to process digital image signals, it can also process other digital signals. For example, when the terminal 100 selects a frequency point, the digital signal processor is used to perform Fourier transform on the frequency point energy, etc.

[0114] The video codec is used to compress or decompress digital video. The terminal 100 can support one or more video codecs. In this way, the terminal 100 can play or record videos in multiple encoding formats, such as: moving picture experts group (MPEG) 1, MPEG 2, MPEG 3, MPEG 4, etc.

[0115] The NPU is a neural-network (NN) calculation processor, which can quickly process input information by drawing on the structure of a biological neural network, such as drawing on the transmission mode between human brain neurons, and can also constantly self-learn. Through the NPU, intelligent cognitive applications of the terminal 100 can be realized, such as: image recognition, face recognition, voice recognition, text understanding, etc.

[0116] The external memory interface 120 can be used to connect an external memory card, such as a Micro SD card, to expand the storage capacity of the terminal 100. The external memory card communicates with the processor 110 through the external memory interface 120 to realize data storage functions. For example, music, video, etc. Files are saved in the external memory card.

[0117] The internal memory 121 can be used to store computer executable program codes, which include instructions. The processor 110 executes various functional applications and data processing of the terminal 100 by running the instructions stored in the internal memory 121. The internal memory 121 can include a program storage area and a data storage area. The program storage area can store an operating system, at least one application program required by a function (such as a sound playing function, an image playing function, etc.), etc. The data storage area can store data created during the use of the terminal 100 (such as audio data, a phone book, etc.), etc. In addition, the internal memory 121 can include a high-speed random access memory, and can also include a non-volatile memory, such as at least one magnetic disk storage device, a flash memory device, a universal flash storage (UFS), etc.

[0118] The terminal 100 can realize audio functions through the audio module 170, the speaker 170A, the receiver 170B, the microphone 170C, the earphone interface 170D, and the application processor, etc. For example, music playing, recording, etc.

[0119] The audio module 170 is configured to convert digital audio information into an analog audio signal output, and to convert an analog audio input into a digital audio signal. The audio module 170 can also be configured to encode and decode audio signals. In some embodiments, the audio module 170 can be disposed in the processor 110, or some of the functions of the audio module 170 can be disposed in the processor 110.

[0120] The speaker 170A, also referred to as a "loudspeaker", is configured to convert an audio electrical signal into a sound signal. The terminal 100 can listen to music or listen to a hands-free call through the speaker 170A.

[0121] The receiver 170B, also referred to as a "earpiece", is configured to convert an audio electrical signal into a sound signal. When the terminal 100 answers a call or a voice message, the user can listen to the voice by holding the receiver 170B close to the ear.

[0122] The microphone 170C, also referred to as a "microphone", "sound collector", is configured to convert a sound signal into an electrical signal. When making a call or sending a voice message, the user can speak into the microphone 170C by holding the mouth close to the microphone 170C, and input the sound signal into the microphone 170C. The terminal 100 can be provided with at least one microphone 170C. In other embodiments, the terminal 100 can be provided with two microphones 170C, in addition to collecting sound signals, noise reduction functions can also be achieved. In other embodiments, the terminal 100 can also be provided with three, four or more microphones 170C, in addition to collecting sound signals, noise reduction, and can also identify the source of the sound, and achieve directional recording functions, etc.

[0123] The earphone interface 170D is configured to connect a wired earphone. The earphone interface 170D can be a USB interface 130, or a 3.5mm open mobile terminal platform (OMTP) standard interface, a cellular telecommunications industry association of the USA (CTIA) standard interface.

[0124] The pressure sensor 180A is configured to sense a pressure signal and convert the pressure signal into an electrical signal. In some embodiments, the pressure sensor 180A can be disposed on the display 194. The pressure sensor 180A can be of various types, such as a resistive pressure sensor, an inductive pressure sensor, a capacitive pressure sensor, etc. The capacitive pressure sensor can include at least two parallel plates of conductive material. When a force is applied to the pressure sensor 180A, the capacitance between the electrodes changes. The terminal 100 determines the intensity of the pressure based on the change in capacitance. When a touch operation is applied to the display 194, the terminal 100 detects the intensity of the touch operation based on the pressure sensor 180A. The terminal 100 can also calculate the position of the touch based on the detection signal of the pressure sensor 180A. In some embodiments, touch operations applied to the same touch position but with different touch operation intensities can correspond to different operation instructions. For example, when a touch operation with an intensity less than a first pressure threshold is applied to a short message application icon, an instruction to view a short message is executed. When a touch operation with an intensity greater than or equal to the first pressure threshold is applied to the short message application icon, an instruction to create a new short message is executed.

[0125] The gyro sensor 180B can be configured to determine the motion attitude of the terminal 100. In some embodiments, the angular velocity of the terminal 100 around three axes (i.e., x, y, and z axes) can be determined by the gyro sensor 180B. The gyro sensor 180B can be used for anti-shake shooting. For example, when a shutter is pressed, the gyro sensor 180B detects the angle of shaking of the terminal 100, calculates the distance that needs to be compensated for the lens module based on the angle, and lets the lens offset the shaking of the terminal 100 by reverse movement to achieve anti-shake. The gyro sensor 180B can also be used for navigation and motion sensing game scenarios.

[0126] The barometric pressure sensor 180C is configured to measure air pressure. In some embodiments, the terminal 100 calculates the altitude, assists positioning and navigation based on the air pressure value measured by the barometric pressure sensor 180C.

[0127] The magnetic sensor 180D includes a Hall sensor. The terminal 100 can detect the opening and closing of a flip cover or a leather cover using the magnetic sensor 180D. In some embodiments, when the terminal 100 is a flip phone, the terminal 100 can detect the opening and closing of the flip cover based on the magnetic sensor 180D. Further, based on the detected opening and closing state of the leather cover or the opening and closing state of the flip cover, the terminal 100 can set a feature such as automatic unlocking of the flip cover.

[0128] The acceleration sensor 180E can detect the magnitude of acceleration of the terminal 100 in various directions (generally three axes). When the terminal 100 is stationary, the acceleration sensor 180E can detect the magnitude and direction of gravity. The acceleration sensor 180E can also be used to identify the attitude of the terminal 100 and applied to applications such as landscape / portrait screen switching and pedometers.

[0129] The distance sensor 180F is used to measure a distance. The terminal 100 can measure a distance by infrared or laser. In some embodiments, the terminal 100 can utilize the distance sensor 180F to measure a distance for fast focusing when taking a picture of a scene.

[0130] The proximity light sensor 180G can include, for example, a light emitting diode (LED) and a light detector, such as a photodiode. The light emitting diode can be an infrared light emitting diode. The terminal 100 emits infrared light outwardly through the light emitting diode. The terminal 100 detects infrared reflected light from nearby objects using the photodiode. When sufficient reflected light is detected, the terminal 100 can determine that there is an object near the terminal 100. When insufficient reflected light is detected, the terminal 100 can determine that there is no object near the terminal 100. The terminal 100 can utilize the proximity light sensor 180G to detect when a user is holding the terminal 100 close to an ear for a phone call, so as to automatically turn off the screen for power saving purposes. The proximity light sensor 180G can also be used for automatic unlocking and locking of the screen in a holster mode or a pocket mode.

[0131] The ambient light sensor 180L is used to sense ambient light brightness. The terminal 100 can adaptively adjust the display screen 194 brightness according to the sensed ambient light brightness. The ambient light sensor 180L can also be used to automatically adjust white balance when taking a picture. The ambient light sensor 180L can also cooperate with the proximity light sensor 180G to detect whether the terminal 100 is in a pocket, so as to prevent accidental touch.

[0132] The fingerprint sensor 180H is used to collect a fingerprint. The terminal 100 can utilize the collected fingerprint characteristics to implement fingerprint unlocking, access application locking, fingerprint picture taking, fingerprint call answering, and the like.

[0133] The temperature sensor 180J is used to detect a temperature. In some embodiments, the terminal 100 utilizes the temperature detected by the temperature sensor 180J to implement a temperature handling strategy. For example, when the temperature reported by the temperature sensor 180J exceeds a threshold, the terminal 100 implements performance reduction of a processor located near the temperature sensor 180J, so as to reduce power consumption and implement thermal protection. In other embodiments, when the temperature is lower than another threshold, the terminal 100 heats the battery 142, so as to avoid abnormal shutdown of the terminal 100 caused by low temperature. In still other embodiments, when the temperature is lower than yet another threshold, the terminal 100 implements voltage boosting of an output voltage of the battery 142, so as to avoid abnormal shutdown caused by low temperature.

[0134] Touch sensor 180K, also referred to as "touch panel". Touch sensor 180K can be disposed on display screen 194, and touch sensor 180K and display screen 194 together form a touch screen, also referred to as "touch panel". Touch sensor 180K is configured to detect touch operations applied to or near the touch sensor 180K. The touch sensor 180K can transmit the detected touch operation to the application processor to determine the touch event type. Visual output related to the touch operation can be provided through display screen 194. In other embodiments, touch sensor 180K can also be disposed on the surface of terminal 100, which is different from the position of display screen 194.

[0135] Bone conduction sensor 180M can obtain vibration signals. In some embodiments, bone conduction sensor 180M can obtain vibration signals of the human body's vocal vibration bone block. Bone conduction sensor 180M can also contact the human body pulse to receive blood pressure pulsation signals. In some embodiments, bone conduction sensor 180M can also be disposed in a headset to form a bone conduction headset. Audio module 170 can analyze voice signals based on the vibration signals of the vocal vibration bone block obtained by the bone conduction sensor 180M to realize voice functions. The application processor can analyze heart rate information based on the blood pressure pulsation signals obtained by the bone conduction sensor 180M to realize heart rate detection functions.

[0136] Keys 190 include power on / off keys, volume keys, and the like. Keys 190 can be mechanical keys. They can also be touch keys. Terminal 100 can receive key input and generate key signal input related to user settings and function control of terminal 100.

[0137] Motor 191 can generate vibration prompts. Motor 191 can be used for incoming call vibration prompts and also for touch vibration feedback. For example, touch operations applied to different applications (such as taking pictures, playing audio, etc.) can correspond to different vibration feedback effects. Touch operations applied to different regions of display screen 194 can also correspond to different vibration feedback effects of motor 191. Different application scenarios (such as time reminders, received messages, alarms, games, etc.) can also correspond to different vibration feedback effects. Touch vibration feedback effects can also be customizable.

[0138] Indicator 192 can be an indicator light, which can be used to indicate charging status, power changes, and also to indicate messages, missed calls, notifications, and the like.

[0139] The SIM card interface 195 is configured to connect a SIM card. The SIM card can be inserted into or removed from the SIM card interface 195 to realize contact and separation with the terminal 100. The terminal 100 can support one or N SIM card interfaces, where N is a positive integer greater than 1. The SIM card interface 195 can support a Nano SIM card, a Micro SIM card, a SIM card, and the like. The same SIM card interface 195 can simultaneously insert multiple cards. The types of the multiple cards can be the same or different. The SIM card interface 195 can also be compatible with different types of SIM cards. The SIM card interface 195 can also be compatible with external storage cards. The terminal 100 interacts with a network through the SIM card to realize functions such as call and data communication. In some embodiments, the terminal 100 uses an eSIM, that is, an embedded SIM card. The eSIM card can be embedded in the terminal 100 and cannot be separated from the terminal 100.

[0140] The software system of the terminal 100 can adopt a layered architecture, an event-driven architecture, a microkernel architecture, a microservice architecture, or a cloud architecture. Embodiments of the present application exemplarily illustrate the software structure of the terminal 100 by taking an Android system with a layered architecture as an example.

[0141] Next, the system architecture related to the embodiments of the present application is briefly introduced. Please refer to Figure 2 , Figure 2 is a schematic diagram of a system architecture according to an exemplary embodiment, which mainly includes a server 210 and a plurality of terminals 220. The server 210 and each of the plurality of terminals 220 are connected to each other to establish a communication connection. As an example of the present application, the plurality of terminals 220 realize encrypted communication through the server 210. In an embodiment, any one of the plurality of terminals 220 can be the terminal 100 described above.

[0142] Based on the system architecture provided above Figure 2 , next, the application scenarios related to the embodiments of the present application are introduced.

[0143] In an embodiment, it is assumed that the plurality of terminals 220 include a mobile phone A, a mobile phone B, and a mobile phone C, and the encrypted communication of users A, B, and C using their respective mobile phones is exemplarily described. It is assumed that the mobile phone used by the user A is the mobile phone A, the mobile phone used by the user B is the mobile phone B, and the mobile phone used by the user C is the mobile phone C. The mobile phones A, B, and C all install a communication application program, and the users A, B, and C can click the application icon of the communication application program in their respective mobile phones. In response to the triggering operation of the user on the application icon of the communication application program, each mobile phone runs the communication application program.

[0144] As an example of the present application, the encrypted call option can be provided in the running interface of the call application of each mobile phone, for example, the encrypted call option can include a video encrypted call option and / or an audio encrypted call option. In an embodiment, when user A wants to initiate a multi-party encrypted call with user B and user C, user A can click the audio encrypted call option provided by the call application in mobile phone A. In response to the triggering operation of the audio encrypted call option, mobile phone A sends an encrypted call request to mobile phone B and mobile phone C through the server, to request user B and user C to join the encrypted call.

[0145] As an example, after mobile phone B receives the encrypted call request, a call prompt message can be displayed to user B. When mobile phone B detects the confirmation joining instruction of user B based on the call prompt message, it is determined that user B wants to join the encrypted call. At this time, mobile phone B feeds back an encrypted call response to mobile phone A and mobile phone C through the server, to join the encrypted call. In addition, after mobile phone C receives the encrypted call request, a call prompt message can also be displayed to user C. When mobile phone C detects the confirmation joining instruction of user C based on the call prompt message, it is determined that user C wants to join the encrypted call. At this time, mobile phone C feeds back an encrypted call response to mobile phone A and mobile phone B through the server, to join the encrypted call.

[0146] As an example, when each mobile phone receives the encrypted call response fed back by the other mobile phone, the encrypted call is established, so that user A, user B and user C can have an encrypted call. As an example, the display effect of the encrypted call between user A, user B and user C is shown in Figure 3

[0147] As an example of the present application, during the encrypted call, any one of user A, user B and user C can add other members to the encrypted call. As an example, referring to Figure 4 , the display interface of the encrypted call of each mobile phone provides an "add member" option. Taking user B inviting new user D and new user E as an example, user B can trigger the "add member" option. In response to the triggering operation of the "add member" option by user B, mobile phone B requests new user D and new user E to join the encrypted call through the server.

[0148] It should be noted that during the encrypted call, any one of the multiple users participating in the encrypted call can individually quit the encrypted call without affecting other users to continue the encrypted call, and the present application does not make too much introduction to this.

[0149] Based on the terminal, system architecture and application scenario introduced above, the encrypted call method provided by the embodiments of the present application will be described in detail in combination with the drawings.

[0150] ​Please refer to Figure 5 , Figure 5 is a schematic flowchart of an encrypted communication method provided by the present application, which can be applied in a first terminal, which can be any of the terminals 220, and the first terminal has a first session key of the first terminal and second session keys corresponding to one or more second terminals in communication with the first terminal. The second session keys corresponding to each of the one or more second terminals are different from each other. For example, assuming that the number of second terminals in communication with the first terminal is multiple, and the multiple second terminals include terminal B and terminal C, the second session key of terminal B is different from the second session key of terminal C. The encrypted communication method can include the following contents:

[0151] Step 501: During the communication between the first terminal and the one or more second terminals, the first terminal sends the communication data of the first terminal encrypted by the first session key to the server, and receives the encrypted communication data from at least one of the one or more second terminals.

[0152] In one example, the communication data is a media stream, which can be voice communication data or video communication data as an example.

[0153] That is, during the encrypted communication between the first terminal and the one or more second terminals, when the first terminal wants to send communication data to the opposite terminal, the first terminal encrypts the communication data based on the first session key to obtain encrypted communication data. Then, the first terminal sends the encrypted communication data to the server, and the server forwards the encrypted communication data to the one or more second terminals.

[0154] In addition, the first terminal receives the encrypted communication data sent by at least one of the one or more second terminals, and it should be understood that the encrypted communication data received by the first terminal is sent to the first terminal by the server after being encrypted by at least one second terminal. Each of the at least one second terminal can encrypt the communication data to be sent by itself using the respective second session key. For example, terminal C can encrypt the communication data of terminal C using the second session key of terminal C.

[0155] In this way, the server only needs to transmit the encrypted communication data, and does not need to decrypt the encrypted communication data, which can prevent the leakage of communication data, thereby improving the security of communication.

[0156] Step 502: The first terminal decrypts the encrypted communication data of at least one second terminal using the second session key corresponding to at least one second terminal to obtain the communication data of at least one second terminal.

[0157] For example, assuming that the one or more second terminals include terminal B and terminal C, the first terminal decrypts the encrypted talk data sent by terminal B using the second session key of terminal B to obtain the talk data of terminal B, and the first terminal decrypts the encrypted talk data sent by terminal C using the second session key of terminal C to obtain the talk data of terminal C.

[0158] In addition, for any one of the one or more second terminals, the first session key and the second session keys corresponding to the one or more second terminals respectively in talk with the first terminal are also included in the any one of the one or more second terminals. In the process of encrypted talk, after receiving the encrypted talk data sent by the first terminal, the any one of the one or more second terminals decrypts the encrypted talk data using the first session key to obtain the talk data of the first terminal. In addition, when receiving the encrypted talk data sent by other second terminal, the second session key corresponding to the other second terminal is used to decrypt the encrypted talk data to obtain the talk data of the other second terminal.

[0159] For example, in the embodiment of the present application, the first terminal is terminal A, and the one or more second terminals include terminal B and terminal C. Assuming that terminal A, terminal B and terminal C are members of a talk group, terminal C can send the encrypted talk data of terminal C using the second session key of terminal C to the talk group through the server, and terminal A and terminal B can both decrypt the encrypted talk data of terminal C using the second session key of terminal C to obtain the talk data of terminal C after receiving the encrypted talk data of terminal C. Therefore, the second session key of terminal C is included in terminal A and terminal B. Of course, in order to correctly decrypt the encrypted talk data A (the talk data encrypted by terminal A using the first session key), the first session key of terminal A is also included in terminal B and terminal C.

[0160] The way for the first terminal and any one of the one or more second terminals to obtain the session key of the opposite terminal can be referred to the following Figure 6 The way for the first terminal to obtain the second session key of any one of the one or more second terminals is described herein and will not be repeated.

[0161] It should be noted that, in the implementation, the first terminal can only send the encrypted call data of the first terminal at the current time, i.e., the first terminal can only send the encrypted call data at the current time, and does not receive the encrypted call data sent by the one or more second terminals. For example, in a conference, the user of the first terminal is a speaker, and the users of the one or more second terminals are all listeners, i.e., only receive the encrypted call data sent by the first terminal, and do not participate in speaking. Alternatively, the first terminal receives the encrypted call data of at least one of the one or more second terminals, and decrypts the encrypted call data of the at least one second terminal using the second session key corresponding to the at least one second terminal, i.e., the first terminal only receives, but does not send. Alternatively, the first terminal can both send the encrypted call data of the first terminal using the first session key, and receive the encrypted call data of at least one of the one or more second terminals, and decrypt the encrypted call data of the at least one second terminal using the second session key corresponding to the at least one second terminal, i.e., the first terminal both sends and receives.

[0162] In the embodiment of the present application, the first terminal includes the first session key of the first terminal, and the second session keys corresponding to the one or more second terminals in communication with the first terminal. During the communication between the first terminal and the one or more second terminals, the first terminal encrypts the call data of the first terminal using the first session key, and then sends the encrypted call data to the server. In addition, the first terminal receives the encrypted call data from at least one of the one or more second terminals, and decrypts the encrypted call data of the at least one second terminal using the second session key corresponding to the at least one second terminal, to obtain the call data of the at least one second terminal. In this way, in the encrypted communication, the keys used by each terminal to encrypt the call data are different, which can improve the security of the communication.

[0163] Based on the above description, before the communication between the first terminal and the one or more second terminals, key negotiation is required to exchange the session keys with each other, so as to obtain the second session keys corresponding to the one or more second terminals respectively, and enable the one or more second terminals to obtain the first session key. Next, the key negotiation process between the first terminal and the one or more second terminals is introduced.

[0164] Please refer to Figure 6 , Figure 6 FIG. 1 is a schematic flowchart of a key negotiation method according to an embodiment of the present application. As an example but not limitation, the method can be applied to the first terminal, which can be any one of the plurality of terminals 220, and the method can include the following parts or all of the contents:

[0165] Step 601: In the key negotiation process, the public key of the target terminal is obtained.

[0166] The target terminal is any one of one or more second terminals in communication with the first terminal.

[0167] It is worth noting that, Figure 6 The process of how the first terminal obtains the second session key of the target terminal in the one or more second terminals is described by taking the target terminal as an example. The process of how the first terminal obtains the second session key of other second terminals in the one or more second terminals can refer to the process of how the first terminal obtains the second session key of the target terminal.

[0168] In an embodiment, the public key of the target terminal is generated by the target terminal through an Elliptic Curve Diffie-Hellman key exchange (ECDH) algorithm.

[0169] Exemplarily, before the first terminal establishes an encrypted communication connection with the target terminal, the first terminal and the target terminal each generate a public-private key pair through the ECDH algorithm, that is, the first terminal generates a public-private key pair through the ECDH algorithm, and the target terminal generates a public-private key pair through the ECDH algorithm. In the key negotiation process, the first terminal obtains the public key of the target terminal, and in addition, the target terminal obtains the public key of the first terminal.

[0170] As an example of the present application, when the first terminal is a calling terminal, the specific implementation of the first terminal obtaining the public key of the target terminal can include: the first terminal sends an encrypted communication request to the server, the encrypted communication request is used to request to establish an encrypted communication connection, receives an encrypted communication response from the server, and the encrypted communication response carries the public key of the target terminal.

[0171] In implementation, the first terminal sends an encrypted communication request to the server. The server receives the encrypted communication request, and then forwards the encrypted communication request to the target terminal. After receiving the encrypted communication request, the target terminal sends an encrypted communication response to the server, and carries the public key of the target terminal in the encrypted communication response. The server forwards the encrypted communication response to the first terminal, so that the first terminal can obtain the public key of the target terminal from the encrypted communication response.

[0172] In addition, in an example, the encrypted communication request carries the public key of the first terminal, that is, the first terminal sends the public key of the first terminal. Thus, after the server sends the encrypted communication request to the target terminal, the target terminal can obtain the public key of the first terminal.

[0173] Thus, in the process of establishing the encrypted call connection, the first terminal and the target terminal send their public keys to each other through the communication signaling (i.e., the encrypted call request and the encrypted call response), and obtain the public key of the other party, thereby avoiding the need to add additional signaling, and thus signaling overhead can be saved.

[0174] As another example of the present application, the first terminal is a calling terminal, and the specific implementation of the first terminal obtaining the public key of the target terminal can include: the first terminal sends an encrypted call request to the server, the encrypted call request being used to request establishment of an encrypted call connection. After receiving the encrypted call response from the server, a first query request is sent to the server, the first query request being used to request the server to feed back the public key of the target terminal. A first query response fed back by the server based on the first query request is received, and the first query response carries the public key of the target terminal.

[0175] In one embodiment, the first terminal sends the first query request to the server after receiving the encrypted call responses sent by all the second terminals in the plurality of second terminals. That is, the first terminal can perform the query operation after determining that each of the second terminals in the plurality of second terminals has fed back the encrypted call response.

[0176] In another embodiment, the first terminal sends the first query request to the server after receiving the encrypted call responses sent by a preset number of second terminals in the plurality of second terminals, wherein the preset number can be set according to actual needs. That is, the first terminal can perform the query operation after determining that a certain number of second terminals in the plurality of second terminals have fed back the encrypted call response.

[0177] In implementation, the first terminal sends the encrypted call request to the server, and in addition, the first terminal reports its public key to the server. The server can locally store the public key of the first terminal, and then send the encrypted call request to each of the second terminals in the plurality of second terminals. For any one of the second terminals in the plurality of second terminals, after receiving the encrypted call request, the server feeds back the encrypted call response, and reports the public key of the second terminal to the server. The server can store the public keys of the second terminals, and broadcast the encrypted call responses sent by the second terminals. When the first terminal receives the encrypted call responses sent by the plurality of second terminals, it can be determined that the plurality of second terminals have reported their public keys to the server, at this time, the first terminal can send the first query request to the server to indicate the server to feed back the public keys of the plurality of second terminals.

[0178] In addition, in one example, for any one of the second terminals, after receiving the encrypted call request of the first terminal and receiving the encrypted call response of the other second terminals except the any one of the second terminals, the public key of the first terminal and the public keys of the other second terminals can be queried from the server.

[0179] Thus, in the process of establishing the call, the first terminal can obtain the public keys of the second terminals from the server at one time after determining that the second terminals have uploaded their public keys to the server.

[0180] Of course, it is not difficult to understand that if the first terminal is a called terminal and the target terminal is a calling terminal, the first terminal can obtain the public key of the target terminal from the encrypted call request, or the first terminal can also query the public key of the target terminal from the server after receiving the encrypted call request, which will not be described in detail here.

[0181] Step 602: generating a first shared key based on the private key of the first terminal and the public key of the target terminal through the ECDH algorithm, the first shared key being a shared key used between the first terminal and the target terminal.

[0182] As described above, the private key of the first terminal is generated by the first terminal through the ECDH algorithm before establishing the encrypted call connection with the target terminal. That is, the first terminal generates the first shared key based on its private key and the public key of the target terminal through the ECDH algorithm, and similarly, the target terminal can generate the second shared key of the target terminal based on the public key of the first terminal and the private key of the target terminal through the ECDH algorithm after obtaining the public key of the first terminal. The second shared key is a shared key used between the first terminal and the target terminal. In principle, the second shared key and the first shared key have the same content, that is, the second shared key and the first shared key are the same value.

[0183] It should be noted that in the embodiments of the present application, the first shared key used by the first terminal is determined by the first terminal, and the second shared key used by the target terminal is determined by the target terminal. In addition, the same is true for the shared keys between the first terminal and the other second terminals and the shared keys between the other second terminals, that is, the shared key used by A is determined by A. This will not be repeated hereinafter.

[0184] In addition, when the number of the second terminals is multiple, the first terminal determines the first shared key between the first terminal and each of the multiple second terminals. For example, assuming that the multiple second terminals include the terminal B and the terminal C, the first terminal determines the first shared key between the first terminal and the terminal B based on the private key of the first terminal and the public key of the terminal B, and determines the first shared key between the first terminal and the terminal C based on the private key of the first terminal and the public key of the terminal C. In other words, the first terminal has the first shared key with different second terminals. Similarly, for the terminal B, the second shared key between the first terminal and the terminal B is determined based on the public key of the first terminal and the private key of the terminal B, and the shared key between the terminal B and the terminal C is determined based on the public key of the terminal C and the private key of the terminal B. For the terminal C, the second shared key between the first terminal and the terminal C is determined based on the public key of the first terminal and the private key of the terminal C, and the shared key between the terminal B and the terminal C is determined based on the private key of the terminal C and the public key of the terminal B.

[0185] It should be noted that the steps 601 to 602 are a method for determining the first shared key according to an example embodiment, that is, in the process of key negotiation between the first terminal and the target terminal, the first terminal determines the first shared key. Then, the first shared key can be used to determine the negotiated key between the first terminal and the target terminal, which will be described below.

[0186] Step 603: generating a first session key, the first session key being used to encrypt the call data of the first terminal in the encrypted call.

[0187] It should be noted that the first session key of any terminal A can be used by the terminal A to encrypt the call data of the terminal A, and the terminal B can use the first session key of the terminal A to decrypt the call data encrypted by the terminal A using the first session key.

[0188] In an embodiment, the first terminal determines the first session key based on the first shared key. For example, the first terminal can generate a random number, and then generate the first session key based on the first shared key and the random number, for example, the random number can be added at the end of the first shared key to obtain the first session key.

[0189] In addition, when the number of the second terminals is multiple, the first terminal can generate the first session key based on the first shared key between the first terminal and any of the second terminals.

[0190] Of course, in another embodiment, the first terminal can also generate the first session key in other ways, for example, a random number can also be generated as the first session key.

[0191] Step 604: encrypt the first session key based on the first shared key to obtain a first negotiation key, the first negotiation key being a negotiation key between the first terminal and the target terminal.

[0192] It is understandable that the first negotiation key is obtained by encrypting the first session key based on the first shared key, and the first shared key is a shared key between the first terminal and the target terminal.

[0193] Step 605: send the first negotiation key to the server, so that the target terminal obtains the first negotiation key from the server.

[0194] Since the first negotiation key is obtained by encrypting the first session key based on the first shared key, and the target terminal can determine the second shared key through the ECDH algorithm, and the second shared key is the same as the first shared key, after the target terminal obtains the first negotiation key from the server, the target terminal can decrypt the first negotiation key based on the second shared key to obtain the first session key, and then the target terminal can store the first session key locally.

[0195] In this way, in the process of encrypted communication between the first terminal and the target terminal, after the target terminal receives the encrypted communication data from the first terminal forwarded by the server, the target terminal can use the locally stored first session key to decrypt the encrypted communication data to obtain the communication data of the first terminal.

[0196] Step 606: obtain the second negotiation key from the server, the second negotiation key being obtained by encrypting the second session key based on the first shared key by the target terminal.

[0197] As an example, the first terminal can send a second query request to the server, the second query request being used to request the second negotiation key uploaded by the target terminal. After receiving the second query request, the server sends a second query response to the first terminal, and the second negotiation key is carried in the second query response.

[0198] Similar to the execution mode of the first terminal, after determining the second shared key (i.e. the first shared key) between the first terminal and the target terminal, the target terminal can generate the second session key, the second session key being used to decrypt the communication data of the target terminal by the first terminal in the encrypted communication. Then, the second negotiation key is obtained by encrypting the second session key based on the second shared key, and the target terminal sends the second negotiation key to the server, so that the first terminal obtains the second negotiation key from the server. Therefore, the first terminal can obtain the second negotiation key from the server.

[0199] Step 607: the first terminal decrypts the second negotiation key based on the first shared key to obtain the second session key.

[0200] Since the second negotiation key is encrypted by the target terminal based on the second shared key from the second session key, and the second shared key is the same as the first shared key, the first terminal uses the first shared key to decrypt the second negotiation key, that is, the second session key is obtained. In this way, when the first terminal receives the encrypted call data sent by the target terminal during the encrypted call with the target terminal, the second session key can be used to decrypt the encrypted call data to obtain the call data of the target terminal.

[0201] In the embodiment of the application, the first terminal includes the first session key of the first terminal, and the second session key corresponding to one or more target terminals in communication with the first terminal. During the communication between the first terminal and one or more target terminals, the first terminal encrypts the call data of the first terminal using the first session key, and sends the encrypted call data to the server. In addition, the first terminal receives encrypted call data from at least one of the one or more target terminals, and decrypts the encrypted call data of the at least one target terminal using the second session key corresponding to the at least one target terminal to obtain the call data of the at least one target terminal. In this way, during the encrypted call, the keys used by each terminal to encrypt the call data are different, which can improve the security of the call.

[0202] In addition, in the embodiment of the application, the server does not need to decrypt the encrypted call data, and only needs to transmit the encrypted call data, which can prevent the call data from being leaked, thereby improving the security of the call.

[0203] In one embodiment, please refer to Figure 7 When the number of second terminals is multiple, the first terminal determines a negotiation key with each second terminal, and the negotiation keys determined between the first terminal and each second terminal are different. The determined negotiation keys are uploaded to the server for multiple second terminals to obtain. For any one of the multiple second terminals, the negotiation key between the first terminal and the second terminal is determined, and the negotiation key between the first terminal and the other second terminals is determined, and the determined negotiation keys are uploaded to the server for the first terminal and the other second terminals to obtain. That is, the negotiation keys between the multiple second terminals are different. In this way, each terminal realizes encrypted communication through the server based on different negotiation keys.

[0204] For ease of understanding, the following specific examples will be used to introduce this case in detail, please refer to Figure 8 Here, the first terminal is terminal A, and the multiple second terminals include terminal B and terminal C.

[0205] Step 801: In the process of key negotiation, the public key of each second terminal in the plurality of second terminals is obtained.

[0206] Before the terminal A establishes an encrypted call connection with the plurality of second terminals, the terminal A generates a public-private key pair locally by using the ECDH algorithm, and each second terminal in the plurality of second terminals also generates a public-private key pair locally by using the ECDH algorithm, that is, the terminal B generates a public-private key pair locally by using the ECDH algorithm, and the terminal C generates a public-private key pair locally by using the ECDH algorithm. In the process of key negotiation between the terminal A and the plurality of second terminals, the terminal A obtains the public key of the terminal B and obtains the public key of the terminal C.

[0207] In a possible implementation, if the terminal A is a calling terminal, the specific implementation of the terminal A obtaining the public key of the terminal B and obtaining the public key of the terminal C can include: sending an encrypted call request to the server. Receiving encrypted call responses of the plurality of second terminals forwarded by the server, and each second terminal sends the encrypted call response carrying the public key of the corresponding second terminal.

[0208] In order to distinguish the encrypted call responses of the respective second terminals, the identity of the second terminal can be carried in the encrypted call response, for example, the encrypted call response sent by the terminal B carries the identity B, and the encrypted call response sent by the terminal C carries the identity C.

[0209] The terminal A sends the encrypted call request to the server. After receiving the encrypted call request, the server forwards the encrypted call request to the terminal B and the terminal C. The terminal B receives the encrypted call request, and after determining to join the encrypted call, returns an encrypted call response to the server, and the encrypted call response sent by the terminal B carries the public key of the terminal B. After receiving the encrypted call response sent by the terminal B, the server forwards the encrypted call response to the terminal A and the terminal C, so that the terminal A can obtain the public key of the terminal B. Similarly, the terminal C receives the encrypted call request, and after determining to join the encrypted call, returns an encrypted call response to the server, and the encrypted call response sent by the terminal C carries the public key of the terminal C. After receiving the encrypted call response sent by the terminal C, the server forwards the encrypted call response to the terminal A and the terminal B, so that the terminal A can obtain the public key of the terminal C.

[0210] In addition, the terminal B obtains the public key of the terminal A and the public key of the terminal C, and the terminal C obtains the public key of the terminal A and the public key of the terminal B. Taking the terminal B as an example, when the encrypted call request is received, the encrypted call request carries the public key of the terminal A, so that the terminal B can obtain the public key of the terminal A from the encrypted call request. In addition, the terminal B obtains the encrypted call response of the terminal C forwarded by the server, so that the terminal B can obtain the public key of the terminal C from the encrypted call response sent by the terminal C. The terminal C obtains the public key of the terminal A and the public key of the terminal B in a similar manner, which will not be repeated here.

[0211] In another possible implementation, if the terminal A is a calling terminal, the terminal A obtaining the public key of each of the plurality of second terminals can further include: sending an encrypted call request to the server, after receiving encrypted call responses from the plurality of second terminals forwarded by the server, sending a first query request to the server, the first query request being used to request the server to feed back the public keys of the plurality of second terminals. The terminal A receives a first query response fed back by the server based on the first query request, and the first query response carries the public keys of the plurality of second terminals.

[0212] When the encrypted call responses sent by the terminal B and the terminal C are received, it is indicated that the responses of the terminal B and the terminal C are obtained, and in this case, it can be determined that the terminal B has stored its own public key into the server, and the terminal C has also stored its own public key into the server, at this time, the terminal A queries the public key of the terminal B and the public key of the terminal C from the server, that is, the terminal A obtains the public key of the terminal B and the public key of the terminal C from the server at one time.

[0213] In addition, the terminal B can also obtain the public key of the terminal A and the public key of the terminal C from the server at one time, and in implementation, the terminal B queries the public key of the terminal A and the public key of the terminal C from the server after receiving the encrypted call request of the terminal A and receiving the encrypted call response of the terminal C. Similarly, the terminal C also obtains the public key of the terminal A and the public key of the terminal B from the server at one time in the same way.

[0214] Step 802: generating a shared key between the terminal A and the terminal B based on the private key of the terminal A and the public key of the terminal B by using the ECDH algorithm, and generating a shared key between the terminal A and the terminal C based on the private key of the terminal A and the public key of the terminal C by using the ECDH algorithm.

[0215] The private key of the terminal A is generated by the terminal A by using the ECDH algorithm.

[0216] For example, the terminal A generates a shared key between the terminal A and the terminal B, for example, AB, based on the private key of the terminal A and the public key of the terminal B by using the ECDH algorithm, and the terminal A generates a shared key between the terminal A and the terminal C, for example, AC, based on the private key of the terminal A and the public key of the terminal C by using the ECDH algorithm.

[0217] In addition, for the terminal B, the AB is generated based on the private key of the terminal B and the public key of the terminal A through the ECDH algorithm, and the shared key between the terminal B and the terminal C, such as BC, is generated based on the private key of the terminal B and the public key of the terminal C through the ECDH algorithm. For the terminal C, the AC is generated based on the public key of the terminal A and the private key of the terminal C through the ECDH algorithm, and the BC is generated based on the public key of the terminal B and the private key of the terminal C through the ECDH algorithm.

[0218] Step 803: generating a first session key.

[0219] In one example, the terminal A can generate the first session key based on the shared key between the terminal A and any one of the second terminals. For example, the first session key can be generated based on the AB, or the first session key can also be generated based on the AC, assuming that the first session key is Ta.

[0220] In another embodiment, the first session key can also be generated in other manners. For example, the terminal A can generate a random number, and determine the random number as the first session key. The present embodiment does not limit this.

[0221] The terminal B generates a session key, assuming that the session key generated by the terminal B is Tb, and Tb is used for encrypting or decrypting the call data of the terminal B in the encrypted call. The terminal C also generates a session key, assuming that the session key generated by the terminal C is Tc, and Tc is used for encrypting or decrypting the call data of the terminal C in the encrypted call.

[0222] Step 804: encrypting the first session key based on the AB, and encrypting the first session key based on the AC.

[0223] For example, the terminal A encrypts the first session key based on the AB, and obtains the negotiation key between the terminal A and the terminal B, assuming that the negotiation key is K1AB. The terminal A encrypts the first session key based on the AC, and obtains the negotiation key between the terminal A and the terminal C, assuming that the negotiation key is K1AC.

[0224] In addition, the terminal B encrypts the generated session key Tb based on the AB, and obtains the negotiation key K2AB between the terminal B and the terminal A, and encrypts the generated session key Tb based on the BC, and obtains the negotiation key K1BC between the terminal B and the terminal C. The terminal C encrypts the generated session key Tc based on the AC, and obtains the negotiation key K2AC between the terminal A and the terminal C, and encrypts the generated session key Tc based on the BC, and obtains the negotiation key K2BC between the terminal B and the terminal C.

[0225] Step 805: sending the obtained negotiation keys to the server, so that the second terminals obtain the negotiation keys from the server.

[0226] For example, the terminal A sends K1AB and K1AC to the server, and the server stores K1AB and K1AC locally after receiving K1AB and K1AC. In addition, the terminal B sends K2AB and K1BC to the server for storage, and the terminal C sends K2AC and K2BC to the server for storage.

[0227] Step 806: Obtain the negotiation key between the terminal and other terminals from the server.

[0228] For example, the terminal A can send a second query request to the server, and the second query request is used to instruct the server to feed back the negotiation key between the terminal A and other terminals. The second query response sent by the server carries the negotiation key to be queried. For example, the server carries K2AB and K2AC in the second query response.

[0229] In addition, please refer to Figure 9 The terminal B queries K1AB and K2BC from the server, and the terminal C queries K1AC and K1BC from the server.

[0230] Step 807: Decrypt K2AB based on AB, and decrypt K2AC based on AC.

[0231] In this way, after K2AB is decrypted based on AB, the session key Tb used for encrypting and decrypting the call data of the terminal B in the encrypted call can be obtained. In this way, if the encrypted call data sent by the terminal B is received in the subsequent encrypted call, the encrypted call data can be decrypted based on the session key Tb to obtain the call data sent by the terminal B.

[0232] In addition, after K2AC is decrypted based on AC, the session key Tc used for encrypting or decrypting the call data of the terminal C in the encrypted call can be obtained. In this way, if the encrypted call data sent by the terminal C is received in the subsequent encrypted call, the encrypted call data can be decrypted based on the session key Tc to obtain the call data sent by the terminal C.

[0233] Please refer to Figure 9 For the terminal B, K1AB is decrypted based on AB to obtain the session key Ta, and in this way, if the encrypted call data sent by the terminal A is received in the subsequent encrypted call, the encrypted call data can be decrypted based on the session key Ta to obtain the call data sent by the terminal A. In addition, the terminal B decrypts K2BC based on BC to obtain the session key Tc, and in this way, if the encrypted call data sent by the terminal C is received in the subsequent encrypted call, the encrypted call data can be decrypted based on the session key Tc to obtain the call data sent by the terminal C.

[0234] Please refer toFigure 9 For the terminal C, the K1AC is decrypted based on the AC to obtain the session key Ta, so that in the subsequent encrypted conversation, if the encrypted conversation data sent by the terminal A is received, the session key Ta can be used for decryption processing to obtain the conversation data sent by the terminal A. In addition, the terminal C decrypts the K1BC based on the BC to obtain the session key Tb, so that in the subsequent encrypted conversation, if the encrypted conversation data sent by the terminal B is received, the session key Tb can be used for decryption processing to obtain the conversation data sent by the terminal B.

[0235] In the embodiment of the present application, in the process of the key negotiation between the first terminal and the target terminal in the one or more second terminals, the first negotiation key between the first terminal and the target terminal is determined, the first negotiation key is obtained by encrypting the first session key based on the shared key between the first terminal and the target terminal, and the first session key is used for encrypting or decrypting the conversation data of the first terminal, that is, the first terminal uses the first session key to encrypt the conversation data in the subsequent encrypted conversation. The first terminal sends the first negotiation key to the server, so that the target terminal obtains it from the server. In addition, the first terminal obtains the second negotiation key determined by the target terminal from the server, the second negotiation key is obtained by encrypting the second session key based on the second shared key, and the second session key is used for encrypting or decrypting the conversation data of the target terminal, that is, the target terminal uses the second session key to encrypt the conversation data in the subsequent encrypted conversation. Thus, in the encrypted conversation process, the keys used by each terminal for encrypting the conversation data are different, which can improve the security of the conversation.

[0236] In addition, after the first terminal and the target terminal generate the session key, they do not need to interact with other devices, but only interact with the server, which can improve the conversation performance.

[0237] The above steps realize the encrypted conversation method provided by the embodiment of the present application. In another embodiment, when the encrypted conversation is performed, the third terminal can also request to join the encrypted conversation. Next, the encrypted conversation method is introduced by taking the third terminal requesting to join the encrypted conversation as an example, please refer to Figure 10 , Figure 10 is a flowchart of an encrypted conversation method according to an exemplary embodiment, which can include the following or all contents:

[0238] The specific implementation of steps 1001 to 1004 can be referred to steps 601 to 607 in the above Figure 6 embodiment, which will not be repeated here.

[0239] Step 1005: The first terminal and the target terminal perform encrypted conversation.

[0240] Exemplarily, the first terminal encrypts the call data using the first session key, and then sends the encrypted call data to the server for forwarding to the target terminal. The target terminal can decrypt the encrypted call data using the first session key to obtain the call data sent by the first terminal.

[0241] In addition, when the first terminal receives the encrypted call data sent by the target terminal through the server, the received encrypted call data is decrypted based on the second session key to obtain the call data sent by the target terminal.

[0242] It is worth mentioning that the server only needs to transparently transmit the encrypted call data, and does not need to decrypt the encrypted call data. In this way, the server can be prevented from leaking the call data, thereby improving the security of the call data.

[0243] Step 1006: If the third terminal requests to join the encrypted call, a third shared key is determined, and the third shared key is a shared key between the first terminal and the third terminal.

[0244] In an embodiment, the third terminal can be added to the encrypted call by the first terminal or the target terminal. For example, the target terminal can send an addition request to the server to request the server to call the third terminal. In an embodiment, the server sends an encrypted call request to the third terminal, and the third terminal can send an encrypted call response to the server to request to join the encrypted call after receiving the encrypted call request. The server receives the encrypted call response of the third terminal, and broadcasts the encrypted call response sent by the third terminal. As an example, the encrypted call response sent by the third terminal can carry a public key of the third terminal.

[0245] In this way, the first terminal can obtain the public key of the third terminal from the server, or can obtain the public key of the third terminal by receiving the encrypted call response sent by the third terminal. Then, the first terminal can generate the third shared key based on the private key of the first terminal and the public key of the third terminal through the ECDH algorithm.

[0246] Similarly, the target terminal can also obtain the public key of the third terminal from the server, or can obtain the public key of the third terminal by receiving the encrypted call response sent by the third terminal. Then, the target terminal can generate a shared key between the target terminal and the third terminal based on the private key of the target terminal and the public key of the third terminal through the ECDH algorithm.

[0247] In addition, the third terminal can obtain the public key of the first terminal and the public key of the target terminal from the server, and then generate a shared key used between the third terminal and the first terminal based on the private key of the third terminal and the public key of the first terminal (the shared key is the same as the third shared key).

[0248] Step 1007: encrypt the first session key based on the third shared key to obtain a third negotiation key, the third negotiation key being a negotiation key between the first terminal and the third terminal.

[0249] In order to facilitate the third terminal to obtain the first session key, the first terminal encrypts the first session key based on the third shared key to obtain a negotiation key between the first terminal and the third terminal. The third terminal can obtain the first session key after decrypting the third negotiation key based on the shared key used between the third terminal and the first terminal determined by the third terminal.

[0250] For the target terminal, the target terminal can encrypt the second session key based on the shared key between the target terminal and the third terminal to obtain a fifth negotiation key, the fifth negotiation key being a negotiation key between the target terminal and the third terminal.

[0251] Step 1008: send the third negotiation key to the server, so that the third terminal obtains the third negotiation key from the server.

[0252] After the first terminal sends the third negotiation key to the server, the third terminal can subsequently obtain the third negotiation key from the server.

[0253] In addition, the target terminal sends the fifth negotiation key to the server, so that the third terminal obtains the fifth negotiation key from the server.

[0254] Step 1009: obtain a fourth negotiation key from the server, the fourth negotiation key being a negotiation key between the first terminal and the third terminal, and the fourth negotiation key being obtained by encrypting a third session key based on the third shared key by the third terminal, the third session key being used to encrypt or decrypt the call data of the third terminal in the encrypted call.

[0255] That is, the third terminal encrypts the third session key based on the shared key used between the third terminal and the first terminal determined by the third terminal to obtain the fourth negotiation key, and then the third terminal can send the fourth negotiation key to the server. In this way, the first terminal can obtain the fourth negotiation key from the server.

[0256] In addition, the third terminal encrypts the third session key based on the shared key between the third terminal and the target terminal to obtain a sixth negotiation key, which is a negotiation key between the third terminal and the target terminal. Then, the third terminal sends the sixth negotiation key to the server. In this way, the target terminal can obtain the sixth negotiation key from the server.

[0257] Step 1010: decrypt the fourth negotiation key based on the third shared key to obtain the third session key.

[0258] After the first terminal obtains the third session key, when the encrypted call is made, if the encrypted call data sent by the third terminal through the server is received, the received encrypted call data can be decrypted using the third session key to obtain the call data sent by the third terminal.

[0259] For the target terminal, the sixth negotiation key can be decrypted using the shared key used between the target terminal and the third terminal to obtain the third session key. In this way, when the encrypted call is made, if the encrypted call data sent by the third terminal through the server is received, the received encrypted call data can be decrypted using the third session key to obtain the call data sent by the third terminal.

[0260] For the third terminal, the third negotiation key and the fifth negotiation key are obtained from the server. Then, the third negotiation key can be decrypted based on the shared key used between the first terminal and the third terminal to obtain the first session key. In this way, when the encrypted call is made, if the encrypted call data sent by the first terminal through the server is received by the third terminal, the received encrypted call data can be decrypted using the first session key to obtain the call data sent by the first terminal. In addition, the fifth negotiation key is decrypted by the third terminal based on the shared key between the target terminal and the third terminal to obtain the second session key. In this way, when the encrypted call is made, if the encrypted call data sent by the target terminal through the server is received by the third terminal, the received encrypted call data can be decrypted using the second session key to obtain the call data sent by the target terminal.

[0261] In the embodiment of the present application, in the process that the first terminal and the target terminal perform the encrypted call, if the third terminal requests to join the encrypted call, the first terminal determines a third negotiation key between the first terminal and the third terminal, and uploads the third negotiation key to the server, so that the third terminal acquires the third negotiation key, thereby making the third terminal determine a first session key used for encrypting or decrypting the call data of the first terminal. In addition, the first terminal acquires a fourth negotiation key determined by the third terminal from the server, so as to determine a third session key used for encrypting or decrypting the call data of the third terminal by decrypting the fourth negotiation key. That is, after the third terminal is added, the session keys used between the third terminal and other terminals are all different from each other, and the security of the encrypted call can be improved.

[0262] Please refer to Figure 11 , Figure 11 is a flowchart of an encrypted call method according to another exemplary embodiment. The method can be applied in a first terminal, and as an example but not limitation, the method can include the following parts or all of the contents:

[0263] In step 1101, in the process of key negotiation, the server newly stores the public key of the target terminal and the key version number of the public-private key pair of the target terminal, and the public key of the target terminal and the key version number of the public-private key pair of the target terminal are acquired from the server.

[0264] As an example of the present application, after each encrypted call ends, each terminal can locally regenerate a public-private key pair by using the ECDH algorithm, and determine the version number of the regenerated public-private key pair. Then, each terminal can locally store the regenerated public-private key pair and the determined key version number, and send the public key in the regenerated public-private key pair and the determined key version number to the server for storage.

[0265] In this way, in the process of key negotiation between the first terminal and the target terminal, the first terminal can query the latest stored public key of the target terminal and the corresponding key version number from the server. It is not difficult to understand that the latest stored public key of the target terminal and the corresponding key version number in the server can be uploaded by the target terminal after the last call ends.

[0266] In step 1102, a version verification request is sent to the target terminal, and the version verification request includes the latest acquired key version number from the server. The version verification request is used to request to verify whether the key version number carried in the version verification request is consistent with the key version number stored locally by the target terminal.

[0267] In an embodiment, the version verification request can be an encrypted call request. That is, when the first terminal sends an encrypted call request to the target terminal, the first terminal can carry the latest acquired key version number from the server in the encrypted call request. As an example but not limitation, the encrypted call request can also carry the public key of the first terminal.

[0268] For the target terminal, after receiving the version verification request, the version verification request is parsed to obtain the key version number carried therein. As an example but not limitation, after parsing the version verification request, the public key of the first terminal can also be obtained. For example, when the version verification request is the encrypted call request, the encrypted call request is parsed by the target terminal to obtain the key version number and the public key of the first terminal carried therein.

[0269] Then, the target terminal can compare the locally stored key version number with the key version number carried in the version verification request. If the locally stored key version number is the same as the key version number carried in the version verification request, a verification success response is returned, for example, the verification success response is an encrypted call success response; otherwise, if the locally stored key version number is different from the key version number carried in the version verification request, a verification failure response is returned, for example, the verification failure response is an encrypted call failure response.

[0270] Step 1103: If the verification failure response sent by the target terminal is received, the operation of obtaining the server latest stored public key of the target terminal and the key version number of the public-private key pair of the target terminal from the server is returned to perform again until the verification success response sent by the target terminal is received.

[0271] If the first terminal receives the verification failure response sent by the target terminal, it indicates that the key version number locally stored by the target terminal is inconsistent with the key version number newly obtained by the first terminal from the server. For example, if the target terminal has not successfully uploaded the regenerated public-private key pair and the key version number after the last encrypted call, the first terminal queries the public key of the target terminal and the corresponding key version number from the server, resulting in that the obtained public key and the key version number may be uploaded by the target terminal at an earlier time, in which case, the target terminal verification fails, and thus the verification failure response is returned.

[0272] In order to align with the key version number of the target terminal, the first terminal re-obtains the server latest stored public key of the target terminal and the key version number of the public-private key pair of the target terminal from the server, at this time, the target terminal can have successfully uploaded the regenerated public key and the corresponding key version number after the last encrypted call. Therefore, when the first terminal sends the version verification request carrying the re-obtained key version number to the target terminal again, the target terminal can determine the verification success. When the target terminal verifies successfully, the verification success response is returned.

[0273] As an example of the present application, since the first terminal has delivered the public key of the first terminal to the target terminal when sending the version verification request for the first time, when the first terminal re-sends the version verification request subsequently, the public key of the first terminal can no longer be carried, thus saving the amount of information transmission to a certain extent.

[0274] In addition, when the first terminal receives the verification failure response sent by the target terminal, the obtained public key of the target terminal can be deleted, and then the server newly stores the public key of the target terminal and the key version number of the public-private key pair of the target terminal from the server.

[0275] It is worth noting that the above steps 1102 to 1103 are used to determine whether the newly obtained key version number is consistent with the key version number stored locally by the target terminal, and in the case of inconsistency, the operation of obtaining the server newly stored public key of the target terminal and the key version number of the public-private key pair of the target terminal from the server is re-executed until it is determined that the obtained key version number is consistent with the key version number stored locally by the target terminal.

[0276] Step 1104: If a verification success response sent by the target terminal is received, a first shared key is generated based on the private key of the first terminal and the public key of the target terminal newly obtained from the server by the ECDH algorithm, and the private key of the first terminal is generated by the first terminal through the ECDH algorithm.

[0277] When the verification success response sent by the target terminal is received, it means that it has been determined that the key version number newly obtained from the server is consistent with the key version number stored locally by the target terminal. At this time, the first terminal and the target terminal can determine the first shared key based on the same version of the public key and the private key. That is, the first terminal generates the first shared key based on the private key of the first terminal and the public key of the target terminal newly obtained by the ECDH algorithm.

[0278] Of course, for the target terminal, after verification success, a second shared key can be generated based on the public key of the first terminal and the private key of the target terminal through the ECDH algorithm. Of course, the private key of the target terminal referred to here refers to the same private key as the first terminal version.

[0279] In addition, when the number of second terminals establishing encrypted call connection with the first terminal is multiple, the first terminal obtains the public key of each of the multiple second terminals and the key version number of the public-private key pair of each of the second terminals newly stored from the server. The first terminal can send a version verification request to each of the second terminals respectively, and the version verification request carries the public key of each of the second terminals and the key version number of the public-private key pair of each of the second terminals.

[0280] In one embodiment, when the verification success response of at least one of the plurality of second terminals is received, for any one of the at least one second terminal, the first terminal determines, based on the private key of the first terminal and the public key of the any one second terminal, a shared key between the first terminal and the any one second terminal.

[0281] In another embodiment, when the verification success response of all of the plurality of second terminals is received, for any one of the plurality of second terminals, the first terminal determines, based on the private key of the first terminal and the public key of the any one second terminal, a first shared key between the first terminal and the any one second terminal.

[0282] Step 1105: generating a first session key.

[0283] Step 1106: encrypting the first session key based on the first shared key to obtain a first negotiation key.

[0284] Step 1107: sending the first negotiation key to the server, so that the target terminal obtains the first negotiation key from the server.

[0285] Step 1108: obtaining a second negotiation key of the target terminal from the server, the second negotiation key being obtained by the target terminal by encrypting a second session key based on the first shared key, the second session key being used for encrypting or decrypting the call data of the target terminal in the encrypted call.

[0286] Step 1109: decrypting the second negotiation key based on the first shared key to obtain the second session key of the target terminal.

[0287] It should be noted that the specific implementation of steps 1105 to 1109 can refer to steps 603 to 607 in the foregoing Figure 6 embodiment, which will not be repeated here.

[0288] In addition, after the encrypted call with the target terminal is ended, the first terminal re-generates a public-private key pair, determines a key version number of the re-generated public-private key pair, locally stores the re-generated public-private key pair and the determined key version number, and sends the public key in the re-generated public-private key pair and the determined key version number to the server for storage.

[0289] That is, after the first terminal and the target terminal complete the encrypted call this time, each of them re-generates a public-private key pair and determines a key version number of the re-generated public-private key pair, and then updates the re-generated public key and the determined key version number to the server, so that the first terminal and the target terminal can obtain the latest stored public key and key version number from the server when they perform the encrypted call next time.

[0290] In the embodiment of the present application, in the key negotiation process between the first terminal and the target terminal, when the first shared key is determined, the first terminal acquires the latest stored public key of the target terminal and the key version number of the public-private key pair of the target terminal from the server. And based on the acquired key version number, a version verification request is sent to request the target terminal to perform version verification. If the target terminal fails to verify, the first terminal returns to the operation of acquiring the latest stored public key of the target terminal and the corresponding key version number from the server. If the target terminal passes the verification, it means that the key version numbers of the first terminal and the target terminal are consistent, so the first terminal determines the first shared key based on the latest acquired public key of the target terminal, and determines the first negotiation key based on the first shared key. Then upload the first negotiation key to the server, and acquire the second negotiation key from the server. In this way, the first terminal and the target terminal can perform key negotiation based on the same version of the public key, thereby improving the consistency and effectiveness of the key negotiation.

[0291] It should be noted that the above various embodiments can be combined for implementation, for example, Figure 10 The embodiments shown in the above Figure 11 The embodiments shown in the above can be combined for implementation, that is, after the third terminal joins the encrypted call, when the encrypted call ends, the first terminal, the target terminal and the third terminal perform the operation of updating the public-private key pair and the like.

[0292] It should be understood that the sequence numbers of the steps in the above embodiments do not mean the order of execution, and the execution order of the processes should be determined according to their functions and inherent logic, and should not constitute any limitation on the implementation process of the embodiments of the present application.

[0293] Corresponding to the encrypted call method of the above embodiment, Figure 12 is a structural block diagram of an encrypted call device provided by an embodiment of the present application. For ease of illustration, only parts related to the embodiments of the present application are shown.

[0294] Referring to Figure 12 The device is applied to a first terminal, the first terminal has a first session key of the first terminal and a second session key corresponding to one or more second terminals in communication with the first terminal, and the device comprises:

[0295] A call module 1210 is configured to, in an encrypted call process between the first terminal and the one or more second terminals, send call data of the first terminal encrypted by the first session key to a server; and / or,

[0296] decrypting, by the decryption module 1220, encrypted call data from at least one second terminal of the one or more second terminals, and decrypting the encrypted call data of the at least one second terminal using a second session key corresponding to the at least one second terminal to obtain call data of the at least one second terminal.

[0297] As an example of the present application, the call module 1210 is further configured to:

[0298] determining, in the process of key negotiation, a first shared key and the first session key, the first shared key being a shared key used between the first terminal and a target terminal, the target terminal being any one of the one or more second terminals;

[0299] sending a first negotiation key to a server, the first negotiation key being obtained by the first terminal from the first shared key and the first session key;

[0300] obtaining a second negotiation key from the server, the second negotiation key being obtained by the target terminal from the first shared key and a second session key, the second session key being used to decrypt call data of the target terminal in an encrypted call process;

[0301] decrypting the second negotiation key based on the first shared key to obtain the second session key.

[0302] As an example of the present application, the call module 1210 is configured to:

[0303] obtaining a public key of the target terminal;

[0304] generating the first shared key based on a private key of the first terminal and the public key of the target terminal by an elliptic curve Diffie-Hellman key exchange (ECDH) algorithm, the private key of the first terminal being generated by the first terminal through the ECDH algorithm.

[0305] As an example of the present application, the call module 1210 is configured to:

[0306] sending an encrypted call request to the server, the encrypted call request being used to request establishment of an encrypted call connection;

[0307] receiving an encrypted call response from the server, the encrypted call response carrying the public key of the target terminal.

[0308] As an example of the present application, the call module 1210 is configured to:

[0309] sending an encrypted call request to the server, the encrypted call request being used to request establishment of an encrypted call connection;

[0310] after receiving the encrypted call response from the server, sending a first query request to the server, the first query request being used to request a public key of the target terminal;

[0311] receiving a first query response fed back by the server based on the first query request, the first query response carrying the public key of the target terminal.

[0312] As an example of the present application, the first terminal is a calling terminal, and the call module 1210 is configured to:

[0313] obtaining, from the server, a public key of the target terminal and a key version number of a public-private key pair of the target terminal stored by the server most recently;

[0314] in a case where it is determined that the key version number obtained most recently is inconsistent with a key version number stored locally by the target terminal, re-executing the operation of obtaining, from the server, the public key of the target terminal and the key version number of the public-private key pair of the target terminal stored by the server most recently, until it is determined that the key version number obtained most recently is consistent with the key version number stored locally by the target terminal;

[0315] in a case where it is determined that the key version number obtained most recently is consistent with the key version number stored locally by the target terminal, generating the first shared key based on a private key of the first terminal and the public key of the target terminal obtained from the server most recently by using the ECDH algorithm, the private key of the first terminal being generated by the first terminal by using the ECDH algorithm.

[0316] As an example of the present application, the call module 1210 is further configured to:

[0317] in a case where the encrypted call with the one or more second terminals ends, regenerating a public-private key pair;

[0318] sending, to the server, a public key in the regenerated public-private key pair and a key version number of the regenerated public-private key pair.

[0319] In the embodiments of the present application, the first terminal comprises a first session key of the first terminal and a second session key corresponding to each of one or more second terminals in communication with the first terminal. During the communication between the first terminal and the one or more second terminals, the first terminal encrypts the communication data of the first terminal by using the first session key, and then sends the encrypted communication data to the server. In addition, the first terminal receives the encrypted communication data from at least one of the one or more second terminals, and decrypts the encrypted communication data of the at least one second terminal by using the second session key corresponding to the at least one second terminal, to obtain the communication data of the at least one second terminal. In this way, in the encrypted communication process, the keys used by each terminal for encrypting the communication data are different, which can improve the security of the communication.

[0320] Those skilled in the art can clearly understand that, for the convenience and brevity of description, only the division of the above functional units and modules is exemplified, and in actual application, the above functions can be completed by different functional units and modules according to needs, that is, the internal structure of the apparatus is divided into different functional units or modules to complete all or part of the functions described above. Each functional unit and module in the embodiment can be integrated in one processing unit, or each unit can be physically present separately, or two or more units can be integrated in one unit. The integrated unit can be realized in the form of hardware or in the form of software functional unit. In addition, the specific names of each functional unit and module are only for easy distinction, and do not limit the protection scope of the present application. The specific working process of the units and modules in the system can refer to the corresponding process in the foregoing method embodiments, which will not be described here.

[0321] In the above embodiments, the description of each embodiment has its own emphasis, and the parts not described or recorded in detail in a certain embodiment can be referred to the related description of other embodiments.

[0322] Those of ordinary skill in the art can realize that the units and algorithm steps of each example described in combination with the embodiments disclosed herein can be realized in electronic hardware or a combination of computer software and electronic hardware. Whether the functions are performed in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of the present application.

[0323] In the embodiments of the present application, it should be understood that the disclosed apparatus and method can be implemented in other manners. For example, the described system embodiment is merely illustrative. For example, the division of the modules or units is merely logical function division, and there can be another division manner in actual implementation. For example, a plurality of units or components can be combined or integrated into another system, or some features can be ignored or not executed. In addition, the displayed or discussed coupling or direct coupling or communication connection between the units can be indirect coupling or communication connection through some interfaces, devices or units, and can be electrical, mechanical or in other forms.

[0324] The units described as separate components can or can not be physically separate, and the components shown as units can or can not be physical units, i.e., can be located in one place, or can be distributed on a plurality of network units. Some or all of the units can be selected according to actual needs to achieve the purpose of the embodiment.

[0325] In addition, each functional unit in each embodiment of the present application can be integrated into a processing unit, or each unit can be physically present alone, or two or more units can be integrated into one unit. The integrated unit can be realized in the form of hardware or in the form of a software functional unit.

[0326] The integrated unit, if realized in the form of a software functional unit and sold or used as an independent product, can be stored in a computer-readable storage medium. Based on this understanding, all or part of the processes in the above-mentioned embodiment methods can be completed by a computer program instructing related hardware, and the computer program can be stored in a computer-readable storage medium. When the processor executes the computer program, the steps of each method embodiment described above can be implemented. The computer program includes computer program code, which can be in the form of source code, object code, executable file or some intermediate form. The computer-readable medium at least includes any entity or device capable of carrying the computer program code to the terminal, recording medium, computer memory, read-only memory (ROM), random access memory (RAM), electrical carrier signal, telecommunication signal and software distribution medium. For example, U disk, mobile hard disk, magnetic disk or optical disk, etc. In some jurisdictions, according to legislation and patent practice, the computer-readable medium can not be an electrical carrier signal and a telecommunication signal.

[0327] Finally, it should be noted that the above only describes specific embodiments of the present application, but the protection scope of the present application is not limited thereto, and any changes or replacements within the technical scope disclosed by the present application should be covered in the protection scope of the present application. Therefore, the protection scope of the present application should be subject to the protection scope of the claims.

Claims

1. A method for encrypted communication, characterized in that, The method is applied to a first terminal, which has a first session key and second session keys corresponding to multiple second terminals communicating with the first terminal, wherein the session keys corresponding to the different second terminals are different. During key negotiation, the first terminal determines a first shared key and a first session key. The first shared key is a shared key used between the first terminal and a target terminal, where the target terminal is one of the plurality of second terminals. The determination of the first shared key by the first terminal includes: after receiving encrypted call responses from a predetermined number of second terminals, the first terminal sends a first query request to the server to instruct the server to provide the public keys of the second terminals; the first terminal generates the first shared key based on its private key and the public key of the target terminal using the Elliptic Curve Diffie-Hellman Key Exchange (ECDH) algorithm, where the private key of the first terminal is generated by the first terminal using the ECDH algorithm. During a call between the first terminal and the plurality of second terminals, the first terminal sends call data encrypted with the first session key to the server; and / or, The first terminal receives encrypted call data from at least one of the plurality of second terminals, and decrypts the encrypted call data of the at least one second terminal using a second session key corresponding to the at least one second terminal to obtain the call data of the at least one second terminal.

2. The method as described in claim 1, characterized in that, Before the first terminal and the plurality of second terminals communicate, the method further includes: The first terminal sends a first negotiation key to the server. The first negotiation key is obtained by the first terminal encrypting the first session key according to the first shared key. The first terminal obtains a second negotiation key from the server. The second negotiation key is obtained by the target terminal by encrypting a second session key based on the first shared key. The second session key is used to decrypt the call data of the target terminal during an encrypted call. The first terminal decrypts the second negotiation key based on the first shared key to obtain the second session key.

3. The method as described in claim 1, characterized in that, The first terminal obtains the public key of the target terminal, including: The first terminal sends an encrypted call request to the server, the encrypted call request being used to request the establishment of an encrypted call connection; The first terminal receives an encrypted call response from the server, the encrypted call response carrying the public key of the target terminal.

4. The method as described in claim 1, characterized in that, The first terminal obtains the public key of the target terminal, including: The first terminal sends an encrypted call request to the server, the encrypted call request being used to request the establishment of an encrypted call connection; After receiving an encrypted call response from the server, the first terminal sends a first query request to the server, the first query request being used to request the public key of the target terminal; The first terminal receives a first query response from the server based on the first query request, and the first query response carries the public key of the target terminal.

5. The method as described in claim 1, characterized in that, The first terminal is the calling terminal, and the first terminal determines the first shared key, including: The first terminal obtains from the server the latest public key of the target terminal and the key version number of the public-private key pair of the target terminal stored on the server; If the first terminal determines that the latest obtained key version number is inconsistent with the key version number stored locally by the target terminal, it will re-execute the operation of obtaining the latest public key and public-private key pair of the target terminal stored by the server from the server until it is determined that the latest obtained key version number is consistent with the key version number stored locally by the target terminal. If the newly acquired key version number is found to be consistent with the key version number stored locally on the target terminal, the first terminal generates the first shared key based on the first terminal's private key and the target terminal's public key recently acquired from the server using the Elliptic Curve Diffie-Hellman Key Exchange (ECDH) algorithm. The first terminal's private key is generated by the first terminal using the ECDH algorithm.

6. The method according to any one of claims 1-5, characterized in that, The method further includes: Upon termination of the encrypted call with the plurality of second terminals, the first terminal regenerates the public-private key pair; The first terminal sends the public key and the key version number of the regenerated public-private key pair to the server.

7. An encrypted communication device, characterized in that, An apparatus applied to a first terminal, the first terminal having a first session key and second session keys corresponding to multiple second terminals communicating with the first terminal, wherein the session keys corresponding to the different second terminals are different, the apparatus comprising: A call module is used, during key negotiation, for the first terminal to determine a first shared key and a first session key, wherein the first shared key is a shared key used between the first terminal and a target terminal, and the target terminal is one of the plurality of second terminals; wherein, the first terminal determining the first shared key includes: after receiving encrypted call responses from a preset number of second terminals, the first terminal sends a first query request to a server to instruct the server to provide the public keys of the plurality of second terminals; the first terminal generates the first shared key based on its private key and the public key of the target terminal using an Elliptic Curve Diffie-Hellman Key Exchange (ECDH) algorithm, wherein the private key of the first terminal is generated by the first terminal using the ECDH algorithm; during encrypted calls between the first terminal and the plurality of second terminals, the first terminal sends call data of the first terminal encrypted using the first session key to the server; and / or, The decryption module is used to receive encrypted call data from at least one of the plurality of second terminals, and to decrypt the encrypted call data of the at least one second terminal using a second session key corresponding to the at least one second terminal, so as to obtain the call data of the at least one second terminal.

8. The apparatus as claimed in claim 7, characterized in that, The call module is also used for: Send a first negotiation key to the server. The first negotiation key is obtained by the first terminal encrypting the first session key according to the first shared key. Obtain a second negotiation key from the server. The second negotiation key is obtained by the target terminal by encrypting a second session key based on the first shared key. The second session key is used to decrypt the call data of the target terminal during an encrypted call. The second negotiation key is obtained by decrypting the second negotiation key based on the first shared key.

9. The apparatus as claimed in claim 7, characterized in that, The first terminal is the calling terminal, and the call module is used for: Obtain from the server the latest public key of the target terminal and the key version number of the public-private key pair of the target terminal stored on the server; If it is determined that the latest obtained key version number is inconsistent with the key version number stored locally on the target terminal, then the operation of obtaining the latest public key and public-private key pair of the target terminal stored on the server is re-executed until it is determined that the latest obtained key version number is consistent with the key version number stored locally on the target terminal. If the latest acquired key version number is found to be consistent with the key version number stored locally on the target terminal, the first shared key is generated using the Elliptic Curve Diffie-Hellman Key Exchange (ECDH) algorithm based on the private key of the first terminal and the public key of the target terminal recently acquired from the server. The private key of the first terminal is generated by the first terminal using the ECDH algorithm.

10. The apparatus according to any one of claims 7-9, characterized in that, The call module is also used for: Upon termination of the encrypted call with the plurality of second terminals, a public-private key pair is regenerated; Send the public key and the key version number of the regenerated public-private key pair to the server.

11. A terminal, characterized in that, The terminal includes a memory and a processor; The memory is used to store programs that support the terminal in performing the method according to any one of claims 1-6, and to store data related to implementing the method according to any one of claims 1-6; the processor is configured to execute the programs stored in the memory.

12. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores instructions that, when executed on a computer, cause the computer to perform the method described in any one of claims 1-6.

Citation Information

Patent Citations

  • Communication mode switching method and terminal

    CN106302402A

  • System and method for conducting secure VOIP multi-party calls

    CN107667511A