CROSS-REFERENCE TO RELATED APPLICATIONSThe present application claims the benefit of U.S. Provisional Patent Application Ser. No. 63/349,041, entitled “CRYPTOGRAPHIC PARTICIPANT VOUCHING,” filed Jun. 3, 2022, which is hereby incorporated herein by reference in its entirety and made part of the present U.S. Utility Patent Application for all purposes.
TECHNICAL FIELDThe present description generally relates to group communications on electronic devices and, more particularly, to cryptographic participant vouching.
BACKGROUNDAn electronic device such as a laptop, tablet, or smartphone, may be configured to participate in group communication sessions. Video communication sessions, for example, allow people in remote locations to view a video stream of each other in real-time.
BRIEF DESCRIPTION OF THE DRAWINGSCertain features of the subject technology are set forth in the appended claims. However, for the purpose of explanation, several implementations of the subject technology are set forth in the following figures.
FIG.1 illustrates an example network environment for communication sessions in which a device may be vouched for by a device participating in the group communication session, in accordance with one or more implementations.
FIG.2 depicts an example electronic device that may implement the subject methods and systems, in accordance with one or more implementations.
FIG.3 depicts a schematic diagram of a use case in which a participant of a group communication session may first be presented with a first video feed from a first device and then the first video feed from the first device and a second video feed from a second device, in accordance with one or more implementations.
FIG.4A depicts a sequence diagram of an example sequence for vouching for an electronic device, in accordance with one or more implementations.
FIG.4B depicts a sequence diagram of anexample sequence400 for vouching for anelectronic device106, in accordance with one or more implementations.
FIG.5 depicts a flow diagram of an example process for creating a voucher by a first device that is participating in a group communication session, in accordance with one or more implementations.
FIG.6 depicts a flow diagram of an example process for validating a voucher by a first device that is participating in a group communication session, in accordance with one or more implementations.
FIG.7 depicts an example electronic system with which aspects of the present disclosure may be implemented, in accordance with one or more implementations.
DETAILED DESCRIPTIONThe detailed description set forth below is intended as a description of various configurations of the subject technology and is not intended to represent the only configurations in which the subject technology can be practiced. The appended drawings are incorporated herein and constitute a part of the detailed description. The detailed description includes specific details for the purpose of providing a thorough understanding of the subject technology. However, the subject technology is not limited to the specific details set forth herein and can be practiced using one or more other implementations. In one or more implementations, structures and components are shown in block diagram form in order to avoid obscuring the concepts of the subject technology.
Electronic devices may be configured to send and receive data between each other to participate in communication sessions (e.g., video calls, audio calls, and/or the like) with one or more other similarly configured electronic devices. A participant in a communication session may have access to other electronic devices (e.g., smartphone, laptop, tablet, and/or the like) that may be used to participate in a communication session. However, the participant may be unable to add a new device to a particular communication session if, for example, the new device is not registered to the account of the participant. In this instance, the participant may have to first register the new device to their account to use the new device in the communication session.
In the subject systems and methods, a vouching process is provided for a participant in a group communication session to vouch for devices that are not registered to an account of the participant. For example, in one or more implementations, for a communication session that includes participants Alice and Bob, Alice can vouch for (e.g., and invite as an additional participant or handoff a connection to) a new device that might not be registered to the same account as Alice (e.g., a public device, car, web client, anonymous participant, etc.). Rather than requiring Bob to validate the new participant based on account registration for admission into the communication session, Alice can provide Bob with a voucher that Bob can use to confirm that the new device is vouched for by Alice (for handoff or for inclusion in the group communication session as a separate participant).
In some implementations, a vouching process is provided for a user device to vouch for devices that are not registered to an account of the user. For example, in one or more implementations, a user Alice can vouch for (e.g., and initiate a group communication session with) a new device that might not be registered to the same account as Alice (e.g., a public device, car, web client, anonymous participant, etc.). Rather than requiring a user Bob to validate the new device based on account registration when joining a communication session with the new device, Alice can provide Bob with a voucher that Bob can use to confirm that the new device is vouched for by Alice.
FIG.1 illustrates anexample network environment100 for communication sessions in which a device may be vouched for by a device participating in the group communication session, in accordance with one or more implementations. Not all of the depicted components may be used in all implementations, however, and one or more implementations may include additional or different components than those shown in the figure. Variations in the arrangement and type of the components may be made without departing from the spirit or scope of the claims as set forth herein. Additional components, different components, or fewer components may be provided.
Thenetwork environment100 may include anelectronic device102, anelectronic device104, anelectronic device106, and one or more servers, such as aserver108. Thenetwork110 may communicatively (directly or indirectly) couple theelectronic device102, theelectronic device104, theelectronic device106, and/or theserver108. In one or more implementations, thenetwork110 may be an interconnected network of devices that may include, or may be communicatively coupled to, the Internet. For explanatory purposes, thenetwork environment100 is illustrated inFIG.1 as including theelectronic device102, theelectronic device104, theelectronic device106, and theserver108; however, thenetwork environment100 may include any number of electronic devices and/or any number of servers communicatively coupled to each other directly or via thenetwork110.
Theelectronic device102 may be, for example, a desktop computer, a portable computing device such as a laptop computer, a smartphone, a peripheral device (e.g., a digital camera, headphones), a tablet device, standalone videoconferencing hardware, a wearable device such as a watch, a band, and the like, or any other appropriate device that includes, for example, one or more wireless interfaces, such as WLAN radios, cellular radios, Bluetooth radios, Zigbee radios, near field communication (NFC) radios, and/or other wireless radios. In one or more implementations, theelectronic device102 may include a conferencing module (and/or circuitry) and one or more applications. InFIG.1, by way of example, theelectronic device102 is depicted as a smartphone. Theelectronic device102 may be, and/or may include all or part of, the electronic system discussed below with respect toFIG.7. In one or more implementations, theelectronic device102 may include a camera and a microphone and may provide the conferencing module or application for obtaining and/or exchanging user communications data such as audio streams and/or video streams over thenetwork110, such as with a corresponding conferencing module or application that is installed and accessible at, for example,electronic device104, and/orelectronic device106.
Theelectronic device104 may be, for example, a portable computing device such as a laptop computer, a smartphone, a peripheral device (e.g., a digital camera, headphones), a tablet device, a wearable device such as a watch, a band, and the like, any other appropriate device that includes, for example, one or more wireless interfaces, such as WLAN radios, cellular radios, Bluetooth radios, Zigbee radios, NFC radios, and/or other wireless radios. In one or more implementations, theelectronic device104 may include a conferencing module and one or more applications. InFIG.1, by way of example, theelectronic device104 is depicted as a smartphone. Theelectronic device104 may be, and/or may include all or part of, the electronic system discussed below with respect toFIG.7.
In one or more implementations, theelectronic device104 may include a camera and a microphone and may provide the conferencing module for obtaining and/or exchanging user communications data such as audio streams and/or video streams over thenetwork110, such as with a corresponding conferencing module that is installed and accessible at, for example,electronic device102, electronic device114, and/orelectronic device106. Theelectronic device104 may be in a location that is nearby theelectronic device102 for directly sending and/or receiving messages withelectronic device102, such as Bluetooth messages or other near field communications. Theelectronic device104 may be a participant in agroup communication session105 with theelectronic device102, in which theelectronic device102 andelectronic device104 may exchange data synchronously and/or asynchronously.
Theelectronic device106 may be, for example, a portable computing device such as a laptop computer, a smartphone, a peripheral device (e.g., a digital camera, headphones), a tablet device, a wearable device such as a watch, a band, and the like, any other appropriate device that includes, for example, one or more wireless interfaces, such as WLAN radios, cellular radios, Bluetooth radios, Zigbee radios, NFC radios, and/or other wireless radios. In one or more implementations, theelectronic device106 may include a conferencing module and one or more applications. InFIG.1, by way of example, theelectronic device106 is depicted as a laptop. Theelectronic device106 may be, and/or may include all or part of, the electronic system discussed below with respect toFIG.7. In one or more implementations, theelectronic device106 may include a camera and a microphone and may provide the conferencing module or application for obtaining and/or exchanging user communications data such as audio streams and/or video streams over thenetwork110. Theelectronic device106 may not be a participant in thegroup communication session105 unless theelectronic device106 receives an invitation to join, becomes registered with a user account of a participant, or is vouched for by a participant as described in the subject technology.
In one or more implementations, one or more servers (e.g., the server108) may perform operations for managing the secure exchange of user communications data and/or communication sessions data between various electronic devices (e.g., theelectronic device102, theelectronic device104, and/or the electronic device106), such as during a group communication session105 (e.g., an audio conferencing session or a video conferencing session). In some variations, theserver108 is a relay server (e.g., a quick relay server). In some variations, theserver108 includes one or more app-specific modules (e.g., plugins) that perform operations for a respective application (e.g., a video conferencing application). In some variations, theserver108 includes one or more push modules for providing asynchronous notifications to one or more electronic devices (e.g., publish-subscribe messaging).
In one or more implementations, theserver108 may store account information (e.g., account, handles, or any other account-specific data) associated with theelectronic device102, theelectronic device104, theelectronic device106, and/or users thereof. In one or more implementations, one or more servers (e.g., the server108) may provide content (e.g., media content, application content, or any other suitable data) that is to be processed at a participant device (e.g., theelectronic device102 and/or the electronic device104) by an application or operating system of the participant device.
FIG.2 depicts anelectronic device102 that may implement the subject methods and systems, in accordance with one or more implementations. For explanatory purposes,FIG.2 is primarily described herein with reference to theelectronic device102 ofFIG.1. However, this is merely illustrative, and features of the electronic device ofFIG.2 may be implemented in any of theelectronic device104, theelectronic device106, and/or any other electronic device for implementing the subject technology. Not all of the depicted components may be used in all implementations, however, and one or more implementations may include additional or different components than those shown inFIG.2. Variations in the arrangement and type of the components may be made without departing from the spirit or scope of the claims as set forth herein. Additional components, different components, or fewer components may be provided.
Theelectronic device102 may include one or more of ahost processor202, amemory204, one or more sensor(s)206, and/or acommunication interface208. Thehost processor202 may include suitable logic, circuitry, and/or code that enable processing data and/or controlling operations of theelectronic device102. In this regard, thehost processor202 may be enabled to provide control signals to various other components of theelectronic device102. Thehost processor202 may also control transfers of data between various portions of theelectronic device102. Thehost processor202 may further implement an operating system or may otherwise execute code to manage operations of theelectronic device102.
Thememory204 may include suitable logic, circuitry, and/or code that enable storage of various types of information such as received data, generated data, code, and/or configuration information. Thememory204 may include, for example, random access memory (RAM), read-only memory (ROM), flash, and/or magnetic storage. In one or more implementations, thememory204 may store communication session data (e.g., as provided by the server108) for participating in communication sessions with other electronic devices. Thememory204 may further store account information and any other type of identifier that associates theelectronic device102 with its corresponding user account and/or group communication sessions.
The sensor(s)206 may include one or more microphones and/or cameras. The microphones may be used to facilitate the audio features of a communication session. For example, the microphones may obtain audio signals corresponding to the voice of a participant in a communication session (e.g., the group communication session105). The cameras may be used to facilitate the video features of a communication session. For example, the cameras may obtain images of the face of a participant in a communication session (e.g., the group communication session105).
Thecommunication interface208 may include suitable logic, circuitry, and/or code that enables wired or wireless communication, such as between theelectronic device102 and theserver108. Thecommunication interface208 may include, for example, one or more of a Bluetooth communication interface, an NFC interface, a Zigbee communication interface, a WLAN communication interface, a USB communication interface, a cellular interface, or generally any communication interface.
In one or more implementations, one or more of thehost processor202, thememory204, the sensor(s)206, thecommunication interface208, and/or one or more portions thereof, may be implemented in software (e.g., subroutines and code), may be implemented in hardware (e.g., an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Programmable Logic Device (PLD), a controller, a state machine, gated logic, discrete hardware components, or any other suitable devices) and/or a combination of both.
FIG.3 depicts theexample use case300 in which a participant of a group communication session using a first device may first be presented afirst video feed302 from the first device and a second video feed304 from a second device and then transition to include a third video feed306 from a third device that was vouched for by the first or second device, in accordance with one or more implementations. It is contemplated that theelectronic device102 and theelectronic device104 may be any electronic device configured to engage in communication sessions, such as video communication sessions, audio communication sessions, phone calls, and/or the like.
As shown in the example ofFIG.3, theelectronic device102 is a smartphone participating in a video communication session. Theelectronic device102 may also present afirst video feed302 generated from asensor206 on theelectronic device102, such as a camera. Theelectronic device102 may present video feeds of the participants of the video communication session, such as asecond video feed304. In one or more implementations, thesecond video feed304 is received from one or more respective electronic devices of one or more respective remote participants in the video communication session (e.g., the electronic device104).
For example, thefirst video feed302 may include a view of the face of the user of theelectronic device102 and thesecond video feed304 may include a view of the face of the user of theelectronic device104. In the subject system, theelectronic device102 may vouch for theelectronic device106 so that theelectronic device106 may participate in the video communication session. The vouching results in the video feeds presented on theelectronic device102 also including athird video feed306 transmitted from theelectronic device106, as shown in theelectronic device102 on the right inFIG.3. It is understood that, although three video feeds of three electronic devices (e.g., theelectronic device102, theelectronic device104, and the electronic device106) participating in a video communication session are shown, more than or less than three video feeds may be displayed for more than or less than three participants in the video communication session. In the example ofFIG.3, theelectronic device102 vouches for theelectronic device106, and the electronic device106 (providing the third video feed306) is added to the communication session with the electronic device102 (providing the first video feed302) and the electronic device104 (providing the second video feed304).
In one or more other implementations, theelectronic device102 may vouch for theelectronic device106 so that theelectronic device102 may handoff the video communication session to theelectronic device106. In these handoff implementations, before the handoff, thefirst video feed302 corresponding to theelectronic device102 may be displayed on theelectronic device104. After the handoff, at theelectronic device104, thefirst video feed302 may be replaced with thethird video feed306 corresponding to theelectronic device106, to which the video communication session has been transferred by handoff. In one or more implementations, following the handoff, theelectronic device102 may discontinue generating thefirst video feed302 and/or discontinue displaying thesecond video feed304.
FIG.4A depicts a sequence diagram of anexample sequence400 for vouching for anelectronic device106, in accordance with one or more implementations. For explanatory purposes, thesequence400 is primarily described herein with reference to the devices shown and described with regard toFIGS.1 and2. However, thesequence400 is not limited to components or devices described inFIG.4, and one or more blocks (also referred to as steps, sequences, or operations) of thesequence400 may be performed by one or more other components and/or by other suitable devices. In addition, the blocks of thesequence400 need not be performed in the order shown and/or one or more blocks of thesequence400 need not be performed and/or can be replaced by other operations.
Atblock402, theelectronic device102 may generate a voucher data item to vouch for theelectronic device106. Theelectronic device102 may be participating in a group communication session with theelectronic device104, and theelectronic device106 may not be participating in the group communication session. Theelectronic device106 may be any device capable of participating in a group communication session with theelectronic device102 and theelectronic device104. In one or more implementations, theelectronic device106 may be a device in proximity to theelectronic device102 so that the voucher data item may be sent to theelectronic device106 via Bluetooth. In one or more implementations, theelectronic device106 may be a video streaming device and/or a set-top box device that may be configured to participate in the group communication session without providing an audio and/or video stream, such as to synchronize a video being viewed by each of the participants.
For example, theelectronic device106 may be a shared device such as a public computer or a video conferencing system, and theelectronic device102 and/or theelectronic device104 may be in a group communication session. The group communication session may be a video call, and theelectronic device102 may handoff the video call from theelectronic device102 to theelectronic device106 that has been vouched for, although theelectronic device106 is not registered to the user account associated with theelectronic device102.
The voucher data item may be generated by theelectronic device102 and may include participant information associated with the participation of theelectronic device102 in the group communication session (e.g., the group communication session105). The participant information associated with the participation of theelectronic device102 in the group communication session includes one or more group communication session participant identifiers associated with the group communication session and/or theelectronic device102. For example, the voucher data item may include a session-specific participant identifier and a stream identifier that are both associated with the communication session and theelectronic device102. Also included may be an expiration time that can be used to determine whether the voucher data item is expired. For example, the voucher data item may include a time that it was created as well as a time-to-live value that represents a period of time from creation that the voucher data item should exist before being discarded or otherwise invalidated.
The voucher data item may be signed with a key associated with theelectronic device102. Signing may include generating a digital signature for verifying the integrity of the voucher data item. For example, theelectronic device102 may sign the voucher data item with its private key such that the contents of the voucher data item may be verified with a corresponding public key of theelectronic device102. Signing may also or instead include securing the voucher data item (e.g., encrypting) with the key.Block402 is discussed in further detail below with regard toFIG.5.
Atoperation404, the voucher data item may be sent from theelectronic device102 to theelectronic device106. It should be understood that the voucher data item may be sent from any device participating in the group communication session to any device not participating in the group communication session. The voucher data item may be sent to theelectronic device106 directly or indirectly. For example, the voucher data item may be transmitted to theelectronic device106 directly via Bluetooth. As another example, the voucher data item may be relayed to theelectronic device106 through theserver108, which may perform operations on the voucher data item (e.g., security and/or integrity checks).Operation404 is discussed in further detail with regard toFIG.5.
Atoperation406, the voucher data item may be provided to one or more participants in the group communication session to verify that theelectronic device106 is vouched for by theelectronic device102 for participation in the group communication session. The voucher data item may be sent to the electronic device104 (or any other device participating in the group communication session) device directly or indirectly. For example, the voucher data item may be transmitted to theelectronic device104 directly via Bluetooth or indirectly through theserver108, theelectronic device102, and/or the like.
In one or more implementations, theelectronic device104 may retrieve or access a database or device to receive the voucher data item. For example, the voucher data item may be stored in theserver108 and can be downloaded by theelectronic device104 via the Internet. Other examples include, accessing a removable storage device (e.g., a USB drive), a network-attached storage device (e.g., over a wired connection), and/or any other method of receiving data.Operation406 is discussed in further detail with regard toFIGS.5 and6.
Atoperation408, the verifying device (e.g., the electronic device104) may retrieve a key associated with the device that generated the voucher (e.g., the electronic device102). The voucher data item may be signed with a key associated with the device that generated the voucher data item (e.g., the electronic device102). For example, the voucher data item may include a signature generated by theelectronic device102 with its private key such that the contents of the voucher data item may be verified with a corresponding public key of theelectronic device102. Accordingly, the key to be retrieved may be a public key associated with theelectronic device102.
To retrieve the key associated with the device that generated the voucher data item, the device performing the verification of the voucher data item (e.g., the electronic device104) may query a device management server for the key. The device management server may be a server (e.g., server108) that stores information related to user accounts and associated device identifiers and public keys.Operation408 is discussed in further detail with regard toFIG.6.
Atoperation410, theserver108 may send the key associated with theelectronic device102 to theelectronic device104. The key may be sent to theelectronic device102 directly or indirectly. For example, the key may be sent directly to theelectronic device102 via a wired or wireless connection. As another example,server108 may instruct another device to send the key to theelectronic device102.
Additionally or alternatively, the device performing the verification of the voucher data item (e.g., the electronic device104) may receive the key from the device that generated the voucher data item (e.g., the electronic device102). For example, the device performing the verification of the voucher data item (e.g., the electronic device104) may request and receive the key from the device that generated the voucher data item (e.g., the electronic device102). As another example, the devices participating in the group communication session may exchange the relevant keys for generating and/or verifying vouchers when the respective devices begin participating in the group communication session.Operation410 is discussed in further detail with regard toFIG.6.
Atoperation412, the verifying device (e.g., the electronic device104) may retrieve participant information associated with the participation of the device that generated the voucher (e.g., electronic device102). Theelectronic device104 retrieves the participant information to verify the accuracy of the participant information included in the voucher data item received inoperation406. The participant information may be information associated with the participation of the device that generated the voucher data item (e.g., the electronic device102) in the group communication session. The participant information may be obtained by the device performing the verification (e.g., the electronic device104) through its participation in the group communication session. For example, if the group communication session takes place on a messaging application, the participant information may be sent as a message on the messaging application or as a group communication session control message that facilitates the group communication session.Operation412 is discussed in further detail with regard toFIG.6.
Atoperation414, the device that generated the voucher (e.g., the electronic device102) may send its participant information to the verifying device (e.g., electronic device104) for verifying the voucher data item. The participant information may be sent to theelectronic device104 directly or indirectly. For example, the participant information may be sent directly to theelectronic device104 via the group communication session. As another example, theelectronic device102 may generate a group communication session control message to send to a group communication session server (e.g., the server108) for forwarding to the participants of the group communication session (e.g., electronic device104).
Additionally or alternatively, the device performing the verification of the voucher data item (e.g., the electronic device104) may receive the participant information from one or more other devices participating in the group communication session. For example, the devices participating in the group communication session may exchange their respective participant information for the group communication session when the respective devices begin participating in the group communication session.Operation414 is discussed in further detail with regard toFIG.6.
Atblock416, the voucher data item is verified. Theelectronic device104 may compare the participant information included in the voucher data item from theelectronic device106 to the participant information received from the electronic device102 (e.g., at the start of the communication session) to verify that theelectronic device102 has vouched for theelectronic device106 to join the group communication session. Because knowledge of the participant information in a particular communication session is limited to the participants of the communication session, theelectronic device106 can be trusted as having been vouched for by theelectronic device102 if the participant information that theelectronic device106 sent via the voucher data item atoperation406 is the participant information of theelectronic device102 in the particular communication session.
In one or more implementations, theelectronic device104 may further determine whether the voucher data item is expired. The voucher data item may include an expiration time to determine whether the voucher data item is expired. For example, the voucher data item may include a time, after the voucher data item was created, that the voucher data item is no longer valid. If it is determined that the voucher data item is expired, theelectronic device106 may not be permitted to join the group communication session.Block416 is discussed in further detail with regard toFIG.6.
Atoperation418, the verifying device (e.g., the electronic device104) may provide an indication to the new device (e.g., the electronic device106) that it may join the group communication session. The indication may include a link, a message, a signal, or any other signal to theelectronic device106 that it may join the group communication session. Alternatively, theelectronic device104 may automatically include theelectronic device106 upon determining that it has been properly vouched for. In one or more implementations, theelectronic device104 may send a join message incorporating theelectronic device106 into the group communication session to join theelectronic device106 into the group communication session. The join message is any message that incorporates theelectronic device106 into the group communication session such that theelectronic device106 may send and/or receive data as a participant in the group communication session.
Atblock420, the new device (e.g., the electronic device106) may join the group communication session. Theelectronic device106 may present a UI element on an electronic display indicating that it has been vouched for. The indication may include a notice that theelectronic device106 has been vouched for by theelectronic device102. The indication may also include a notice of the participants of the group communication session. The UI element may be confirmed, denied, or ignored. If the UI element is confirmed or ignored, theelectronic device106 may continue to join the group communication session; otherwise, theelectronic device106 may remain outside of the group communication session. In one or more implementations, theelectronic device106 may also send a notification to one or more of the participants of the group communication session indicating that it is associated with theelectronic device102.
FIG.4B depicts a sequence diagram of anexample sequence400 for vouching for anelectronic device106, in accordance with one or more implementations. For explanatory purposes, thesequence400 is primarily described herein with reference to the devices shown and described with regard toFIGS.1 and2. However, thesequence400 is not limited to components or devices described inFIG.4B, and one or more blocks (also referred to as steps, sequences, or operations) of thesequence400 may be performed by one or more other components and/or by other suitable devices. In addition, the blocks of thesequence400 need not be performed in the order shown and/or one or more blocks of thesequence400 need not be performed and/or can be replaced by other operations.
Atblock402, theelectronic device102 may generate a voucher data item to vouch for theelectronic device106. In some embodiments,electronic device102 is not participating in a group communication session with theelectronic device104. Theelectronic device106 may be any device capable of participating in a group communication session with theelectronic device102 and theelectronic device104. In one or more implementations, theelectronic device106 may be a device in proximity to theelectronic device102 so that the voucher data item may be sent to theelectronic device106 via Bluetooth. In one or more implementations, theelectronic device106 may be a video streaming device and/or a set-top box device. In one or more implementations, theelectronic device106 may be a video streaming device and/or a set-top box device that may be configured to participate in the group communication session without providing an audio and/or video stream, such as to synchronize a video being viewed by each of the participants.
In some implementations, theelectronic device106 is a shared device such as a public computer or a video conferencing system. In some implementations, theelectronic device106 is not registered to the user account associated with theelectronic device102.
The voucher data item may be generated by theelectronic device102 and may include participant information of theelectronic device102. In some implementations, the participant information is. In some embodiments, the participant information may be information associated with the participation of theelectronic device102 includes one or more participant identifiers. For example, the voucher data item may include a session-specific participant identifier and a stream identifier that are both associated with a communication session and theelectronic device102. In some implementations, the communication session is initiated by theelectronic device102. Also included may be an expiration time that can be used to determine whether the voucher data item is expired. For example, the voucher data item may include a time that it was created as well as a time-to-live value that represents a period of time from creation that the voucher data item should exist before being discarded or otherwise invalidated.
The voucher data item may be signed with a key associated with theelectronic device102. Signing may include generating a digital signature for verifying the integrity of the voucher data item. For example, theelectronic device102 may sign the voucher data item with its private key such that the contents of the voucher data item may be verified with a corresponding public key of theelectronic device102. Signing may also or instead include securing the voucher data item (e.g., encrypting) with the key.Block402 is discussed in further detail below with regard toFIG.5.
Atoperation404, the voucher data item may be sent from theelectronic device102 to theelectronic device106. The voucher data item may be sent to theelectronic device106 directly or indirectly. For example, the voucher data item may be transmitted to theelectronic device106 directly via Bluetooth. As another example, the voucher data item may be relayed to theelectronic device106 through theserver108, which may perform operations on the voucher data item (e.g., security and/or integrity checks).Operation404 is discussed in further detail with regard toFIG.5.
Atoperation406, the voucher data item may be provided to one or more participants in a group communication session (e.g., a group communication session initiated by the electronic device106) to verify that theelectronic device106 is vouched for by theelectronic device102. The voucher data item may be sent to the electronic device104 (or any other device participating in the group communication session) device directly or indirectly. For example, the voucher data item may be transmitted to theelectronic device104 directly via Bluetooth or indirectly through theserver108, theelectronic device102, and/or the like.
In one or more implementations, theelectronic device104 may retrieve or access a database or device to receive the voucher data item. For example, the voucher data item may be stored in theserver108 and can be downloaded by theelectronic device104 via the Internet. Other examples include, accessing a removable storage device (e.g., a USB drive), a network-attached storage device (e.g., over a wired connection), and/or any other method of receiving data.Operation406 is discussed in further detail with regard toFIGS.5 and6.
Atoperation408, the verifying device (e.g., the electronic device104) may retrieve a key associated with the device that generated the voucher (e.g., the electronic device102). The voucher data item may be signed with a key associated with the device that generated the voucher data item (e.g., the electronic device102). For example, the voucher data item may include a signature generated by theelectronic device102 with its private key such that the contents of the voucher data item may be verified with a corresponding public key of theelectronic device102. Accordingly, the key to be retrieved may be a public key associated with theelectronic device102.
To retrieve the key associated with the device that generated the voucher data item, the device performing the verification of the voucher data item (e.g., the electronic device104) may query a device management server for the key. The device management server may be a server (e.g., server108) that stores information related to user accounts and associated device identifiers and public keys.Operation408 is discussed in further detail with regard toFIG.6.
Atoperation410, theserver108 may send the key associated with theelectronic device102 to theelectronic device104. The key may be sent to theelectronic device102 directly or indirectly. For example, the key may be sent directly to theelectronic device102 via a wired or wireless connection. As another example,server108 may instruct another device to send the key to theelectronic device102.
Additionally or alternatively, the device performing the verification of the voucher data item (e.g., the electronic device104) may receive the key from the device that generated the voucher data item (e.g., the electronic device102). For example, the device performing the verification of the voucher data item (e.g., the electronic device104) may request and receive the key from the device that generated the voucher data item (e.g., the electronic device102). As another example, the devices participating in the group communication session may exchange the relevant keys for generating and/or verifying vouchers when the respective devices begin participating in the group communication session.Operation410 is discussed in further detail with regard toFIG.6.
Atoperation412, the verifying device (e.g., the electronic device104) may retrieve participant information associated with the participation of the device that generated the voucher (e.g., electronic device102). Theelectronic device104 retrieves the participant information to verify the accuracy of the participant information included in the voucher data item received inoperation406. In some embodiments, the participant information is information associated with the participation of the device that generated the voucher data item (e.g., the electronic device102). The participant information may be obtained by the device performing the verification (e.g., the electronic device104) in any suitable manner. In some implementations, the device performing the verification obtains the participant information through its participation in the group communication session. For example, if the group communication session takes place on a messaging application, the participant information may be sent as a message on the messaging application or as a group communication session control message that facilitates the group communication session.Operation412 is discussed in further detail with regard toFIG.6.
Atoperation414, the device that generated the voucher (e.g., the electronic device102) may send its participant information to the verifying device (e.g., electronic device104) for verifying the voucher data item. The participant information may be sent to theelectronic device104 directly or indirectly. In some implementations, the device that generated the voucher (e.g., the electronic device102) sends the participant information directly to theelectronic device104 via the group communication session. In some embodiments, theelectronic device102 generates a group communication session control message to send to a group communication session server (e.g., the server108) for forwarding to the participants of the group communication session (e.g., electronic device104).
Additionally or alternatively, the device performing the verification of the voucher data item (e.g., the electronic device104) may receive the participant information from one or more other devices participating in the group communication session. For example, the devices participating in the group communication session may exchange their respective participant information for the group communication session when the respective devices begin participating in the group communication session.Operation414 is discussed in further detail with regard toFIG.6.
Atblock416, the voucher data item is verified. Theelectronic device104 may compare the participant information included in the voucher data item from theelectronic device106 to the participant information received from a source other than the voucher data to verify that theelectronic device102 has vouched for theelectronic device106.
In one or more implementations, theelectronic device104 may further determine whether the voucher data item is expired. The voucher data item may include an expiration time to determine whether the voucher data item is expired. For example, the voucher data item may include a time, after the voucher data item was created, that the voucher data item is no longer valid. If it is determined that the voucher data item is expired, theelectronic device106 may not be permitted to join the group communication session.Block416 is discussed in further detail with regard toFIG.6.
In some variations, theelectronic device104 may automatically include theelectronic device106 upon determining that it has been properly vouched for.
FIG.5 depicts a flow diagram of anexample process500 for creating a voucher by a first device (e.g., electronic device102) that is participating in a group communication session, in accordance with one or more implementations. For explanatory purposes, theprocess500 is primarily described herein with reference to theelectronic device102 ofFIGS.1 and2 as well as theelectronic device104 andelectronic device106 ofFIG.1. However, theprocess500 is not limited to theelectronic device102,electronic device104, and/orelectronic device106, and one or more blocks (also referred to as operations) of theprocess500 may be performed by one or more other components of theelectronic device102, and/or by other suitable devices. Further, for explanatory purposes, the blocks of theprocess500 are described herein as occurring sequentially or linearly. However, multiple blocks of theprocess500 may occur in parallel. In addition, the blocks of theprocess500 need not be performed in the order shown and/or one or more blocks of theprocess500 need not be performed and/or can be replaced by other operations.
Atblock502, a voucher data item is received. The voucher data item may be received by a first device (e.g., the electronic device106) from a second device (e.g., the electronic device102). The voucher data item may be generated by the second device and include participant information associated with the second device. The participant information associated with the second device in the group communication session may include one or more group communication session participant identifiers. In some embodiments, the voucher data item includes a session-specific participant identifier and a stream identifier. In some implementations, the session-specific participant identifier and the stream identifier are both associated with a communication session and the second device. Also included in the voucher data item may be an expiration time to determine whether the voucher data item is expired. For example, the voucher data item may include a time that the voucher data item was created as well as a time-to-live value that represents a period of time from creation that the voucher data item should exist before being discarded.
The voucher data item may be signed with a key associated with the second device. For example, the second device may sign the voucher data item (e.g., by generating a signature) with its private key such that the contents of the voucher data item may be verified with a corresponding public key of the second device.
The voucher data item may be sent to the first device directly or indirectly. For example, the voucher data item may be transmitted to the new device directly via Bluetooth. As another example, the voucher data item may be relayed to the first device through an intermediary server (e.g., server108) that can perform operations on the voucher data item (e.g., security and/or integrity checks). The voucher data item may also or instead be accessed by the first device from a repository, a removable storage device, or any other device capable of storing voucher data items.
Atblock504, the first device may provide an invitation to the third device (and/or other devices) to join a group communication session. The group communication session may include the first device that has been vouched for by the second device. The invitation one or more identifiers identifying the first device, the second device, and/or the group communication session to facilitate the third device joining the group communication session.
To provide the invitation, the first device may generate a group communication session control message. The first device may send the group communication session control message to a group communication session service that is configured to forward the group communication session control message to the second device and/or the third device. The group communication session service may be operated by a server (e.g., server108) that coordinates the activity of the group communication session between the second and third devices. In this way, the invitation may be transmitted to the third device indirectly. For example, the communication session control message may be sent via a push message on a wide area network.
Atblock506, the voucher data item may be provided to at least the third device to verify that the first device is vouched for by the second device for participation in the group communication session. The voucher data item may be sent to the third device (or any other device participating in the group communication session) device directly or indirectly. For example, the voucher data item may be transmitted to the third device directly via Bluetooth or indirectly through an intermediary server (e.g., server108) that can perform operations on the voucher data item (e.g., security and/or integrity checks).
To provide the voucher data item to at least the third device, the first device may generate a group communication session control message. The first device may send the group communication session control message to a group communication session service that is configured to forward the group communication session control message to the second device and/or the third device. The group communication session service may be operated by a server (e.g., server108) that coordinates the activity of the group communication session between the second and third devices. In this way, the voucher data item may be transmitted to the third device indirectly. For example, the communication session control message may be sent via a push message on a wide area network. In some implementations, the group communication session control message generated including the voucher data item may also include the invitation to the group communication session discussed with respect to block504.
FIG.6 depicts a flow diagram of anexample process600 for validating a voucher by a first device that is participating in a group communication session, in accordance with one or more implementations. For explanatory purposes, theprocess600 is primarily described herein with reference to theelectronic device102 ofFIGS.1 and2 as well as theelectronic device104 andelectronic device106 ofFIG.1. However, theprocess600 is not limited to theelectronic device102,electronic device104, and/orelectronic device106, and one or more blocks (also referred to as steps or operations) of theprocess600 may be performed by one or more other components of theelectronic device102, and/or by other suitable devices. Further, for explanatory purposes, the blocks of the process60 are described herein as occurring sequentially or linearly. However, multiple blocks of theprocess600 may occur in parallel. In addition, the blocks of theprocess600 need not be performed in the order shown and/or one or more blocks of theprocess600 need not be performed and/or can be replaced by other operations.
Atblock602, a voucher data item may be received. The voucher data item may include participant information, as described herein. Also included in the voucher data item may be an expiration time to determine whether the voucher data item is expired. For example, the voucher data item may include a time that the voucher data item was created as well as a time-to-live value that represents a period of time from creation that the voucher data item should exist before being discarded.
An invitation to join a group communication session may also or instead be received. The group communication session may include the second device that has been vouched for by the third device. The invitation one or more identifiers identifying the second device, the third device, and/or the group communication session to facilitate the first device joining the group communication session.
The voucher data item and/or the invitation may be sent to the first device directly or indirectly. For example, the voucher data item may be transmitted to the new device directly via Bluetooth. As another example, the voucher data item may be relayed to the first device through an intermediary server (e.g., server108) that can perform operations on the voucher data item (e.g., security and/or integrity checks). In one or more implementations, the voucher and/or the invitation may be included in a group communication session control message, where a group communication session control message includes any message sent to and/or from a device for facilitation of the group communication session (e.g., by the server108).
Atblock604, a key associated with the third device may be retrieved. The voucher data item may be signed with a key associated with the third device. For example, the voucher data item may include a signature generated by the third device with its private key such that the contents of the voucher data item may be verified with a corresponding public key of the third device. Accordingly, the key to be retrieved may be a public key associated with the third device. To retrieve the key associated with the third device, the first device may query a device management server for the public key associated with the third device. The device management server may be a server (e.g., server108) that stores information including user accounts and associated device identifiers and public keys.
Atblock606, a second participant information may be obtained, as described herein. The second participant information may be the information that is used to verify the accuracy of the first participant information.
Atblock608, the voucher data item is verified based on a comparison of the first and second participant information to verify that the third device has vouched for the second device to join the group communication session.
In one or more implementations, the first participant information may be taken directly from the voucher data item. In such implementations, the voucher data item may include a signature generated by the third device. To verify the voucher data item, the first device verifies that the first participant information and the second participant information match. Alternatively, the first device may verify that the first participant information and the second participant information have predetermined categories of information from the participant information that match. In addition, the first device may verify the digital signature generated by the third device based on the key retrieved atblock604.
Additionally or alternatively, the first device may derive the first participant information from the voucher data item with the key associated with the third device. For example, the first participant information or cryptographic representations thereof (e.g., a hash) may be encrypted with the private key of the third device, and thus the first participant information may be derived by decrypting the first participant information from the voucher data item with the public key of the third device. The first device may then obtain the second participant information or generate cryptographic representations thereof (e.g., a hash), compare the sets of information (e.g., the first and second participant information in their original or cryptographic form), and consider the signature valid if the sets of information are matching.
In one or more implementations, theprocess600 may further include determining whether the voucher data item is expired. The voucher data item may include an expiration time to determine whether the voucher data item is expired. For example, the voucher data item may include a time, after the voucher data item was created, that the voucher data item is no longer valid. If it is determined that the voucher data item is expired, the first device may reject the second device (or refuse to join the session if the second device is initiating the communication session). For example, the first device may determine that the voucher data item is valid and that the second device had at one point been vouched for by the third device; however, the first device may refuse to join the group communication session until the second device presents an unexpired voucher data item or otherwise is permitted to initiate the group communication session (e.g., becomes registered to the same user account as a device participating in the group communication session).
In one or more implementations, theprocess600 may further include receiving a group communication session control message that includes an invitation to join a group communication session initiated by the second device. The group communications session control message may be the same message that delivered the voucher data item. The first device may join the second device in the group communication session as the second device is being vouched for and/or in response to the voucher data item not being verified (e.g., the third device has not performed verification, or the verification has failed). To join the group communication session, the group communication session control message may further include a join message requesting the incorporation of the second device into the group communication session (e.g., in addition to the voucher data item). The join message is any message that incorporates the second device into the group communication session such that the second device may send and/or receive data as a participant in the group communication session. The sending of the join message is not limited to the group communication session control message.
Atblock610, after the voucher data item is verified, the first device may join the group communication session with the second device that is vouched for by the third device.
As described above, one aspect of the present technology is the gathering and use of data available from specific and legitimate sources for cryptographic participant vouching. The present disclosure contemplates that in some instances, this gathered data may include personal information data that uniquely identifies or can be used to identify a specific person. Such personal information data can include demographic data, location-based data, online identifiers, telephone numbers, email addresses, home addresses, images, videos, audio data, data or records relating to a user's health or level of fitness (e.g., vital signs measurements, medication information, exercise information), date of birth, or any other personal information.
The present disclosure recognizes that the use of such personal information data, in the present technology, can be used to the benefit of users. For example, the personal information data can be used for cryptographic participant vouching. Accordingly, the use of such personal information data may facilitate transactions (e.g., online transactions). Further, other uses for personal information data that benefit the user are also contemplated by the present disclosure. For instance, health and fitness data may be used, in accordance with the user's preferences to provide insights into their general wellness or may be used as positive feedback to individuals using technology to pursue wellness goals.
The present disclosure contemplates that those entities responsible for the collection, analysis, disclosure, transfer, storage, or other use of such personal information data will comply with well-established privacy policies and/or privacy practices. In particular, such entities would be expected to implement and consistently apply privacy practices that are generally recognized as meeting or exceeding industry or governmental requirements for maintaining the privacy of users. Such information regarding the use of personal data should be prominently and easily accessible by users and should be updated as the collection and/or use of data changes. Personal information from users should be collected for legitimate uses only. Further, such collection/sharing should occur only after receiving the consent of the users or other legitimate basis specified in applicable law. Additionally, such entities should consider taking any needed steps for safeguarding and securing access to such personal information data and ensuring that others with access to the personal information data adhere to their privacy policies and procedures. Further, such entities can subject themselves to evaluation by third parties to certify their adherence to widely accepted privacy policies and practices. In addition, policies and practices should be adapted for the particular types of personal information data being collected and/or accessed and adapted to applicable laws and standards, including jurisdiction-specific considerations which may serve to impose a higher standard. For instance, in the US, collection of or access to certain health data may be governed by federal and/or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA); whereas health data in other countries may be subject to other regulations and policies and should be handled accordingly.
Despite the foregoing, the present disclosure also contemplates implementations in which users selectively block the use of, or access to, personal information data. That is, the present disclosure contemplates that hardware and/or software elements can be provided to prevent or block access to such personal information data. For example, in the case of the cryptographic participant vouching, the present technology can be configured to allow users to select to “opt-in” or “opt-out” of participation in the collection of personal information data during registration for services or anytime thereafter. In addition to providing “opt-in” and “opt-out” options, the present disclosure contemplates providing notifications relating to the access or use of personal information. For instance, a user may be notified upon downloading an app that their personal information data will be accessed and then reminded again just before personal information data is accessed by the app.
Moreover, it is the intent of the present disclosure that personal information data should be managed and handled in a way to minimize risks of unintentional or unauthorized access or use. Risk can be minimized by limiting the collection of data and deleting data once it is no longer needed. In addition, and when applicable, including in certain health-related applications, data de-identification can be used to protect a user's privacy. De-identification may be facilitated, when appropriate, by removing identifiers, controlling the amount or specificity of data stored (e.g., collecting location data at city level rather than at an address level), controlling how data is stored (e.g., aggregating data across users), and/or other methods such as differential privacy.
Therefore, although the present disclosure broadly covers use of personal information data to implement one or more various disclosed implementations, the present disclosure also contemplates that the various implementations can also be implemented without the need for accessing such personal information data. That is, the various implementations of the present technology are not rendered inoperable due to the lack of all or a portion of such personal information data.
FIG.7 depicts an exampleelectronic system700 with which aspects of the present disclosure may be implemented. Theelectronic system700 can be, and/or can be a part of, any electronic device for generating the features and processes described in reference toFIGS.1-6, including but not limited to a laptop computer, tablet computer, smartphone, and wearable device (e.g., smartwatch, fitness band). Theelectronic system700 may include various types of computer-readable media and interfaces for various other types of computer-readable media. Theelectronic system700 includes one or more processing unit(s)712, apersistent storage device702, a system memory704 (and/or buffer), aninput device interface714, anoutput device interface706, abus708, aROM710, one or more processing unit(s)712, one or more network interface(s)716, and/or subsets and variations thereof.
Thebus708 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of theelectronic system700. In one or more implementations, thebus708 communicatively connects the one or more processing unit(s)712 with theROM710, thesystem memory704, and thepersistent storage device702. From these various memory units, the one or more processing unit(s)712 retrieves instructions to execute and data to process in order to execute the processes of the subject disclosure. The one or more processing unit(s)712 can be a single processor or a multi-core processor in different implementations.
TheROM710 stores static data and instructions that are needed by the one or more processing unit(s)712 and other modules of theelectronic system700. Thepersistent storage device702, on the other hand, may be a read-and-write memory device. Thepersistent storage device702 may be a non-volatile memory unit that stores instructions and data even when theelectronic system700 is off. In one or more implementations, a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) may be used as thepersistent storage device702.
In one or more implementations, a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) may be used as thepersistent storage device702. Like thepersistent storage device702, thesystem memory704 may be a read-and-write memory device. However, unlike thepersistent storage device702, thesystem memory704 may be a volatile read-and-write memory, such as RAM. Thesystem memory704 may store any of the instructions and data that one or more processing unit(s)712 may need at runtime. In one or more implementations, the processes of the subject disclosure are stored in thesystem memory704, thepersistent storage device702, and/or theROM710. From these various memory units, the one or more processing unit(s)712 retrieves instructions to execute and data to process in order to execute the processes of one or more implementations.
Thebus708 also connects to the input device interfaces714 and output device interfaces706. Theinput device interface714 enables a user to communicate information and select commands to theelectronic system700. Input devices that may be used with theinput device interface714 may include, for example, alphanumeric keyboards, touch screens, and pointing devices (also called “cursor control devices”). Theoutput device interface706 may enable, for example, the display of images generated byelectronic system700. Output devices that may be used with theoutput device interface706 may include, for example, printers and display devices, such as a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, a flexible display, a flat panel display, a solid state display, a projector, or any other device for outputting information.
One or more implementations may include devices that function as both input and output devices, such as a touchscreen. In these implementations, feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
Finally, as shown inFIG.7, thebus708 also couples theelectronic system700 to one or more networks and/or to one or more network nodes through the one or more network interface(s)716. In this manner, theelectronic system700 can be a part of a network of computers (such as a LAN, a wide area network (“WAN”), an Intranet, or a network of networks, such as the Internet). Any or all components of theelectronic system700 can be used in conjunction with the subject disclosure.
Implementations within the scope of the present disclosure can be partially or entirely realized using a tangible computer-readable storage medium (or multiple tangible computer-readable storage media of one or more types) encoding one or more instructions. The tangible computer-readable storage medium also can be non-transitory in nature.
The computer-readable storage medium can be any storage medium that can be read, written, or otherwise accessed by a general purpose or special purpose computing device, including any processing electronics and/or processing circuitry capable of executing instructions. For example, without limitation, the computer-readable medium can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. The computer-readable medium also can include any non-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM, NVRAM, flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, racetrack memory, FJG, and Millipede memory.
Further, the computer-readable storage medium can include any non-semiconductor memory, such as optical disk storage, magnetic disk storage, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions. In one or more implementations, the tangible computer-readable storage medium can be directly coupled to a computing device, while in other implementations, the tangible computer-readable storage medium can be indirectly coupled to a computing device, e.g., via one or more wired connections, one or more wireless connections, or any combination thereof.
Instructions can be directly executable or can be used to develop executable instructions. For example, instructions can be realized as executable or non-executable machine code or as instructions in a high-level language that can be compiled to produce executable or non-executable machine code. Further, instructions also can be realized as or can include data. Computer-executable instructions also can be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As recognized by those of skill in the art, details including, but not limited to, the number, structure, sequence, and organization of instructions can vary significantly without varying the underlying logic, function, processing, and output.
While the above discussion primarily refers to microprocessors or multi-core processors that execute software, one or more implementations are performed by one or more integrated circuits, such as ASICs or FPGAs. In one or more implementations, such integrated circuits execute instructions that are stored on the circuit itself.
Those of skill in the art would appreciate that the various illustrative blocks, modules, elements, components, methods, and algorithms described herein may be implemented as electronic hardware, computer software, or combinations of both. To illustrate this interchangeability of hardware and software, various illustrative blocks, modules, elements, components, methods, and algorithms have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application. Various components and blocks may be arranged differently (e.g., arranged in a different order, or partitioned in a different way), all without departing from the scope of the subject technology.
It is understood that any specific order or hierarchy of blocks in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of blocks in the processes may be rearranged, or that all illustrated blocks be performed. Any of the blocks may be performed simultaneously. In one or more implementations, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
As used in this specification and any claims of this application, the terms “base station,” “receiver,” “computer,” “server,” “processor,” and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms “display” or “displaying” means displaying on an electronic device.
As used herein, the phrase “at least one of” preceding a series of items, with the term “and” or “or” to separate any of the items, modifies the list as a whole, rather than each member of the list (i.e., each item). The phrase “at least one of” does not require selection of at least one of each item listed; rather, the phrase allows a meaning that includes at least one of any one of the items, and/or at least one of any combination of the items, and/or at least one of each of the items. By way of example, the phrases “at least one of A, B, and C” or “at least one of A, B, or C” each refer to only A, only B, or only C; any combination of A, B, and C; and/or at least one of each of A, B, and C.
The predicate words “configured to,” “operable to,” and “programmed to” do not imply any particular tangible or intangible modification of a subject, but, rather, are intended to be used interchangeably. In one or more implementations, a processor configured to monitor and control an operation or a component may also mean the processor being programmed to monitor and control the operation or the processor being operable to monitor and control the operation. Likewise, a processor configured to execute code can be construed as a processor programmed to execute code or operable to execute code.
Phrases such as an aspect, the aspect, another aspect, some aspects, one or more aspects, an implementation, the implementation, another implementation, one or more implementations, one or more implementations, an embodiment, the embodiment, another embodiment, one or more implementations, one or more implementations, a configuration, the configuration, another configuration, some configurations, one or more configurations, the subject technology, the disclosure, the present disclosure, other variations thereof and alike are for convenience and do not imply that a disclosure relating to such phrase(s) is essential to the subject technology or that such disclosure applies to all configurations of the subject technology. A disclosure relating to such phrase(s) may apply to all configurations, or one or more configurations. A disclosure relating to such phrase(s) may provide one or more examples. A phrase such as an aspect or some aspects may refer to one or more aspects and vice versa, and this applies similarly to other foregoing phrases.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any implementation described herein as “exemplary” or as an “example” is not necessarily to be construed as preferred or advantageous over other implementations. Furthermore, to the extent that the term “include,” “have,” or the like is used in the description or the claims, such term is intended to be inclusive in a manner similar to the term “comprise” as “comprise” is interpreted when employed as a transitional word in a claim.
All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. § 112, sixth paragraph, unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for.”
The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein but are to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (e.g., his) include the feminine and neuter gender (e.g., her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the subject disclosure.