Patent Description:
"<NPL> describes at <NUM>. <NUM> Direct security mode procedure run in response to a Direct Connection Request in order to establish a secure connection between UE-<NUM> and UE-<NUM>. UE-<NUM> sends a Direct-Connection-Request to UE-<NUM>. The message includes Nonce_1 (for session key generation), Supported _algs (the list of algorithms that UE-<NUM> is OK to use in this connection) and Key_creation_data (information needed to determine the method of key generation). UE-<NUM> sends the Direct-Security_Mode_Command to UE-<NUM>. It includes the DKSI to indicate which KD to use, Nonce_2 to allow a session key to be calculated and the chosen_algs parameter to indicate which security algorithms the UEs will use to protect the data.

<CIT> describes establishing a secure link for vehicle-to-vehicle communication. A device may send a service announcement message to at least one other device via sidelink signaling. The service announcement message indicates a capability of the device to perform a service and includes at least a security certificate of the device. The device establishes a secure link with the at least one other device corresponding to the service by establishing a device key between the device and the at least one other device. The device then communicates service data for the service between the device and the at least one other device via the secure link based on the established device key.

<CIT> describes methods and apparatus for multiple registrations in which a user device having a security context with a first network based on a first key may establish a security context with a second network. The user device may generate a key identifier based on the first key and a network identifier of the second network. The user device may forward the key identifier to the second network for forwarding to the first network by the second network to enable the first network to identify the first key at the first network. The user device may receive a key count from the second network. The key count may be associated with a second key forwarded to the second network from the first network. The user device may generate the second key based on the first key and the received key count thereby establishing a security context between the second network and the user device.

<CIT> describes a network security architecture in which network nodes implement network functions which enable a client device to apply a security context to communications with the network when the client device is not in a connected mode.

<CIT> describes enhanced vehicle-to-everything radio access technology migration.

The invention is defined in the appended independent claims. Optional features are defined the dependent claims.

The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate example embodiments, and together with the general description given above and the detailed description given below, serve to explain the features of various embodiments.

Various embodiments will be described in detail with reference to the accompanying drawings. References made to particular examples and implementations are for illustrative purposes, and are not intended to limit the scope of the claims.

The term "computing device" is used herein to refer to any one or all of router devices (wired or wireless), appliances (wired or wireless), cellular telephones, smartphones, portable computing devices, personal or mobile multi-media players, laptop computers, tablet computers, smartbooks, ultrabooks, palmtop computers, wireless electronic mail receivers, multimedia Internet-enabled cellular telephones, medical devices and equipment, biometric sensors/devices, wearable devices including smart watches, smart clothing, smart glasses, smart wrist bands, smart jewelry (for example, smart rings and smart bracelets), entertainment devices (for example, wireless gaming controllers, music and video players, satellite radios, etc.), wireless-network enabled Internet of Things (IoT) devices including smart meters/sensors, industrial manufacturing equipment, large and small machinery and appliances for home or enterprise use, wireless communication elements within autonomous and semiautonomous vehicles, wireless devices affixed to or incorporated into various mobile platforms, global positioning system devices, and similar electronic devices that include a memory and a programmable processor. Computing devices that include wireless communication components and are configured to communicate with other computing devices via wireless communication links (e.g., cellular telephones, smartphones, etc.) are referred to herein as "wireless computing devices.

A single SOC may contain circuitry for digital, analog, mixed-signal, and radiofrequency functions.

The term "system in a package" (SIP) may be used herein to refer to a single module or package that contains multiple resources, computational units, cores and/or processors on two or more IC chips, substrates, or SOCs. For example, a SIP may include a single substrate on which multiple IC chips or semiconductor dies are stacked in a vertical configuration. Similarly, the SIP may include one or more multi-chip modules (MCMs) on which multiple ICs or semiconductor dies are packaged into a unifying substrate. A SIP may also include multiple independent SOCs coupled together via high speed communication circuitry and packaged in close proximity, such as on a single motherboard or in a single computing device. The proximity of the SOCs facilitates high speed communications and the sharing of memory and resources.

The term "multicore processor" may be used herein to refer to a single integrated circuit (IC) chip or chip package that contains two or more independent processing cores (e.g., CPU core, Internet protocol (IP) core, graphics processor unit (GPU) core, etc.) configured to read and execute program instructions. A SOC may include multiple multicore processors, and each processor in an SOC may be referred to as a core. The term "multiprocessor" may be used herein to refer to a system or device that includes two or more processing units configured to read and execute program instructions.

"PC5" refers to a device-to-device communication interface that may be used for single device-to-device communication or one-to-many communication. For example, the PC5 interface may be used in vehicle-to-everything (V2X) communication to enable communicating information between a vehicle and any entity that may affect the vehicle (for example, V2I (vehicle-to-infrastructure), V2N (vehicle-to-network), V2V (vehicle-to-vehicle), V2P (vehicle-to-pedestrian), V2D (vehicle-to-device) and V2G (vehicle-to-grid) communications).

The "ProSe" (Proximity-based Services) protocol is the PC5 protocol in LTE that provides D2D (device-to-device) communication technology or communication protocol that enables devices to detect each other and to communicate directly. PC5 and ProSe may enable a range of communication services based on device proximity, for example, advertising, social networking, gaming, relaying traffic for wearable devices, and V2X communication.

Communication security may be provided in PC5 and ProSe using a hierarchy of security keys. A long-term key may be provisioned in a device and may serve as a primary information for security for D2D communications. A root key (which may be referred to as KD) may be shared between two devices communicating directly, for example, using ProSe Direct one-to-one communications. In some embodiments, the root key may include a <NUM>-bit key. The root key may be established or refreshed by re-running the authentication signaling using the long-term key. One or more application(s) running on a device may include its own long-term key in code or in associated memory, which may be used for authenticating the two devices interested in establishing secure direct communication links. The root key, KD, may be established between two interested devices after successful authentication using the long-term key. The authentication signaling between the applications running on the two or more devices may be transported using the PC5 layer of the communication layer of the devices. A session key (which may be referred to as KD-sess) may be derived from the root key using nonces that are exchanged between communicating devices, and may be used in a specific security context being used, or in the process of being established, to protect data communication between two devices. Further, an encryption key and an integrity key (e.g., a ProSe Encryption Key (PEK) and a ProSe Integrity Key (PIK)) may be derived from KD-sess. The PEK and PIK may be used in selected confidentiality and integrity algorithms, respectively. Such algorithms may include, for example, Snow3G, AES and ZUC-based algorithms. In some embodiments, the PEK and PIK may be refreshed automatically every time KD-sess is changed.

As currently described in applicable 3GPP standards, security information needed to establish keys between two devices may be handled via a communication layer (e.g., a PC5 interface). In such implementations, the communication layer handles key information and an authentication method utilizing the key information, and performs derivation of one or more keys to protect the communication layer. Typically, this requires manual coding or pre-configuration into the communication layer (e.g., a PC5 layer) of a device of security information needed to establish security keys. Such a requirement limits the use cases that can be supported as the authentication method and the associated credentials need to be known to the communication layer.

Various embodiments include methods that may be implemented on a processor of a communication device for providing secure communications between a first computing device and a second computing device. Various embodiments provide a security architecture and method for providing D2D security as a generic feature for link establishment between devices. Various embodiments may provide communication security for a plurality of communication devices, such as a fleet of vehicles, a plurality of computing devices, and other suitable communication devices. Various embodiments may provide communication security for direct D2D communication between two devices (e.g., mobile communication devices, vehicles, or other suitable devices).

In some embodiments, a first computing device may be configured to enable generation, handling, and storage of communication security keys at an application layer of the first computing device (e.g., an application on the first computing device). In some embodiments, the first computing device may be configured to manage, determine, or select an authentication method for use with a second computing device. In some embodiments, the first computing device may be configured to use a communication layer (e.g., via a PC5 interface) to transport information to a second computing device information enabling the second computing device to generate security keys and to determine (e.g., select) an authentication method to be used by the first and second computing devices. In some embodiments, the second computing device may receive the information from the first computing device via the communication layer, and the communication layer of the second device may provide the received information to an application layer of the second computing device (e.g., an application on the second computing device). In some embodiments, the application layer of the second computing device (i.e., an application on the second computing device) may likewise provide information enabling the first computing device to generate security keys and/or to determine an authentication method to be used by the first and second communication devices. The application layer of the second computing device may provide the information to a communication layer for transport to the first computing device. In some embodiments, the first computing device may be configured to receive the information from the second computing device at the communication layer, and the communication layer may provide the received information to the application layer of the first computing device (e.g., an application on the first computing device).

In various embodiments, the application on the first computing device may be configured to transmit authentication messages to the second computing device via the communication layer, and to receive authentication messages from the second computing device, without the communication layer processing the content of the authentication messages (e.g., content of security keys, authentication credentials, authentication method, and the like). In some embodiments, the second computing device may likewise be configured to perform similar operations with respect to the first computing device. In some embodiments, the application on the first computing device may perform authentication operations to authenticate the second computing device. The second computing device may be configured to perform similar operations regarding the first computing device. In some embodiments, in the event that the first computing device authenticates the second computing device, the application layer of the first computing device (i.e., an application on the first computing device) may provide security keys to the communication layer of the first computing device for use in protecting the communication link between the first and second computing devices. The second computing device may be configured to perform similar operations with regard to the first computing device. In various embodiments, the method by which the first application software executing on the processor may determine the first security key may be unknown to the communication layer of the first computing device. In some embodiments, the method by which the first application software may determine the first security key may be changed or altered (e.g., by the application or an update to the application) without requiring any change to the communication layer.

<FIG> illustrates an example of a communications system <NUM> that is suitable for implementing various embodiments. The communications system <NUM> may be an <NUM> NR network, or any other suitable network such as an LTE network.

The communications system <NUM> may include a heterogeneous network architecture that includes a core network <NUM> and a variety of computing devices (illustrated as wireless devices 120a-120c and vehicles 152a and 152b in <FIG>). The communications system <NUM> may also include a number of base stations (illustrated as the BS 110a, the BS 110b, the BS 110c, and the BS 110d) and other network entities. A base station is an entity that communicates with wireless computing devices, and also may be referred to as an NodeB, a Node B, an LTE evolved nodeB (eNB), an access point (AP), a radio head, a transmit receive point (TRP), a New Radio base station (NR BS), a <NUM> NodeB (NB), a Next Generation NodeB (gNB), or the like. Each base station may provide communication coverage for a particular geographic area. In 3GPP, the term "cell" can refer to a coverage area of a base station, a base station subsystem serving this coverage area, or a combination thereof, depending on the context in which the term is used.

A base station 110a-110d may provide communication coverage for a macro cell, a pico cell, a femto cell, another type of cell, or a combination thereof. A macro cell may cover a relatively large geographic area (for example, several kilometers in radius) and may allow unrestricted access by wireless computing devices with service subscription. A pico cell may cover a relatively small geographic area and may allow unrestricted access by wireless computing devices with service subscription. A femto cell may cover a relatively small geographic area (for example, a home) and may allow restricted access by wireless computing devices having association with the femto cell (for example, wireless computing devices in a closed subscriber group (CSG)). A base station for a macro cell may be referred to as a macro BS. A base station for a pico cell may be referred to as a pico BS. A base station for a femto cell may be referred to as a femto BS or a home BS. In the example illustrated in <FIG>, a base station 110a may be a macro BS for a macro cell 102a, a base station 110b may be a pico BS for a pico cell 102b, and a base station 110c may be a femto BS for a femto cell 102c. A base station 110a-110d may support one or multiple (for example, three) cells.

In some examples, a cell may not be stationary, and the geographic area of the cell may move according to the location of a mobile base station. In some examples, the base stations 110a-110d may be interconnected to one another as well as to one or more other base stations or network nodes (not illustrated) in the communications system <NUM> through various types of backhaul interfaces, such as a direct physical connection, a virtual network, or a combination thereof using any suitable transport network.

The base station 110a-110d may communicate with the core network <NUM> over a wired or wireless communication link <NUM>. The wireless computing device 120a-120c and vehicles 152a and 152b may communicate with the base station 110a-110d over a wireless communication link <NUM>.

The communications system <NUM> also may include relay stations (e.g., relay BS 110d). A relay station is an entity that can receive a transmission of data from an upstream station (for example, a base station or a wireless computing device) and send a transmission of the data to a downstream station (for example, a wireless computing device or a base station). A relay station also may be a wireless computing device that can relay transmissions for other wireless computing devices. In the example illustrated in <FIG>, a relay station 110d may communicate with macro the base station 110a and the wireless computing device 120c in order to facilitate communication between the base station 110a and the wireless computing device 120c. A relay station also may be referred to as a relay base station, a relay base station, a relay, etc..

The wireless computing devices 120a, 120b may be dispersed throughout communications system <NUM>, and each wireless computing device may be stationary or mobile. A wireless computing device also may be referred to as an access terminal, a terminal, a mobile station, a subscriber unit, a station, etc..

A macro base station 110a may communicate with the communication network <NUM> over a wired or wireless communication link <NUM>. The wireless computing devices 120a, 120b may communicate with a base station 110a-110d over a wireless communication link <NUM>.

The wireless communication links <NUM> and <NUM> may include a plurality of carrier signals, frequencies, or frequency bands, each of which may include a plurality of logical channels. The wireless communication links <NUM> and <NUM> may utilize one or more radio access technologies (RATs). Examples of RATs that may be used in a wireless communication link include 3GPP LTE, <NUM>, <NUM>, <NUM> (e.g., NR), GSM, Code Division Multiple Access (CDMA), Wideband Code Division Multiple Access (WCDMA), Worldwide Interoperability for Microwave Access (WiMAX), Time Division Multiple Access (TDMA), and other mobile telephony communication technologies cellular RATs. Further examples of RATs that may be used in one or more of the various wireless communication links within the communication system <NUM> include medium range protocols such as Wi-Fi, LTE-U, LTE-Direct, LAA, MuLTEfire, and relatively short range RATs such as ZigBee, Bluetooth, and Bluetooth Low Energy (LE). In some embodiments, the wireless communication links <NUM> and <NUM> may include direct connection communication links that may be established over a PC5 interface in accordance with applicable 3GPP standards.

For example, the spacing of the subcarriers may be <NUM> and the minimum resource allocation (called a "resource block") may be <NUM> subcarriers (or <NUM>). Consequently, the nominal Fast File Transfer (FFT) size may be equal to <NUM>, <NUM>, <NUM>, <NUM> or <NUM> for system bandwidth of <NUM>, <NUM>, <NUM>, <NUM> or <NUM> megahertz (MHz), respectively. For example, a subband may cover <NUM> (i.e., <NUM> resource blocks), and there may be <NUM>, <NUM>, <NUM>, <NUM> or <NUM> subbands for system bandwidth of <NUM>, <NUM>, <NUM>, <NUM> or <NUM>, respectively.

While descriptions of some embodiments may use terminology and examples associated with LTE technologies, various embodiments may be applicable to other wireless communications systems, such as a new radio (NR) or <NUM> network. NR may utilize OFDM with a cyclic prefix (CP) on the uplink (UL) and downlink (DL) and include support for half-duplex operation using time division duplex (TDD). A single component carrier bandwidth of <NUM> may be supported. NR resource blocks may span <NUM> sub-carriers with a subcarrier bandwidth of <NUM> over a <NUM> millisecond (ms) duration. Each radio frame may consist of <NUM> subframes with a length of <NUM>. Consequently, each subframe may have a length of <NUM>. Each subframe may indicate a link direction (i.e., DL or UL) for data transmission and the link direction for each subframe may be dynamically switched. Each subframe may include DL/UL data as well as DL/UL control data. Multiple Input Multiple Output (MIMO) transmissions with precoding may also be supported. MIMO configurations in the DL may support up to eight transmit antennas with multi-layer DL transmissions up to eight streams and up to two streams per wireless computing device. Multi-layer transmissions with up to <NUM> streams per wireless computing device may be supported. Aggregation of multiple cells may be supported with up to eight serving cells. Alternatively, NR may support a different air interface, other than an OFDM-based air interface.

Some computing devices may be considered machine-type communication (MTC) or evolved or enhanced machine-type communication (eMTC) computing devices. MTC and eMTC computing devices include, for example, robots, drones, remote devices, sensors, meters, monitors, location tags, etc., that may communicate with a base station, another device (for example, remote device), or some other entity. A wireless node may provide, for example, connectivity for or to a network (for example, a wide area network such as Internet or a cellular network) via a wired or wireless communication link. Some computing devices may be considered Internet-of-Things (IoT) devices or may be implemented as NB-IoT (narrowband internet of things) devices. The wireless computing devices 120a-e may be included inside a housing that houses components of the wireless computing device, such as processor components, memory components, similar components, or a combination thereof.

In general, any number of communications systems and any number of computing networks may be deployed in a given geographic area. Each communications system and wireless network may support a particular radio access technology (RAT) and may operate on one or more frequencies. A RAT also may be referred to as a radio technology, an air interface, etc. A frequency also may be referred to as a carrier, a frequency channel, etc. Each frequency may support a single RAT in a given geographic area in order to avoid interference between communications systems of different RATs.

In some implementations, two or more computing devices (for example, illustrated as controllers <NUM> the vehicle 152a and the vehicle 152b) may communicate directly using one or more sidelink channels without using a base station 110a-d as an intermediary to communicate with one another. For example, the vehicles 152a, 152b may communicate using peer-to-peer (P2P) communications, device-to-device (D2D) communications, a vehicle-to-everything (V2X) protocol, which may include a vehicle-to-vehicle (V2V) protocol, a vehicle-to-infrastructure (V2I) protocol, a vehicle-to-pedestrian (V2P) protocol, or similar protocol, a mesh network, or similar networks, or combinations thereof. In this case, the controllers in vehicles 152a, 152b may perform scheduling operations, resource selection operations, as well as other operations described elsewhere herein as being performed by the base station 110a. Vehicles 152a, 152b communicating with one another may be considered a subnetwork <NUM> as described with reference to <FIG>.

<FIG> is a system and component block diagram illustrating a system <NUM> of components and support systems suitable for implementing various embodiments. With reference to <FIG> and <FIG>, a vehicle 152a may include a control unit <NUM>, which may include various circuits and devices used to control the operation of the vehicle <NUM> as well as communicate with other vehicles that are similarly equipped. In the example illustrated in <FIG>, the control unit <NUM> includes a radio module <NUM>, a processor <NUM>, memory <NUM>, an input module <NUM>, and an output module <NUM>. The control unit <NUM> may be coupled to and configured to control drive control components <NUM>, navigation components <NUM>, and one or more sensors <NUM> of the vehicle 152a.

The control unit <NUM> may include a processor <NUM> that may be configured with processor-executable instructions to control maneuvering, navigation, and/or other operations of the vehicle 152a, including operations of various embodiments. The processor <NUM> may be coupled to the memory <NUM>. The control unit <NUM> may include the input module <NUM>, the output module <NUM>, and the radio module <NUM>.

The radio module <NUM> may be configured for wireless communications, including implementing operations of various embodiments. The radio module <NUM> may exchange wireless signals <NUM> with a base station and wireless signals <NUM> with control units in other vehicles 152b as described herein. In some embodiments, the radio module <NUM> may also enable the vehicle 152a (e.g., an infotainment system) to communicate with a wireless communication device 120d through a bidirectional wireless communication link <NUM>, such as a Bluetooth wireless data link.

The input module <NUM> may receive sensor data from one or more vehicle sensors <NUM> as well as electronic signals from other components, including the drive control components <NUM> and the navigation components <NUM>. The output module <NUM> may be used to communicate with or activate various components of the vehicle 152a, including the drive control components <NUM>, the navigation components <NUM>, and the sensor(s) <NUM>.

The control unit <NUM> may be coupled to the drive control components <NUM> to control physical elements of the vehicle 152a related to maneuvering and navigation of the vehicle, such as the engine, motors, throttles, steering elements, flight control elements, braking or deceleration elements, and the like.

The control unit <NUM> may be coupled to the navigation components <NUM>, and may receive data from the navigation components <NUM> and be configured to use such data to determine the present position and orientation of the vehicle 152a, as well as an appropriate course toward a destination.

The processor <NUM> and/or the navigation components <NUM> may be configured to communicate with a core network <NUM> (e.g., the Internet) using a wireless connection <NUM> with a cellular data network base station 110a. The processor <NUM> may also be configured to perform a variety of software application programs by executing processor-executable instructions in an application layer as described herein.

While the control unit <NUM> is described as including separate components, in some embodiments some or all of the components (e.g., the processor <NUM>, the memory <NUM>, the input module <NUM>, the output module <NUM>, and the radio module <NUM>) may be integrated in a single device or module, such as a system-on-chip (SOC) or system-in-package (SIP) processing device, such as described with reference to <FIG>. Such an SOC or SIP processing device may be configured for use in vehicles and be configured, such as with processor-executable instructions executing in the processor <NUM>, to perform operations of various embodiments when installed into a vehicle.

In some implementations, the communication system <NUM> may include one or more devices configured to communicate as part of an intelligent transportation system (ITS). ITS technologies may increase intercommunication and safety for driver-operated vehicles and autonomous vehicles. The cellular vehicle-to-everything (C-V2X) protocol defined by the 3rd Generation Partnership Project (3GPP) supports ITS technologies and serves as the foundation for vehicles to communicate directly with the communication devices around them.

C-V2X defines transmission modes that provide non-line-of-sight awareness and a higher level of predictability for enhanced road safety and autonomous driving. Such C-V2X transmission modes may include V2V, V2I, and V2P, and may utilize frequencies in a <NUM> gigahertz (GHz) spectrum that is independent of a cellular network. C-V2X transmission modes may also include vehicle-to-network communications (V2N) in mobile broadband systems and technologies, such as <NUM> mobile communication technologies (e.g., GSM evolution (EDGE) systems, CDMA <NUM> systems, etc.), <NUM> communication technologies (e.g., LTE, LTE-Advanced, WiMAX, etc.), as well as <NUM> systems.

Various embodiments may be implemented on a number of single processor and multiprocessor computer systems, including a system-on-chip (SOC) or system in a package (SIP). <FIG> illustrates an example computing system or SIP <NUM> architecture that may be used in computing devices implementing the various embodiments.

With reference to <FIG> and <FIG>, the illustrated example SIP <NUM> includes a two SOCs <NUM>, <NUM>, a clock <NUM>, and a voltage regulator <NUM>. In some embodiments, the first SOC <NUM> operate as central processing unit (CPU) of the computing device that carries out the instructions of software application programs by performing the arithmetic, logical, control and input/output (I/O) operations specified by the instructions. In some embodiments, the second SOC <NUM> may operate as a specialized processing unit. For example, the second SOC <NUM> may operate as a specialized <NUM> processing unit responsible for managing high volume, high speed (e.g., <NUM> Gbps, etc.), and/or very high frequency short wave length (e.g., <NUM> mmWave spectrum, etc.) communications.

The first SOC <NUM> may include a digital signal processor (DSP) <NUM>, a modem processor <NUM>, a graphics processor <NUM>, an application processor <NUM>, one or more coprocessors <NUM> (e.g., vector co-processor) connected to one or more of the processors, memory <NUM>, custom circuity <NUM>, system components and resources <NUM>, an interconnection/bus module <NUM>, one or more temperature sensors <NUM>, a thermal management unit <NUM>, and a thermal power envelope (TPE) component <NUM>. The second SOC <NUM> may include a <NUM> modem processor <NUM>, a power management unit <NUM>, an interconnection/bus module <NUM>, a plurality of mmWave transceivers <NUM>, memory <NUM>, and various additional processors <NUM>, such as an applications processor, packet processor, etc..

The first and second SOC <NUM>, <NUM> may include various system components, resources and custom circuitry for managing sensor data, analog-to-digital conversions, wireless data transmissions, and for performing other specialized operations, such as decoding data packets and processing encoded audio and video signals for rendering in a web browser. For example, the system components and resources <NUM> of the first SOC <NUM> may include power amplifiers, voltage regulators, oscillators, phase-locked loops, peripheral bridges, data controllers, memory controllers, system controllers, access ports, timers, and other similar components used to support the processors and software clients running on a computing device. The system components and resources <NUM> and/or custom circuitry <NUM> may also include circuitry to interface with peripheral devices, such as cameras, electronic displays, wireless communication devices, external memory chips, etc..

The first and second SOC <NUM>, <NUM> may communicate via interconnection/bus module <NUM>. The various processors <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, may be interconnected to one or more memory elements <NUM>, system components and resources <NUM>, and custom circuitry <NUM>, and a thermal management unit <NUM> via an interconnection/bus module <NUM>. Similarly, the processor <NUM> may be interconnected to the power management unit <NUM>, the mmWave transceivers <NUM>, memory <NUM>, and various additional processors <NUM> via the interconnection/bus module <NUM>. The interconnection/bus module <NUM>, <NUM>, <NUM> may include an array of reconfigurable logic gates and/or implement a bus architecture (e.g., CoreConnect, AMBA, etc.). Communications may be provided by advanced interconnects, such as high-performance networks-on chip (NoCs).

The first and/or second SOCs <NUM>, <NUM> may further include an input/output module (not illustrated) for communicating with resources external to the SOC, such as a clock <NUM> and a voltage regulator <NUM>. Resources external to the SOC (e.g., clock <NUM>, voltage regulator <NUM>) may be shared by two or more of the internal SOC processors/cores.

In addition to the example SIP <NUM> discussed above, various embodiments may be implemented in a wide variety of computing systems, which may include a single processor, multiple processors, multicore processors, or any combination thereof.

<FIG> illustrates an example of a software architecture <NUM> including a radio protocol stack for the user and control planes in wireless communications between a vehicle controller <NUM> (e.g., a controller of the vehicle 152a, or SIP <NUM>) and a second computing device <NUM> in a second vehicle 152b. In some embodiments, the vehicle controller <NUM> and the second computing device <NUM> of the second vehicle 152b may communicate via D2D communication or another suitable device-to-device communication method. With reference to <FIG>, the vehicle controller <NUM> may implement the software architecture <NUM> to communicate with the second vehicle 152b of a communication system (e.g., <NUM>). In various embodiments, layers in the software architecture <NUM> in the vehicle controller <NUM> of the first vehicle 152a may form logical connections with corresponding layers in software of the second computing device <NUM> of the second vehicle 152b. The software architecture <NUM> may be distributed among one or more processors (e.g., the processors <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>). While illustrated with respect to one radio protocol stack, in a multi-SIM (subscriber identity module) wireless computing device, the software architecture <NUM> may include multiple protocol stacks, each of which may be associated with a different SIM (e.g., two protocol stacks associated with two SIMs, respectively, in a dual-SIM wireless communication device). While described below with reference to LTE communication layers, the software architecture <NUM> may support any of variety of standards and protocols for wireless communications, and/or may include additional protocol stacks that support any of variety of standards and protocols wireless communications.

The software architecture <NUM> may include a Non-Access Stratum (NAS) <NUM> and an Access Stratum (AS) <NUM>. The NAS <NUM> may include functions and protocols to support packet filtering, security management, mobility control, session management, and traffic and signaling between a SIM(s) of the wireless computing device (e.g., SIM(s) <NUM>) and its core network <NUM>. The AS <NUM> may include functions and protocols that support communication between a SIM(s) (e.g., SIM(s) <NUM>) and entities of supported access networks (e.g., a base station). In particular, the AS <NUM> may include at least three layers (Layer <NUM>, Layer <NUM>, and Layer <NUM>), each of which may contain various sub-layers.

In the user and control planes, Layer <NUM> (L1) of the AS <NUM> may be a physical layer (PHY) <NUM>, which may oversee functions that enable transmission and/or reception over the air interface. Examples of such physical layer <NUM> functions may include cyclic redundancy check (CRC) attachment, coding blocks, scrambling and descrambling, modulation and demodulation, signal measurements, MIMO, etc. The physical layer may include various logical channels, including the Physical Downlink Control Channel (PDCCH) and the Physical Downlink Shared Channel (PDSCH).

In the user and control planes, Layer <NUM> (L2) of the AS <NUM> may be responsible for the link between the controller <NUM> of a first vehicle 152a and the second controller of the second vehicle 152b over the physical layer <NUM>. In the various embodiments, Layer <NUM> may include a media access control (MAC) sublayer <NUM>, a radio link control (RLC) sublayer <NUM>, and a packet data convergence protocol (PDCP) <NUM> sublayer, each of which form logical connections terminating at the controller of the second vehicle 152b.

In the control plane, Layer <NUM> (L3) of the AS <NUM> may include a radio resource control (RRC) sublayer <NUM>. While not shown, the software architecture <NUM> may include additional Layer <NUM> sublayers, as well as various upper layers above Layer <NUM>. In various embodiments, the RRC sublayer <NUM> may provide functions including broadcasting system information, paging, and establishing and releasing an RRC signaling connection between the controller <NUM> of a first vehicle 152a and the controller of the second vehicle 152b. The direct communication messages from the applications layer may be transmitted either directly over L2 or L3, or via another signaling layer (e.g., PC5-signaling or PC5-S) over L2 or L3.

In various embodiments, the PDCP sublayer <NUM> may provide uplink functions including multiplexing between different radio bearers and logical channels, sequence number addition, handover data handling, integrity protection, ciphering, and header compression. In the downlink, the PDCP sublayer <NUM> may provide functions that include in-sequence delivery of data packets, duplicate data packet detection, integrity validation, deciphering, and header decompression.

In the uplink, MAC sublayer <NUM> may provide functions including multiplexing between logical and transport channels, random access procedure, logical channel priority, and hybrid-ARQ (HARQ) operations. In the downlink, the MAC layer functions may include channel mapping within a cell, de-multiplexing, discontinuous reception (DRX), and HARQ operations.

While the software architecture <NUM> may provide functions to transmit data through physical media, the software architecture <NUM> may further include at least one host layer <NUM> to provide data transfer services to various applications in the controller <NUM> of a first vehicle 152a. In some embodiments, application-specific functions provided by the at least one host layer <NUM> may provide an interface between the software architecture and the general purpose processor <NUM>.

In other embodiments, the software architecture <NUM> may include one or more higher logical layer (e.g., transport, session, presentation, application, etc.) that provide host layer functions. For example, in some embodiments, the software architecture <NUM> may include a network layer (e.g., IP layer) in which a logical connection terminates at a packet data network (PDN) gateway (PGW). In some embodiments, the software architecture <NUM> may include an application layer in which a logical connection terminates at another device (e.g., end user device, server, etc.). In some embodiments, the software architecture <NUM> may further include in the AS <NUM> a hardware interface <NUM> between the physical layer <NUM> and the communication hardware (e.g., one or more radio frequency transceivers).

<FIG> is a component block diagram illustrating a system <NUM> configured for providing secure communications between a first computing device and a second computing device in accordance with various embodiments. In some embodiments, system <NUM> may include one or more vehicle computing device <NUM> and/or one or more other vehicle computing devices <NUM>. With reference to <FIG>, vehicle computing device <NUM> may include a base station (e.g., the base station 110a-110d), a controller <NUM> of a vehicle 152a, 152b, and/or a computing device (e.g., the wireless computing device 120a-120c, <NUM>). Other vehicle computing devices <NUM> may include a base station (e.g., the base station 110a-110d), a controller <NUM> of a vehicle 152a, 152b and/or a computing device (e.g., the wireless computing device 120a-120c, <NUM>).

Vehicle computing device <NUM> may be configured by machine-readable instructions <NUM>. Machine-readable instructions <NUM> may include one or more instruction modules. The instruction modules may include computer program modules. The instruction modules may include one or more of a security key establishment information determination module <NUM>, a security key providing module <NUM>, a security key establishment information receiving module <NUM>, a security key determination module <NUM>, , a communication layer receiving module <NUM>, an algorithm selection module <NUM>, an encryption and/or integrity algorithm module <NUM>, an application software providing module <NUM>, an application software receiving module <NUM>, and/or other instruction modules.

The security key establishment information determination module <NUM> may be configured to determine, in a first application software executing in a processor of the first computing device, first security key establishment information. In some embodiments, the first application software may be a first application of an application layer executing in the processor of the first computing device. In some embodiments, the first computing device may be a first in-vehicle computing device of a first vehicle.

The security providing module <NUM> may be configured to provide the first security key establishment information to a communication layer of the first computing device in a format for transmission by the communication layer to the second computing device. In some embodiments, the communication layer of the first computing device may be a PC5 layer of the first computing device. In some embodiments, the root key may be a <NUM>-bit key. In some embodiments, the security providing module <NUM> may be configured to provide the second security key to the communication layer for use in encrypting transmissions of messages from the second application software to the second computing device. In some embodiments, the security providing module <NUM> may be configured to provide other security key establishment information to the communication layer for transmission to the second computing device. In some embodiments, the security key providing module <NUM> may be configured to provide the first security key to the communication layer for use by the communication layer in encrypting transmissions of messages from the first application software to the second computing device.

The security key establishment information receiving module <NUM> may be configured to receive, in the first application software from the communication layer of the first computing device, second security key establishment information received from the second computing device. In some embodiments, the first security key establishment information and the second security key establishment information may include information needed to be exchanged between two applications to enable the two applications to agree on a root key for one-to-one communications. In some embodiments, the control plane bearer may be a control plane bearer of a PC5 interface between the first computing device and the second computing device.

The security key determination module <NUM> may be configured to determine a first security key by the first application software based at least in part on the second security key establishment information received from the second computing device. In some embodiments, the security key determination module <NUM> may be configured to determine a second security key and third security key establishment information by the second application software executing in the processor based at least in part on the received third security key establishment information and information known to the second application software.

The communication layer receiving module <NUM> may be configured to receive from the communication layer in a second application software executing in the processor of the first computing device third security key establishment information sent by the second computing device.

The algorithm selection module <NUM> may be configured to select, by the first application software, an encryption algorithm to be used in encrypting messages from the first application software to the second computing device. The encryption and/or integrity algorithm including module <NUM> may be configured to include the selected encryption algorithm and/or integrity algorithm in the first security key establishment information.

The application software providing module <NUM> may be configured to provide by the first application software to the communication layer further security key establishment information for transmission to the second computing device. The application software receiving module <NUM> may be configured to receive by the first application software from the communication layer further security key establishment information received from the second computing device.

<FIG> is a process flow diagram, and <FIG> is a message flow diagram, illustrating a method <NUM> for providing secure communications between a first computing device and a second computing device according to various embodiments. With reference to <FIG>, the method <NUM> may be implemented by a processor (such as <NUM>, <NUM>, <NUM> or <NUM>) of a computing device (such as a controller <NUM> of a first vehicle 152a, a wireless computing device 120a-120c, <NUM>).

In block <NUM>, the processor may determine, in a first application software executing in a processor of the first computing device, first security key establishment information. For example, the processor in a first computing device (e.g., Computing Device <NUM>) may determine in a first application software (e.g., CD1 App layer) a first security key establishment information (e.g., Key_Est_Info). In some embodiments, the first security key establishment information may include information that may enable a second computing device to determine a root key (e.g., KD). In some embodiments, the first application software may be a first application of an application layer executing in the processor of the first computing device. In some embodiments, the first application may include a vehicle-to-everything application. In some embodiments, first computing device may include a first in-vehicle computing device of a first vehicle. In some embodiments, second computing device may include a second in-vehicle computing device of a second vehicle. In some embodiments, the first security key establishment information may be sent along with a request to establish communications, while in other embodiments the first security key establishment information may be sent in response to such a request. In some embodiments, the security key establishment information is transparent to the communication layer. In such embodiments, the security key establishment information is not understood by the communication layers. This enables different application software to use different key establishment methods, as well as enable an application to change its key establishment method.

In block <NUM>, the processor may provide the first security key establishment information to a communication layer of the first computing device in a format for transmission by the communication layer to the second computing device. For example, the processor may provide message 1a (<FIG>) including the security key establishment information (e.g., Key_Est_Info) from an application layer (WD1 App layer) to a communication layer (WD1 Comm layer). In some embodiments, the format for transmission by the communication layer may include providing, packaging, or wrapping the first security key establishment information provided by the first application software in a manner that enables the communication layer to transport the first security key establishment information without the communication layer performing any processing of the information itself, such as within a message wrapper or message container.

In some embodiments, the processor may transmit the security key establishment information (e.g., message 1b) to a second computing device (e.g., Computing Device <NUM>) via the communication layer. In some embodiments, message 1b may include a direct connection request. In some embodiments, the message 1b may be broadcast to one or more devices. In some embodiments, the direct connection request may include the security key establishment information. A processor of the second computing device may receive the security key establishment information at the communication layer, and may provide the security key establishment information (e.g., message 1c) to an application running on the second computing device in an application layer (e.g., CD2 App layer). In some embodiments, more than one computing device may be interested in establishing direct communications with the first computing device. In such a case, each of the interested devices may respond independently as the second computing device described herein in order to establish the shared root key (i.e., KD) between the two communicating devices.

In various embodiments, the first and second computing devices may exchange one or more elements of security key establishment information in one or more messages or transmissions. For example, messages 2a, 2b, and 2c represent a scenario in which a second application executing in a processor of the second computing device is able to derive a security key (KD) from security key establishment information received from the first computing device. In this scenario, the application executing on the second computing device may provide the derived security key from the application layer (CD2 App layer) to the communication layer (CD2 Comm layer). The application executing on the second computing device may also provide additional security key establishment information to the communication layer of the second computing device. The communication layer of the second computing device may provide the additional security key establishment information to the communication layer of the first computing device (CD2 Comm layer) in message 2b. The communication layer of the first computing device may provide the additional security key establishment information to the first application software executing in the application layer of the first computing device in message 2c. In some embodiments, the second computing device may omit messages 2a-2c, 3a-3c and 4a-4c, and may respond to message 1c with message 5a.

Messages 3a, 3b, and 3c represent one or more additional exchanges of security key establishment information between the first and second computing devices. In some embodiments, different types of credentials may be required by the applications executing in each of the first and second computing devices to determine a security key. For example, different types of long term keys may necessitate the exchange of different types of information, different quantities information, etc. between the applications executing in the first and second computing devices. When an application is able to determine a security key (KD), the application provides the determined security key to the communication layer. For example, when the application executing in the application layer of the first computing device determines the security key, the application may provide the security key to the communication layer of the first computing device via a message illustrated as message 3a. Similarly, when the application executing in the application layer of the second computing device determines the security key, the application may provide the security key to the communication layer of the second computing device via a message illustrated as message 3c. Messages 3a, 3b, and 3c are optional, and in some embodiments, messages 3a, 3b and 3c are not sent.

Messages 4a, 4b, and 4c may represent a scenario in which the application executing in the first computing device determines the security key before the application executing in the second computing device. In this scenario, the application executing in the application layer of the first computing device (CD1 App layer) may provide the security key to the communication layer of the first computing device (CD1 Comm layer). In some embodiments, the application of the first computing device may provide further security key establishment information to the communication layer of the first computing device, and the communication layer of the first computing device may provide the additional security key establishment information to the communication layer of the second computing device (CD2 Comm layer) in message 4b. The communication layer of the second computing device may provide the additional security key establishment information to the second application software executing in the application layer of the second computing device in message 4c. When the application executing in the application layer of the second computing device (CD2 App layer) is able to determine the security key, the application may provide the determined security key to the communication layer of the second computing device (CD2 Comm layer) in message 5a.

Messages 5a, 5b, and 5c represent a scenario in which the application executing on the second computing device is able to determine the security key before the application executing on the first computing device. As indicated above, the application executing on the second computing device may provide the determined security key to the communication layer of the second computing device (CD2 Comm layer) in message 5a. The application of the second computing device may provide further security key establishment information to the communication layer of the second computing device, and the communication layer of the second computing device may provide the additional security key establishment information to the communication layer of the first computing device (CD1 Comm layer) in message 5b. In some embodiments, message 5b may include a Direct Security Mode (SM) Command. In some embodiments, message 5b may include information indicating a security context determined buyer selected by the second computing device. For example, message 5b may include information indicating an integrity algorithm or a ciphering algorithm that has been selected by the second computing device. The communication layer of the first computing device may provide the additional security key establishment information to the first application software executing in the application layer of the first computing device in message 5c.

In some embodiments, when the application executing in the application layer of the first computing device (CD1 App layer) is able to determine the security key, the application may provide the determined security key to the communication layer of the first computing device (CD1 Comm layer) in message 6a.

In block <NUM>, the processor of the first computing device may receive, in the first application software from the communication layer of the first computing device, second security key establishment information received from the second computing device. For example, the processor of the first computing device may receive the second security key establishment information at the communication layer, and may provide the second security key establishment information e.g., (message 2c) to an application layer (e.g., CD1 App layer).

In some embodiments, the first security key establishment information and the second security key establishment information may include information needed to be exchanged between two applications to enable the two applications to authenticate each other and agree on a root key for one-to-one communications. In some embodiments, the root key may include a <NUM>-bit key.

In block <NUM>, the processor of the first computing device may determine a first security key by the first application software based at least in part on the second security key establishment information received from the second computing device. In some embodiments, the second security key establishment information may include information that may enable the first computing device to determine a root key (e.g., KD). In some embodiments, the method by which the first application software executing on the processor may determine the first security key may be unknown to the communication layer of the first computing device. In some embodiments, the method by which the first application software may determine the first security key may be changed or altered without requiring any change to the communication layer.

In block <NUM>, the processor of the first computing device may provide the first security key to the communication layer for use by the communication layer in protecting transmissions of messages from the first application software to the second computing device. In some embodiments, protecting transmissions of messages from the first application software to the second computing device may include establishing a protected (i.e., at least one of encrypted or integrity protected) tunnel between the communication layer of the first computing device and the communication layer of the second computing device.

In some embodiments, the processor may use the same security key establishment information to perform a separate run of the key determination processes to derive a key for protecting communications between the first application software on the first computing device and application software executing on the second computing device.

In some embodiments, the processor of the first computing device may send, via the communication layer of the first computing device (CD1 Comm layer) to the communication layer of the second computing device (CD2 Comm layer), a message indicating successful establishment of the security context between the first and second computing devices, in message 6b.

In some embodiments, the processor the second computing device may send a Direct Connection Accept message to the first computing device in message <NUM>. In some embodiments, the processor of the second computing device may send a bearer setup message (e.g., RRC User Plane Bearer Setup) in message <NUM>. In some embodiments, the bearer setup message may include security profile information for the direct communication bearers established on behalf of the application(s).

<FIG> are process flow diagrams illustrating methods 600a-600E that may be performed as part of or in conjunction with the method <NUM> (<FIG>) for providing secure communications between a first computing device and a second computing device according to various embodiments. With reference to <FIG>, the methods 600a-600E may be implemented by a processor (such as <NUM>, <NUM>, <NUM> or <NUM>) of a computing device (such as a controller <NUM> of a vehicle 152a, or a wireless computing device 120a-120c, <NUM>).

In some embodiments, the first computing device and the second computing device may send and receive a plurality of messages including various key establishment information to enable the applications executing in each computing device to determine a security key. Referring to <FIG>, in some implementations following the operations of block <NUM> (<FIG>), in block <NUM>, the first application software (i.e., executing in the processor of the first computing device) may receive from the communication layer third security key establishment information sent by the second computing device.

In block 508a, the processor may determine a first security key by the first application software executing in the processor based at least in part on the received second security key establishment information and the third security key establishment information. The processor may then perform the operations of block <NUM> of the method <NUM> as described with reference to <FIG>.

Referring to <FIG>, in some implementations following the operations of block <NUM> (<FIG>), in block <NUM>, the processor may select, by the first application software, a key establishment algorithm to be used for determining content of the first security key establishment information.

In block <NUM>, the processor may indicate the selected key establishment algorithm in the first security key establishment information. In some embodiments, the processor may include one or more elements of information indicating the selected key establishment algorithm.

Referring to <FIG>, in some implementations following the operations of block <NUM> (<FIG>), in block <NUM>, the processor may receive, from the communication layer in a second application software executing in the processor of the first computing device, fourth security key establishment information sent by the second computing device. For example, two or more applications executing in the processor of the first computing device may communicate with two or more applications executing in a processor of the second computing device.

In block <NUM>, the processor may determine a second security key by the second application software based at least in part on the fourth security key establishment information received from the second computing device. For example, different applications executing on the first and second computing devices may determine different security keys for their communication.

Referring to <FIG>, in some implementations following the operations of block <NUM> (<FIG>), in block <NUM>, the processor may determine, by the second application software, from information in the fourth security key establishment information received from the second computing the key establishment mechanism to be used from the second application software to the second computing device.

Referring to <FIG>, in some implementations following the operations of block <NUM> (<FIG>), in block <NUM>, the processor may provide by the first application software to the communication layer further security key establishment information for transmission to the second computing device.

In block <NUM>, the processor may receive by the first application software from the communication layer further security key establishment information received from the second computing device.

In block <NUM>, the processor may use the further security key establishment information by the first application software in determining the first security key.

Referring to <FIG>, in some implementations following the operations of block <NUM> (<FIG>), in block <NUM>, the processor may provide data packets by the first application software to the communication layer for transmission to the second computing device.

In block <NUM>, the processor may protect the data packets by the communication layer using the first security key. In some embodiments, the communication layer may use the first security key to establish a secure tunnel or encrypted tunnel with the communication layer of the second computing device.

In block <NUM>, the processor may transmit the protected data packets to the second computing device. In some embodiments, the processor may transmit the protected data packets to the second communication device by the communication layer using a ProSe protocol. In some embodiments, transmitting the protected data packets to the second computing device may include transmitting the protected data packets to the second computing device on a control plane bearer of the communication layer. In some embodiments, the control plane bearer may include a control plane bearer of a PC5 interface between the first computing device and the second computing device. In some embodiments, transmitting the protected data packets to the second computing device may include protecting data packets from the first application software by the communication layer using the first security key, and transmitting the protected data packets to the second computing device on a user plane bearer of the communication layer.

Various embodiments may be implemented on a variety of network devices, an example of which is illustrated in <FIG> in the form of a network computing device <NUM> functioning as a network element of a communication network, such as a base station. Such network computing devices may include at least the components illustrated in <FIG>. With reference to <FIG>, the network computing device <NUM> may typically include a processor <NUM> coupled to volatile memory <NUM> and a large capacity nonvolatile memory, such as a disk drive <NUM>. The network computing device <NUM> may also include a peripheral memory access device such as a floppy disc drive, compact disc (CD) or digital video disc (DVD) drive <NUM> coupled to the processor <NUM>. The network computing device <NUM> may also include network access ports <NUM> (or interfaces) coupled to the processor <NUM> for establishing data connections with a network, such as the Internet and/or a local area network coupled to other system computers and servers. The network computing device <NUM> may include one or more antennas <NUM> for sending and receiving electromagnetic radiation that may be connected to a wireless communication link. The network computing device <NUM> may include additional access ports, such as USB, Firewire, Thunderbolt, and the like for coupling to peripherals, external memory, or other devices.

Various embodiments may be implemented on a variety of wireless computing devices (e.g., a controller <NUM> of a vehicle 152a, or a wireless computing device 120a-120c, <NUM>), an example of which is illustrated in <FIG> in the form of a smartphone <NUM>. The smartphone <NUM> may include a first SOC <NUM> (e.g., a SOC-CPU) coupled to a second SOC <NUM> (e.g., a <NUM> capable SOC). The first and second SOCs <NUM>, <NUM> may be coupled to internal memory <NUM>, <NUM>, a display <NUM>, and to a speaker <NUM>. Additionally, the smartphone <NUM> may include an antenna <NUM> for sending and receiving electromagnetic radiation that may be connected to a wireless data link and/or cellular telephone transceiver <NUM> coupled to one or more processors in the first and/or second SOCs <NUM>, <NUM>. Smartphones <NUM> typically also include menu selection buttons or rocker switches <NUM> for receiving user inputs.

A typical smartphone <NUM> also includes a sound encoding/decoding (CODEC) circuit <NUM>, which digitizes sound received from a microphone into data packets suitable for wireless transmission and decodes received sound data packets to generate analog signals that are provided to the speaker to generate sound. Also, one or more of the processors in the first and second SOCs <NUM>, <NUM>, wireless transceiver <NUM> and CODEC <NUM> may include a digital signal processor (DSP) circuit (not shown separately).

The processors of the wireless network computing device <NUM> and the smart phone <NUM> may be any programmable microprocessor, microcomputer or multiple processor chip or chips that can be configured by software instructions (applications) to perform a variety of functions, including the functions of the various embodiments described below. In some wireless computing devices, multiple processors may be provided, such as one processor within an SOC <NUM> dedicated to wireless communication functions and one processor within an SOC <NUM> dedicated to running other applications. Typically, software applications may be stored in the memory <NUM>, <NUM> before they are accessed and loaded into the processor. The processors may include internal memory sufficient to store the application software instructions.

As used in this application, the terms "component," "module," "system," and the like are intended to include a computer-related entity, such as, but not limited to, hardware, firmware, a combination of hardware and software, software, or software in execution, which are configured to perform particular operations or functions. For example, a component may be, but is not limited to, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a computing device and circuitry (e.g., an SOC) of the computing device may be referred to as a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one processor or core and/or distributed between two or more processors or cores. In addition, these components may execute from various non-transitory computer readable media having various instructions and/or data structures stored thereon. Components may communicate by way of local and/or remote processes, function or procedure calls, electronic signals, data packets, memory read/writes, and other known network, computer, processor, and/or process related communication methodologies.

A number of different cellular and mobile communication services and standards are available or contemplated in the future, all of which may implement and benefit from the various embodiments. Such services and standards include, e.g., third generation partnership project (3GPP), long term evolution (LTE) systems, third generation wireless mobile communication technology (<NUM>), fourth generation wireless mobile communication technology (<NUM>), fifth generation wireless mobile communication technology (<NUM>), global system for mobile communications (GSM), universal mobile telecommunications system (UMTS), 3GSM, general packet radio service (GPRS), code division multiple access (CDMA) systems (e.g., cdmaOne, CDMA1020TM), enhanced data rates for GSM evolution (EDGE), advanced mobile phone system (AMPS), digital AMPS (IS-<NUM>/TDMA), evolution-data optimized (EV-DO), digital enhanced cordless telecommunications (DECT), Worldwide Interoperability for Microwave Access (WiMAX), wireless local area network (WLAN), Wi-Fi Protected Access I & II (WPA, WPA2), and integrated digital enhanced network (iDEN). Each of these technologies involves, for example, the transmission and reception of voice, data, signaling, and/or content messages. It should be understood that any references to terminology and/or technical details related to an individual telecommunication standard or technology are for illustrative purposes only, and are not intended to limit the scope of the Claims to a particular communication system or technology unless specifically recited in the claim language.

Various embodiments illustrated and described are provided merely as examples to illustrate various features of the claims. However, features shown and described with respect to any given embodiment are not necessarily limited to the associated embodiment and may be used or combined with other embodiments that are shown and described. Further, the claims are not intended to be limited by any one example embodiment. For example, one or more of the operations of the methods <NUM> and 600a-600f may be substituted for or combined with one or more operations of the methods <NUM>, and 600a-600f.

The hardware used to implement various illustrative logics, logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor may also be implemented as a combination of receiver smart objects, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some operations or methods may be performed by circuitry that is specific to a given function.

In one or more embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable storage medium or non-transitory processor-readable storage medium. The operations of a method or algorithm disclosed herein may be embodied in a processor-executable software module or processor-executable instructions, which may reside on a non-transitory computer-readable or processor-readable storage medium. Non-transitory computer-readable or processor-readable storage media may be any storage media that may be accessed by a computer or a processor. By way of example but not limitation, such non-transitory computer-readable or processor-readable storage media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage smart objects, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. Combinations of the above are also included within the scope of non-transitory computer-readable and processor-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a non-transitory processor-readable storage medium and/or computer-readable storage medium, which may be incorporated into a computer program product.

Claim 1:
A method (<NUM>) of providing secure communications between a first computing device and a second computing device, comprising:
determining (<NUM>), in a first application software in an application layer executing in a processor of the first computing device, first security key establishment information that is configured to enable second application software in an application layer executing in the second computing device to determine a first security key for use by a communication layer of the second computing device;
providing (<NUM>) the first security key establishment information from the application layer to a communication layer of the first computing device in a format for transmission by the communication layer of the first computing device to the second computing device;
receiving (<NUM>), in the first application software in the application layer from the communication layer of the first computing device, second security key establishment information received from the second computing device;
determining (<NUM>) the first security key by the first application software in the application layer based at least in part on the second security key establishment information received from the second computing device; and
providing (<NUM>) the first security key from the application layer to the communication layer for use by the communication layer of the first computing device in protecting transmissions of messages from the first application software to the second computing device.