Abstract:
The proliferation of personal computing devices in recent years, especially mobile personal computing devices, combined with a growth in the number of widely-used communications formats has led to increased concerns regarding the safety and security of documents and messages that are sent over networks. Users desire a system that provides for the setting of custom, content-agnostic, permissions at a message, document, and/or sub-document-level through a communications network. Such a system would allow customized privacy settings to be specified at various levels of social distance from the user sending the document or message (e.g., public, private, followers, groups, Level-1 contacts, Level-2 contacts, Level-3 contacts, etc.). Such a system may also allow the user to apply customized privacy settings and encryption keys differently to particular parts of a document. Customized encryption keys may further be applied to particular parties or groups of parties to enhance the security of the permissioning settings.

Description:
TECHNICAL FIELD 
       [0001]    This disclosure relates generally to systems, methods, and computer readable media for determining user-defined, content-agnostic document and message permissioning through a network. 
       BACKGROUND 
       [0002]    The proliferation of personal computing devices in recent years, especially mobile personal computing devices, combined with a growth in the number of widely-used communications formats (e.g., text, voice, video, image) and protocols (e.g., SMTP, IMAP/POP, SMS/MMS, XMPP, YMSG, etc.) has led to increased concerns regarding the safety and security of documents and messages that are sent over networks. Users desire a system that provides for the setting of custom, e.g., user-defined, content-agnostic permissions at a message-, document-, and/or sub-document- (i.e., a part of the document that comprises less than the entire document) level through a communications network. Such a system would allow customized privacy settings to be specified at various levels of social distance from the user sending the document or message (e.g., public, private, followers, groups, Level-1 contacts, Level-2 contacts, Level-3 contacts, etc.). Such a system may also allow the user to apply customized privacy settings and encryption keys differently to particular parts of a document, e.g., making a first part of a document available only to a first class of users and other parts of the document available to the first class of users and a second class of users. 
         [0003]    Thus, a system for providing Adaptive Privacy Controls (APC) is described herein. APC comprises a user-controllable or system-generated, intelligent privacy system that can limit viewing, editing, and re-sharing privileges for files and other digital objects of all types stored in a compatible system (e.g., message objects, user profile fields, documents, etc.). APC allows users to share whatever information they want with whomever they want, while keeping others from accessing such information via assorted rights management techniques and/or encryption processes that can be initiated by user command or via system intelligence on entire objects or portions of objects. APC techniques may be applied to individuals, pre-defined groups, and/or ad-hoc groups. Customized encryption keys may further be applied to particular parties or groups of parties to enhance the security of the permissioning settings. 
         [0004]    APC may also be used to apply privacy settings to only particular parts of a document. For example, User A in an organization may need to see the entire content of the organization&#39;s annual report drafts, but other users in the organization may only need to see a version that has sensitive financial/pro-forma data redacted. For example, pages 1-20 of the annual report would be available to User A, but only pages 1-19 would be available to the other users. 
         [0005]    Thus, according to some embodiments, the network-based, user-defined, content-agnostic (i.e., agnostic as to both format and subject matter) document and message permissioning systems, methods, and computer readable media described herein may provide a seamless, intuitive user interface (e.g., using touch gestures or mouse input) allowing a user to block out particular areas of interest in a document or message from particular recipients or groups of recipients, as well as to specify privacy and permissioning settings for a single document or message—or across all documents owned by the user. 
         [0006]    The subject matter of the present disclosure is directed to overcoming, or at least reducing the effects of, one or more of the problems set forth above. To address these and other issues, techniques that enable the setting of user-defined, content-agnostic permissions at a message-, document-, and/or sub-document-level through a communications network are described herein. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]      FIG. 1A  is a block diagram illustrating a server-entry point network architecture infrastructure, according to one or more disclosed embodiments. 
           [0008]      FIG. 1B  is a block diagram illustrating a client-entry point network architecture infrastructure, according to one or more disclosed embodiments. 
           [0009]      FIG. 2A  is a block diagram illustrating a computer which could be used to execute the cloud-based user defined permissioning approaches described herein according to one or more of disclosed embodiments. 
           [0010]      FIG. 2B  is a block diagram illustrating a processor core, which may reside on a computer according to one or more of disclosed embodiments. 
           [0011]      FIG. 3  shows an example of sub-document-level permissioning scheme with custom recipient-based privacy settings, according to one or more disclosed embodiments. 
           [0012]      FIG. 4  is a pair of flowcharts showing a method for utilizing APC process from both the sender and receiver perspective, according to one or more disclosed embodiments. 
           [0013]      FIG. 5  shows an example of customized privacy and permissioning setting using encryption keys, according to one or more disclosed embodiments. 
       
    
    
     DETAILED DESCRIPTION 
       [0014]    Disclosed are systems, methods, and computer readable media for creating user-defined, content-agnostic, custom privacy settings for documents, sub-documents, and messages that limit sharing privileges for files of all formats. More particularly, but not by way of limitation, this disclosure relates to systems, methods, and computer readable media to permit users of the permissioning system to combine customized permissioning settings at the document and sub-document levels with customized encryption keys to achieve a greater level of control over who their data is shared with and exactly what information is shared. 
         [0015]    Referring now to  FIG. 1A , a server-entry point network architecture infrastructure  100  is shown schematically. Infrastructure  100  contains computer networks  101 . Computer networks  101  include many different types of computer networks available today, such as the Internet, a corporate network, or a Local Area Network (LAN). Each of these networks can contain wired or wireless devices and operate using any number of network protocols (e.g., TCP/IP). Networks  101  may be connected to various gateways and routers, connecting various machines to one another, represented, e.g., by sync server  105 , end user computers  103 , mobile phones  102 , and computer servers  106 - 109 . In some embodiments, end user computers  103  may not be capable of receiving SMS text messages, whereas mobile phones  102  are capable of receiving SMS text messages. Also shown in infrastructure  100  is a cellular network  101  for use with mobile communication devices. As is known in the art, mobile cellular networks support mobile phones and many other types of devices (e.g., tablet computers not shown). Mobile devices in the infrastructure  100  are illustrated as mobile phone  102 . Sync server  105 , in connection with database(s)  104 , may serve as the central “brains” and data repository, respectively, for the multi-protocol, multi-format communication composition and inbox feed system to be described herein. In the server-entry point network architecture infrastructure  100  of  FIG. 1A , centralized sync server  105  may be responsible for querying and obtaining all the messages from the various communication sources for individual users of the system and keeping the multi-protocol, multi-format inbox feed for a particular user of the system synchronized with the data on the various third party communication servers that the system is in communication with. Database(s)  104  may be used to store local copies of messages sent and received by users of the system, as well as individual documents associated with a particular user, which may or may not also be associated with particular communications of the users. As such, the database portion allotted to a particular user will contain a record of all communications in any form to and from the user. 
         [0016]    Server  106  in the server-entry point network architecture infrastructure  100  of  FIG. 1A  represents a third party email server (e.g., a GOOGLE® or YAHOO! ® email server). (GOOGLE is a registered service mark of Google Inc. YAHOO! is a registered service mark of Yahoo! Inc.) Third party email server  106  may be periodically pinged by sync server  105  to determine whether particular users of the multi-protocol, multi-format communication composition and inbox feed system described herein have received any new email messages via the particular third-party email services. Server  107  represents a represents a third party instant message server (e.g., a YAHOO! ® Messenger or AOL® Instant Messaging server). (AOL is a registered service mark of AOL Inc.) Third party instant messaging server  107  may also be periodically pinged by sync server  105  to determine whether particular users of the multi-protocol, multi-format communication composition and inbox feed system described herein have received any new instant messages via the particular third-party instant messaging services. Similarly, server  108  represents a third party social network server (e.g., a FACEBOOK® or TWITTER® server). (FACEBOOK is a registered trademark of Facebook, Inc. TWITTER is a registered service mark of Twitter, Inc.) Third party social network server  108  may also be periodically pinged by sync server  105  to determine whether particular users of the multi-protocol, multi-format communication composition and inbox feed system described herein have received any new social network messages via the particular third-party social network services. It is to be understood that, in a “push-based” system, third party servers may push notifications to sync server  105  directly, thus eliminating the need for sync server  105  to periodically ping the third party servers. Finally, server  109  represents a cellular service provider&#39;s server. Such servers may be used to manage the sending and receiving of messages (e.g., email or SMS text messages) to users of mobile devices on the provider&#39;s cellular network. Cellular service provider servers may also be used: 1) to provide geo-fencing for location and movement determination; 2) for data transference; and/or 3) for live telephony (i.e., actually answering and making phone calls with a user&#39;s client device). In situations where two ‘on-network’ or ‘on-system’ users are communicating with one another via the multi-protocol, multi-format communication system itself, such communications may occur entirely via sync server  105 , and third party servers  106 - 109  may not need to be contacted. 
         [0017]    Referring now to  FIG. 1B , a client-entry point network architecture infrastructure  150  is shown schematically. Similar to infrastructure  100  shown in  FIG. 1A , infrastructure  150  contains computer networks  101 . Computer networks  101  may again include many different types of computer networks available today, such as the Internet, a corporate network, or a Local Area Network (LAN). However, unlike the server-centric infrastructure  100  shown in  FIG. 1A , infrastructure  150  is a client-centric architecture. Thus, individual client devices, such as end user computers  103  and mobile phones  102  may be used to query the various third party computer servers  106 - 109  to retrieve the various third party email, IM, social network, and other messages for the user of the client device. Such a system has the benefit that there may be less delay in receiving messages than in a system where a central server is responsible for authorizing and pulling communications for many users simultaneously. Also, a client-entry point system may place less storage and processing responsibilities on the central multi-protocol, multi-format communication composition and inbox feed system&#39;s server computers since the various tasks may be distributed over a large number of client devices. Further, a client-entry point system may lend itself well to a true, “zero knowledge” privacy enforcement scheme. In infrastructure  150 , the client devices may also be connected via the network to the central sync server  105  and database  104 . For example, central sync server  105  and database  104  may be used by the client devices to reduce the amount of storage space needed on-board the client devices to store communications-related content and/or to keep all of a user&#39;s devices synchronized with the latest communication-related information and content related to the user. It is to be understood that, in a “push-based” system, third party servers may push notifications to end user computers  102  and mobile phones  103  directly, thus eliminating the need for these devices to periodically ping the third party servers. 
         [0018]    Referring now to  FIG. 2A , an example processing device  200  for use in the communication systems described herein according to one embodiment is illustrated in block diagram form. Processing device  200  may serve in, e.g., a mobile phone  102 , end user computer  103 , sync server  105 , or a server computer  106 - 109 . Example processing device  200  comprises a system unit  205  which may be optionally connected to an input device  230  (e.g., keyboard, mouse, touch screen, etc.) and display  235 . A program storage device (PSD)  240  (sometimes referred to as a hard disk, flash memory, or non-transitory computer readable medium) is included with the system unit  205 . Also included with system unit  205  may be a network interface  220  for communication via a network (either cellular or computer) with other mobile and/or embedded devices (not shown). Network interface  220  may be included within system unit  205  or be external to system unit  205 . In either case, system unit  205  will be communicatively coupled to network interface  220 . Program storage device  240  represents any form of non-volatile storage including, but not limited to, all forms of optical and magnetic memory, including solid-state storage elements, including removable media, and may be included within system unit  205  or be external to system unit  205 . Program storage device  240  may be used for storage of software to control system unit  205 , data for use by the processing device  200 , or both. 
         [0019]    System unit  205  may be programmed to perform methods in accordance with this disclosure. System unit  205  comprises one or more processing units, input-output (I/O) bus  225  and memory  215 . Access to memory  215  can be accomplished using the communication bus  225 . Processing unit  210  may include any programmable controller device including, for example, a mainframe processor, a mobile phone processor, or, as examples, one or more members of the INTEL® ATOM™, INTEL® XEON™, and INTEL® CORE™ processor families from Intel Corporation and the Cortex and ARM processor families from ARM. (INTEL, INTEL ATOM, XEON, and CORE are trademarks of the Intel Corporation. CORTEX is a registered trademark of the ARM Limited Corporation. ARM is a registered trademark of the ARM Limited Company). Memory  215  may include one or more memory modules and comprise random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), programmable read-write memory, and solid-state memory. As also shown in  FIG. 2A , system unit  205  may also include one or more positional sensors  245 , which may comprise an accelerometer, gyrometer, global positioning system (GPS) device, or the like, and which may be used to track the movement of user client devices. 
         [0020]    Referring now to  FIG. 2B , a processing unit core  210  is illustrated in further detail, according to one embodiment. Processing unit core  210  may be the core for any type of processor, such as a micro-processor, an embedded processor, a digital signal processor (DSP), a network processor, or other device to execute code. Although only one processing unit core  210  is illustrated in  FIG. 2B , a processing element may alternatively include more than one of the processing unit core  210  illustrated in  FIG. 2B . Processing unit core  210  may be a single-threaded core or, for at least one embodiment, the processing unit core  210  may be multithreaded, in that, it may include more than one hardware thread context (or “logical processor”) per core. 
         [0021]      FIG. 2B  also illustrates a memory  215  coupled to the processing unit core  210 . The memory  215  may be any of a wide variety of memories (including various layers of memory hierarchy), as are known or otherwise available to those of skill in the art. The memory  215  may include one or more code instruction(s)  250  to be executed by the processing unit core  210 . The processing unit core  210  follows a program sequence of instructions indicated by the code  250 . Each instruction enters a front end portion  260  and is processed by one or more decoders  270 . The decoder may generate as its output a micro operation such as a fixed width micro operation in a predefined format, or may generate other instructions, microinstructions, or control signals which reflect the original code instruction. The front end  260  may also include register renaming logic  262  and scheduling logic  264 , which generally allocate resources and queue the operation corresponding to the convert instruction for execution. 
         [0022]    The processing unit core  210  is shown including execution logic  280  having a set of execution units  285 - 1  through  285 -N. Some embodiments may include a number of execution units dedicated to specific functions or sets of functions. Other embodiments may include only one execution unit or one execution unit that can perform a particular function. The execution logic  280  performs the operations specified by code instructions. 
         [0023]    After completion of execution of the operations specified by the code instructions, back end logic  290  retires the instructions of the code  250 . In one embodiment, the processing unit core  210  allows out of order execution but requires in order retirement of instructions. Retirement logic  295  may take a variety of forms as known to those of skill in the art (e.g., re-order buffers or the like). In this manner, the processing unit core  210  is transformed during execution of the code  250 , at least in terms of the output generated by the decoder, the hardware registers and tables utilized by the register renaming logic  262 , and any registers (not shown) modified by the execution logic  280 . 
         [0024]    Although not illustrated in  FIG. 2B , a processing element may include other elements on chip with the processing unit core  210 . For example, a processing element may include memory control logic along with the processing unit core  210 . The processing element may include I/O control logic and/or may include I/O control logic integrated with memory control logic. The processing element may also include one or more caches. 
         [0025]    Document and Sub-Document Level Permissioning Scheme with Custom, Recipient-Based Privacy Settings 
         [0026]    According to some embodiments of a system for providing Adaptive Privacy Controls (APC), global, i.e., document-level or file-level permissioning may be implemented. For example, in one scenario, a user may wish to share a document with a colleague, but not allow that colleague to pass along the document to other parties. In such a scenario, User A may use the system to send the file (e.g. using SMTP, XMPP, etc.) to the colleague, User B, while selecting the appropriate APC option(s) to limit User B′s re-sharing ability. The client application or server (depending on system architecture) may then process the selected APC option(s) and protect the document with a shared password, public/private key encryption, token-controlled link, or other form of protection. User B can then receive a typical message with the attached file, held in a protected container, which requires a password (in the case of an off-system user) or private key (in the case of an on-system user). User B may also receive a typical message with a link to a token/access-controlled document for view only, download, live editing, or other such activity—each individually permissioned at User A&#39;s discretion. 
         [0027]    If User B is an ‘on-system’ recipient, the system may process the shared file, use the recipient&#39;s public key to encrypt the file, and send it to the recipient in any desired format, using any desired protocol. When the recipient opens the message and attachment in a compatible application, the private key will automatically decrypt the file and open it for use. To protect against re-sharing, the system may make the file read-only (i.e., no download permissions). Any attempt on User B′s part to digitally transmit the file or portions of the file to other recipients will result in the recipient receiving unusable, encrypted content. 
         [0028]    If, instead, User B is an ‘off-system’ recipient, the system may process the shared file and perform any of the following actions:  1 ) generate a protected .zip file (or other similar container) with a password that User A may share with User B via any preferred communication protocol;  2 ) generate a link to a web portal that requires User B to join the system and authenticate himself or herself prior to receiving the document (e.g., by matching email address identifiers and performing standard validation processes to ensure identity). 
         [0029]    According to other embodiments of a system for providing Adaptive Privacy Controls (APC), local, i.e., sub-document-level or sub-file-level permissioning may be implemented. For example, a user may wish to share sensitive financial information contained in an Annual Report among a team. In such a scenario, User A may decide to share the Annual Report with his team, comprising User B and User C. In this scenario, User B has permission to see all of the Annual Report, but User C only has permission to view the summary worksheet on page  1  of the Annual Report. In such a scenario, APC would allow User A to share a fully-viewable document with User B and a partially-viewable version of the same document with User C. Prior to sending the file, User A could instruct the system to protect the sensitive data in the document using markup-specific substitutions. 
         [0030]    Another exemplary situation wherein sub-document-level permissioning may be employed is in the sharing of picture or video media, whereby specific sections of the media content require selective censorship, redaction, or other protection for certain recipients, in order to maintain desired privacy or security levels. In one scenario, User A, the sharer, may want to share a humorous picture with his wife (User B) and young son (User C). Knowing that the picture contains certain explicit words or imagery but is still funny even without the explicit sub-portions of the content, User A may attach the photo to a message in a capable application and use the application&#39;s selection capabilities to “block-out” the explicit sub-portions of the image. User A may then instruct the system to allow User B to view the full uncensored image, while only allowing User C to view the censored portions of the image. 
         [0031]    For both of the exemplary sub-document permissioning scenarios described above, the application can present a view of the object in question (e.g., via a compatible file viewer or image thumbnail, etc.) to the sender of the object. The sender can then use any desired form of selection input (e.g., touch gestures, mouse gestures, etc.) to indicate which content should be access-controlled. Those selections will be recorded and either processed locally or sent to a central server (depending on client capabilities), whereby the system will process the object&#39;s original source code (e.g. in XML format, MIME format, etc.), corresponding to the section or sections matching the user selection. 
         [0032]    The section(s) in question may then be isolated (maintaining suitable markup) and replaced with a link reference or encrypted text (using any one of standard encryption practices, such as shared secrets, public/private key, etc.). The resulting “APC-enabled” object, when viewed in an authorized application, may prompt the application to attempt to contact a server to retrieve the markup text or (if encrypted) attempt to decrypt with the private key stored in the authorized application. Unsuccessful retrieval or decryption will result in the recipient only viewing “part” of the original file. Because this service requires knowledge of the markup structure of any compatible file type, all APC changes will be made while keeping the overall markup structure complete, such that the application may be opened (i.e., APC changes will not be implemented merely by removing sections of potentially important markup and thus corrupting the file). 
         [0033]      FIG. 3  shows an example of sub-document-level permissioning scheme  300  with custom recipient-based privacy settings, according to one or more disclosed embodiments. As demonstrated in the exemplary permissioning scheme  300 , the creator of the document  305 , “Creator,” creates or edits the document  305  that is to have custom permissioning settings applied to it. Next, the Creator may identify particular portions of the document  305  to block out from the view of certain recipients, represented by the grayed out squares over particular portions of the document  305  as shown in element  310  in  FIG. 3 . 
         [0034]    Finally, the Creator may choose to send the document  305  to three separate users (either simultaneously or at different times), with the appropriate portions blocked out for the appropriate recipients, based on, e.g., their identity, status as a member of a particular group, or their status as a follower of the Creator, etc. For example, as is shown in  FIG. 3 , the version of the document  305  sent to “User 1”  315  has both of the identified portions blocked out from the view of User  1 . By contrast, the version of the document sent to “User 2”  320  has only the bottom portion of the two identified portions blocked out from the view of User  2 , and the version of the document sent to “User 3”  325  has only the top portion of the two identified portions blocked out from the view of User  3 . Such a system allows a single version of the document  305  to be stored in a central database or server, while still allowing the document to be shared to multiple recipients, with each recipient able to view only particular sub-portions of the document, based on the permissioning settings specified by the creator/sender of the document and/or the identity of the particular recipient. 
         [0035]    APC System Permissioning Settings Options 
         [0036]    Several examples of potential APC system permissioning settings that may be applied to particular documents or messages are shown and described below:
       Public: Visible to the world. Searchable by search engines. Auto-broadcasted to the creator&#39;s “Followers.” The “followers” of a particular user may be established by the followers that have been created within the APC document permissioning system itself (if the recipients are users of such a system), or may be pulled in from third-party services, such as Facebook, Twitter, LinkedIn, etc.   Followers: Notifies and is visible to all followers of the creator.   Just Me: Private setting. Viewable only by user that creates the document or message.   My Contacts: All contacts available on user&#39;s contact list. The “contacts” of a particular user may be established by the contacts that have been created within the APC document permissioning system itself, or may be pulled in from third-party services or applications, such as Gmail, Yahoo! Mail, Outlook, etc.   Level 1 Contacts: All registered-user contacts who have directly connected with the creator via the APC document permissioning system itself, e.g., by accepting an invitation from the creator to become a contact. This permissioning setting may be thought of as being bi-directional, e.g.: 1.) User A invites User B, and User B accepts; 2.) User B invites User A, and User A accepts. In some embodiments, all “Level  1 ” contacts of a user may be automatically added to that user&#39;s “My Contacts” list.   Level 2 Contacts: Direct contacts of the user&#39;s Level 1 contacts.   Level 3 Contacts: Direct contacts of user&#39;s Level 2 contacts.   Groups: Users may create one or multiple custom groups for use with the APC document permissioning system.   Custom: Users may manually add contacts, e.g., using an email address or name. The APC document permissioning system may then auto-suggest users based on name entry (if the name is present in the user&#39;s “My Contacts” list). Documents that have a custom permissioning system associated with them will then only be viewable by the particular users whose information is added to the custom authorization list for the document.       
 
         [0046]    As will be understood, the settings levels described above are merely exemplary, and other ways of specifying permissioning schemes may be used in particular implementations of an APC document permissioning system. 
         [0047]      FIG. 4  is a pair of flowcharts  400  and  450  showing a method for utilizing the APC process from both the sender&#39;s and receiver&#39;s perspective, according to one or more disclosed embodiments. Beginning with flowchart  400  from the sender&#39;s perspective, first, the system prompts the sender to input his or her credentials for authentication (Step  405 ). Next, the sender opens the document and edits the document, e.g., by highlighting a portion of the document and selecting particular recipients or groups of recipients to share access to that portion of the document with (Step  410 ). When finished, the sender may save the changes to the document. Next, the system modifies Advanced Encryption Standard (AES) encryption keys for each portion of the document with different permissions settings (Step  415 ). The AES is a specification for the encryption of electronic data established by the U.S. National Institute of Standards and Technology (NIST) in 2001. Each portion of the document with different permissions settings may then be encrypted with a different AES key (Step  420 ). Each AES key may then be encrypted with the recipient&#39;s public key (Step  425 ). Finally, the sender uploads the document to the system for transmission over the network to the desired recipients in the desired format(s) (Step  430 ). 
         [0048]    Attention is now directed to flowchart  450 , which shows the process from the receiver&#39;s perspective. First, the system prompts the receiver to input his or her credentials for authentication (Step  455 ). Next, the receiver downloads the document or message that was sent to him or her (Step  460 ). Next, the receiver&#39;s client device decrypts the AES keys that he is able to with his private key (Step  465 ). Next, the receiver uses the AES keys he obtained to decrypt the pieces of the document that he is able to (Step  470 ). Finally, the receiver opens the document for reading and/or writing, but can only see the portions that he or she has access to (Step  475 ). The remaining portions of the document remain scrambled to the receiver. 
         [0049]    It is to be understood that, although AES encryption is discussed here, any suitable form of encryption may be utilized to encrypt the documents and/or portions of the documents. Further, any suitable key size, e.g., 128, 192, or 256 bits, may be used, based on a particular implementation of the APC system. 
         [0050]    Customized Privacy and Permissioning Setting using Encryption Keys 
         [0051]      FIG. 5  shows an example of a customized privacy and permissioning settings system using encryption keys, according to one or more disclosed embodiments. Public key database  500  comprises an association of user profiles and public keys associated with those users. User A in public key database  500  may refer to the sender in the scenario described above with reference to  FIG. 4 , whereas Users B-N may refer to potential desired recipients in the scenario described above with reference to  FIG. 4 . User contact info database  510  comprises an association of user profiles and contact information associated with those users. Again, user 
         [0052]    A in contact info database  510  may refer to the sender in the scenario described above with reference to  FIG. 4 , whereas Users B-N may refer to potential desired recipients in the scenario described above with reference to  FIG. 4 . 
         [0053]    According to some embodiments of the customized privacy and permissioning settings system described herein, users may set the recipients of a particular document or message to have a status of: “Read only,” “Read and Share,” or neither. The user may also set a file to be re-sharable to the public (e.g., universally sharable) or to a particular group of recipients. 
         [0054]    According to one embodiment of a method of utilizing user-defined, content-agnostic privacy and permissioning settings for document sharing, first, the user, e.g., User A as shown in  FIG. 5 , selects a message or document that he or she desires to send. Next, the user chooses the user or users that are his or her desired recipients for the selected message or document, e.g., User B. Next, the user contact information, e.g., “Contact Info B” in the contact info database  510  of  FIG. 5 , is matched to the user or users that are the desired recipients of the document. Next, each desired recipient user&#39;s information is found in the public encryption key database, e.g., “Public Key B” in public key database  500  of  FIG. 5 . Finally, the located public key, e.g., “Public Key B,” is used to encrypt the content of the message or document that is to be sent, and the encrypted message or document is sent to each of the desired recipients, who may then use their private keys to decrypt the message or document. 
       EXAMPLES 
       [0055]    Example 1 is a non-transitory computer readable medium that comprises computer executable instructions stored thereon to cause one or more processing units to: receive an indication of a first portion of a first document; receive a first permissioning setting for the first portion; receive an indication of a first recipient for the first portion; generate a first encryption key for the first portion based, at least in part, on the first permissioning setting for the first portion and the indicated first recipient of the first portion; encrypt the first portion using the first generated encryption key for the first portion; and transmit the first document to the first recipient. 
         [0056]    Example 2 includes the subject matter of example 1, wherein the computer executable instructions further cause the one or more processing units to: receive an indication of a second portion of the first document; receive a second permissioning setting for the second portion; receive an indication of a second recipient for the second portion; generate a second encryption key for the second portion based, at least in part, on the second permissioning setting for the second portion and the indicated second recipient of the second portion; and encrypt the second portion using the second generated encryption key for the second portion, wherein the first portion and the second portion of the first document are different. 
         [0057]    Example 3 includes the subject matter of example 1, wherein the first portion comprises the entire first document. 
         [0058]    Example 4 includes the subject matter of example 1, wherein the second portion comprises the entire first document. 
         [0059]    Example 5 includes the subject matter of example 1, wherein the first permissioning setting comprises an indication that at least one of the following classes of recipients shall have access to the first portion of the first document: public, followers, contacts, user-defined groups. 
         [0060]    Example 6 includes the subject matter of example 1, wherein the first permissioning setting comprises an indication that one or more particular levels of contacts shall have access to the first portion of the first document. 
         [0061]    Example 7 includes the subject matter of example 1, wherein the instructions to encrypt the first portion further comprise instructions to encrypt the first portion using the Advanced Encryption Standard (AES). 
         [0062]    Example 8 includes the subject matter of example 1, wherein the first permissioning setting comprises an indication that the first recipient may read the first document but may not share the first document. 
         [0063]    Example 9 includes the subject matter of example 1, wherein the first permissioning setting comprises an indication that the first recipient may read and share the first document. 
         [0064]    Example 10 includes the subject matter of example 1, wherein the first permissioning setting further comprises an indication that the first recipient may share the first document with the general public. 
         [0065]    Example 11 is a system comprising: a memory; and one or more processing units, communicatively coupled to the memory, wherein the memory stores instructions to configure the one or more processing units to: receive an indication of a first portion of a first document; receive a first permissioning setting for the first portion; receive an indication of a first recipient for the first portion; generate a first encryption key for the first portion based, at least in part, on the first permissioning setting for the first portion and the indicated first recipient of the first portion; and transmit the first document to the first recipient. 
         [0066]    Example 12 includes the subject matter of example 11, wherein the instructions are further configured to cause the one or more processing units to: receive an indication of a second portion of the first document; receive a second permissioning setting for the second portion; receive an indication of a second recipient for the second portion; generate a second encryption key for the second portion based, at least in part, on the second permissioning setting for the second portion and the indicated second recipient of the second portion; and encrypt the second portion using the second generated encryption key for the second portion, wherein the first portion and the second portion of the first document are different. 
         [0067]    Example 13 includes the subject matter of example 11, wherein the first portion comprises the entire first document. 
         [0068]    Example 14 includes the subject matter of example 11, wherein the second portion comprises the entire first document. 
         [0069]    Example 15 includes the subject matter of example 11, wherein the first permissioning setting comprises an indication that at least one of the following classes of recipients shall have access to the first portion of the first document: public, followers, contacts, user-defined groups. 
         [0070]    Example 16 includes the subject matter of example 11, wherein the first permissioning setting comprises an indication that one or more particular levels of contacts shall have access to the first portion of the first document. 
         [0071]    Example 17 includes the subject matter of example 11, wherein the instructions to encrypt the first portion further comprise instructions to encrypt the first portion using the Advanced Encryption Standard (AES). 
         [0072]    Example 18 includes the subject matter of example 11, wherein the first permissioning setting comprises an indication that the first recipient may read the first document but may not share the first document. 
         [0073]    Example 19 includes the subject matter of example 11, wherein the first permissioning setting comprises an indication that the first recipient may read and share the first document. 
         [0074]    Example 20 includes the subject matter of example 11, wherein the first permissioning setting further comprises an indication that the first recipient may share the first document with the general public. 
         [0075]    Example 21 is a computer-implemented method, comprising: receiving an indication of a first portion of a first document; receiving a first permissioning setting for the first portion; receiving an indication of a first recipient for the first portion; generating a first encryption key for the first portion based, at least in part, on the first permissioning setting for the first portion and the indicated first recipient of the first portion; encrypting the first portion using the first generated encryption key for the first portion; and transmit the first document to the first recipient. 
         [0076]    Example 22 includes the subject matter of example 21, further comprising: receiving an indication of a second portion of the first document; receiving a second permissioning setting for the second portion; receiving an indication of a second recipient for the second portion; generating a second encryption key for the second portion based, at least in part, on the second permissioning setting for the second portion and the indicated second recipient of the second portion; and encrypting the second portion using the second generated encryption key for the second portion, wherein the first portion and the second portion of the first document are different. 
         [0077]    Example 23 includes the subject matter of example 21, wherein the first permissioning setting comprises an indication that one or more particular levels of contacts shall have access to the first portion of the first document. 
         [0078]    Example 24 includes the subject matter of example 21, wherein the first permissioning setting comprises an indication that the first recipient may read the first document but may not share the first document. 
         [0079]    Example 25 includes the subject matter of example 21, wherein the first permissioning setting comprises an indication that the first recipient may read and share the first document. 
         [0080]    In the foregoing description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the disclosed embodiments. It will be apparent, however, to one skilled in the art that the disclosed embodiments may be practiced without these specific details. In other instances, structure and devices are shown in block diagram form in order to avoid obscuring the disclosed embodiments. References to numbers without subscripts or suffixes are understood to reference all instance of subscripts and suffixes corresponding to the referenced number. Moreover, the language used in this disclosure has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter, resort to the claims being necessary to determine such inventive subject matter. Reference in the specification to “one embodiment” or to “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least one disclosed embodiment, and multiple references to “one embodiment” or “an embodiment” should not be understood as necessarily all referring to the same embodiment. 
         [0081]    It is also to be understood that the above description is intended to be illustrative, and not restrictive. For example, above-described embodiments may be used in combination with each other and illustrative process steps may be performed in an order different than shown. Many other embodiments will be apparent to those of skill in the art upon reviewing the above description. The scope of the invention therefore should be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. In the appended claims, terms “including” and “in which” are used as plain-English equivalents of the respective terms “comprising” and “wherein.”