US20130046765A1 - Searching encrypted electronic books - Google Patents
Searching encrypted electronic books Download PDFInfo
- Publication number
- US20130046765A1 US20130046765A1 US13/211,191 US201113211191A US2013046765A1 US 20130046765 A1 US20130046765 A1 US 20130046765A1 US 201113211191 A US201113211191 A US 201113211191A US 2013046765 A1 US2013046765 A1 US 2013046765A1
- Authority
- US
- United States
- Prior art keywords
- book
- logical partitions
- index information
- encrypted segments
- content
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000005192 partition Methods 0.000 claims abstract description 95
- 238000013507 mapping Methods 0.000 claims abstract description 21
- 238000000034 method Methods 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 7
- 230000015654 memory Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 230000011218 segmentation Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 4
- 150000001875 compounds Chemical class 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008867 communication pathway Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Definitions
- the disclosure generally relates to the field of searching text in electronic books, in particular to searching encrypted text in electronic books.
- e-book Electronic book (hereinafter “e-book”) readers store encrypted electronic content for a book.
- the encrypted content beneficially prevents unauthorized use and distribution of the e-book.
- the encryption also leads to various challenges. For example, searching the encrypted e-book content becomes a challenge.
- One method to search the e-book content is to decrypt the entire e-book and search the decrypted content. Such a method, however, is inefficient because every search involves decrypting the entire content before a search can be performed.
- Embodiments of the method comprise identifying logical partitions of an e-book having content, the content comprising a plurality of phrases located within one or more of the logical partitions, and creating a plurality of encrypted segments for the e-book, each segment comprising a subset of the e-book content. Additionally, the method comprises storing index information including a mapping between the phrases located within the one or more logical partitions and the plurality of encrypted segments, in which the mapping indicates for a phrase, one or more encrypted segments that include the phrase.
- Embodiments of the computer readable medium store instructions for performing the method for creating and storing index information for an e-book.
- Embodiments of the performed method include identifying one or more logical partitions of an e-book having content, the content including a plurality of phrases located within one or more of the logical partitions, and creating a plurality of encrypted segments for the e-book, with each segment comprising a subset of the e-book content.
- the method includes storing index information including a mapping between the phrases located within the one or more logical partitions and the plurality of encrypted segments, where the mapping indicates, for a phrase, one or more encrypted segments that include the phrase.
- Embodiments of the computer system include a computer readable medium that stores instructions for performing the method for creating and storing index information for an e-book.
- Embodiments of the performed method include identifying one or more logical partitions of an e-book having content, the content including a plurality of phrases located within one or more of the logical partitions, and creating a plurality of encrypted segments for the e-book, with each segment including a subset of the e-book content.
- the method includes storing index information including a mapping between the phrases located within the one or more logical partitions and the plurality of encrypted segments, where the mapping indicates, for a phrase, one or more encrypted segments that include the phrase.
- FIG. 1 is a block diagram illustrating a computing environment for creating and storing index information for e-books that enables efficient searching according to one embodiment.
- FIG. 2 is a block diagram illustrating an indexing module in greater detail for creating index information according to one embodiment.
- FIG. 3 is a block diagram illustrating an eReader module in a client in greater detail according to one embodiment.
- FIG. 4 is a block diagram illustrating an example of a computer for use in the computing environment shown in FIG. 1 according to one embodiment.
- FIG. 5 is a flow diagram illustrating a method for creating and storing index information for e-book content according to one embodiment.
- FIG. 6 is a flow diagram illustrating a method for searching the e-book content using stored index information according to one embodiment.
- the computing environment for creating and storing index information comprises an e-book server 104 and an e-book client 106 communicatively coupled to each other through a network 102 .
- the e-book server 104 is a computing device with a processor and a memory that stores and indexes e-book content.
- the e-book server 104 comprises an e-book database 114 and an indexing module 112 .
- the e-book database 114 receives and stores e-books from an external source (not shown).
- the e-books include electronic content, primarily textual in nature, including electronic books, newspapers, magazines and other textual publications. Additionally, the electronic content is organized into logical partitions such as paragraphs, pages, sub-chapters, and chapters.
- the e-book database 114 also receives and stores metadata associated with the e-book's electronic content indicating locations of logical partitions in the content. Examples of such metadata include the locations of paragraph breaks, page breaks, sub-chapter breaks, and chapter breaks.
- the metadata also indicates the relative hierarchy of logical partitions amongst each other. For example, the metadata may indicate that paragraphs 1-4 are located within page 1.
- the database 114 may store encrypted or decrypted copies of e-books. Additionally, the database 114 receives index information for the e-books from the indexing module 112 and stores such information. The indexing module 112 retrieves e-books from the database 114 and creates index information for the e-books. The created index information indicates the location of the phrases in the encrypted e-book. In one embodiment, the index information maps phrases (i.e., one or more words) in an e-book with e-book segments that include the mapped phrases. An e-book segment is a block of encrypted text from one or more logical partitions in an e-book.
- a segment may not necessarily align with the boundaries of the logical partitions, and a segment may include encrypted text from parts of one or more logical partitions.
- a segment would typically include a subset of the text in the e-book, so that the e-book includes multiple segments.
- the indexing module 112 stores the created index information in the e-book database 114 . The indexing module 112 is further described in reference to FIG. 2 .
- the client 106 is a computing device with a processor and a memory that includes an eReader module 122 for displaying and efficiently searching the e-book content.
- the eReader module 122 retrieves from the e-book server 104 the e-book content and its corresponding index information.
- the eReader module 122 determines from the index information the segments and/or logical partitions that include the searched phrase.
- the eReader module 122 displays identifications for the determined segments and/or logical partitions to the user. For example, the eReader module 122 displays a screen indicating that the phrase “wisdom” is present in logical partition “page 8.”
- the eReader module 122 subsequently receives a selected identification from the user, decrypts the content corresponding to the selection and displays the decrypted content.
- the eReader module 122 searches the decrypted segment, locates the position of the searched phrase in the decrypted segment, and displays the part of the decrypted segment that includes the search phrase.
- the eReader module 122 also places the cursor next to the location of the searched phrase in the displayed part.
- the e-book server 104 creates index information that is beneficially used by the eReader module 122 to conduct efficient searches. Instead of decrypting all of the e-book content, the eReader module 122 uses the index information to locate the relevant segments and decrypts one or more relevant segments for display to the user. Because the eReader module 122 is not decrypting the entire e-book content for the search, the user experience is much improved and the user need not wait for decryption of entire content to see the search results.
- the eReader module 122 in the client 106 and e-book server 104 are communicatively coupled to each other through a network 102 .
- the network 102 represents the communication pathways between the client 106 and the server 104 .
- the network 102 is the Internet.
- the network 102 can also use dedicated or private communications links that are not necessarily part of the Internet.
- FIG. 2 is a block diagram illustrating the indexing module 112 in greater detail according to one embodiment.
- the indexing module 112 comprises a segmentation module 202 , a phrase index module 204 and a phrase storage module 206 .
- the segmentation module 202 retrieves the content for an e-book from the e-book database 114 and creates segments including encrypted content for one or more logical partitions in the e-book. In one embodiment, the segmentation module 202 segments the e-book content based on the metadata associated with the content. For example, the segmentation module 202 may determine from the metadata the boundaries of, or the content within, the logical partitions (such as paragraphs or pages), encrypt the content of one or more logical partitions, and store the encrypted content into a segment. In another embodiment, the segmentation module 202 analyzes the e-book content in the logical partitions to determine textual characteristics indicating boundaries, such as line breaks or line spacing between the text in the e-book.
- the segmentation module 202 treats these textual characteristics as a proxy for boundaries of logical partitions like paragraph, page or chapter breaks.
- the segmentation module 202 then encrypts content within the detected boundaries of the logical partitions and creates segments including the encrypted content. Accordingly, the segments include encrypted versions of the content included in their corresponding logical partitions.
- the segmentation module 202 stores a segmentation index that includes, for each segment, an identification (such as an ordinal number) of the segment and a reference that points to the location of the corresponding logical partition in the e-book.
- the phrase index module 204 creates and stores index information used to locate a phrase in an e-book without decrypting the entire content of the e-book.
- a phrase includes one or more words or a combination of words. For example the word “tug” and three words “tug-of-war” can each be a phrase. In some languages, a phrase can be a compound word that includes parts of two words to form one compound word.
- the index information for an e-book includes a phrase index that maps various phrases with the segments including those phrases.
- the index information also includes a manifest that maps an e-book logical partition to a segment that includes encrypted text for the logical partition. Some or all segments may include encrypted text for multiple logical partitions.
- the manifest indicates the logical partitions corresponding to such segments.
- the manifest indicates a hierarchy of logical partitions that correspond to a segment. For example, the manifest indicates that section 2 of chapter 3 corresponds to segment 6. In another example, the manifest also indicates that section 2 corresponds to “pages 32-34.”
- the phrase index module 204 searches the logical partitions that include decrypted text corresponding to the encrypted text in a segment. Based on the search, the phrase index module 204 determines various phrases included in the segment. Upon detecting a phrase, the phrase index module 204 stores information in a phrase index indicating that the segment includes the detected phrase. The phrase index module 204 repeats this process for various segments, and populates the phrase index with phrases and their corresponding segments. An example entry in the phrase index indicates that phrase “wisdom” is located in segments 8, 12 and 18.
- the phrase index module 204 beneficially stores a proximate, and not an exact location, of a phrase. Because a segment may include more than one phrase, determining a segment that includes a phrase does not lead to determining where exactly the phrase exists in the segment. Accordingly, the phrase index module 204 beneficially prevents an unauthorized user from bypassing decryption and compiling an e-book based on its associated phrase index because the proximate indexing obfuscates the exact ordering of the text.
- the phrase index module 204 analyzes the metadata associated with the e-book content.
- the metadata indicates parts of e-book content that correspond to the various logical partitions.
- the metadata also indicates the relative hierarchy of logical partitions amongst each other.
- the phrase index module 204 determines these logical partitions by analyzing the textual characteristics indicating boundaries, such as by detecting line spacing or line breaks, words like “chapter” or “section,” or numbers indicating a chapter number, section number or page number.
- the phrase index module 204 also determines the relative hierarchy amongst the logical partitions based on the detected words. For example, the phrase index module 204 determines the sections in a chapter after detecting, in a chapter, the word “section” followed by a number.
- the phrase index module 204 determines the segments corresponding to these logical partitions. In one embodiment, the phrase index module 204 determines the corresponding segments based on the segmentation index created by segmentation module 202 . The phrase index module 204 analyzes the segmentation index to determine the storage location for various segments. The phrase index module 204 then compares the storage locations of various segments with storage locations of the encrypted version of the logical partitions, and determines a match between a logical partition and a segment if their storage locations overlap. The matched logical partitions and segments are then stored in the manifest. In this manner, the phrase index module 204 creates a manifest including segments and their corresponding logical partitions. An example entry in a manifest indicates that segment 4 corresponds to “pages 2-3.” Another example entry indicates that segment 4 corresponds to “section 3 of chapter 1.”
- the phrase storage module 206 stores the phrases in the phrase index in a data structure optimized for phrase retrieval.
- the phrases are stored in an ordered tree data structure like a trie.
- FIG. 7 illustrates a tree-based structure, specifically a trie storing phrases beginning with letters “RA” and “RU.” As illustrated in FIG. 7 discussed further below, each node in the tree stores a subsequent letter of a phrase in an e-book. Accordingly, the phrase “ran” is stored in three connected nodes 702 , 710 , 712 , and each connected node stores a letter of the phrase. As described in reference to FIG. 3 below, such storage beneficially allows the eReader module 122 to suggest search phrases as the user types the initial letters of the search phrase.
- the phrase storage module 206 stores phrases starting with different letters, or letter combinations, in different tree data structures. For example, in one embodiment, the phrase storage module 206 stores nodes 702 , 710 , 712 and 714 as a first tree 730 storing phrases beginning with letters “RA,” and stores nodes 702 , 704 , 706 and 708 as a second tree 740 storing phrases beginning with “RU.” Such storage beneficially enables the eReader module 122 to provide a faster and more efficient search experience as described below in reference to FIG. 3 .
- FIG. 3 is a block diagram illustrating an eReader module 122 in a client 106 in greater detail according to one embodiment of the present disclosure.
- the eReader module 122 comprises a storage module 302 , a user interface (UI) module 304 , a search module 306 and a decryption module 308 .
- UI user interface
- the storage 308 receives and stores encrypted e-books and their corresponding index information from the e-book server 104 .
- the UI module 304 provides the interface between the user and the eReader module 122 .
- the UI interface 304 receives user input indicating various requests from the user such as selection of a particular e-book, a particular page in the e-book or a search request for searching a phrase in the e-book.
- the UI module 302 displays the requested cover of the e-book, page of the e-book, or a search bar for receiving the search phrase from the user.
- the UI module 302 transmits the initial letters to the search module 306 , receives suggested search phrases from the search module 306 and displays the suggested search phrases to the user.
- the UI module 304 transmits the search phrase to the search module 306 , receives the search results from the search module 306 and displays the search results to the user.
- the search module 306 determines and recommends potential search phrases to the user. After receiving the first letter from the UI module 304 , the search module 306 analyzes the phrase index associated with the active e-book (i.e., the e-book currently being searched by the user). The search module 306 then determines the tree data structures having root nodes beginning the received letters. If only one such tree exists, the search module 306 loads the tree in memory for further analysis. Otherwise, the search module 306 waits to receive the next letter and analyzes the trees with the root node and subsequent node matching the two received letters. The search module 304 keeps receiving letters until only one tree includes all the letters in the received order. The search module 304 then loads the matched tree in memory, traverses the nodes of the loaded tree to determine the node storing the last received letter, and recommends search phrases for the user based on the nodes following the determined node with the last received letter.
- the search module 306 After receiving the first letter from the UI module 304 , the search module 306 analyzes the
- the search module 304 loads tree 700 into the memory, traverses the matched tree and determines the location of node 710 that includes the letter “A” following the letter “R.”
- the search module 304 determines that the only existing phrases that start with “RA” in the e-book are “Ran” and “Rag” because node 710 is only followed by nodes 712 and 714 . Accordingly, the user may successfully search for “Ran” or “Rag,” and any other search phrase starting with “RA” would not lead to any results.
- the search module 306 therefore uses the tree data structure to beneficially suggest the two search phrases with potential results to the user.
- tree 700 is divided into two separate trees 730 , 740 . Accordingly, the search module 304 loads tree 730 after the search module 306 receives letters “R” followed by “A” from the UI module 304 . Because tree 730 only includes phrases beginning with “RA” instead of “R,” tree 730 is smaller than tree 700 .
- the relatively smaller size of tree 730 beneficially enables the search module 304 to load the tree in the memory and traverse the tree faster than the time required to load and traverse the larger tree 700 . Accordingly, the smaller tree 730 beneficially enables the search module 304 to recommend suggested search phrases in a fast and efficient manner to the user.
- the search module 306 receives a selected search phrase from the user and searches the index information to determine the location of the search phrase in the e-book. To perform this search, the search module 306 analyzes the index information and determines the corresponding segments that include the search phrase. The search module 304 then transmits identifications of the determined segments to the UI module 304 and the UI module displays the segment identifications as search results.
- the search module 306 analyzes the manifest to determine the logical partitions (i.e., page numbers, chapter numbers, etc.) corresponding to the determined segments. The search module 306 then transmits the determined logical partitions to the UI module 304 and the UI module 304 displays the determined logical partitions as search results.
- the index information indicates a hierarchy of logical partitions corresponding to the determined segment, and the search module 306 transmits the corresponding hierarchy for display to the user. For example, the index information may indicate that page 3 includes paragraphs 18-22. Accordingly, if a searched phrase is present in paragraph 20, the hierarchy included in the index information is used to display an indication that the searched phrase is present on page 3 at paragraph 20.
- the search module 306 receives a search phrase and an identification for a selected logical partition or a segment from the UI module 304 .
- the search module 306 transmits the received identification to the decryption module 308 , receives decrypted data for the identified segment or logical partition, and searches the decrypted data for the location of the search phrase.
- the search module 306 then transmits the decrypted data and location of the search phrase to the UI module 304 , and the UI module 304 displays the decrypted data and highlights the search phrase in the displayed data.
- the decryption module 308 decrypts the encrypted e-book content for display to the user.
- the decryption module 308 receives a request from the UI module 304 or the search module 306 indicating the part of the e-book requested or searched by the user.
- the decryption module 308 receives an identification of a requested logical partition or a segment from the UI module 304 or the search module 306 , retrieves the identified encrypted part from the e-book, decrypts the encrypted part and transmits the decrypted part to the UI module 304 or the search module 306 .
- FIG. 4 is a high-level block diagram illustrating an example computer 400 .
- the computer 400 includes at least one processor 402 coupled to a chipset 404 .
- the chipset 404 includes a memory controller hub 420 and an input/output (I/O) controller hub 422 .
- a memory 406 and a graphics adapter 412 are coupled to the memory controller hub 420 , and a display 418 is coupled to the graphics adapter 412 .
- a storage device 408 , keyboard 410 , pointing device 414 , and network adapter 416 are coupled to the I/O controller hub 422 .
- Other embodiments of the computer 400 have different architectures.
- the storage device 408 is a non-transitory computer-readable storage medium such as a hard drive, compact disk read-only memory (CD-ROM), DVD, or a solid-state memory device.
- the memory 406 holds instructions and data used by the processor 402 .
- the pointing device 414 is a mouse, track ball, or other type of pointing device, and is used in combination with the keyboard 410 to input data into the computer system 400 .
- the graphics adapter 412 displays images and other information on the display 418 .
- the network adapter 416 couples the computer system 400 to one or more computer networks.
- the computer 400 is adapted to execute computer program modules for providing functionality described herein.
- module refers to computer program logic used to provide the specified functionality.
- a module can be implemented in hardware, firmware, and/or software.
- program modules are stored on the storage device 408 , loaded into the memory 406 , and executed by the processor 402 .
- the types of computers 400 used by the entities of FIGS. 1-3 can vary depending upon the embodiment and the processing power required by the entity.
- the indexing module 112 might comprise multiple blade servers working together to provide the functionality described herein.
- the computers 400 can lack some of the components described above, such as keyboards 410 , graphics adapters 412 , and displays 418 .
- FIG. 5 is a flow diagram illustrating a method for creating and storing index information for e-book content according to one embodiment of the present disclosure.
- the e-book server 104 receives content for an e-book and divides the content into segments.
- the e-book server 104 creates a phrase index by identifying phrases and their corresponding segments in the e-book.
- the e-book server 104 stores the created phrase index.
- the e-book server 104 also creates (step 508 ) and stores (step 510 ) a manifest for the e-book.
- the created manifest includes a mapping between the logical partitions and segments that include the encrypted text of the partitions. Accordingly, in step 508 , the e-book server 104 identifies e-book logical partitions corresponding to various segments and, in step 510 , stores the mapping between the segments and the logical partitions in the manifest.
- FIG. 6 is a flow diagram illustrating a method for searching the e-book content using stored index information according to one embodiment of the present disclosure.
- the eReader module 122 receives a search phrase and, in step 604 , determines the segments of the e-book that include the received search phrase. The eReader module 122 determines the segments or the logical partitions based on the index information for the e-book.
- the eReader module 122 displays the list of identifications for the determined segments or logical partitions to the user and the user selects a segment or a logical partition from the list.
- the eReader module 122 receives the selection, and in step 610 , decrypts the segment corresponding to the selection, and displays the decrypted segment to the user.
- Coupled and “connected” along with their derivatives. It should be understood that these terms are not intended as synonyms for each other. For example, some embodiments may be described using the term “connected” to indicate that two or more elements are in direct physical or electrical contact with each other. In another example, some embodiments may be described using the term “coupled” to indicate that two or more elements are in direct physical or electrical contact. The term “coupled,” however, may also mean that two or more elements are not in direct physical or electrical contact with each other, but yet still co-operate or interact with each other. The embodiments are not limited in this context.
- the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion.
- a process, method, article or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article or apparatus.
- “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
Description
- 1. Field of Disclosure
- The disclosure generally relates to the field of searching text in electronic books, in particular to searching encrypted text in electronic books.
- 2. Background Information
- Electronic book (hereinafter “e-book”) readers store encrypted electronic content for a book. The encrypted content beneficially prevents unauthorized use and distribution of the e-book. The encryption, however, also leads to various challenges. For example, searching the encrypted e-book content becomes a challenge. One method to search the e-book content is to decrypt the entire e-book and search the decrypted content. Such a method, however, is inefficient because every search involves decrypting the entire content before a search can be performed.
- The above-described and other issues are addressed by a computer-implemented method, computer-readable medium, and computer system for creating and storing index information for an e-book. Embodiments of the method comprise identifying logical partitions of an e-book having content, the content comprising a plurality of phrases located within one or more of the logical partitions, and creating a plurality of encrypted segments for the e-book, each segment comprising a subset of the e-book content. Additionally, the method comprises storing index information including a mapping between the phrases located within the one or more logical partitions and the plurality of encrypted segments, in which the mapping indicates for a phrase, one or more encrypted segments that include the phrase.
- Embodiments of the computer readable medium store instructions for performing the method for creating and storing index information for an e-book. Embodiments of the performed method include identifying one or more logical partitions of an e-book having content, the content including a plurality of phrases located within one or more of the logical partitions, and creating a plurality of encrypted segments for the e-book, with each segment comprising a subset of the e-book content. Additionally, the method includes storing index information including a mapping between the phrases located within the one or more logical partitions and the plurality of encrypted segments, where the mapping indicates, for a phrase, one or more encrypted segments that include the phrase.
- Embodiments of the computer system include a computer readable medium that stores instructions for performing the method for creating and storing index information for an e-book. Embodiments of the performed method include identifying one or more logical partitions of an e-book having content, the content including a plurality of phrases located within one or more of the logical partitions, and creating a plurality of encrypted segments for the e-book, with each segment including a subset of the e-book content. Additionally, the method includes storing index information including a mapping between the phrases located within the one or more logical partitions and the plurality of encrypted segments, where the mapping indicates, for a phrase, one or more encrypted segments that include the phrase.
- The features and advantages described in the specification are not all inclusive and, in particular, many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims. Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the disclosed subject matter.
-
FIG. 1 is a block diagram illustrating a computing environment for creating and storing index information for e-books that enables efficient searching according to one embodiment. -
FIG. 2 is a block diagram illustrating an indexing module in greater detail for creating index information according to one embodiment. -
FIG. 3 is a block diagram illustrating an eReader module in a client in greater detail according to one embodiment. -
FIG. 4 is a block diagram illustrating an example of a computer for use in the computing environment shown inFIG. 1 according to one embodiment. -
FIG. 5 is a flow diagram illustrating a method for creating and storing index information for e-book content according to one embodiment. -
FIG. 6 is a flow diagram illustrating a method for searching the e-book content using stored index information according to one embodiment. - The computing environment described herein enables efficient search in encrypted e-book content. The Figures (FIGS.) and the following description describe certain embodiments by way of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein. Reference will now be made in detail to several embodiments, examples of which are illustrated in the accompanying figures. It is noted that wherever practicable similar or like reference numbers may be used in the figures and may indicate similar or like functionality.
- Referring to
FIG. 1 , the computing environment for creating and storing index information comprises ane-book server 104 and ane-book client 106 communicatively coupled to each other through anetwork 102. - The e-book
server 104 is a computing device with a processor and a memory that stores and indexes e-book content. Thee-book server 104 comprises ane-book database 114 and anindexing module 112. Thee-book database 114 receives and stores e-books from an external source (not shown). - The e-books include electronic content, primarily textual in nature, including electronic books, newspapers, magazines and other textual publications. Additionally, the electronic content is organized into logical partitions such as paragraphs, pages, sub-chapters, and chapters. In one embodiment, the e-book
database 114 also receives and stores metadata associated with the e-book's electronic content indicating locations of logical partitions in the content. Examples of such metadata include the locations of paragraph breaks, page breaks, sub-chapter breaks, and chapter breaks. In another embodiment, the metadata also indicates the relative hierarchy of logical partitions amongst each other. For example, the metadata may indicate that paragraphs 1-4 are located within page 1. - The
database 114 may store encrypted or decrypted copies of e-books. Additionally, thedatabase 114 receives index information for the e-books from theindexing module 112 and stores such information. Theindexing module 112 retrieves e-books from thedatabase 114 and creates index information for the e-books. The created index information indicates the location of the phrases in the encrypted e-book. In one embodiment, the index information maps phrases (i.e., one or more words) in an e-book with e-book segments that include the mapped phrases. An e-book segment is a block of encrypted text from one or more logical partitions in an e-book. Additionally, a segment may not necessarily align with the boundaries of the logical partitions, and a segment may include encrypted text from parts of one or more logical partitions. A segment would typically include a subset of the text in the e-book, so that the e-book includes multiple segments. Theindexing module 112 stores the created index information in thee-book database 114. Theindexing module 112 is further described in reference toFIG. 2 . - The
client 106 is a computing device with a processor and a memory that includes aneReader module 122 for displaying and efficiently searching the e-book content. TheeReader module 122 retrieves from thee-book server 104 the e-book content and its corresponding index information. Upon receiving a search phrase from the user, theeReader module 122 determines from the index information the segments and/or logical partitions that include the searched phrase. TheeReader module 122 then displays identifications for the determined segments and/or logical partitions to the user. For example, theeReader module 122 displays a screen indicating that the phrase “wisdom” is present in logical partition “page 8.” - The
eReader module 122 subsequently receives a selected identification from the user, decrypts the content corresponding to the selection and displays the decrypted content. In one embodiment, theeReader module 122 searches the decrypted segment, locates the position of the searched phrase in the decrypted segment, and displays the part of the decrypted segment that includes the search phrase. In another embodiment, theeReader module 122 also places the cursor next to the location of the searched phrase in the displayed part. - In this manner, the
e-book server 104 creates index information that is beneficially used by theeReader module 122 to conduct efficient searches. Instead of decrypting all of the e-book content, theeReader module 122 uses the index information to locate the relevant segments and decrypts one or more relevant segments for display to the user. Because theeReader module 122 is not decrypting the entire e-book content for the search, the user experience is much improved and the user need not wait for decryption of entire content to see the search results. - The
eReader module 122 in theclient 106 ande-book server 104 are communicatively coupled to each other through anetwork 102. Thenetwork 102 represents the communication pathways between theclient 106 and theserver 104. In one embodiment, thenetwork 102 is the Internet. Thenetwork 102 can also use dedicated or private communications links that are not necessarily part of the Internet. -
FIG. 2 is a block diagram illustrating theindexing module 112 in greater detail according to one embodiment. Theindexing module 112 comprises asegmentation module 202, aphrase index module 204 and aphrase storage module 206. - The
segmentation module 202 retrieves the content for an e-book from thee-book database 114 and creates segments including encrypted content for one or more logical partitions in the e-book. In one embodiment, thesegmentation module 202 segments the e-book content based on the metadata associated with the content. For example, thesegmentation module 202 may determine from the metadata the boundaries of, or the content within, the logical partitions (such as paragraphs or pages), encrypt the content of one or more logical partitions, and store the encrypted content into a segment. In another embodiment, thesegmentation module 202 analyzes the e-book content in the logical partitions to determine textual characteristics indicating boundaries, such as line breaks or line spacing between the text in the e-book. Thesegmentation module 202 treats these textual characteristics as a proxy for boundaries of logical partitions like paragraph, page or chapter breaks. Thesegmentation module 202 then encrypts content within the detected boundaries of the logical partitions and creates segments including the encrypted content. Accordingly, the segments include encrypted versions of the content included in their corresponding logical partitions. In one embodiment, thesegmentation module 202 stores a segmentation index that includes, for each segment, an identification (such as an ordinal number) of the segment and a reference that points to the location of the corresponding logical partition in the e-book. - The
phrase index module 204 creates and stores index information used to locate a phrase in an e-book without decrypting the entire content of the e-book. A phrase includes one or more words or a combination of words. For example the word “tug” and three words “tug-of-war” can each be a phrase. In some languages, a phrase can be a compound word that includes parts of two words to form one compound word. - In one embodiment, the index information for an e-book includes a phrase index that maps various phrases with the segments including those phrases. In another embodiment, the index information also includes a manifest that maps an e-book logical partition to a segment that includes encrypted text for the logical partition. Some or all segments may include encrypted text for multiple logical partitions. The manifest, for such segments, indicates the logical partitions corresponding to such segments. In one embodiment, the manifest indicates a hierarchy of logical partitions that correspond to a segment. For example, the manifest indicates that section 2 of chapter 3 corresponds to segment 6. In another example, the manifest also indicates that section 2 corresponds to “pages 32-34.”
- To create a phrase index, the
phrase index module 204 searches the logical partitions that include decrypted text corresponding to the encrypted text in a segment. Based on the search, thephrase index module 204 determines various phrases included in the segment. Upon detecting a phrase, thephrase index module 204 stores information in a phrase index indicating that the segment includes the detected phrase. Thephrase index module 204 repeats this process for various segments, and populates the phrase index with phrases and their corresponding segments. An example entry in the phrase index indicates that phrase “wisdom” is located in segments 8, 12 and 18. - In this manner, the
phrase index module 204 beneficially stores a proximate, and not an exact location, of a phrase. Because a segment may include more than one phrase, determining a segment that includes a phrase does not lead to determining where exactly the phrase exists in the segment. Accordingly, thephrase index module 204 beneficially prevents an unauthorized user from bypassing decryption and compiling an e-book based on its associated phrase index because the proximate indexing obfuscates the exact ordering of the text. - To create a manifest, the
phrase index module 204, in one embodiment, analyzes the metadata associated with the e-book content. The metadata indicates parts of e-book content that correspond to the various logical partitions. In one embodiment, the metadata also indicates the relative hierarchy of logical partitions amongst each other. In another embodiment, thephrase index module 204 determines these logical partitions by analyzing the textual characteristics indicating boundaries, such as by detecting line spacing or line breaks, words like “chapter” or “section,” or numbers indicating a chapter number, section number or page number. In yet another embodiment, thephrase index module 204 also determines the relative hierarchy amongst the logical partitions based on the detected words. For example, thephrase index module 204 determines the sections in a chapter after detecting, in a chapter, the word “section” followed by a number. - Regardless of how the
phrase index module 204 determines the logical partitions, thephrase index module 204 determines the segments corresponding to these logical partitions. In one embodiment, thephrase index module 204 determines the corresponding segments based on the segmentation index created bysegmentation module 202. Thephrase index module 204 analyzes the segmentation index to determine the storage location for various segments. Thephrase index module 204 then compares the storage locations of various segments with storage locations of the encrypted version of the logical partitions, and determines a match between a logical partition and a segment if their storage locations overlap. The matched logical partitions and segments are then stored in the manifest. In this manner, thephrase index module 204 creates a manifest including segments and their corresponding logical partitions. An example entry in a manifest indicates that segment 4 corresponds to “pages 2-3.” Another example entry indicates that segment 4 corresponds to “section 3 of chapter 1.” - The
phrase storage module 206 stores the phrases in the phrase index in a data structure optimized for phrase retrieval. In one embodiment, the phrases are stored in an ordered tree data structure like a trie.FIG. 7 illustrates a tree-based structure, specifically a trie storing phrases beginning with letters “RA” and “RU.” As illustrated inFIG. 7 discussed further below, each node in the tree stores a subsequent letter of a phrase in an e-book. Accordingly, the phrase “ran” is stored in threeconnected nodes FIG. 3 below, such storage beneficially allows theeReader module 122 to suggest search phrases as the user types the initial letters of the search phrase. - Additionally, in one embodiment, the
phrase storage module 206 stores phrases starting with different letters, or letter combinations, in different tree data structures. For example, in one embodiment, thephrase storage module 206stores nodes first tree 730 storing phrases beginning with letters “RA,” and storesnodes second tree 740 storing phrases beginning with “RU.” Such storage beneficially enables theeReader module 122 to provide a faster and more efficient search experience as described below in reference toFIG. 3 . - eReader Module
-
FIG. 3 is a block diagram illustrating aneReader module 122 in aclient 106 in greater detail according to one embodiment of the present disclosure. TheeReader module 122 comprises astorage module 302, a user interface (UI)module 304, asearch module 306 and adecryption module 308. - The
storage 308 receives and stores encrypted e-books and their corresponding index information from thee-book server 104. - The
UI module 304 provides the interface between the user and theeReader module 122. TheUI interface 304 receives user input indicating various requests from the user such as selection of a particular e-book, a particular page in the e-book or a search request for searching a phrase in the e-book. In response to receiving such user inputs, theUI module 302 displays the requested cover of the e-book, page of the e-book, or a search bar for receiving the search phrase from the user. In one embodiment, after receiving one or more initial letters of the search phrase, theUI module 302 transmits the initial letters to thesearch module 306, receives suggested search phrases from thesearch module 306 and displays the suggested search phrases to the user. Upon receiving a search phrase from the user, theUI module 304 transmits the search phrase to thesearch module 306, receives the search results from thesearch module 306 and displays the search results to the user. - The
search module 306 determines and recommends potential search phrases to the user. After receiving the first letter from theUI module 304, thesearch module 306 analyzes the phrase index associated with the active e-book (i.e., the e-book currently being searched by the user). Thesearch module 306 then determines the tree data structures having root nodes beginning the received letters. If only one such tree exists, thesearch module 306 loads the tree in memory for further analysis. Otherwise, thesearch module 306 waits to receive the next letter and analyzes the trees with the root node and subsequent node matching the two received letters. Thesearch module 304 keeps receiving letters until only one tree includes all the letters in the received order. Thesearch module 304 then loads the matched tree in memory, traverses the nodes of the loaded tree to determine the node storing the last received letter, and recommends search phrases for the user based on the nodes following the determined node with the last received letter. - For example, referring to
FIG. 7 again, after the user types letters “R” and “A,” thesearch module 304loads tree 700 into the memory, traverses the matched tree and determines the location ofnode 710 that includes the letter “A” following the letter “R.” Thesearch module 304 then determines that the only existing phrases that start with “RA” in the e-book are “Ran” and “Rag” becausenode 710 is only followed bynodes search module 306 therefore uses the tree data structure to beneficially suggest the two search phrases with potential results to the user. - In one embodiment,
tree 700 is divided into twoseparate trees search module 304loads tree 730 after thesearch module 306 receives letters “R” followed by “A” from theUI module 304. Becausetree 730 only includes phrases beginning with “RA” instead of “R,”tree 730 is smaller thantree 700. The relatively smaller size oftree 730 beneficially enables thesearch module 304 to load the tree in the memory and traverse the tree faster than the time required to load and traverse thelarger tree 700. Accordingly, thesmaller tree 730 beneficially enables thesearch module 304 to recommend suggested search phrases in a fast and efficient manner to the user. - As depicted in
FIG. 3 , after the search phrases are recommended to the user, thesearch module 306 receives a selected search phrase from the user and searches the index information to determine the location of the search phrase in the e-book. To perform this search, thesearch module 306 analyzes the index information and determines the corresponding segments that include the search phrase. Thesearch module 304 then transmits identifications of the determined segments to theUI module 304 and the UI module displays the segment identifications as search results. - In one embodiment, after determining the segments corresponding to the search phrase, the
search module 306 analyzes the manifest to determine the logical partitions (i.e., page numbers, chapter numbers, etc.) corresponding to the determined segments. Thesearch module 306 then transmits the determined logical partitions to theUI module 304 and theUI module 304 displays the determined logical partitions as search results. In one embodiment, the index information indicates a hierarchy of logical partitions corresponding to the determined segment, and thesearch module 306 transmits the corresponding hierarchy for display to the user. For example, the index information may indicate that page 3 includes paragraphs 18-22. Accordingly, if a searched phrase is present in paragraph 20, the hierarchy included in the index information is used to display an indication that the searched phrase is present on page 3 at paragraph 20. - In one embodiment, the
search module 306 receives a search phrase and an identification for a selected logical partition or a segment from theUI module 304. Thesearch module 306 transmits the received identification to thedecryption module 308, receives decrypted data for the identified segment or logical partition, and searches the decrypted data for the location of the search phrase. Thesearch module 306 then transmits the decrypted data and location of the search phrase to theUI module 304, and theUI module 304 displays the decrypted data and highlights the search phrase in the displayed data. - The
decryption module 308 decrypts the encrypted e-book content for display to the user. Thedecryption module 308 receives a request from theUI module 304 or thesearch module 306 indicating the part of the e-book requested or searched by the user. Thedecryption module 308 receives an identification of a requested logical partition or a segment from theUI module 304 or thesearch module 306, retrieves the identified encrypted part from the e-book, decrypts the encrypted part and transmits the decrypted part to theUI module 304 or thesearch module 306. - The entities shown in
FIGS. 1-3 are implemented using one or more computers.FIG. 4 is a high-level block diagram illustrating anexample computer 400. Thecomputer 400 includes at least oneprocessor 402 coupled to achipset 404. Thechipset 404 includes amemory controller hub 420 and an input/output (I/O)controller hub 422. Amemory 406 and agraphics adapter 412 are coupled to thememory controller hub 420, and adisplay 418 is coupled to thegraphics adapter 412. Astorage device 408,keyboard 410, pointingdevice 414, andnetwork adapter 416 are coupled to the I/O controller hub 422. Other embodiments of thecomputer 400 have different architectures. - The
storage device 408 is a non-transitory computer-readable storage medium such as a hard drive, compact disk read-only memory (CD-ROM), DVD, or a solid-state memory device. Thememory 406 holds instructions and data used by theprocessor 402. Thepointing device 414 is a mouse, track ball, or other type of pointing device, and is used in combination with thekeyboard 410 to input data into thecomputer system 400. Thegraphics adapter 412 displays images and other information on thedisplay 418. Thenetwork adapter 416 couples thecomputer system 400 to one or more computer networks. - The
computer 400 is adapted to execute computer program modules for providing functionality described herein. As used herein, the term “module” refers to computer program logic used to provide the specified functionality. Thus, a module can be implemented in hardware, firmware, and/or software. In one embodiment, program modules are stored on thestorage device 408, loaded into thememory 406, and executed by theprocessor 402. - The types of
computers 400 used by the entities ofFIGS. 1-3 can vary depending upon the embodiment and the processing power required by the entity. For example, theindexing module 112 might comprise multiple blade servers working together to provide the functionality described herein. Thecomputers 400 can lack some of the components described above, such askeyboards 410,graphics adapters 412, and displays 418. -
FIG. 5 is a flow diagram illustrating a method for creating and storing index information for e-book content according to one embodiment of the present disclosure. Instep 502, thee-book server 104 receives content for an e-book and divides the content into segments. Instep 504, thee-book server 104 creates a phrase index by identifying phrases and their corresponding segments in the e-book. Instep 506, thee-book server 104 stores the created phrase index. In one embodiment, thee-book server 104 also creates (step 508) and stores (step 510) a manifest for the e-book. The created manifest includes a mapping between the logical partitions and segments that include the encrypted text of the partitions. Accordingly, instep 508, thee-book server 104 identifies e-book logical partitions corresponding to various segments and, instep 510, stores the mapping between the segments and the logical partitions in the manifest. -
FIG. 6 is a flow diagram illustrating a method for searching the e-book content using stored index information according to one embodiment of the present disclosure. Instep 602, theeReader module 122 receives a search phrase and, in step 604, determines the segments of the e-book that include the received search phrase. TheeReader module 122 determines the segments or the logical partitions based on the index information for the e-book. Next, instep 606, theeReader module 122 displays the list of identifications for the determined segments or logical partitions to the user and the user selects a segment or a logical partition from the list. Instep 608, theeReader module 122 receives the selection, and instep 610, decrypts the segment corresponding to the selection, and displays the decrypted segment to the user. - In the description above, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the illustrated system and its operations. It will be apparent, however, to one skilled in the art that the system can be operated without these specific details. In other instances, structures and devices are shown in block diagram form in order to avoid obscuring the system.
- Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the system. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
- Some portions of the detailed descriptions that follow 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 art 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 transformations or 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.
- 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 following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (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.
- The figures and the description above relate to various embodiments by way of illustration only. It should be noted that from the figures and description in this application, alternative embodiments of the structures and methods disclosed herein will be readily recognized as viable alternatives that may be employed without departing from the principles of what is claimed.
- Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. It should be understood that these terms are not intended as synonyms for each other. For example, some embodiments may be described using the term “connected” to indicate that two or more elements are in direct physical or electrical contact with each other. In another example, some embodiments may be described using the term “coupled” to indicate that two or more elements are in direct physical or electrical contact. The term “coupled,” however, may also mean that two or more elements are not in direct physical or electrical contact with each other, but yet still co-operate or interact with each other. The embodiments are not limited in this context.
- As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
- In addition, use of the “a” or “an” are employed to describe elements and components of the embodiments herein. This is done merely for convenience and to give a general sense of the system. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.
Claims (18)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/211,191 US9116991B2 (en) | 2011-08-16 | 2011-08-16 | Searching encrypted electronic books |
PCT/US2012/050616 WO2013025624A2 (en) | 2011-08-16 | 2012-08-13 | Searching encrypted electronic books |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/211,191 US9116991B2 (en) | 2011-08-16 | 2011-08-16 | Searching encrypted electronic books |
Publications (2)
Publication Number | Publication Date |
---|---|
US20130046765A1 true US20130046765A1 (en) | 2013-02-21 |
US9116991B2 US9116991B2 (en) | 2015-08-25 |
Family
ID=47713400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/211,191 Active 2033-12-06 US9116991B2 (en) | 2011-08-16 | 2011-08-16 | Searching encrypted electronic books |
Country Status (2)
Country | Link |
---|---|
US (1) | US9116991B2 (en) |
WO (1) | WO2013025624A2 (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130139052A1 (en) * | 2011-11-26 | 2013-05-30 | Huawei Technologies Co., Ltd. | Method and apparatus for loading epub electronic book |
US20140095507A1 (en) * | 2012-09-28 | 2014-04-03 | Nec Corporation | Library apparatus |
WO2014182419A1 (en) * | 2013-05-06 | 2014-11-13 | Thomson Reuters South Asia Private Limited | Offline searching of encrypted content |
CN106202119A (en) * | 2015-05-07 | 2016-12-07 | 上海玄霆娱乐信息科技有限公司 | SNB e-book storage organization and wiring method thereof and read method |
CN107766739A (en) * | 2017-09-18 | 2018-03-06 | 北京理工大学 | Towards the phrase retrieval method and its device of cipher text data |
US20190155949A1 (en) * | 2017-11-20 | 2019-05-23 | Rovi Guides, Inc. | Systems and methods for displaying supplemental content for an electronic book |
US20190155955A1 (en) * | 2017-11-20 | 2019-05-23 | Rovi Guides, Inc. | Systems and methods for filtering supplemental content for an electronic book |
US11106549B2 (en) * | 2019-02-18 | 2021-08-31 | Airbus Defence and Space GmbH | Secure and encrypted logging systems and methods with data recovery |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9864737B1 (en) | 2016-04-29 | 2018-01-09 | Rich Media Ventures, Llc | Crowd sourcing-assisted self-publishing |
US10015244B1 (en) | 2016-04-29 | 2018-07-03 | Rich Media Ventures, Llc | Self-publishing workflow |
US9886172B1 (en) * | 2016-04-29 | 2018-02-06 | Rich Media Ventures, Llc | Social media-based publishing and feedback |
US10083672B1 (en) | 2016-04-29 | 2018-09-25 | Rich Media Ventures, Llc | Automatic customization of e-books based on reader specifications |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6633877B1 (en) * | 1991-11-04 | 2003-10-14 | Digeo, Inc. | Method and apparatus for delivery of selected electronic works and for controlling reproduction of the same |
US20080005151A1 (en) * | 2006-06-30 | 2008-01-03 | Fujitsu Limited | Method and apparatus for creating index, and computer program product |
US20110185191A2 (en) * | 1992-12-09 | 2011-07-28 | Adrea Llc | Electronic book electronic links |
US20120270188A1 (en) * | 2011-01-14 | 2012-10-25 | Dalton Chantia Necole | Educational systems |
US8352876B2 (en) * | 2007-02-21 | 2013-01-08 | University Of Central Florida Research Foundation, Inc. | Interactive electronic book operating systems and methods |
US8468365B2 (en) * | 2010-09-24 | 2013-06-18 | Intel Corporation | Tweakable encryption mode for memory encryption with protection against replay attacks |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7298851B1 (en) * | 1992-12-09 | 2007-11-20 | Discovery Communications, Inc. | Electronic book security and copyright protection system |
KR100377951B1 (en) | 2000-09-25 | 2003-03-29 | (주) 멀티비아 | An encoding and decoding system of e-book |
US7051022B1 (en) * | 2000-12-19 | 2006-05-23 | Oracle International Corporation | Automated extension for generation of cross references in a knowledge base |
US20020150239A1 (en) | 2001-04-17 | 2002-10-17 | Vidius Inc. | Method for personalized encryption in an un-trusted environment |
US20060265402A1 (en) | 2005-05-20 | 2006-11-23 | Andrew Edmond | Grid network for distribution of files |
JP5039693B2 (en) * | 2006-03-17 | 2012-10-03 | パナソニック株式会社 | Content search device |
IL178262A (en) * | 2006-09-21 | 2013-06-27 | Aser Rich Ltd | Device and method for smartcard assisted digital content purchase and storage |
US8321485B2 (en) * | 2006-11-08 | 2012-11-27 | Hitachi, Ltd. | Device and method for constructing inverted indexes |
CN100452074C (en) * | 2007-01-17 | 2009-01-14 | 北京大学 | Copyright protection method and system for digital contents controlled by time |
JP5081539B2 (en) * | 2007-08-31 | 2012-11-28 | 株式会社リコー | Image data encoding apparatus, image data encoding method, image forming apparatus, image forming method, image data decoding apparatus, and image data decoding method |
US8935796B2 (en) | 2008-03-14 | 2015-01-13 | Microsoft Corporation | Segment based digital content protection |
EP2441260B1 (en) | 2009-06-09 | 2020-02-12 | EMC Corporation | Segment deduplication system with encryption segments |
US20120060000A1 (en) * | 2010-09-06 | 2012-03-08 | Guozhong Zhu | System and method for flexibly storing, distributing, reading, and sharing electronic books |
-
2011
- 2011-08-16 US US13/211,191 patent/US9116991B2/en active Active
-
2012
- 2012-08-13 WO PCT/US2012/050616 patent/WO2013025624A2/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6633877B1 (en) * | 1991-11-04 | 2003-10-14 | Digeo, Inc. | Method and apparatus for delivery of selected electronic works and for controlling reproduction of the same |
US20110185191A2 (en) * | 1992-12-09 | 2011-07-28 | Adrea Llc | Electronic book electronic links |
US20080005151A1 (en) * | 2006-06-30 | 2008-01-03 | Fujitsu Limited | Method and apparatus for creating index, and computer program product |
US8352876B2 (en) * | 2007-02-21 | 2013-01-08 | University Of Central Florida Research Foundation, Inc. | Interactive electronic book operating systems and methods |
US8468365B2 (en) * | 2010-09-24 | 2013-06-18 | Intel Corporation | Tweakable encryption mode for memory encryption with protection against replay attacks |
US20120270188A1 (en) * | 2011-01-14 | 2012-10-25 | Dalton Chantia Necole | Educational systems |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130139052A1 (en) * | 2011-11-26 | 2013-05-30 | Huawei Technologies Co., Ltd. | Method and apparatus for loading epub electronic book |
US20140095507A1 (en) * | 2012-09-28 | 2014-04-03 | Nec Corporation | Library apparatus |
WO2014182419A1 (en) * | 2013-05-06 | 2014-11-13 | Thomson Reuters South Asia Private Limited | Offline searching of encrypted content |
CN106202119A (en) * | 2015-05-07 | 2016-12-07 | 上海玄霆娱乐信息科技有限公司 | SNB e-book storage organization and wiring method thereof and read method |
CN107766739A (en) * | 2017-09-18 | 2018-03-06 | 北京理工大学 | Towards the phrase retrieval method and its device of cipher text data |
US20190155949A1 (en) * | 2017-11-20 | 2019-05-23 | Rovi Guides, Inc. | Systems and methods for displaying supplemental content for an electronic book |
US20190155955A1 (en) * | 2017-11-20 | 2019-05-23 | Rovi Guides, Inc. | Systems and methods for filtering supplemental content for an electronic book |
US10909191B2 (en) * | 2017-11-20 | 2021-02-02 | Rovi Guides, Inc. | Systems and methods for displaying supplemental content for an electronic book |
US10909193B2 (en) * | 2017-11-20 | 2021-02-02 | Rovi Guides, Inc. | Systems and methods for filtering supplemental content for an electronic book |
US11106549B2 (en) * | 2019-02-18 | 2021-08-31 | Airbus Defence and Space GmbH | Secure and encrypted logging systems and methods with data recovery |
Also Published As
Publication number | Publication date |
---|---|
WO2013025624A3 (en) | 2013-05-10 |
WO2013025624A2 (en) | 2013-02-21 |
US9116991B2 (en) | 2015-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9116991B2 (en) | Searching encrypted electronic books | |
US9075873B2 (en) | Generation of context-informative co-citation graphs | |
US9852111B2 (en) | Document summarization | |
US11037674B2 (en) | Dashboard usage tracking and generation of dashboard recommendations | |
CN104969212A (en) | Performing application search based on entities | |
CN109983464B (en) | Detecting malicious scripts | |
US20140129918A1 (en) | Viewing hierarchical document summaries using tag clouds | |
US9898452B2 (en) | Annotation data generation and overlay for enhancing readability on electronic book image stream service | |
CN104021133A (en) | Apparatus and method for having a server hold obfuscated data | |
US20160063073A1 (en) | Electronic device and method for searching for application | |
US10936667B2 (en) | Indication of search result | |
US10210193B2 (en) | Ingestion plan based on table uniqueness | |
KR102284761B1 (en) | Embeddable media content search widget | |
US20160124939A1 (en) | Disambiguation in mention detection | |
US9760557B2 (en) | Tagging autofill field entries | |
US20170053023A1 (en) | System to organize search and display unstructured data | |
US9858333B2 (en) | Efficient structured data exploration with a combination of bivariate metric and centrality measures | |
CN109885610A (en) | A kind of abstracting method of structural data, device, electronic equipment and storage medium | |
US11120362B2 (en) | Identifying a product in a document | |
US20180329873A1 (en) | Automated data extraction system based on historical or related data | |
CN114580008B (en) | Document access control based on document component layout | |
CN110945506B (en) | Searchable encryption supporting hybrid indexes | |
US10747794B2 (en) | Smart search for annotations and inking | |
US9286349B2 (en) | Dynamic search system | |
CN110765737A (en) | Label display method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: GOOGLE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:VEMULA, GOPAL VENU;FRANCEUS, PAUL M.;REEL/FRAME:026760/0607 Effective date: 20110816 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
AS | Assignment |
Owner name: GOOGLE LLC, CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044334/0466 Effective date: 20170929 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |