U.S. patent application number 14/201705 was filed with the patent office on 2014-07-03 for obscuring digital content items.
This patent application is currently assigned to AMAZON TECHNOLOGIES, INC.. The applicant listed for this patent is AMAZON TECHNOLOGIES, INC.. Invention is credited to Noah L. Callaway, Samuel S. Gigliotti, Ryan J. Snodgrass, Charles P. Vaughn.
Application Number | 20140189499 14/201705 |
Document ID | / |
Family ID | 50441610 |
Filed Date | 2014-07-03 |
United States Patent
Application |
20140189499 |
Kind Code |
A1 |
Gigliotti; Samuel S. ; et
al. |
July 3, 2014 |
OBSCURING DIGITAL CONTENT ITEMS
Abstract
A user device receives a content item and a script associated
with the content item. The user device stores an obfuscated version
of the content item and an associated style sheet in memory. The
user device dynamically updates the style sheet stored in the
memory using the script to remove the obfuscation from the
obfuscated version of the content item when the content item is
presented in a web browser running on the user device.
Inventors: |
Gigliotti; Samuel S.;
(Seattle, WA) ; Snodgrass; Ryan J.; (Kirkland,
WA) ; Vaughn; Charles P.; (Seattle, CA) ;
Callaway; Noah L.; (Seattle, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
AMAZON TECHNOLOGIES, INC. |
Reno |
NV |
US |
|
|
Assignee: |
AMAZON TECHNOLOGIES, INC.
Reno
NV
|
Family ID: |
50441610 |
Appl. No.: |
14/201705 |
Filed: |
March 7, 2014 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13186340 |
Jul 19, 2011 |
8700991 |
|
|
14201705 |
|
|
|
|
Current U.S.
Class: |
715/236 |
Current CPC
Class: |
G06F 40/154 20200101;
G06F 40/14 20200101; G06F 2221/032 20130101; G06F 21/84
20130101 |
Class at
Publication: |
715/236 |
International
Class: |
G06F 17/22 20060101
G06F017/22 |
Claims
1. A method comprising: sending a request for a content item to a
server by a user device; receiving the content item and a script
associated with the content item by the user device; using the
script by the user device to perform obfuscation of the content
item and generate an obfuscated version of the content item;
storing the obfuscated version of the content item and an
associated style sheet in memory of the user device; and
dynamically updating the style sheet stored in the memory using the
script to remove the obfuscation from the obfuscated version of the
content item when the content item is presented in a web browser
running on the user device.
2. The method of claim 1, wherein performing the obfuscation of the
content item comprises: selecting one or more HTML tags; inserting
a plurality of random text portions at a plurality of random
locations in the content item; assigning the selected HTML tags to
the plurality of random text portions; and associating a cascading
style sheet (CSS) class and an identifier with each random text
portion.
3. The method of claim 1, wherein: the content item is a partially
obfuscated content item that has undergone initial obfuscation;
using the script by the user device to perform the obfuscation of
the content item comprises performing further obfuscation of the
partially obfuscated content item; and removing the obfuscation
from the obfuscated version of the content item comprises removing
the initial obfuscation and the further obfuscation from the
obfuscated version of the content item.
4. The method of claim 1, wherein the content item is modified
without user input using the script, wherein the script comprises
an obfuscation algorithm that obfuscates the content item based on
at least one of inserting a plurality of new text portions at a
plurality of locations in the content item or repositioning one or
more existing text portions within the content item.
5. The method of claim 1, wherein the script dynamically updates
the style sheet by adding one or more style sheet rules that remove
the obfuscation from the obfuscated version of the content
item.
6. A user device, comprising: a memory; and a processing device,
coupled to the memory, to: receive a content item and a script
associated with the content item; store an obfuscated version of
the content item and an associated style sheet in the memory; and
dynamically update the style sheet stored in the memory using the
script to remove the obfuscation from the obfuscated version of the
content item when the content item is presented in a web browser
running on the processing device.
7. The system of claim 6, wherein the processing device is further
to: perform obfuscation of the content item to generate the
obfuscated version of the content item based on modifying the
content item using an obfuscation algorithm included in the
script.
8. The system of claim 7, wherein performing the obfuscation of the
content item comprises: selecting one or more HTML tags; inserting
a plurality of random text portions at a plurality of random
locations in the content item; assigning the selected HTML tags to
the plurality of random text portions; and associating a cascading
style sheet (CSS) class and an identifier with each random text
portion.
9. The system of claim 6, wherein the received content item
comprises the obfuscated version of the content item.
10. The system of claim 6, wherein the received content item is a
partially obfuscated content item that has undergone initial
obfuscation, and wherein the processing device is further to; use
the received script to perform additional obfuscation of the
partially obfuscated content item; wherein removing the obfuscation
from the obfuscated version of the content item comprises removing
the initial obfuscation and the further obfuscation from the
obfuscated version of the content item.
11. The system of claim 6, wherein the content item has been
modified without user input and wherein the obfuscation comprises
at least one of a plurality of new text portions inserted at a
plurality of locations in the content item or a repositioning of
one or more existing text portions within the content item.
12. The system of claim 6, wherein the script dynamically updates
the style sheet by adding one or more style sheet rules that remove
the obfuscation from the obfuscated version of the content
item.
13. The system of claim 6, wherein the processing device is further
to: receive a request to store the content item to a persistent
storage; and store the obfuscated version of the content item to
the persistent storage.
14. A non-transitory computer readable storage medium including
instructions that, when executed by a processing device, cause the
processing device to perform operations comprising: receiving a
content item and a script associated with the content item; storing
an obfuscated version of the content item and an associated style
sheet in the memory; and dynamically updating the style sheet
stored in the memory using the script to remove the obfuscation
from the obfuscated version of the content item when the content
item is presented in a web browser running on the processing
device.
15. The non-transitory computer readable storage medium of claim
14, the operations further comprising: performing obfuscation of
the content item to generate the obfuscated version of the content
item based on modifying the content item using an obfuscation
algorithm included in the script.
16. The non-transitory computer readable storage medium of claim
14, wherein the received content item comprises the obfuscated
version of the content item.
17. The non-transitory computer readable storage medium of claim
14, wherein the received content item is a partially obfuscated
content item that has undergone initial obfuscation, the operations
further comprising: using the received script to perform additional
obfuscation of the partially obfuscated content item; wherein
removing the obfuscation from the obfuscated version of the content
item comprises removing the initial obfuscation and the further
obfuscation from the obfuscated version of the content item.
18. The non-transitory computer readable storage medium of claim
14, wherein the content item has been modified without user input
and wherein the obfuscation comprises at least one of a plurality
of new text portions inserted at a plurality of locations in the
content item or a repositioning of one or more existing text
portions within the content item.
19. The non-transitory computer readable storage medium of claim
14, wherein the script dynamically updates the style sheet by
adding one or more style sheet rules that remove the obfuscation
from the obfuscated version of the content item.
20. The non-transitory computer readable storage medium of claim
14, the operations further comprising: receiving a request to store
the content item to a persistent storage; and storing the
obfuscated version of the content item to the persistent storage.
Description
RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 13/186,340, filed Jul. 19, 2011, which is
herein incorporated by reference.
BACKGROUND
[0002] A large and growing population of users is enjoying
entertainment through the consumption of digital content items,
such as electronic books or "eBooks." The users employ various
electronic devices to read eBooks. Among these electronic devices
are electronic book readers, cellular telephones, personal digital
assistants (PDAs), portable media players, tablet computers,
netbooks, personal computers, and the like. A user can obtain
access to an eBook by downloading it from a content provider or by
accessing a content provider website via a web browser. However,
modern web browsers allow users to save the displayed content to a
disk using the "Save As" option in the web browser's toolbar, which
can lead to unauthorized distribution of eBooks.
BRIEF DESCRIPTION OF THE DRAWINGS
[0003] FIG. 1 is a block diagram of an exemplary network
architecture in which embodiments of the invention may operate.
[0004] FIG. 2 is a block diagram of one embodiment of a content
obfuscation subsystem.
[0005] FIG. 3A is a flow diagram of one embodiment of a method for
protecting content presented in a web browser.
[0006] FIG. 3B is a flow diagram of another embodiment of a method
for protecting content presented in a web browser.
[0007] FIG. 3C is a flow diagram of one embodiment of a method
performed by a script executed in a web browser.
[0008] FIG. 4 is a flow diagram of one embodiment of a method for
obfuscating content using random text.
[0009] FIG. 5 is a flow diagram of one embodiment of a method for
obfuscating content using text repositioning.
[0010] FIG. 6 is a flow diagram of one embodiment of a method for
determining the identity of a user involved in unauthorized
distribution of content.
[0011] FIG. 7 illustrates an exemplary item providing system.
DETAILED DESCRIPTION
[0012] Methods and systems for protecting content presented in a
web browser on a user device are described. A user device may be
any computing device that can connect to a network. Examples of
such user devices include electronic book readers, cellular
telephones, personal digital assistants (PDAs), portable media
players, tablet computers, netbooks, and the like. A user device
may connect to a network to obtain content items from an item
providing system or to perform other activities. Content items may
include electronic books (e-books), newspaper articles, journal
articles, magazine articles, news feeds and blog feeds, or any
other documents that contain textual content.
[0013] In one embodiment, the item providing system modifies
content items to obfuscate content and stores the modified content
items. A content item may be obfuscated by adding random words at
random locations within the content item, repositioning words
within the content item, or performing any other modifications to
create an obfuscated version of the content item. When a user
requests a specific content item via a web browser, the web browser
sends a request for the requested content item to the item
providing system. In response, the item providing system sends a
modified version of the requested content item to the web browser,
along with a script that causes obfuscation to be dynamically
removed from the modified content item at the user device when the
content item is presented in the web browser on the user
device.
[0014] In another embodiment, the item providing system creates a
script that is intended to obfuscate the content at the client
before the content is presented in the web browser and to cause the
obfuscation to be removed from the modified content when the
content is presented in the web browser. When the item providing
system receives a browser request for a content item, the item
providing system sends the requested content item to the web
browser, along with a script that performs obfuscation at the
client and causes the obfuscation to be dynamically removed from
the modified content item when it is presented in the web browser.
In yet another embodiment, the item providing system performs some
obfuscation of a content item, and then when the content item is
requested by a web browser, the content item is provided to the web
browser with a script that performs additional obfuscation of the
content item and then causes all the obfuscation to be removed from
the content item when the content item is presented in the web
browser.
[0015] In each of the above-mentioned embodiments, the user can
view the unobfuscated content in the web browser but the user
cannot save the unobfuscated content when viewing it in the web
browser. In particular, when the user tries to save the displayed
content (e.g., via the "Save As" option in the browser toolbar),
the web browser saves the modified version of the requested content
item that was provided by the item providing system.
[0016] Accordingly, an efficient mechanism is provided that
prevents users from saving unobfuscated content displayed in a web
browser to a persistent storage medium, thus preventing
unauthorized use and distribution of the original content.
[0017] FIG. 1 is a block diagram of exemplary network architecture
100 in which embodiments of the invention may operate. The network
architecture 100 may include an item providing system 102 and
multiple user devices 106 coupled to the item providing system 102
via a network 104 (e.g., a public network such as the Internet, a
private network such as a local area network (LAN), or a virtual
private network (VPN)).
[0018] The user devices 106 are variously configured with different
functionality to enable consumption of content items. As discussed
above, the content items may include e-books, newspaper articles,
journal articles, magazine articles, news feeds, and blog feeds,
and other documents that contain textual content. The user devices
106 may include any type of content rendering devices such as
electronic book readers, portable digital assistants, mobile
phones, laptop computers, portable media players, tablet computers,
cameras, video cameras, netbooks, notebooks, personal computers,
desktop computers, gaming consoles, DVD players, media centers, or
any other computing device. Each user device 106 may host a web
browser 110 that allows a user to access and view various content
items provided via the network 104. Web browser 110 may be Internet
Explorer.RTM., Firefox.RTM., Chrome.RTM., Safari.RTM., or any other
browser allowing a user to save the displayed content to a
persistent storage medium (e.g., via the "Save As" option on the
browser toolbar). The above web browsers allow a content item to be
dynamically modified when it is being rendered. However, the web
browsers are unable to store the dynamically changed state of the
content. Hence, if a user attempts to save the content displayed in
the web browser, the web browser 110 saves the content version that
existed prior to the dynamic modification and not the dynamically
modified content displayed in the web browser.
[0019] The item providing system 102 provides items, upgrades,
and/or other information to the user devices 106 registered with
the item providing system 102 via the network 104. The item
providing system 102 also receives various requests, instructions
and other data from the user devices 106 via the network 104. The
item providing system 102 may include one or more machines (e.g.,
one or more server computer systems, routers, gateways) that have
processing and storage capabilities to provide the above
functionality.
[0020] Communication between the item providing system 102 and a
user device 106 may be enabled via any communication
infrastructure. One example of such an infrastructure includes a
combination of a wide area network (WAN) or a VPN and wireless
infrastructure, which allows a user to use the user device 106 to
purchase items and consume items without being tethered to the item
providing system 102 via hardwired links. The wireless
infrastructure may be provided by a wireless carrier system that
can be implemented using various data processing equipment,
communication towers, etc. Alternatively, or in addition, the
wireless carrier system may rely on satellite technology to
exchange information with the user device 106. Yet alternatively,
or in combination, the wireless infrastructure may be provided by
an access point (e.g., WiFi access point) provider system.
[0021] The communication infrastructure may also include a
communication-enabling system that serves as an intermediary in
passing information between the item providing system 102 and the
wireless carrier. The communication-enabling system may communicate
with the wireless carrier via a dedicated channel, and may
communicate with the item providing system 102 via a non-dedicated
communication mechanism, e.g., a public network such as the
Internet.
[0022] Users of the user devices 106 can register with the item
providing system 102 to receive various content items that may
include, for example, e-books, articles and other documents. In one
embodiment, the item providing system 102 includes a content
obfuscation subsystem 108 that modifies content items using an
obfuscation algorithm to create obfuscated versions of the original
content items. The obfuscation algorithm may modify content items
by, for example, adding random text at random locations within the
content items, by repositioning words within the content items, or
by using any other obfuscation techniques. In addition, the content
obfuscation subsystem 108 may create a script (e.g., JavaScript)
intended to undo content modifications produced by the obfuscation
algorithm. The content obfuscation subsystem 108 may associate the
script with each content item modified using the obfuscation
algorithm and store this association in a data store.
[0023] When web browser 110 sends a request for a specific content
item to the item providing system 102, the content obfuscation
subsystem 108 provides a modified version of the requested content
item to the web browser 110, along with the associated script. When
the web browser 110 renders the modified version, the script (shown
as script 112) executes in the web browser 110 to cause obfuscation
to be dynamically removed from the modified content item, resulting
in the display of the unobfuscated content. In one embodiment, the
script 112 dynamically updates a style sheet associated with the
content item by adding cascading style sheet (CSS) rules that
remove obfuscation from the modified version when the content is
rendered in the web browser.
[0024] In another embodiment, the content obfuscation subsystem 108
creates a script that is intended to obfuscate the content at the
user device 106 before the content is presented in the web browser
110 and to cause the obfuscation to be removed from the modified
content when the content is presented in the web browser 110. When
the item providing system 102 receives a browser request for a
content item, the content obfuscation subsystem 108 sends the
requested content item to the web browser 110, along with the
script 112, which when executed in the web browser 110, performs
obfuscation of the content item stored in memory of the user device
106 and then causes the obfuscation to be dynamically removed from
the modified content item when it is presented in the web browser
110. In yet another embodiment, the content obfuscation subsystem
108 performs some obfuscation of a content item, and then when the
content item is requested by the web browser 110, the content item
is provided to the web browser 110 with the script 112 that
performs additional obfuscation of the content item stored in
memory of the user device 108 and then causes all the obfuscation
to be dynamically removed from the content item when the content
item is presented in the web browser 110.
[0025] As discussed above, web browsers do not store the
dynamically modified content state. Hence, if the user attempts to
save the displayed content, the web browser 110 uses the static
version of the displayed content (i.e., the modified content item
received from the item providing system 102 or the content item
modified by the script 112) when creating a copy and saving it to a
storage device specified by the user. Due to obfuscation, the saved
content is hard to understand and has no practical usage.
[0026] FIG. 2 is a block diagram of one embodiment of a content
obfuscation subsystem 200. The content obfuscation subsystem 200
may be the same as the content obfuscation subsystem 108 of FIG. 1.
In one embodiment, the content obfuscation subsystem 200 includes a
content modifier 204, one or more obfuscation algorithms 206, a
script creator 210, a user device interface 214, a user identity
detector 216, a content item store 202, a configuration store 208,
and an obfuscated content store 212. The components of the content
obfuscation subsystem 200 may represent modules that can be
combined together or separated into further modules, according to
some embodiments. Any of the content item store 202, configuration
store 208, and obfuscated content store 212 may be local or remote
and may represent a single data structure or multiple data
structures (databases, repositories, files, etc.) residing on one
or more mass storage devices, such as magnetic or optical storage
based disks, solid-state drives (SSDs) or hard drives.
[0027] The content modifier 204 modifies content items stored in
the content item store 202 to create obfuscated versions of these
content items. The content item store 202 may include content items
such as e-books, newspaper articles, journal articles, magazine
articles, news feeds and blog feeds provided by various publishers
and/or authors. The content items stored in the content item store
202 may be documents or web pages (e.g., HTML documents) having any
format understandable by web browsers. Such documents may be
associated with style sheets (e.g., cascading style sheets (CSS))
that define content presentation characteristics. The style sheets
may be provided by content publishers and authors or may be created
by the item providing system 102. The content modifier 204 may
modify all content items in the content item store 202 or only
content items having specific characteristics (e.g., specific
content item types, copyrighted content items, content items
identified as requiring additional protection, and the like). The
content modifier 204 may store the modified content items in the
obfuscated content store 212. In one embodiment, the content
modifier 204 links each modified content item to a style sheet,
which may be a separate file or part of the same document.
[0028] As discussed, in one embodiment, the content modifier 204
obfuscates content items in advance and stores the obfuscated
content items in the obfuscated content store 212. In another
embodiment, the content modifier 204 obfuscates a content item upon
receiving a request for the content item from a user device.
[0029] The content modifier 204 may use one or more obfuscation
algorithms 206 to modify the content items from the content item
store 202. One exemplary obfuscation algorithm may insert random
text from one or more external sources (e.g., online dictionaries
or other content repositories) at random locations within a content
item. Another exemplary obfuscation algorithm may insert random
text from a content item at random locations within the content
item. Yet another exemplary obfuscation algorithm may reposition
words within a content item.
[0030] Configuration algorithms 206 may be configured using
configuration data in the configuration store 208. For example, the
configuration data may specify an external source to be used for
obfuscation, the size of each inserted portion, the obfuscation
percentage and the like. The configuration data may vary depending
on different content characteristics. For example, the obfuscation
percentage may be higher for e-books and lower for scientific
magazines. In addition, the configuration data may be different for
various browsers (e.g., the obfuscation percentage may vary
depending on the rendering capabilities of different web browsers).
When the configuration data varies depending on a web browser, the
content modifier 204 may create different obfuscated versions for
different browsers and store them in the content item store 202.
Alternatively, the content modifier 204 may create an obfuscated
version on the fly upon receiving a request for a content item from
a specific web browser. Further, the configuration data may vary
depending on an entity associated with a content item, such as a
publisher or an author. In one embodiment, the configuration is
changed randomly in order to make reverse engineering of content
obfuscation performed by the content modifier 204 more
difficult.
[0031] In one embodiment, the content modifier 204 selects a
certain obfuscation algorithm 206 based on predefined parameters
stored in the configuration store 208. For example, the predefined
parameters may be content item characteristics (e.g., content type,
content item size and the like), web browser characteristics, or
preferences of an entity associated with a content item (e.g., a
content item publisher or author). In one embodiment, the content
modifier selects obfuscation algorithms 206 randomly to make
reverse engineering more difficult.
[0032] In one embodiment, the content modifier 204 adds to an
obfuscation portion of the content item a variable parameter for
capturing user identifying information known to a web browser. The
user identifying information may be a user name, a user login ID or
the like. In one embodiment, the variable parameter may require
that the user identifier provided by the web browser be hidden
(e.g., by transforming it into a corresponding set of characters
and then adding this set of characters as the value of the variable
parameter). As will be discussed in more detail below, the user
identifying information may later be used by the user identity
detector 216 to determine which user has distributed the obfuscated
content.
[0033] The script creator 210 creates scripts (e.g., JavaScripts)
intended to undo content modifications produced by individual
obfuscation algorithms, associates each content item modified using
a specific obfuscation algorithm 206 with a script corresponding to
this obfuscation algorithm 206, and stores these associations in
the obfuscated content store 212.
[0034] In one embodiment, the script creator 210 creates a script
that dynamically updates a style sheet associated with a content
item by adding CSS rules that remove obfuscation from the modified
version of the content item when the content item is rendered in
the web browser. For example, the CSS rules may require that the
random text inserted into the modified content item as part of
obfuscation be invisible when this content item is displayed in the
web browser. In another example, the CSS rules may require that
repositioning of text portions in the modified content item be
undone when this content item is displayed in the web browser.
[0035] The user device interface 214 facilitates communication with
user devices. In particular, when a web browser hosted by a user
device sends a request for a specific content item to the item
providing system 102, the user device interface 214 provides a
modified version of the requested content item and the associated
script to the web browser. When the web browser renders the
modified version, the script dynamically updates the style sheet of
the modified content item to add corresponding CSS rules that
remove obfuscation from the modified version.
[0036] In another embodiment, the content modifier 204 does not
perform obfuscation of the content item or performs only partial
obfuscation of the content item. Instead, the entire obfuscation or
partial obfuscation is performed at the user device. In this other
embodiment, the script creator 10 creates a script that is intended
to obfuscate the content item at the user device before the content
is presented in the web browser and to cause the obfuscation to be
removed from the modified content item when the content item is
presented in the web browser. Original or partially modified
content items are associated with respective scripts and these
associations are stored in the obfuscated content store 212. When
the user device interface 214 receives a browser request for a
content item, it sends the requested content item to the web
browser, along with a corresponding script. At the web browser, the
script performs obfuscation or additional obfuscation of the
content item, and stores the content item with a corresponding
style sheet (created by the script or provided to the user device
by the content obfuscation subsystem 200) in memory of the user
device. The script then dynamically updates the style sheet stored
in memory of the user device to add CSS rules that remove the
obfuscation when the content item is presented in the web
browser.
[0037] As discussed above, web browsers do not store the
dynamically modified content state. Hence, if the user attempts to
save the displayed content, the web browser uses the obfuscated
content item when creating a copy and saving it to a specified
storage device as a web page archive file (e.g., .mht or .mhtml
file).
[0038] Once the user creates a web page archive file, the user may
share it with others, thus facilitating unauthorized distribution
of content. A publisher or an author of the content or an entity
associated with the item providing system 102 may become aware of
this unauthorized distribution and may send the distributed content
item to the content obfuscation subsystem 200. In this case, the
user identity detector 216 may analyze the distributed content item
to determine whether it includes user identifying information. If
so, the user identity detector 216 may extract the user identifying
information and use it to determine the identity of the user. This
may be especially useful if the user was able to remove obfuscation
from content before saving the content and sharing it with
others.
[0039] FIGS. 3A, 3B, 4, 5 and 6 are flow diagrams of various
embodiments of server-side methods. The methods are performed by
processing logic that may comprise hardware (circuitry, dedicated
logic, etc.), software (such as is run on a general purpose
computer system or a dedicated machine), or a combination of both.
In one embodiment, the methods are performed by the item providing
system 102 of FIG. 1.
[0040] FIG. 3A is a flow diagram of one embodiment of a method 300
for protecting content presented in a web browser. Method 300 may
begin with the item providing system identifying a content item to
be rendered by a web browser (block 302). The content item may be
provided by a publisher or an author or created by the item
providing system. The content item may be an HTML document or any
other document that can be accessed via a web browser.
[0041] At block 304, the item providing system identifies an
obfuscation algorithm for the content item. The item providing
system may select an obfuscation algorithm based on characteristics
of the content item (e.g., content item type, content item size),
characteristics of a web browser that will present the content item
(e.g., browser rendering capability), or a preference of an entity
associated with the content item (e.g., a publisher or an author).
At block 306, the item providing system configures the obfuscation
algorithm based on configuration data (e.g., obfuscation
percentage, maximum size of a resulting content item, source of
random text to be added for obfuscation). In one embodiment, the
selection of an obfuscation algorithm and/or the configuration of
the obfuscation algorithm is changed randomly to make reverse
engineering more difficult.
[0042] At block 308, the item providing system modifies the content
item using the obfuscation algorithm. At block 310, the item
providing system creates a script corresponding to the obfuscation
algorithm. At block 312, the item providing system associates the
obfuscated content with the script and stores the association in a
data store. Exemplary embodiments of content obfuscation methods
will be discussed in more detail below in conjunction with FIGS. 4
and 5.
[0043] At block 314, the item providing system receives a request
for a content item from a web browser. At block 316, the item
providing system identifies a modified version of the content item
and provides the modified version and the associated script to the
web browser. In one embodiment, the item providing system also
provides a style sheet of the content item.
[0044] In another embodiment, the item providing system does not
obfuscate a content item until receiving a web browser request for
this content item. In particular, the item providing system may
perform blocks 302, 304, 306 and 310, and then associate the
content item with the script at block 312. In response to receiving
a request for the content item at block 314, the item providing
system may perform block 308, and then provide the resulting
obfuscated content with a corresponding script to the web browser
at block 316.
[0045] When the web browser renders the modified content item, the
script is dynamically executed to cause the obfuscation to be
removed from the modified content item. In one embodiment, the
script dynamically updates the style sheet of the content item to
add CSS rules that undo the obfuscation.
[0046] FIG. 3B is a flow diagram of another embodiment of a method
for protecting content presented in a web browser. Method 320 may
begin with the item providing system identifying a content item to
be rendered by a web browser (block 322), identifying an
obfuscation algorithm for the content item (block 324), and
configuring the obfuscation algorithm based on configuration data
(block 326).
[0047] At block 328, the item providing system creates a script
corresponding to the obfuscation algorithm. The script is intended
to perform obfuscation of the content item and then to cause the
obfuscation to be dynamically removed when the content item is
presented in the web browser. At block 330, the item providing
system associates the content item with the script and stores the
association in a data store. At block 332, the item providing
system receives a request for a content item from a web browser. At
block 316, the item providing system provides the content item and
the associated script to the web browser. In one embodiment, the
item providing system also provides a style sheet of the content
item.
[0048] When the web browser receives the content item and the
script (and optionally the style sheet), the script obfuscates the
content item, creates or updates the style sheet and stores the
content item and the style sheet in memory of the user device. The
script then dynamically updates the style sheet of the content item
to add CSS rules that undo the obfuscation.
[0049] FIG. 3C is a flow diagram of one embodiment of a method 350
performed by a script that is executed in a web browser. At block
352, the script obfuscates a content item and creates a style sheet
for the content item. Alternatively, the script updates an existing
style sheet provided by the item providing system with the content
item. At block 354, the script stores the content item and style
sheet in memory of the user device. At block 356, the script
dynamically updates the style sheet to add CSS rules that remove
obfuscation when the content is displayed in the web browser.
[0050] FIG. 4 is a flow diagram of one embodiment of a method 400
for obfuscating a content item using random text. Method 400 may be
performed by the item providing system or a JavaScript executing on
the user device. Method 400 may begin with selecting one or more
tags (e.g., HTML tags) to be used for obfuscation. The tags may
include a paragraph tag, a bold tag, an italic tag, and so on
(block 402). At block 404, random text is inserted at multiple
random locations within the content item. The random text may
include characters selected from different places in the content
item or characters selected from various external sources (e.g.,
online dictionaries, content provider websites, or any other
content repository).
[0051] At block 406, one of the selected tags is assigned to one or
more inserted text portions. At block 408, a CSS class (e.g., span
class) and a CSS class ID are associated with each inserted text
portion.
[0052] For example, a paragraph tag <p> may be assigned to
the content portion "this is a test" and the resulting text may be
converted into the following fragment:
TABLE-US-00001 <p> th<span
class="RANDOM_ID_1"><b>RANDOM_TEXT</b></span&-
gt;is is a <span
class="RANDOM_ID_2"><i>MORE_RANDOM_TEXT</i>
</span> test </p>
[0053] When the style sheet is updated to add CSS rules that
prevent display of inserted text, the added CSS rules for the above
example may include ".RANDOM_ID.sub.--1 {display:none}" and
".RANDOM_ID.sub.--2 {display:none}."
[0054] In the above example, if a user attempts to save the
displayed content item, the saved file will include the following
text: "thRANDOM_TEXTis is aMORE_RANDOM_TEXT test."
[0055] FIG. 5 is a flow diagram of one embodiment of a method 500
for obfuscating content using text repositioning. Method 500 may
begin with the item providing system repositioning words in a
content item (block 502). In one embodiment, words may be
repositioned using CSS positioning.
[0056] At block 504, the item providing system stores the
obfuscated content item in a data store. At block 506, the item
providing system creates a JavaScript, which when executed, updates
the style sheet to add CSS rules that undo repositioning. At block
508, the item providing system associates the JavaScript with the
obfuscated content.
[0057] In another embodiment, the repositioning is performed by the
JavaScript to obfuscate the content when the JavaScript is executed
in the web browser. The JavaScript then dynamically updates a
corresponding style sheet to add CSS rules to undo the
repositioning.
[0058] FIG. 6 is a flow diagram of one embodiment of a method 600
for determining the identity of a user involved in unauthorized
distribution of content. Method 600 may begin when the item
providing system modifies a content item to obfuscate it and adds a
variable parameter for capturing user identifying information
(block 602).
[0059] Subsequently, at block 604, the item providing system
receives an indication of unauthorized distribution of a content
item. For example, the item providing system may detect that a
content item is distributed to or from an authorized user. In
another example, the item providing system may receive a content
item from a publisher or author with a message indicating
unauthorized distribution of the content item.
[0060] In response, the item providing system analyzes the content
item to extract the value of the user identifier parameter (block
606). At block 608, the item providing system determines the user
identity based on the extracted value (block 608).
[0061] FIG. 7 illustrates an exemplary item providing system 700 in
the form of a computer system within which a set of instructions,
for causing the machine to perform any one or more of the
methodologies discussed herein, may be executed. In some
embodiments, the machine may be connected (e.g., networked) to
other machines in a LAN, an intranet, an extranet, or the Internet.
The machine may operate in the capacity of a server machine in
client-server network environment. The machine may be a personal
computer (PC), a set-top box (STB), a server, a network router,
switch or bridge, or any machine capable of executing a set of
instructions (sequential or otherwise) that specify actions to be
taken by that machine. Further, while only a single machine is
illustrated, the term "machine" shall also be taken to include any
collection of machines that individually or jointly execute a set
(or multiple sets) of instructions to perform any one or more of
the methodologies discussed herein.
[0062] The exemplary computer system 700 includes a processing
system (processor) 702, a main memory 704 (e.g., read-only memory
(ROM), flash memory, dynamic random access memory (DRAM) such as
synchronous DRAM (SDRAM)), a static memory 706 (e.g., flash memory,
static random access memory (SRAM)), and a data storage device 716,
which communicate with each other via a bus 706.
[0063] Processor 702 represents one or more general-purpose
processing devices such as a microprocessor, central processing
unit, or the like. More particularly, the processor 702 may be a
complex instruction set computing (CISC) microprocessor, reduced
instruction set computing (RISC) microprocessor, very long
instruction word (VLIW) microprocessor, or a processor implementing
other instruction sets or processors implementing a combination of
instruction sets. The processor 702 may also be one or more
special-purpose processing devices such as an application specific
integrated circuit (ASIC), a field programmable gate array (FPGA),
a digital signal processor (DSP), network processor, or the like.
The processor 702 is configured to execute the server text
illustration subsystem 108 for performing the operations and steps
discussed herein.
[0064] The computer system 700 may further include a network
interface device 722. The computer system 700 also may include a
video display unit 710 (e.g., a liquid crystal display (LCD) or a
cathode ray tube (CRT)), an alphanumeric input device 712 (e.g., a
keyboard), a cursor control device 714 (e.g., a mouse), and a
signal generation device 720 (e.g., a speaker).
[0065] A drive unit 716 may include a computer-readable medium 724
on which is stored one or more sets of instructions (e.g.,
instructions of server text illustration subsystem 108) embodying
any one or more of the methodologies or functions described herein.
The instructions of the server text illustration subsystem 108 may
also reside, completely or at least partially, within the main
memory 704 and/or within the processor 702 during execution thereof
by the computer system 700, the main memory 704 and the processor
702 also constituting computer-readable media. The instructions of
the server text illustration subsystem 108 may further be
transmitted or received over a network via the network interface
device 722.
[0066] While the computer-readable storage medium 724 is shown in
an exemplary embodiment to be a single medium, the term
"computer-readable storage medium" should be taken to include a
single medium or multiple media (e.g., a centralized or distributed
database, and/or associated caches and servers) that store the one
or more sets of instructions. The term "computer-readable storage
medium" shall also be taken to include any medium that is capable
of storing, encoding or carrying a set of instructions for
execution by the machine and that cause the machine to perform any
one or more of the methodologies of the present invention. The term
"computer-readable storage medium" shall accordingly be taken to
include, but not be limited to, solid-state memories, optical
media, and magnetic media.
[0067] In the above description, numerous details are set forth. It
will be apparent, however, to one of ordinary skill in the art
having the benefit of this disclosure, that embodiments of the
invention may be practiced without these specific details. In some
instances, well-known structures and devices are shown in block
diagram form, rather than in detail, in order to avoid obscuring
the description.
[0068] Some portions of the detailed description are presented in
terms of algorithms and symbolic representations of operations on
data bits within a computer memory. These algorithmic descriptions
and representations are the means used by those skilled in the data
processing arts to most effectively convey the substance of their
work to others skilled in the art. An algorithm is here, and
generally, conceived to be a self-consistent sequence of steps
leading to a desired result. The steps are those requiring physical
manipulations of physical quantities. Usually, though not
necessarily, these quantities take the form of electrical or
magnetic signals capable of being stored, transferred, combined,
compared, and otherwise manipulated. It has proven convenient at
times, principally for reasons of common usage, to refer to these
signals as bits, values, elements, symbols, characters, terms,
numbers, or the like.
[0069] It should be borne in mind, however, that all of these and
similar terms are to be associated with the appropriate physical
quantities and are merely convenient labels applied to these
quantities. Unless specifically stated otherwise as apparent from
the above discussion, it is appreciated that throughout the
description, discussions utilizing terms such as "identifying",
"creating", "notifying", "allowing" or the like, refer to the
actions and processes of a computer system, or similar electronic
computing device, that manipulates and transforms data represented
as physical (e.g., electronic) quantities within the computer
system's registers and memories into other data similarly
represented as physical quantities within the computer system
memories or registers or other such information storage,
transmission or display devices.
[0070] Embodiments of the invention also relate to an apparatus for
performing the operations herein. This apparatus may be specially
constructed for the required purposes, or it may comprise a general
purpose computer selectively activated or reconfigured by a
computer program stored in the computer. Such a computer program
may be stored in a computer readable storage medium, such as, but
not limited to, any type of disk including floppy disks, optical
disks, CD-ROMs, and magnetic-optical disks, read-only memories
(ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or
optical cards, or any type of media suitable for storing electronic
instructions.
[0071] The algorithms and displays presented herein are not
inherently related to any particular computer or other apparatus.
Various general purpose systems may be used with programs in
accordance with the teachings herein, or it may prove convenient to
construct a more specialized apparatus to perform the required
method steps. The required structure for a variety of these systems
will appear from the description below. In addition, the present
invention is not described with reference to any particular
programming language. It will be appreciated that a variety of
programming languages may be used to implement the teachings of the
invention as described herein.
[0072] It is to be understood that the above description is
intended to be illustrative, and not restrictive. Many other
embodiments will be apparent to those of skill in the art upon
reading and understanding the above description. The scope of the
invention should, therefore, be determined with reference to the
appended claims, along with the full scope of equivalents to which
such claims are entitled.
* * * * *