User interface for access control-enabled peer-to-peer sharing method, system, and readable storage medium

By providing a user interface and centralized access control mechanism for peer-to-peer sharing systems, the problem of media item access in low-bandwidth environments is solved, enabling effective management and monitoring of media items in peer-to-peer sharing systems and improving the sharing and playback efficiency of user devices.

CN115189879BActive Publication Date: 2026-03-17GOOGLE LLC
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2017-09-21
Publication Date
2026-03-17

AI Technical Summary

Technical Problem

Existing content sharing platforms struggle to effectively manage and monitor access to media items in low-bandwidth or no-internet-connection environments, making it difficult to monitor unauthorized content reproduction and access.

Method used

By providing a user interface for peer-to-peer sharing systems, combined with centralized access control mechanisms, and using encryption keys and media server playability checks, the sharing and access of media items are controlled, including encryption, wrapping keys, and decryption processes, ensuring that only authorized users can play media items.

Benefits of technology

It enhances the ability to share media items in low-bandwidth or no-internet-connection scenarios, reduces network bandwidth requirements, improves the efficiency of managing and monitoring media item access, and reduces network load.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115189879B_ABST
    Figure CN115189879B_ABST
Patent Text Reader

Abstract

The present disclosure relates to methods, systems, and readable storage media for user interfaces for access control enabling peer-to-peer sharing. Implementations disclose user interfaces that support access control mechanisms for peer-to-peer sharing technology. An example method includes providing a user interface including a plurality of media items and a plurality of media availability indicators for display, wherein a portion of the user interface represents that an encrypted version of one of the plurality of media items and an encryption key for the encrypted version are received over a peer-to-peer connection; updating one of the media availability indicators to represent that the encrypted version of the media item and the encryption key are saved; receiving an indication that the encrypted version of the media item is decrypted; and updating the media availability indicator to represent that the media item is available for consumption.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Case Analysis

[0002] This application is a divisional application of Chinese invention patent application 201780053873.0, filed on September 21, 2017. Technical Field

[0003] This disclosure relates to the field of a content sharing platform, and more specifically, to a user interface that supports access control technologies for peer-to-peer sharing systems. Background Technology

[0004] Content sharing platforms, along with their corresponding websites and mobile applications (“apps”), enable user devices to share and play streaming content, such as streaming music and video. Streaming content can require significant bandwidth, and some connections may not be able to provide the bandwidth needed for streaming content. Content sharing platforms allow users to download or stream content offline while using a high-bandwidth connection, and enable users to subsequently play streaming content when their devices are disconnected or using a low-bandwidth connection. Summary of the Invention

[0005] The following is a brief overview of this disclosure to provide a basic understanding of some aspects thereof. This overview is not a comprehensive overview of this disclosure. It is not intended to identify key or essential elements of this disclosure, nor is it intended to depict any scope of a particular implementation of this disclosure or any scope of the claims. Its sole purpose is to present some concepts of this disclosure in a simplified form as a prelude to the more detailed description that follows.

[0006] In one aspect of this disclosure, a method includes providing a user interface for displaying a plurality of media items and a plurality of media availability indicators. A portion of the user interface may indicate that an encrypted version of one of the media items and an encryption key for the encrypted version are being received via a peer-to-peer connection. The method may include updating one of the media availability indicators to indicate that the encrypted version of the media item and the encryption key are stored. The method may also include receiving an indication that the encrypted version of the media item has been decrypted; and updating the media availability indicators to indicate that the media item is available for experience. In another implementation, the media availability indicator may be used to distinguish between three states of the media item: a first state indicating that the media item is not stored on the user's device, a second state indicating that the media item is stored in an encrypted version, and a third state indicating that the media item is stored and available for experience.

[0007] In one implementation, the user interface may include graphical controls to initiate the reception of a packaged version of an encrypted key for a media item via a peer-to-peer connection. The user interface may indicate the peer connection used to receive the encrypted version of the media item and may indicate that an internet connection is used to decrypt the media item. In a further implementation, the user interface may include a peer connection indicator that identifies both the user device providing the encrypted version of the media item and the user device receiving the encrypted version of the media item.

[0008] In another implementation, each of a plurality of media items is represented within the user interface by media entries comprising a first graphic portion and a second graphic portion. The first graphic portion may include an image of the corresponding media item, and the second graphic portion may include text information of the corresponding media item. In a further implementation, the method may include: receiving user input corresponding to a specific media item, and initiating the presentation of the specific media item. The user interface may include a portion for presenting the specific media item on the user device.

[0009] In other aspects of this disclosure, a system and / or a system and / or a non-transitory machine-readable storage medium are disclosed for storing instructions that cause a processing device to perform the operations described above. Attached Figure Description

[0010] In the accompanying drawings, this disclosure is illustrated by way of example rather than limitation.

[0011] Figure 1 This is a block diagram illustrating an exemplary system architecture according to an implementation of the present disclosure.

[0012] Figure 2 This is a block diagram illustrating the components and modules of an example user device according to an implementation of this disclosure.

[0013] Figure 3 This is a flowchart illustrating an example method of a media server implemented according to this disclosure.

[0014] Figure 4 This is a flowchart illustrating an example method for providing shared media items to a user device according to an implementation of this disclosure.

[0015] Figure 5 This is a flowchart illustrating an example method of a user device receiving a shared media item according to an implementation of this disclosure.

[0016] Figure 6A This is an example graphical interface, based on an implementation of this disclosure, for enabling users to interact with access control technologies used for peer-to-peer sharing.

[0017] Figure 6B This is another example graphical interface for enabling users to interact with access control technologies for peer-to-peer sharing, based on an implementation of this disclosure.

[0018] Figures 7 to 9 This is an example graphical interface for a user device that provides shared media items, according to an implementation of this disclosure.

[0019] Figures 10 to 14 This is an exemplary graphical interface for a user device receiving a shared media item, according to an implementation of this disclosure.

[0020] Figure 15 This is a flowchart illustrating an example method for providing a graphical interface according to an implementation of the present disclosure, which enables a user to interact with access control technologies for peer-to-peer sharing.

[0021] Figure 16 It is a block diagram illustrating one implementation of a computer system according to the present disclosure. Detailed Implementation

[0022] This disclosure relates to user interfaces for peer-to-peer content sharing technologies. The user interface enhances the user's ability to share and receive media items using peer-to-peer content sharing technologies. Traditional content sharing technologies may include centralized sharing systems that require high-bandwidth network connections for streaming online content. In many emerging markets, computing networks have limited capabilities and are often low-bandwidth, unreliable, or unavailable. Peer-to-peer networks can allow content exchange when network infrastructure or internet access is limited. A problem with peer-to-peer networks is that they often provide unrestricted reproduction and access to the exchanged content, which may be unauthorized by the content creator and / or provider and may be difficult to monitor or enforce.

[0023] This disclosure addresses the aforementioned and other shortcomings by providing a user interface for peer-to-peer sharing systems using a centralized access control mechanism. The centralized access control mechanism can manage user devices' access to media items stored on the user devices. The centralized access control mechanism can support one or more Digital Rights Management (DRM) schemes to control the use, modification, and distribution of copyrighted media items. In one example, the content sharing technology may involve a media server and multiple user devices of different users. The media server can provide media items to a first user's user device (“first user device”) and enable the first user device to share media items with a second user's user device (“second user device”). The user devices can be mobile devices such as telephones, tablets, or laptops, and can be capable of storing media items locally.

[0024] In one example, a first user device can stream media items directly from a media server (e.g., via the internet) and can store the streaming media locally. The first user device can encrypt the media item using a locally generated encryption key, and can wrap the encryption key with a public key from the media server. Then (e.g., via a peer-to-peer connection when the first and / or second user devices have limited or no internet access), the first user device can transmit the encrypted media item and the wrapped encryption key to the second user device. The second user device can access the encrypted media item but can restrict playback until it contacts the media server. The second user device can contact the media server using a playability request, which can include the wrapped encryption key and identification information of the media item. The media server can then perform a playability check to ensure that the second user device is authorized to view the media item. The media server can then respond with a playability response including the unwrapped encryption key, which allows the second user device to decrypt and play the media item.

[0025] Peer-to-peer content sharing technologies may include one or more user interfaces that enable users to control which media items are shared and indicate the status of these shared media items. These statuses may correspond to the availability of the media items. For example, a first status may correspond to a media item being received or transmitted to one of the user's devices. A second status may indicate that an encrypted version of the media item and a corresponding package encryption key are stored on the user's device. A third status may indicate that the media item has been decrypted and is ready to be presented on the user's device. The user interface can be updated during use to modify the media item indicators so that they represent the current status of the media item. In other examples, the user interface may also indicate the peer connection used to receive the encrypted version of the media item and indicate that an internet connection is used to decrypt the media item.

[0026] The technology disclosed here is advantageous because it enhances the ability of users to share media items using peer-to-peer sharing technologies with limited or no internet access, and also provides a central mechanism to manage and monitor access to shared media items. This technology can reduce the amount of bandwidth required to share media items, which can be beneficial to media servers, intermediate network infrastructure (e.g., Internet Service Providers (ISPs)), and user equipment, and may be particularly beneficial in emerging markets. Previously, each user device may have already accessed media items from a media server, and now many user devices are able to access media items from peers and only contact the media server to receive authorization to watch the media items. The amount of network traffic required to check authorization may be orders of magnitude smaller than the amount of network traffic or bandwidth required to stream or download media items from a media server. This technology is also advantageous because it enhances the ability of media servers to determine the viewing status of media items shared via peer-to-peer connections and to provide supplementary media items (e.g., related video).

[0027] For the sake of simplicity and brevity, the implementation of this disclosure often references videos. However, the teachings of this disclosure are generally applied to media items and can be applied to various types of content or media items, including, for example, video, audio, text, images, program instructions, etc.

[0028] Figure 1 The diagram illustrates an example system architecture 100 according to one implementation of this disclosure. System architecture 100 includes a media server 110, user devices 120A-Z, a peer-to-peer connection 130, a peer-to-peer network 140, a network 150, and a data storage 160.

[0029] Media server 110 may be one or more computing devices (such as rack servers, router computers, server computers, personal computers, mainframe computers, laptop computers, tablet computers, desktop computers, etc.), data storage (e.g., hard disks, storage devices, databases), networks, software components, and / or hardware components that can be used to provide users with access to and / or serve media items to users. Media server 110 may be part of a content sharing platform that allows users to consume, upload, share, search, approve (“likes”), dislike, and / or comment on media items. The content sharing platform may also include websites (e.g., web pages) or application backend software that can be used to provide users with access to media items.

[0030] Media server 110 can host content such as media item 112 and supplementary media item 114. Media item 112 and supplementary media item 114 can be digital content selected by the user, digital content available to the user, digital content uploaded by the user, digital content selected by the content provider, digital content selected by the broadcaster, etc. Examples of media item 112 and supplementary media item 114 include, but are not limited to, digital video, digital movies, digital photos, digital music, website content, social media updates, ebooks, e-magazines, digital newspapers, digital audiobooks, e-journals, web blogs, Real Simple Union (RSS) feeds, e-comic books, software applications, etc.

[0031] Media item 112 and supplementary media item 114 can be consumed via the Internet and / or via mobile device applications. For brevity and simplicity, online video (hereinafter also referred to as video) is used throughout this document as an example of media item 112. As used herein, “media,” “media item,” “online media item,” “digital media,” “digital media item,” “content,” and “content item” can include electronic files that can be executed or loaded using software, firmware, or hardware configured to render digital media items to an entity. In one implementation, the content sharing platform may use data storage 160 to store media item 112. In one example, media item 112 may be a user-generated video identified by a user of user device 120A, and supplementary media item 112 may be an advertisement selected by media server 110 to be presented before, during, or after media item 112 on one or more of user devices 120A-Z.

[0032] User equipment 120A-Z may each include a computing device, such as a personal computer (PC), laptop computer, mobile phone, smartphone, tablet computer, netbook computer, network-connected television, etc. In some implementations, user equipment 120A-Z may also be referred to as a "client device". User equipment 120A-Z may be able to receive media item 112 from media server 110 via network 150, and may share media item 112 with other user equipment via peer-to-peer connection 130, peer-to-peer network 140, network 150, or a combination thereof.

[0033] The peering connection 130 can be any communication channel between one or more user equipments 120A-Z. The peering connection 130 can be based on any wireless or wired communication technology and can directly or indirectly (e.g., involving an intermediate user equipment) connect a first user equipment to a second user equipment. Wireless communication technologies may include... Infrared, ultrasonic, or other technologies can be used. Wired communication may include Universal Serial Bus (USB), Ethernet, RS-232, or other wired connections. In other examples, peer-to-peer connection 130 may involve transferring removable storage media between user equipment to transfer media items and other data. The removable storage media can be in any form, including Secure Digital (SD) cards, Multimedia Cards (MMC), flash drives, other data storage devices, or combinations thereof. A peer-to-peer connection may be a separate connection between two devices or may include multiple connections as part of a peer-to-peer network 140.

[0034] Peer-to-peer network 140 may be a computing network that provides one or more communication channels between user equipments 120A-Z. In one example, peer-to-peer network 140 may be a peer-to-peer network that does not rely on pre-existing network infrastructure (e.g., access points, switches, routers), and user equipments AZ may replace the network infrastructure to route communication between user equipments. Peer-to-peer network 140 may be a self-configuring wireless network, enabling user equipments 120A-Z to contribute to peer-to-peer network 140 and dynamically connect to and disconnect from peer-to-peer network 140 (e.g., an ad hoc wireless network). In another example, peer-to-peer network 140 may be a computing network that includes network infrastructure that enables user equipments to communicate with other user equipments. In the latter example, peer-to-peer network 140 may or may not have access to a public network (e.g., the Internet). For example, vehicles (e.g., buses, trains) or locations (e.g., classrooms, libraries, cafes) may provide access points or user equipment that can be used as access points, enabling user equipments to communicate with each other without providing Internet access. Alternatively, peer-to-peer networks can provide access to larger networks such as network 150 (e.g., the Internet).

[0035] Network 150 may be a public network that provides access to media server 110 and other publicly available computing devices to one or more of user equipment 120A-Z. Network 150 may include one or more wide area networks (WANs), local area networks (LANs), wired networks (e.g., Ethernet), wireless networks (e.g., 802.11 networks or Wi-Fi networks), cellular networks (e.g., LTE networks), routers, hubs, switches, server computers, and / or combinations thereof.

[0036] Each of the user devices 120A-Z may include a media viewer that allows a user to view media items 112 shared via peer-to-peer network 140 and / or network 150. The media viewer may render images, videos, audio, web pages, documents, etc. In one example, the media viewer may be a web browser capable of accessing, retrieving, rendering, and / or navigating content served via a web server (e.g., web pages such as Hypertext Markup Language (HTML) pages, digital media items, etc.). The media viewer may render, display, and / or present content (e.g., web pages, media viewer) to the user. The media viewer may also display embedded media players (e.g., embedded media players) embedded in web pages (e.g., web pages that provide information about products sold by online merchants). (Player or HTML5 player). In another example, a media viewer can be a standalone application (e.g., a mobile app or application) that allows users to view digital media items (e.g., digital videos, digital images, ebooks, etc.).

[0037] According to aspects of this disclosure, a media viewer can be a content-sharing platform application for users to share, record, edit, and / or upload content to a content-sharing platform. The media viewer can be provided to user devices 120A-Z by a media server 110 or the content-sharing platform. For example, a media viewer can be an embedded media player embedded in a webpage provided by the content-sharing platform. In another example, the media viewer can be an application installed and executed on user devices 120A-Z.

[0038] exist Figure 1 In the example shown, each user equipment can be used as a media sharing device (e.g., user equipment 120A), a media receiving device (e.g., user equipment 120B), or a combination of both. Each user equipment may include a data storage 122, a sharing interface component 124, a provider component 126, a receiver component 128, and the data storage 122.

[0039] Data storage 122 may be a memory capable of storing data (e.g., random access memory), a drive (e.g., a hard disk drive, flash drive), a database system, or another type of component or device. Data storage 122 may include multiple storage components (e.g., multiple drives or multiple databases) that may span multiple computing devices (e.g., multiple server computers). Data storage 122 may include a media cache 123 that stores copies of media items received from media server 110. In one example, each media item 112 may be a file downloaded from media server 110 and stored locally in media cache 123. In another example, each media item 112 may be streamed from media server 110 and may exist as a temporary copy in the user device's memory until it is taken offline. Offline means that the user device stores a temporary copy of the streaming media in the user device's persistent data storage. This allows the user device to access the streaming media item at a later point in time (e.g., after a reboot) without needing an internet connection. In one example, the media item may be streamed to the user device itself when it is presented. In one example, a user device can take a streaming item offline by copying one or more streams of the media item (e.g., video stream, audio stream) to persistent data storage.

[0040] The sharing interface component 124 can provide a user interface that allows a user to select one or more user devices associated with a shared media item. The sharing interface component 124 can also provide a user interface that allows a user to select one or more media items from a media cache to be shared. The media items may be available in the media cache of a local user device or a remote user device. The user interface allows the user to identify the status of the media items, whether they are stored on the local user device, and whether they need to be decrypted before they can be consumed. (See reference...) Figures 6A-14 The example user interface will be discussed in more detail.

[0041] Provider component 126 may include functionality that enables a user device to share a media item with one or more other user devices. Provider component 126 may generate an encryption key and encrypt the media item to reduce unauthorized access to the media item. Provider component 126 may also wrap the encryption key and may share the wrapped encryption key and the encrypted media item with one or more other user devices (e.g., receiver devices).

[0042] Receiver component 128 may include functionality enabling a user device to receive and process encrypted media items. Receiver component 128 may process incoming media items by collecting information from the media item, the providing device, the receiving device, or a combination thereof. This information may be sent to a media server, enabling the media server to determine whether the user device is authorized to play the media item. In one example, the receiving user device may send a packaged encryption key to the media server in a playability request 152, and the media server may unpack the encryption key and send it back to the user device in a playability response 154. The user device can then use the unpacked encryption key to decrypt the media item.

[0043] Typically, functions described in one implementation as being performed by the content sharing platform can also be performed on client devices 120A to 120Z in other implementations, if appropriate. Furthermore, functions attributable to specific components can be performed by different or multiple components operating together. The content sharing platform and media server 110 can also be accessed as services provided to other systems or devices through appropriate application programming interfaces, and are therefore not limited to use on websites.

[0044] In implementations of this disclosure, a "user" can refer to a single individual. However, other implementations of this disclosure include an entity controlled by a group of users and / or an automated source. For example, a group of individual users united as a community in a social network can be considered a "user." In another example, an automated consumer can be an automated extraction pipeline of a content-sharing platform, such as a topic channel.

[0045] Although the implementations of this disclosure are discussed in relation to media servers and content sharing platforms, these implementations can generally be applied to any type of social network that provides connectivity between digital content and users.

[0046] In systems discussed here that collect or utilize personal information about users, users may be given the opportunity to control whether content-sharing platforms collect user information (e.g., information about the user's social networks, social actions or activities, professions, user preferences, or the user's current location), or to control whether and / or how content that may be more relevant to the user is received from content servers. Additionally, some data may be processed in one or more ways before it is stored or used to remove personally identifiable information. For example, a user's identity may be processed so that personally identifiable information cannot be determined for the user, or the user's geographic location may be generalized at the point where location information is obtained (e.g., down to the city, zip code, or state level), making it impossible to determine the user's specific location. Therefore, users can control how information about themselves is collected and used by content-sharing platforms.

[0047] Figure 2 This is a block diagram illustrating user equipment 200. User equipment 200 may be the same as or similar to user equipment 120A-Z. Figure 2 In the example shown, user equipment 200 includes a shared interface component 124, a provider component 126, a receiver component 128, and a data storage 122.

[0048] The sharing interface component 124 can provide a user interface that allows a user of user device 200 to view and select available user devices and media items for sharing. The sharing interface component 124 may include a device selection module 210, a media item availability module 212, and a startup module 214.

[0049] Device selection module 210 can search for and display one or more user devices available for sharing. Device selection module 210 can identify user devices by issuing a broadcast message and waiting for a response. The broadcast message can identify information about user device 200, such as identification information (e.g., device identifier, user identifier), device resources (e.g., processing power, storage capacity, battery level), media item rendering capabilities (e.g., the ability to play a specific media item format), other information, or combinations thereof. User device 200 can then receive a response from one or more other devices. The response may include information about other user devices, such as media cache information (e.g., available media items), identification information (e.g., device identifier, user identifier), device resources (e.g., battery level, network connectivity, processing power, storage capacity), other information, or combinations thereof. In one example, the request and / or response may include anonymous data instead of identification information. Device selection module 210 can display the responding user devices in a graphical interface that can receive user input to select one or more user devices. (See reference...) Figure 8 The example graphical user interface will be discussed in more detail.

[0050] The media item availability module 212 can determine which media items are available for sharing. In some examples, all media items in the media cache of a sharing user device may be available for sharing. In other examples, the user device may identify a subset of media items in the media cache to be shared. This subset may exclude media items, some media items, all media items, or other variations. This subset may be determined by the user device based on user input, device resources, media server input, or a combination thereof. In one example, the user may identify one or more specific media items in the media cache that should be made available for sharing. In another example, the user device may analyze device resources (e.g., battery level, network bandwidth) and determine which media item (if any) should be shared. In yet another example, the media server may provide input identifying one or more media items to be shared. This could be an attempt to distribute the number of user devices with a specific media item without burdening any particular user device, thereby enhancing media item availability and sharing. The media item availability module 212 may display the media items available for sharing in a graphical user interface that may be able to receive user input to select one or more user devices.

[0051] Initiation module 214 can communicate with media item availability module 212 and device selection module 210 to identify specific user equipment and / or media items for sharing. Sharing can involve pushing media items to or pulling media items from a user equipment, or a combination of both. In one example, user equipment 200 can receive user input identifying a remote user equipment and a local media item, and initiation module 214 can initiate pushing the identified media item to the remote user equipment. In another example, user equipment 200 can receive user input identifying a remote user equipment and media items available on the remote user equipment, and initiation module 214 can initiate pulling the identified media item from the remote user equipment. In other examples, a user equipment can pull media items from a first user equipment and then push the media items to a second user equipment.

[0052] The sharing interface component 124 can operate in multiple modes, including one-to-one mode, public mode, and private mode. One-to-one mode can resemble the push and pull features discussed above and can involve a user device receiving user input identifying a specific media item for sharing and the specific device. The media item can then be transferred from one device to another (i.e., one-to-one).

[0053] Public mode can be similar to one-to-one mode because user equipment 200 can receive user input to select a specific media item. However, when public mode is enabled, multiple sharing devices and multiple receiver devices can exist. Some or all sharing devices can broadcast their available media items. User equipment 200 can then select one or more media items without selecting a specific user device. In this example, the user device sharing the selected media item can remain anonymous to user equipment 200. Alternatively, user equipment 200 can participate as a sharing device and broadcast a set of available media items, anonymously transmitting one or more media items when requested by other user devices.

[0054] Private mode can be similar to one-to-one mode and public mode, but may include an approval phase. During the approval phase, the user device sharing the media item can receive a sharing request for the specific media item and can approve or disapprove the sharing request. In one example, approval or disapproval could be based on user input, in which case the interaction module can notify the user, and the user can provide input to approve or disapprove the sharing.

[0055] After the sharing interface component 124 has identified the media item and initiated sharing, it can interact with either the provider component 126 or the receiver component 128. The provider component 126 can be used when the user device 200 shares the media item with another user device and the receiver component 128, and the receiver component 128 can be used when the user device 200 receives the shared media item from another user device.

[0056] Provider component 126 may include key generation module 220, encryption module 222, and packaging module 224. The functions performed by provider component 126 can be performed at any point in the sharing process, such as before, during, or after a media item is received from a media server, selected for sharing, or after sharing is initiated.

[0057] The key generation module 220 can create one or more encryption keys 240 for the user device. Each encryption key 240 may include a piece of information that determines the functional output of the encryption function and can be used to encrypt and decrypt media items. The key generation module 220 may use a random number generator, a pseudo-random number generator, a key derivation function, other mechanisms, or combinations thereof to generate the encryption key 240. The key generation module 220 may use information available to the user device (such as device identifier, timestamp, IP address, MAC address, user identifier, other information, or combinations thereof) to generate the key. In an alternative example, the encryption key 240 may be generated by a media server or other part of the content sharing platform and sent to the user device 200.

[0058] Encryption module 222 can use encryption key 240 generated by key generation module 220 to encrypt one or more media items. In one example, each media item on user equipment 200 can be encrypted using a different encryption key 240. In another example, multiple (e.g., all) media items on user equipment 200 can be encrypted using encryption key 240. Encryption module 222 can encrypt media items using a symmetric-key encryption system such as Data Encryption Standard (DES) or Advanced Encryption Standard (AES) using a single shared key. In other embodiments, encryption module 222 can also, or alternatively, use a system such as Rivest-Shamir-Adleman (RSA), asymmetric cryptography, or a public-key cryptosystem using multiple keys (e.g., public and private keys) to encrypt media items.

[0059] The wrapping module 224 can use the media server key 244 to wrap the encryption key 240. The media server key 244 can be a public key generated by the media server or other parts of the content sharing platform and sent to the user device 200. The wrapping module 224 can use the media server key 244 and the key encapsulation mechanism to protect the encryption key 240, while also transmitting it to and storing it on another user device.

[0060] In one example, encryption module 222 can use a symmetric-key encryption system to encrypt the media item, and wrapping module 224 can be an asymmetric cryptographic system used to wrap the encryption key 240. As mentioned above, the asymmetric cryptography or public-key encryption system can be the same as or similar to RSA. After wrapping the encryption key, user equipment 200 can transmit the encrypted media item 112 (e.g., ciphertext) and the wrapped encryption key 240 to another device.

[0061] When user equipment 200 is receiving a media item shared by another user equipment, receiver component 128 can be used. Receiver component 128 may include playability module 230, decryption module 232, and authentication module 234.

[0062] Playability module 230 can communicate with a media server to determine whether user device 200 is authorized to present media items. Communication with the media server can involve sending a playability request and receiving a playability response. The playability request may include a wrapped encryption key and information, other information, or a combination thereof, relating to the media item, the receiver or sharing device, the receiver or sharing user. The media server can then analyze this information and compare it with information from one or more data storage devices (e.g., a database) to determine whether user device 200 is authorized to present media items to the user. The analysis may involve checking whether the media item is still available for presentation and whether it has any restrictions. For example, the media item may be limited to an adult audience (e.g., not for children), or it may be limited to or originate from certain geographic regions (e.g., certain countries). After determining that the playability checks have been met, the media server can unwrap the wrapped encryption key. Unwrapping the encryption key may involve a similar cryptographic system used to wrap the encryption key and may utilize a private key (e.g., a public key) associated with the media server key. Then, the media server can send the unpacked encryption key back to the user device 200 in the playability response.

[0063] Decryption module 232 can use the unpacking encryption key to decrypt the encrypted media item 112. The unpacking encryption key may involve a similar encryption system used to encrypt media items, as discussed above regarding encryption module 222.

[0064] Verification module 234 can determine whether a media item is trustworthy and whether it contains any unauthorized modifications. Verification module 234 can verify the media item using a digital signature associated with it. The digital signature can be based on the media item (e.g., video and / or audio bytes) and the media server's private signing key, and can be computed using any digital signature mechanism. In one example, the digital signature mechanism can be the same as or similar to the Elliptic Curve Digital Signature Algorithm (ECDSA), and can be computed using elliptic curve cryptography or any other form of cryptography. The digital signature can be computed by the media server or other parts of the content sharing platform, and can be received by user device 200 from (e.g., with encrypted media items) a user device sharing the media item, or directly from the media server (e.g., using a playability response). Verification module 234 can analyze the decrypted media item from the perspective of the digital signature to perform verification. In one example, verification module 234 can compute a hash of the media item (e.g., video and / or audio bytes) and use the media server's hash, the digital signature, and the public verification key to verify the decrypted media item. The hash can be computed using cryptographic hash functions such as the Secure Hash Algorithm (SHA) or any other hash function.

[0065] Figure 3 , Figure 4 and Figure 5 Flowcharts depict illustrative examples of methods 300, 400, and 500 for implementing access control mechanisms for peer-to-peer media sharing. Method 300 illustrates an example processing flow from the perspective of a media server, and methods 400 and 500 are example methods for sharing a user device and a receiving user device, respectively. Methods 300, 400, and 500 can be executed by a processing device, which may include hardware (e.g., circuitry, dedicated logic), software (such as running on a general-purpose computer system or a dedicated machine), or a combination of both. Each of methods 300, 400, and 500, and each of their respective functions, routines, subroutines, or operations, can be executed by one or more processors of a computer device that executes the method. In some implementations, methods 300, 400, and 500 can be executed by a single processing thread. Alternatively, methods 300, 400, and 500 can be executed by two or more processing threads, each thread executing one or more individual functions, routines, subroutines, or operations of the method.

[0066] For simplicity, the method of this disclosure is depicted and described as a series of actions. However, the actions according to this disclosure may occur in various orders and / or simultaneously, and may occur together with other actions not presented and described herein. Furthermore, not all of the actions shown may be required to implement the method according to the disclosed subject matter. Additionally, it will be understood and apparent to those skilled in the art that the method may alternatively be represented as a series of interrelated states via a state diagram or events. Furthermore, it should be apparent that the methods disclosed in this specification can be stored on an article of art for transmission and transfer to a computing device. The term "article of art" as used herein is intended to include a computer program accessible from any computer-readable device or storage medium. In one implementation, method 300 may be executed by a media server 110 and may be performed by… Figure 1 User equipment 120 executes methods 400 and 500.

[0067] refer to Figure 3Method 300 can be performed by one or more processing devices of a media server and can begin at block 302. At block 302, the processing device of the media server can send a media item to a first user device. The media item may include video, audio, images, text, other media, or combinations thereof. The processing device of the media server can also send one or more encryption keys to the first user device. The first user device can use one of the encryption keys to wrap a device key (e.g., an encryption key) generated by the user device. Wrapping (e.g., encapsulating) the device key may be advantageous because when the device key is transmitted over a peer connection and / or stored on an untrusted peer, wrapping the device key can mask the encryption key as ciphertext. In another example, the media server can send a second encryption key to the first user device. The second encryption key can be generated by the media item and can be used as an alternative to an encryption key generated by the user device for encrypting the media item.

[0068] At box 304, the processing device may receive from the second user equipment a playability request associated with a media item and a wrapped encryption key. The playability request may inquire whether the second user equipment is authorized to play media items shared by the first and second user equipments via a peer-to-peer connection. In one example, the wrapped encryption key may include a symmetric encryption key encapsulated using an asymmetric encryption key. The symmetric encryption key may be an encryption key generated by the user equipment and used to encrypt the media item. The asymmetric encryption key may be a public key provided by a media server and used to wrap the symmetric encryption key. In one example, the playability request may include the wrapped encryption key and information, other information, or a combination thereof relating to the media item, the receiver or sharing device, the receiver or sharing user, or a combination thereof.

[0069] At box 306, the processing device can determine that the second user device is authorized to play the media item. This determination may involve analyzing information in the media item's playability request and comparing it with information from one or more data storage devices (e.g., a database). This analysis may involve checking whether the media item is still available for presentation and whether there are any restrictions on copying or viewing the media. In one example, the processing device of the media server can also verify that the media item does not contain unauthorized modifications. This verification can be performed by comparing information associated with the version of the media item on the second user device (e.g., a hash) with information associated with the version of the media item on the media server (e.g., a digital signature).

[0070] At box 308, the processing device may send a response instructing the second user equipment to authorize playback of a media item, the response including an encryption key derived from the packaged encryption key. Deriving the encryption key may involve unpacking the packaged encryption key using a private key corresponding to the public key used to package the encryption key. The private and public keys may be part of a key pair accessible to the media server, and the media server may have previously provided the public key to the first user equipment to package the encryption key. The packaged encryption key may include ciphertext, and unpacking the encryption key may involve using the private key in conjunction with an asymmetric cryptographic function (e.g., a public-key cryptographic function) to derive the encryption key from the ciphertext. The second user equipment can use the encryption key to decrypt the media item, and once decrypted, the media item can be presented to the user of the second user equipment.

[0071] The media server's processing device can also provide supplementary media items to be presented by the second user device before, during, or after the presentation of a media item. Supplementary media items can include any media content and can be used as advertising. In one example, supplementary media items can be provided to the first user device along with a playability response. For example, a playability response may include supplementary media items, or supplementary media items may be included in another response from the media server or other devices (e.g., partners, affiliates). In another example, supplementary media items can be provided to the first user device and can be sent from the first user device to the second user device before, during, or after the transmission of encrypted media items. The method can terminate in response to completion of the operations described above in reference box 308.

[0072] In other examples, method 300 may involve verifying a media item originating from a media server and received by a second user device. Verification can occur at any time before the media item is played on the second user device and can be performed by the media server, the first user device, the second user device, other devices, or a combination thereof. For example, it can occur before the second user device receives the encrypted media item from the first user device, before decrypting the media item on the second user device, before playing the media item, or at any other time. In one example, verification can be performed by the second device (e.g., a receiving device) and may involve analyzing a hash. This hash can be based on the decrypted version of the media item and can be computed by the second device. The second device may also analyze a digital signature created by the media server and received directly from the media server, or received from a user device sharing the encrypted media item and a wrapping encryption key. The second user device can then analyze the hash and digital signature to determine if the decrypted media item is authentic.

[0073] refer to Figure 4Method 400 can be performed by a processing device of a user device sharing a media item with another user device. Sharing can be initiated by either the sharing device or the receiving device. Sharing initiated by the sharing device can be considered push-based sharing because the media item can be pushed from the sharing device to the receiving device. Sharing initiated by the receiving device can be considered pull-based sharing because the media item is pulled from the sharing device to the receiving device.

[0074] Method 400 may begin at box 402, wherein the processing device of the first user equipment may receive media items from a media server via a network. The media items may be streamed from the media server or downloaded to the first user equipment using any streaming or file transfer technology. Streaming technologies may separate the media items into audio and video streams. Audio streams may be compressed using audio codecs such as MP3, Advanced Audio Coding (AAC), Opus, other encoding mechanisms, or combinations thereof. Video streams may be compressed using video codecs such as H.264, VP8, other encoding mechanisms, or combinations thereof. Streaming technologies may also, or optionally, assemble audio and video streams into container streams (e.g., bitstreams), such as MP4, Flash Video (FLV), Advanced System Format (ASF), Internet Streaming Media Alliance (ISMA), other encoding mechanisms, or combinations thereof. File transfer technologies may be based on any file transfer protocol, such as Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP), TFTP, BitTorrent, other protocols, or combinations thereof.

[0075] At box 404, the processing device may store the media item locally at the first user device. When using streaming media, storage may involve taking the streaming media item offline to persistent storage. The user device can take the streaming media item offline by copying one or more streams of the media item (e.g., video stream, audio stream) from storage to persistent data storage. In one example, the first user device may request permission from a media server to take the media item offline, and the media server may respond with an encryption key (e.g., a cache token) to encrypt the offline media item. In another example, the first user device may generate the encryption key itself instead of receiving it from the media server.

[0076] At box 406, the processing device can use an encryption key to encrypt the media item to generate an encrypted media item. The encryption key used to encrypt the media item can be generated by the processing device or by the media server. In one example, encrypting the media item may involve using a symmetric-key cryptosystem using a single shared key, such as the Data Encryption Standard (DES) or the Advanced Encryption Standard (AES). In other examples, encrypting the media item may involve using an asymmetric encryption or public-key cryptosystem using multiple keys (e.g., a public key and a private key), such as the Rivest-Shamir-Adleman cryptosystem (RSA).

[0077] At box 408, in response to receiving a request to share a stored media item with a second user device, the processing device may wrap the encryption key to generate a wrapped encryption key. As described above, a sharing device (e.g., a first user device) may request to share a media item, in which case the media item is pushed to a receiving device (e.g., the second user device), or it may request sharing through a receiving device, in which case the receiving device pulls the media item from the sharing device. When pushing a media item, the request may be based on user input received from a user who can select the media item, a destination device, or a combination of both. When pulling a media item, the request may be based on a message received by the receiving device indicating that the receiving device is requesting to share a media item. After receiving the request, the processing device may wrap the encryption key by encrypting the encryption key using the media server's public key.

[0078] At box 410, the processing device can send an encrypted media item and its encapsulated encryption key to the receiving device via a peer-to-peer connection. In one example, the sharing device can also send a supplementary media item or a link to a supplementary media item to the receiving device. The supplementary media item or the link to the supplementary media item can originate from a media server and can be transmitted along with the media item. In another example, the sharing device can also send metadata of the media item to the receiving device, and the metadata can be transmitted unencrypted. The method can terminate upon completion of the operations described above in reference box 410.

[0079] refer to Figure 5 Method 500 can be performed by a processing device of a recipient user device that receives media items from a shared device. Method 500 may begin at block 502, where the processing device of the recipient user device receives an encrypted media item and an encapsulated encryption key from the shared user device via a peer-to-peer connection. In one example, the peer-to-peer connection may be a direct connection between the two devices using wireless, wired, or removable media. In another example, the peer-to-peer connection may be a peer-to-peer wireless network connection. In one example, the processing device may receive the encrypted media item after sending a request for the media item to the shared user device.

[0080] At box 504, the processing device may send the wrapped encryption key and request to the media server to determine whether the receiving user device is authorized to play the encrypted media item. The request to determine whether the receiving user device is authorized to play the encrypted media item may include an identifier for the media item. In one example, the receiving user device may be connected to a shared user device and may use the shared user device's network connection to send the request and the wrapped key to the media server.

[0081] At box 506, the processing device may receive a response from the media server instructing the recipient user device to play an encrypted media item. This response may include an encryption key derived from the encapsulated encryption key. In some examples, the response from the media server may include supplementary media items or links to supplementary media items that may be presented before, during, or after the playback of the media item. In other examples, supplementary media items may be received from the sharing user device upon receiving the encrypted media item.

[0082] At box 508, the processing device can decrypt the encrypted media item using an encryption key. The encryption key can be the same key used by the sharing user equipment to encrypt the media item. After decrypting the media item, the processing device can instruct the media item to be ready for playback via the graphical interface of the receiving user equipment. About Figure 14 The graphical interface will be discussed in more detail. After decrypting the media item, the receiving user device can add the media item to the media cache and make it available for sharing with other devices. The following section discusses... Figures 6A-9 Shared media items with another device (e.g., a third device) are discussed in more detail. The method may terminate upon completion of the operations described above in reference box 508.

[0083] Figures 6A-14 The illustration shows a sample graphical interface for a peer-to-peer sharing mobile application that includes access control mechanisms. Figure 6A and Figure 6B A graphical interface that allows users to view information related to multiple media items and detect the availability of each of the multiple media items. Figures 7-9 This refers to the graphical interface used to select media items and send them to another device. Figures 10-14 This represents a sample graphical interface used to receive shared media items and process them to make them available for presentation.

[0084] refer to Figure 6AUser interface 600 enables a user to view one or more media items and initiate the sharing of one or more of these media items. The one or more media items may be a subset (e.g., some or all) of media items available in the local user device's media cache (e.g., a set of stored media items). The user device may provide user interface 600 to the user in response to receiving user input that launches a software component (e.g., a mobile application), or may automatically launch user interface 600 in response to receiving a request to share (send or receive) media items from one or more other user devices. User interface 600 may include one or more graphical elements that provide (e.g., present, display, indicate, reflect) graphical information to the user of the user device. Graphical elements may represent information of an underlying data structure (e.g., media items) and may be updated (e.g., refreshed) when the underlying data structure is modified. In one example, a graphical element may be configured to provide information to the user but may not be configured to receive information from the user (e.g., user input). In another example, a graphical element may be a graphical control element that provides information to the user and may also be configured to receive information from the user, such as receiving user input. User input can be received by user devices via a touchscreen (e.g., tap, swipe, or other touch gestures), mouse / keyboard (e.g., click, scroll, keystroke), camera (e.g., gestures), accelerometer (e.g., shake), other sensory devices, or combinations thereof. Figure 6A In the example shown, the user interface 600 may include a media entry area 610, one or more media entries 620, one or more media availability indicators 626 and 626B, and a shared control element 630.

[0085] Media entry area 610 can be any part of user interface 600, displaying information corresponding to one or more media items. Media entry area 610 can include multiple media items organized into a media item arrangement. In one example, the media item arrangement can be a sequence of media items or a list of media items. Media entry area 610 can be configured to receive user input to adjust (e.g., scroll, pan, zoom, move, reposition) the media item arrangement in one or more directions (e.g., horizontal, vertical, or other directions). As the media item arrangement is adjusted, the position of a particular media item can change, and new media items can be displayed and existing media items can be hidden. Each media item in media entry area 610 can be represented by media item 620.

[0086] Each media entry 620 can be a graphical data structure that provides information corresponding to a specific media item. For example... Figure 6AAs shown, media entry 620 may include image 622, metadata 624, and media availability indicator 626A. Image 622 may be an image representing a media item (e.g., a cover image) or a portion of a media item (such as a video frame of the media item) (e.g., a thumbnail image). Metadata 624 may include any information about the media item, such as title, creator, uploader, duration, creation date / time, upload date / time, number of viewers, number of sharers, other information, or a combination thereof.

[0087] Media availability indicators 626A and 626B can be graphical elements indicating whether the corresponding media item is available on a particular user device. Media availability indicators 626A and 626B can be any graphical element or graphical control element, and can include shapes (e.g., circles, squares, octagons), symbols (e.g., locks, checkmarks, arrows), colors (e.g., blue, green, red, yellow), text (e.g., different fonts, sizes), images, other graphics, or combinations thereof.

[0088] Graphical elements can be located anywhere within the media entry area 610 or the corresponding media entry 620. Media availability indicators 626A and 626B can be overlaid on the image 622 of the corresponding media entry 620, or can be located adjacent to the image or media entry 620 (e.g., above, below, or to the side). Figure 6A In the example shown, media availability indicator 626A can be an overlay graphic element with a blue circular shape and an embedded lock symbol, and media availability indicator 626B can be an overlay graphic element with a blue circular shape and an embedded underlined check mark symbol. In one example, some or all of the media availability indicators can be graphic control elements that receive user input and perform actions in response. For example, media availability indicator 626A can indicate that a media item is locked or encrypted. When media availability indicator 626A receives user input (e.g., tap, click, hover, hold), it can initiate a state transition (e.g., manually initiated decryption) or present information about how to transition the corresponding media item (see [link to relevant documentation]). Figure 12 Changes to the media availability indicator can be used to indicate the status of multiple different media items, which will refer to... Figure 6B Let's discuss this in more detail.

[0089] The sharing control element 630 may be included within the user interface 600 and may enable a user to share one or more media items. The sharing control element 630 may receive user input (e.g., taps, swipes, clicks, keystrokes) and may initiate one or more user interfaces to share media items. Sharing media items may involve sending one or more media items to another user device and / or receiving one or more media items from another user device. The sharing control element 630 may include one or more graphical elements and may include shapes (e.g., circles, squares, octagons), symbols (e.g., arrows, locks, checkmarks), text, images, other graphics, or combinations thereof. The sharing control element 630 may be located anywhere within the user interface 600, which may or may not include a media input area 610. Figure 6A In the example shown, the shared control element 630 can be a graphical control element with a blue circle (which has embedded parallel horizontal arrows pointing in opposite directions), and once selected, it can advance the user interface to... Figure 7 User interface 700.

[0090] refer to Figure 6B User interface 650 may be similar to user interface 600 and may display media items in different states, with one or more media items able to transition between states. In one example, user interface 650 may include multiple media item states 628A-B, media entry 625, and peer connection area 660.

[0091] Media item states 628A-C can illustrate some states that a media item may be in, transition to, or transition from during use of a user device. Media item state 628A can illustrate an example first state of a media item, wherein the media item is not yet stored on the user device but is in the process of being received from another device (e.g., being downloaded). This other device can be one or more peer user devices, server devices, other devices, or combinations thereof. As mentioned above, the version of the media item being received can be an encrypted version and may be accompanied by a wrapped encryption key. The user device may receive the wrapped encryption key before, during, or after receiving the encrypted media item, and may receive the wrapped encryption key from the same device that sent the encrypted media item or from a different device.

[0092] Media item state 628B illustrates the second state of a media item, in which the media item can be stored in encrypted form on the user device. The media item can be stored along with a packaged version of the encryption key. When the media item is in the second state, the user device cannot interpret or render the media item, but can share the encrypted version of the media item with one or more other user devices.

[0093] Media item state 628C illustrates the third state of a media item, where the media item can be stored on the user device and used for user experience. The media item transitions from the second state to the third state when the user device decrypts the encrypted version of the media item. As described above, the user device can decrypt the media item by sending the wrapped encryption key to a remote device (e.g., a content sharing platform), which performs a playability check and unwraps the wrapped encryption key. The unwrapped version of the encryption key can then be sent to the user device, which can use it to decrypt the media item, enabling the media item to transition to media item state 628C.

[0094] Each of the media item states 628A-C can be represented by corresponding media availability indicators 626A and 626B or by the absence of a media availability indicator. For example, media item state 628A can be represented by the absence of a media availability indicator (e.g., a hidden media availability indicator), while media item states 628B and 628C can be represented by media availability indicators 626A and 626B, respectively. A particular media item can transition between one or more states during the operation of a peer-to-peer sharing technology. For example, when downloading an encrypted version of a media item and the encapsulated encryption key via a peer-to-peer connection from another user's device, the media item can begin in media item state 628A. Once the download is complete, the media item can transition to media item state 628B, and the user interface 650 can be updated to change the media indicator from media indicator 626A to media indicator 626B.

[0095] Media item status 628A-C can also be represented by one or more other graphic features. These other graphic features may include modifying the media item or a portion thereof to adjust transparency (e.g., grayscale), font (e.g., bold, italic, highlighted), size (e.g., enlarged, reduced), and arrangement (e.g., indented or highlighted specific media items). Figure 6B In the example shown, media item state 628A can be represented by example media entry 625, which may include a progress indicator 627 and a graphical control element 629. The presence of the progress indicator 627, the graphical control element 629, a hidden media availability indicator, other features, or combinations of features can indicate that the media entry corresponds to media item state 628A.

[0096] The progress indicator 627 may be a graphical element that provides a graphical representation of the progress of receiving the encryption key for the media item and / or package. The progress indicator 627 may take any shape, such as a bar (e.g., a progress bar), a circle (e.g., a spinning wheel, a throbbing motor), other shapes, or combinations thereof. The graphical element may be accompanied by a textual representation of the progress in percentage format. The progress indicator may be located anywhere on the interface 650. In one example, the progress indicator 627 may be displayed near the media image and / or metadata (e.g., to the side, above, or below). In another example, the progress indicator 627 may be displayed on the media image and / or metadata in a semi-transparent or opaque manner, such as... Figure 6B As shown.

[0097] Graphical control element 629 allows the user to cancel the transfer of a media item. Canceling the transfer of a media item can transition the media item from state 628A to another state (e.g., a fourth state) indicating a canceled or failed attempt to download the media item (the fourth state is not shown). Graphical control element 629 can be a button, a widget, other element, or a combination thereof.

[0098] Connection area 660 can be any part of user interface 650, displaying information related to one or more connections used for sending or receiving media items, encryption keys (wrapped or unwrapped), other information, or combinations thereof. The connection can be a peer-to-peer connection, an internet connection, other connections, or combinations thereof. In one example, the connection (e.g., a peer-to-peer connection) can be displayed while an encrypted version of the media item and the wrapped encryption key are being received by or sent from the user device. In another example, the connection (e.g., an internet connection) can be displayed while receiving a wrapped or unwrapped encryption key from the user device.

[0099] A peer-to-peer connection indicator 662 may be displayed within the connection area 660 and may be an example of a type of connection. The peer-to-peer connection indicator 662 may include one or more device symbols 664A and 664B, device information 666A and 666B, and a connection symbol 668. The one or more device symbols 664A and 664B may graphically represent the device and may have different symbols for different types or categories of devices, such as mobile phones, tablets, laptops, desktops, servers, or other devices. Device information 666A and 666B may include device identification information, such as a device identifier (e.g., device name, username, IP address) and a relative identifier that may indicate whether the device identifier corresponds to a local device (e.g., "my device") or a remote device (e.g., "other device," "sending device," "receiving device"). In one example, the connection symbol 668 may indicate the underlying technology used for the connection, such as Wi-Fi, Bluetooth, cellular (e.g., 3G, 4G), other technologies, or combinations thereof.

[0100] refer to Figure 7 User interface 700 can display information for the selected media item and an interface for sharing the selected media item. User interface 700 may include a display area 710 and a sharing area 720. Display area 710 may include an embedded media player for presenting (e.g., playing) the media item. Sharing area 720 may include one or more options for sharing the media item. First option 722 enables the media item to be shared with nearby user devices. Second option 724 enables the media item to be shared with users who can access the Internet. When the user inputs an indication of selecting first option 722, user interface 700 may proceed to user interface 800.

[0101] refer to Figure 8 User interface 800 allows a user to select one or more user devices intended to be the receiver of a shared media item. In one example, the displayed user devices may be those located within a geographic area of ​​the user devices (e.g., within 30 feet). User interface 800 may include a receiver selection area 810 displaying the sharing device 812 and one or more receiver devices 814A and 814B. The positions of receiver devices 814A and 814B relative to the sharing device 812 may correspond to the actual physical distance between the corresponding user devices. In response to user input indicating the selection of receiver device 814B, user interface 800 may proceed to user interface 900.

[0102] refer to Figure 9The user interface 900 can provide information about shared media items before, during, and after transmission. The user interface 900 may include a sharing indicator area 910 and a peer-to-peer connection indicator area 930. The sharing indicator area 910 may include media entries 920, which can be connected to... Figure 6A The media entry 620 is the same as or similar to the media entry 620. The peer connection indicator area 930 can display the local user equipment and the selected receiver equipment.

[0103] Figures 10-14 This may include examples of a user interface that is presented upon receiving a shared media item, as opposed to the interface presented when sending a shared media item. (See reference) Figure 10 The user interface 1000 can provide information about media items before, during, and after receiving them. The user interface 1000 can be similar to user interfaces 600 and 900, but can be presented by the receiving device instead of the transmitting device. The user interface 1000 may include a media list 1010 and a peer-to-peer indicator area 1030. The media list 1010 may include... Figure 6A One or more media entries 1020 that are the same as or similar to media entry 620. With Figure 9 In contrast to the receiver device shown, the peer connection indicator area 1030 can display the local user equipment and the selected sending device.

[0104] refer to Figure 11 User interface 1100 can provide information about media items (e.g., saved media items) in the media cache of the local user device. User interface 1100 may be the same as or similar to user interface 600 and may include one or more media entries 1120. Each media entry 1120 may include a media availability indicator 1122A or 1122B. Media availability indicator 1122A may indicate that the media item is stored in the media cache (e.g., offline) but is not available for playback. This may be because the media item may be encrypted. Media availability indicator 1122B may indicate that the media item is available for playback or shared with another user device.

[0105] refer to Figure 12 The user interface 1200 can provide information about verifying and decrypting received media items. The user interface 1200 may include an information overlay 1240 that provides information about decrypting and verifying media items. It can indicate to the user that playability checks can be used to ensure video availability and that verification checks can be performed to ensure that the media item originates from a media server and has not been modified without authorization (e.g., security threats).

[0106] refer to Figure 13The user interface 1300 can provide information processing steps related to playability and verification checks. The user interface 1300 may include a status area 1350, which provides information about the status of the decryption and verification processes. In one example, it can display whether each of one or more processes has been completed.

[0107] refer to Figure 14 The user interface 1400 may include a notification area 1460, which provides notifications including graphics, text, audio, haptic feedback, or other components.

[0108] Figure 15 A flowchart depicts an illustrative example of a method 1500 for providing a user interface for a peer-to-peer media sharing application. Method 1500 may be similar to methods 300, 400, and 500 discussed above and may focus on providing a graphical interface on a user device that allows the user to visualize one or more features or steps of methods 300, 400, and 500. Method 1500 may be executed by one or more processing devices of the user device and may begin at box 1502.

[0109] At box 1502, the processing device of the user equipment can provide a user interface for displaying multiple media items and multiple media availability indicators. The user interface can be integrated with... Figure 6A The user interface 600 is identical or similar and may include media availability indicators 626A and 626B. The processing device may provide the user interface in response to receiving user input that initiates a software component (e.g., a mobile application), or it may automatically initiate it in response to receiving a request to share (send or receive) a media item. In one example, each of a plurality of media items may be displayed along with a media availability indicator. In another example, some media items may be displayed along with a media availability indicator, and other media items may be displayed with a hidden media indicator or without a media indicator. In the latter example, a hidden media indicator may indicate that the corresponding media item (e.g., an encrypted version of the media item) is being received and that the media item has not yet been saved on the user device or is available for experience. While the user device is receiving a media item, there may be a portion of the user interface indicating that an encrypted version of the media item and a corresponding packaged version of the encryption key are being received from another device.

[0110] In one example, the user interface may include graphical controls (e.g., Figure 6A The shared control element 630 in the middle initiates the reception of a packaged version of the encrypted key for the media item via a peer-to-peer connection. In another example, the user interface may instruct the peer-to-peer connection for receiving the encrypted version of the media item (e.g., ...). Figure 1The peer connection 130), and instructs the Internet connection to be used to decrypt media items (e.g., Figure 13 The status area 1350 in the system). Peer connections can be displayed as peer connection indicators (e.g., ...). Figure 6B The peer connection indicator (662) identifies the user device that is providing an encrypted version of the media item and also identifies the user device that is receiving an encrypted version of the media item.

[0111] At box 1504, the processing device can update a media availability indicator in the media availability indicator to indicate that an encrypted version of the media item and its encryption key are stored locally on the device. This update can be in response to receiving a signal indicating that the download of the media item and encryption key has been completed. In one example, the media availability indicator can be used to distinguish three different states for a particular media item. The first state can indicate that the media item is not stored on the user's device. The second state can indicate that the media item is stored locally in encrypted form. The third state can indicate that the media item is stored and available for experience (e.g., consumed by a user on the user's device). More or fewer states may exist, and more or fewer states can be displayed to the user via the user interface.

[0112] At box 1506, the processing device can receive an instruction to decrypt the encrypted version of the media item. This can be done from a module of the user device (e.g., Figure 2 The decryption module 232 in the system receives the instruction. Decryption can be based on an encryption key that can be used to encrypt and decrypt the media item. The encryption key can be received by a peer device or other remote device (e.g., a content sharing platform). In one example, the user equipment may include a wrapped encryption key and may transmit the wrapped encryption key to a server, and in response, may receive an unwrapped encryption key. The user equipment can then use the unwrapped encryption key along with one or more cryptographic functions to decrypt the media item.

[0113] At box 1508, the processing device may update a media availability indicator to indicate media items available for experience. The update may be in response to receiving an instruction to decrypt an encrypted version of a media item. Updating a media availability indicator may involve replacing a first media availability indicator with a second media availability indicator. Updating a media availability indicator may also, or alternatively, involve modifying an existing media availability indicator to adjust embedded symbols, colors, shapes, formats, other graphic attributes, or combinations thereof.

[0114] In one example, each of multiple media items can be represented within a user interface using media entries. A media entry can include multiple graphical portions of data in different forms (e.g., images, text). The first graphical portion can include the image of the media item (e.g.,...). Figure 6AImage 622), the second graphic portion may include text information of the media item (e.g., Figure 6A Metadata 624). A media item or one or more portions of the user interface can be configured to receive user input corresponding to a specific media item and initiate the presentation of that specific media item. The user device can receive user input via a touchscreen (e.g., tap, swipe, or other touch gestures), mouse / keyboard (e.g., click, scroll, keystroke), camera (e.g., gestures), accelerometer (e.g., shake), other sensory devices, or combinations thereof. The presentation of a specific media item can occur by a media player embedded within a portion of the user interface, or it can occur within a different user interface. The method can terminate in response to completion of the operations described above in reference box 1508.

[0115] Figure 16 A block diagram depicts a computer system operating according to one or more aspects of this disclosure. In some implementations, computer system 1600 may be connected to other computer systems (e.g., via a network such as a local area network (LAN), intranet, extranet, or the Internet). Computer system 1600 may operate as a server or client computer in a client-server environment, or as a peer computer in a peer-to-peer or distributed network environment. Computer system 1600 may be provided by a personal computer (PC), tablet PC, set-top box (STB), personal digital assistant (PDA), cellular phone, network device, server, network router, switch or bridge, or any device capable of executing a set of instructions (sequentially or otherwise) specifying actions to be taken by that device. Furthermore, the term "computer" should include a collection of any computers that individually or jointly execute a set (or more) of instructions to perform any one or more methods described herein.

[0116] On the other hand, the computer system 1600 may include a processing device 1602, volatile memory 1604 (e.g., random access memory (RAM)), non-volatile memory 1606 (e.g., read-only memory (ROM) or electrically erasable programmable ROM (EEPROM)) and data storage device 1616, which may communicate with each other via a bus 1608.

[0117] The processing device 1602 may be provided by one or more processors, such as general-purpose processors (e.g., complex instruction set computing (CISC) microprocessors, reduced instruction set computing (RISC) microprocessors, very long instruction word (VLIW) microprocessors, microprocessors that implement other types of instruction sets, or microprocessors that implement a combination of types of instruction sets) or special-purpose processors (e.g., application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), digital signal processors (DSPs), or network processors).

[0118] The computer system 1600 may also include a network interface device 1622. The computer system 1600 may also include a video display unit 1610 (e.g., LCD), an alphanumeric input device 1612 (e.g., keyboard), a cursor control device 1614 (e.g., mouse), and a signal generating device 1620.

[0119] Data storage device 1616 may include a non-transitory computer-readable storage medium 1624 thereon, on which instructions 1626 encoding any one or more of the methods or functions described herein may be stored, including encoding Figure 2 The shared interface component 124 and instructions for implementing method 500.

[0120] Instruction 1626 may also reside wholly or partially in volatile memory 1604 and / or processing device 1602 during execution in computer system 1600, thus volatile memory 1604 and processing device 1602 may also constitute machine-readable storage media.

[0121] Although computer-readable storage medium 1624 is shown as a single medium in the illustrative example, the term "computer-readable storage medium" should include single or multiple media (e.g., centralized or distributed databases, and / or associated caches and servers) that store one or more sets of executable instructions. The term "computer-readable storage medium" should also include any tangible medium capable of storing or encoding a set of instructions for execution by a computer, which causes the computer to perform any or more of the methods described herein. The term "computer-readable storage medium" should include, but is not limited to, solid-state memory, optical media, and magnetic media.

[0122] The methods, components, and features described herein can be implemented by discrete hardware components or integrated into the functionality of other hardware components such as ASICs, FPGAs, DSPs, or similar devices. Alternatively, the methods, components, and features can be implemented by firmware modules or functional circuitry within a hardware device. Furthermore, the methods, components, and features can be implemented in any combination of hardware devices and computer program components, or as a computer program.

[0123] Unless otherwise specified, terms such as “detect,” “determine,” “release,” “destroy,” “start,” “create,” or “abandon” refer to actions and processes performed or implemented by a computer system that manipulate and convert data represented as physical (electronic) quantities within the computer system registers and memory into other data similarly represented as physical quantities within the computer system memory or registers or other such information storage, transmission, or display devices. Furthermore, the terms “first,” “second,” “third,” “fourth,” etc., as used herein are labels used to distinguish different elements and may not have ordinal meaning based on their numerical designation.

[0124] The examples described herein also relate to apparatus for performing the methods described herein. This apparatus may be specifically configured to perform the methods described herein, or it may comprise a general-purpose computer system selectively programmed by a computer program stored in a computer system. Such a computer program may be stored in a computer-readable tangible storage medium.

[0125] The methods and illustrative examples described herein are not inherently related to any particular computer or other device. Various general-purpose systems can be used in accordance with the teachings described herein, or it may prove convenient to construct more specialized devices to perform each of methods 300, 400, 500 and / or their various functions, routines, subroutines, or operations. Examples of structures for various such systems are illustrated in the foregoing description.

[0126] The above description is intended to be illustrative and not restrictive. Although this disclosure has been described with reference to specific illustrative examples and implementations, it will be appreciated that this disclosure is not limited to the described examples and implementations. The scope of this disclosure should be determined by referring to the appended claims and the full scope of their equivalents.

Claims

1. A method for providing a user interface, comprising: providing, by a user device, a user interface for display, the user interface including a plurality of media items and a plurality of media availability indicators, wherein a media availability indicator of the user interface specifies whether an encrypted version of a media item is available on the user device; updating, by the user device, the media availability indicator to specify that the encrypted version of the media item and a wrapped key have been received at the user device over a connection, wherein the wrapped key is encrypted using a public key of a media server; causing the user device to initiate transmission of the wrapped key to the media server via the user interface, wherein the wrapped key includes an encryption key for the encrypted version of the media item; receiving, by the user device, the encryption key, the encryption key unwrapped by the media server using a private key of the media server; and updating the media availability indicator of the user interface to indicate that the media item is available for consumption.

2. The method of claim 1, wherein, the user interface includes a graphical control element for initiating receipt of the wrapped key of the media item over the connection.

3. The method of claim 2, wherein, the user interface indicates the connection used to receive the encrypted version of the media item and indicates that an internet connection is used for receipt of the encryption key to decrypt the media item.

4. The method of claim 1, wherein, the user interface includes a connection indicator that identifies a peer user device that is providing the encrypted version of the media item and that identifies the user device that is receiving the encrypted version of the media item.

5. The method of claim 1, wherein, the media availability indicator is used to distinguish between three states of the media item, a first state indicating that the media item is not saved on the user device, a second state indicating that the media item is saved in the encrypted version, and a third state indicating that the media item is saved and available for consumption.

6. The method of claim 1, wherein, each of the plurality of media items is represented within the user interface by a media entry that includes a first graphical portion and a second graphical portion, the first graphical portion including an image of a respective media item and the second graphical portion including textual information of the respective media item.

7. The method of claim 1, further comprising: receiving user input corresponding to a particular media item and initiating presentation of the particular media item.

8. The method of claim 7, wherein, the user interface includes a portion for the presentation of the particular media item on the user device.

9. A system for providing a user interface, comprising: a memory; and a processing device communicably coupled to the memory, the processing device to: provide a user interface, the user interface including a plurality of media items and a plurality of media availability indicators, wherein a media availability indicator of the user interface specifies whether an encrypted version of a media item is available on a user device; update, by the user device, the media availability indicator to specify that the encrypted version of the media item and a wrapped key have been received at the user device over a connection, wherein the wrapped key is encrypted using a public key of a media server; ​ causing the user device to initiate, via the user interface, transmission of the wrapped key to the media server, wherein the wrapped key comprises an encryption key for the encrypted version of the media item; receiving the encryption key, the encryption key unwrapped by the media server using a private key of the media server; and updating the media availability indicator of the user interface to indicate that the media item is available for consumption.

10. The system of claim 9, wherein, the user interface comprises a graphical control element for initiating the receiving of the wrapped key of the media item over the connection.

11. The system of claim 10, wherein, the user interface indicates the connection used to receive the encrypted version of the media item and indicates that an internet connection is used to receive the encryption key to decrypt the media item.

12. The system of claim 9, wherein, the user interface comprises a connection indicator that identifies a peer user device that is providing the encrypted version of the media item and that identifies the user device that is receiving the encrypted version of the media item.

13. The system of claim 9, wherein, the media availability indicator is used to distinguish between three states of the media item, a first state indicating that the media item is not saved on a user device, a second state indicating that the media item is saved in the encrypted version, and a third state indicating that the media item is saved and available for consumption.

14. The system of claim 9, wherein, each of the plurality of media items is represented within the user interface by a media entry comprising a first graphical portion and a second graphical portion, the first graphical portion comprising an image of the respective media item and the second graphical portion comprising textual information of the respective media item.

15. A non-transitory machine-readable storage medium storing instructions that, when executed, cause a processing device to: a user interface is provided by the user device for display, the user interface including a plurality of media items and a plurality of media availability indicators, wherein, a media availability indicator of the user interface specifies whether an encrypted version of a media item is available on the user device; updating, by the user device, the media availability indicator to specify that the encrypted version of the media item and a wrapped key have been received at the user device over a connection, wherein the wrapped key is encrypted using a public key of a media server; causing the user device to initiate, via the user interface, transmission of the wrapped key to the media server, wherein the wrapped key comprises an encryption key for the encrypted version of the media item; receiving, by the user device, the encryption key, the encryption key unwrapped by the media server using a private key of the media server; and updating the media availability indicator of the user interface to indicate that the media item is available for consumption.

16. The non-transitory machine-readable storage medium of claim 15, wherein, the user interface comprises a graphical control element for initiating the receiving of the wrapped key of the media item over the connection.

17. The non-transitory machine-readable storage medium of claim 16, wherein, the user interface indicates the connection used to receive the encrypted version of the media item and indicates that an internet connection is used to receive the encryption key to decrypt the media item.

18. The non-transitory machine-readable storage medium of claim 15, wherein, the user interface comprises a connection indicator that identifies a peer user device that is providing the encrypted version of the media item and that identifies the user device that is receiving the encrypted version of the media item.

19. The non-transitory machine-readable storage medium of claim 15, wherein, The media availability indicator is used to distinguish between three states of the media item, a first state indicating that the media item is not saved on the user device, a second state indicating that the media item is saved in the encrypted version, and a third state indicating that the media item is saved and available for consumption.

20. The non-transitory machine-readable storage medium of claim 15, wherein, Each of the plurality of media items is represented within the user interface by a media entry comprising a first graphical portion and a second graphical portion, the first graphical portion comprising an image of the respective media item, and the second graphical portion comprising textual information of the respective media item.

Citation Information

Patent Citations

  • Method and device for sharing encrypted digital television programs and digital television receiver

    CN102957961A

  • Method and system for providing relevant portions of multi-media based on text searching of multi-media

    WO2014026247A1