Graphical indication of signed content

A computer implemented method, apparatus, and computer program code readily identifies authenticated content within webpage having user customizable content. A request to display a wiki page is received. Responsive to receiving the request, a wiki markup file with a wiki signature block is identified. The wiki markup file contains signed content and unsigned content. The signature block identifies the signed content within the wiki markup file. Signed content is verified and an edited wiki page is generated from the signed content and the unsigned content. Signed content is visibly distinguished from the unsigned content.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to an improved data processing system and in particular to a computer implemented method, apparatus, and computer program code for readily identifying authenticated content within a web page having user customizable content.

2. Description of the Related Art

A wiki is a type of computer software that allows users to easily create, edit and link documents that can be viewed in a browser. Wikis are often used to create collaborative or community based websites, wherein pages of the wiki are implemented as web pages. Wikis may be installed as a business Intranet to provide affordable and effective knowledge sharing among employees about a particular project or event.

Wiki documents, sometimes referred to as “wiki pages,” generally discuss a single topic. The wiki page is typically provided with hypertext links that direct a user to other wiki pages discussing related topics. Thus, the wiki provides an easily augmented and edited database for creating, browsing, and searching information contained in the wiki.

A wiki page is generally created and edited using a simple markup language and accessed through a browser. The wiki page is intentionally easy to use and manipulate such that any user of the wiki can edit information found within the wiki pages. Due to the collaborative nature of the wiki and the ease in which wiki pages are edited, typically no review occurs before modifications are accepted. Consequentially, misleading or incorrect information may sometimes be inadvertently, or maliciously, incorporated into the wiki.

Several efforts have been made to retain the collaborative information sharing benefits of the wiki, while filtering, or disclaiming responsibility for unauthorized information added to the wiki.

A digital signature is a type of asymmetric cryptography used to authenticate digital documents. Each user is provided with a pair of corresponding encryption/decryption algorithm keys: a private key and a public key. The digital signature typically consists of the application of algorithms utilizing the encryption/decryption keys.

A first fingerprint of the digital document is created using a known hash function. A signature creating algorithm S, then utilizes the private key SK to create a digital signature σ based on that first fingerprint. The digital signature σ is created at the time of signing the digital document. The digital signature σ is stored with, or is embedded into, the digital document.

When the digital document is later viewed, a signature verifying algorithm V, utilizes the public key PK to verify the digital signature σ. The known hash function is used to create a second fingerprint of the digital document. The signature verifying algorithm V, then utilizes the public key PK to recreate the first fingerprint from the digital signature σ. The first finger print is then compared to the second fingerprint. If the two fingerprints are identical, then the digital document is accepted as authenticated. If the two fingerprints are disparate, the signature is not authenticated because the document has been changed between the time of signing and the time of viewing.

When digitally signed and unsigned content appear together on a web page or in some other display format, the reader of the content cannot distinguish between the signed and unsigned content. The reader does not know what has been signed and what has not been signed.

Lotus Forms Viewer implements one solution to this problem. A tooltip is displayed to the user when the user mouses over a signed item. However, the user can distinguish between signed and unsigned content only by moving the mouse over each item of information displayed on the screen, while waiting for the tooltip to display. Thus, the implemented solution does not provide an easy way to differentiate the authenticity of the displayed content. Lotus Forms Viewer is available from International Business Machines, Corp. Lotus is a registered trademark of International Business Machines, Corp.

It is an ongoing concern to easily distinguish the official content within a wiki or other customizable delivery format, from content added by unofficial third parties. While digital signatures can provide some measure of differentiation between official and unofficial content, there remains room for improvement. There is no currently available method to easily distinguish authenticated and unauthenticated information within a wiki or web document.

Therefore, it would be advantageous to have a computer implemented method, apparatus, and computer program code to address the above described problems, as well as other problems.

SUMMARY OF THE INVENTION

A computer implemented method, apparatus, and computer program code readily identifies authenticated content within a webpage having user customizable content A request to display a wiki page is received. Responsive to receiving the request, a wiki markup file and a wiki signature block are identified. The wiki markup file contains signed content and unsigned content. The wiki signature block identifies the signed content within the wiki markup file. Signed content is verified, and an edited wiki page is generated from the signed content and the unsigned content. Signed content is visibly distinguished from the unsigned content.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

In the depicted example, server104and server106connect to network102along with storage unit108. In addition, clients110,112, and114connect to network102. Clients110,112, and114may be, for example, personal computers or network computers. In the depicted example, server104provides data, such as boot files, operating system images, and applications to clients110,112, and114. Clients110,112, and114are clients to server104in this example. Clients110,112, and114may be used to access a wiki stored on server104. Network data processing system100may include additional servers, clients, and other devices not shown.

Memory206, in these examples, may be, for example, a random access memory or any other suitable volatile or non-volatile storage device. Persistent storage208may take various forms depending on the particular implementation. For example, persistent storage208may contain one or more components or devices. For example, persistent storage208may be a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage208also may be removable. For example, a removable hard drive may be used for persistent storage208.

As one example, a storage device in data processing system200is any hardware apparatus that may store data. Memory206, persistent storage208, and computer readable media218are examples of storage devices in a tangible form.

Turning next toFIG. 3, a block diagram of a browser program is depicted in accordance with an illustrative embodiment. A browser is an application used to navigate or view information or data in a distributed database, such as the Internet or the World Wide Web. Browser300can be executed on a data processing system, such as clients110,112, and114ofFIG. 1. Browser300can be used to create and edit a wiki page using a simple markup language.

In this example, browser300includes graphical user interface302, which is a graphical user interface (GUI) that allows the user to interface or communicate with browser300. This interface provides for selection of various functions through menus304and allows for navigation through navigation306. For example, menu304may allow a user to perform various functions, such as saving a file, opening a new window, displaying a history, and entering a URL. Navigation306allows for a user to navigate various pages and to select web sites for viewing. For example, navigation306may allow a user to see a previous page or a subsequent page relative to the present page. Preferences, such as those illustrated inFIG. 3, may be set through preferences308.

Communications310is the mechanism with which browser300receives documents and other resources from a network, such as the Internet. Further, communications310is used to send or upload documents and resources onto a network. In the depicted example, communications310uses hypertext transfer protocol (HTTP). Other protocols may be used depending on the implementation. Documents that are received by browser300are processed by language interpretation312, which includes HTML314and JavaScript316. Language interpretation312will process a document for presentation on graphical display318. In particular, HTML statements are processed by HTML314for presentation, while JavaScript statements are processed by JavaScript unit316.

Graphical display318includes layout320, rendering322, and window management324. These units are involved in presenting web pages to a user based on results from language interpretation312.

Browser300is presented as an example of a browser program in which illustrative embodiments may be embodied. Browser300is not meant to imply architectural limitations to the present invention. Presently available browsers may include additional functions not shown or may omit functions shown in browser300. A browser may be any application that is used to search for and display content on a distributed data processing system. Browser300may be implemented using known browser applications, such as Mozilla Firefox or Microsoft Internet Explorer. Mozilla Firefox is available from Mozilla Corporation, while Microsoft Internet Explorer is available from Microsoft Corporation.

The illustrative embodiments provide a computer implemented method, apparatus, and computer program code for readily identifying authenticated content within a webpage having user customizable content. A wiki engine reads a wiki markup file containing user customizable content. The wiki engine determines a fingerprint of the user customizable content. The wiki engine then compares the determined fingerprint to an original fingerprint stored in a wiki signature block within the wiki markup file. The original fingerprint was created and stored at the time the user customizable content was digitally signed or authenticated.

The wiki engine then compares the determined fingerprint with the original fingerprint. If the two fingerprints are identical, the user customizable content is identified as unchanged, and thus any digital signature associated with the content is deemed still valid. This signed content is presented having a first appearance.

If the two fingerprints are not identical, the user customizable content is identified, and thus any digital signature associated with the content is deemed invalid. This unsigned content is presented having a second appearance. Unsigned content can include content having an invalid digital signature and content having no valid or invalid signatures. Alternatively, content having an invalid digital signature can also be graphically distinguishable from signed content and unsigned content by presenting invalid digital signatures in a third appearance.

Referring now toFIG. 4, a diagram illustrating a data flow between system components delivering user customizable content is depicted in accordance with an illustrative embodiment. Server410can be server104,106inFIG. 1. Client412can be client110,112, and114ofFIG. 1.

Server410executes wiki engine414. Wiki engine414is the server-side software powering a wiki network site. Wiki engine414can be any publicly or commercially available wiki engine, including Java based wikis, such as JSPwiki or Lisp-based wikis, such as KLiki, .NET or Mono based wikis, such as FlexWiki, Perl based wikis, such as Quickywiki, Python based wikis, such as PikiePikie, and PHP based wikis, such as Tikiwiki, as well as wikis implemented in other programming languages.

Wiki markup file416is a data file or data structure containing information to be presented in the displayed wiki document. Wiki markup file416is written in a language that corresponds to, and is parsible by, Wiki engine414.

Client412executes browser418. Browser418is an application used to navigate or view information or data in a distributed database and is capable of retrieving wiki pages from the server410. Browser418can be browser300ofFIG. 3.

Wiki engine414receives a request from client412for a wiki page. A wiki page is a rendering of wiki markup file416that is viewable on browser418. Responsive to receiving the request, wiki engine414identifies wiki markup file416. Wiki markup file416corresponds to the requested wiki page. Wiki markup file416is a data file containing information to be presented in the requested wiki page. Wiki markup file416is written in a language that is parsible by wiki engine414.

Responsive to identifying wiki markup file416, wiki engine414parses wiki markup file416looking for signature block430. The signature block430contains an identifier432that uniquely identifies the signer of the signed content436. Signature block430also includes signed content delimiting information434. Delimiting information434identifies signed content436. Delimiting information434can identify signed content436by use of wiki markup tags. Signature block430also includes the original fingerprint422of the signed content, encrypted with the signer's private key.

Responsive to identifying wiki signature block430, wiki engine414creates a current fingerprint419of wiki signed content436. Current fingerprint419can be created by employing a hash function. The hash function is a transformation that takes wiki signed content436as input and returns a fixed-size string. This string, which is called the hash value, is current fingerprint419. Current fingerprint419is therefore a concise representation of wiki signed content436, at the time that a wiki page is requested by a client412, from which current fingerprint419was computed.

Further responsive to identifying wiki signature block430, wiki signature block430is used to determine the authenticity of information in wiki signed content436. Wiki signature block430contains original fingerprint422. Original fingerprint422was created at the time of signing or authenticating wiki signed content436. Original fingerprint422was created by employing a corresponding or identical hash function that is used to create current fingerprint419. Original fingerprint422is therefore a concise representation of wiki signed content436, at the time of signing or authenticating wiki signed content436, from which original fingerprint422was computed.

The wiki engine414retrieves the signer's public key from storage and decrypts the fingerprint. Wiki engine414then compares current fingerprint419with original fingerprint422. If the current fingerprint419is identical to the original fingerprint422, then wiki signed content436has not been changed since the time of signing or authenticating. Therefore, wiki signed content436in wiki markup file416associated with wiki signature block430is identified as signed content424.

However, if the current fingerprint419is not identical to the original fingerprint422, then either wiki signed content436has been changed since the time of signing or authenticating, or original fingerprint422has been changed since the time of signing or authenticating, or both wiki signed content436and original fingerprint422have been changed since the time of signing or authenticating. Therefore, wiki signed content436in wiki markup file416associated with wiki signature block430is either identified as unsigned content426, or identified as modified content430, at the discretion of wiki engine414.

Wiki engine414then generates edited wiki document page428from signed content424and unsigned content426. Wiki engine414generates edited wiki document page428such that signed content424is visibly distinct from unsigned content426. Signed content424is visibly distinct from unsigned content426by presenting signed content424in a different font, font size, font color, or background color than the font, font size, font color, or background color in which unsigned content426is presented.

Wiki engine414can indicate the visible distinction by inserting a tag or other metadata instructions to the client regarding the signed content424and unsigned content426. In another illustrative embodiment, wiki engine414can indicate the visible distinction between signed content424and unsigned content426by altering the markup language code to indicate a different font, font size, font color, or background color that should be used for signed content424than the font, font size, font color, or background color used for unsigned content426.

Edited wiki document page428is presented at client412on browser418. Edited wiki document page428is presented such that signed content424is visibly distinct from unsigned content426. Signed content424is visibly distinct from unsigned content426by presenting signed content424in a different font, font size, font color, or background color than the font, font size, font color, or background color in which unsigned content426is presented.

Referring now toFIG. 5, a diagram illustrating data flow between system components delivering user customizable content is depicted in accordance with an illustrative embodiment. The system and components illustrated inFIG. 5are the system and components illustrated inFIG. 4. Server510can be server104,106inFIG. 1. Client512can be client110,112, and114ofFIG. 1. Wiki engine514illustrates an alternative illustrative embodiment wherein attempted alteration of signed content524would initiate one or more remedial action540.

Client512uses browser518to view signed content524within edited wiki document page528. Responsive to an attempted alteration of signed content524, wiki engine514may initiate remedial action540.

Remedial action540is an action taken by the wiki engine in response to the attempted alteration of signed content524. Remedial action540can be a disallowance of the attempted alteration of signed content524. Remedial action540can be a verification of an identity of the user attempting to change the signed content524. The attempted alteration may be allowed only if the user is authorized to make changes to signed content524.

Remedial action540may also be a notification, such as an e-mail message, to a system administrator or other interested party that a signed content524has been altered. The system administrator could then decide whether to accept the alteration without signing it, accept and adopt the alteration by signing the alteration, or to reject the alteration and revert the altered content to the unaltered signed content524.

Referring now toFIG. 6, a flowchart of a process for readily identifying authenticated content within a webpage having user customizable content is depicted in accordance with an illustrative embodiment. Process600is a software process executing on a software component, such as wiki engine414ofFIG. 4.

Process600begins by identifying a wiki markup file (step610), such as wiki markup file416ofFIG. 4. The wiki markup file corresponds to a wiki page requested by a user. The wiki markup file is a data file containing information to be presented in the requested wiki page. The wiki markup file is written in a language that is parsible by the wiki engine.

Process600next identifies a wiki signature block (step620). The wiki signature block is used to determine the authenticity of information in the wiki markup file. The wiki signature block contains an indication of any signed content within the wiki markup file.

Responsive to identifying the wiki markup file and the wiki signature block, process600verifies any signed content within the wiki markup file (step630). That is, the wiki engine determines whether the current content of the wiki markup file is identical to previously authenticated, signed content.

Responsive to verifying any signed content within the wiki markup file, process600generates an edited wiki page, visibly distinguishing the signed content from the unsigned content and the broken signature content (step640). The signed content can be visibly distinct from the unsigned content by presenting the signed content in a different font, font size, font color, or background color than the font, font size, font color, or background color in which the unsigned content is presented. Process600typically generates the edited wiki page in a markup language format, such as HTML that is displayable within a browser.

The broken signature content can be visibly distinct from the signed and unsigned content by presenting the broken signature content in a different font, font size, font color, or background color than the font, font size, font color, or background color in which the signed and unsigned content is presented. Process600typically generates the edited wiki page in a markup language format, such as HTML that is displayable within a browser.

Process600then sends the edited wiki page to the client for display on the browser (step650), with the process terminating thereafter.

Referring now toFIG. 7, a flowchart of a process for readily identifying authenticated content within a webpage having user customizable content is depicted in accordance with an illustrative embodiment. Process700is a software process executing on a software component, such as wiki engine414ofFIG. 4. Process700is a more detailed illustration of Process600ofFIG. 6.

Process700begins by receiving a request from a client to display a wiki page (step710). Responsive to receiving the request, process700identifies a wiki markup file (step720), such as wiki markup file416ofFIG. 4. The wiki markup file corresponds to a wiki page requested by a user. The wiki markup file is a data file containing information to be presented in the requested wiki page. The wiki markup file is written in a language that is parsible by the wiki engine.

Responsive to identifying the wiki markup file, the wiki engine parses the wiki markup file looking for a wiki signature block. The signature block contains an identifier that uniquely identifies the person who signed the wiki markup file. The signature block also includes signed content delimiting information. The delimiting information identifies signed content. The delimiting information can identify the signed content by use of wiki markup tags. The signature block also includes the original fingerprint of the signed content, encrypted with the signer's private key.

Responsive to identifying the wiki markup file, process700creates a current fingerprint of the signed content in the wiki markup file (step730). The current fingerprint can be created by employing a hash function. The hash function is a transformation that takes the wiki signed content as input and returns a fixed-size string. This string, which is called the hash value, is the current fingerprint. The current fingerprint is a concise representation of the wiki signed content, at the time that the wiki page is requested by the client, from which the current fingerprint was computed.

Further, responsive to receiving the request from the client, process700identifies a wiki signature block (step740). The wiki signature block is used to determine the authenticity of information in the wiki signed content. The wiki signature block contains an original fingerprint of the wiki signed content. The original fingerprint was created at the time of signing or authenticating the wiki signed content. The original fingerprint was created by employing a corresponding or identical hash function to the one used to create the current fingerprint. The original fingerprint is therefore a concise representation of the wiki signed content, at the time of signing or authenticating the wiki signed content, from which the original fingerprint was computed.

Responsive to creating the current fingerprint and identifying the wiki signature block, process700compares the current fingerprint with the original fingerprint, determining whether the current fingerprint is identical to the original fingerprint (step750). If the current fingerprint is identical to the original fingerprint (“yes” at step750), the wiki signed content has not been changed since the time of signing or authenticating the wiki signed content. Therefore, process700identifies content in the wiki markup file associated with the wiki signature block as signed content (step760).

If the current fingerprint is not identical to the original fingerprint (“no” at step750), the wiki signed content has been changed since the time of signing or authenticating the wiki signed content, the original fingerprint has been changed since the time of signing or authenticating the wiki signed content, or both the wiki signed content and the original fingerprint has been changed since the time of signing or authenticating the wiki signed content. The digital signature is therefore not authenticated. Because the digital signature was not authenticated, process700identifies content in the wiki markup file associated with the digital signature as unsigned content or modified content, at the discretion of the wiki engine (step770). Unsigned content may also include content having an invalid digital signature, and content having no valid or invalid signatures.

Process700generates an edited wiki page, visibly distinguishing the signed content from the unsigned content and the broken signature content (step780). The signed content can be visibly distinct from the unsigned content by presenting the signed content in a different font, font size, font color, or background color than the font, font size, font color, or background color in which the unsigned content is presented. Process700typically generates the edited wiki page in a markup language format, such as HTML that is displayable within a browser.

Process700can indicate the visible distinction by inserting a tag or other metadata instructions to the client regarding the signed content and the unsigned content. The tag or other metadata instructions can be delimiting information434ofFIG. 4. The tag or other metadata instructions can be derived from delimiting information434ofFIG. 4. The tag or other metadata instructions can be wiki markup tags.

In another illustrative embodiment, process700can indicate the visible distinction between the signed content and the unsigned content by altering the markup language code to indicate a different font, font size, font color, or background color that should be used for the signed content that the font, font size, font color, or background color used for the unsigned content.

Process700then sends the edited wiki page to the client for display on the browser (step790), with the process terminating thereafter.

Referring now toFIG. 8, a flowchart of a process for readily displaying authenticated content within a webpage having user customizable content is depicted in accordance with an illustrative embodiment. Process800is a software process executing on a software component, such as browser418ofFIG. 4.

Process800begins by sending a request to a server to retrieve and display a wiki page (step810). Process800then polls for receipt of the page (step820).

Process800receives an edited wiki page from the server (step820). Responsive to receiving the edited web page, process800displays the edited wiki page (step830), with the process terminating thereafter.

The edited web page visibly distinguishes the signed content from the unsigned content. The signed content can be visibly distinct from the unsigned content by presenting the signed content in a different font, font size, font color, or background color than the font, font size, font color, or background color in which the unsigned content is presented. The edited wiki page is typically generated by the server in a markup language format, such as HTML that is displayable by process800.

The visible distinction can be indicated by a tag or other metadata instructions inserted into the edited wiki page. The tag or other metadata instructions identify the signed content and the unsigned content. In another illustrative embodiment, the visible distinction between the signed content and the unsigned content can be indicated by process800determining an alteration of the markup language code to indicate a different font, font size, font color, or background color that should be used for the signed content that the font, font size, font color, or background color used for the unsigned content.

Thus, the illustrative embodiments provide a computer implemented method, apparatus, and computer program code for readily identifying authenticated content within a webpage having user customizable content. A wiki engine reads a wiki markup file containing user customizable content. The wiki engine determines a fingerprint of the user customizable content. The wiki engine then compares the determined fingerprint to an original fingerprint stored in a wiki markup file. The original fingerprint was created and stored at the time the user customizable content was digitally signed or authenticated.

The wiki engine then compares the determined fingerprint with the original fingerprint. If the two fingerprints are identical, the user customizable content is identified as unchanged, and thus any digital signature associated with the content is deemed still valid. This signed content is presented having a first appearance.

If the two fingerprints are not identical, the user customizable content is identified as unsigned or modified, and thus any digital signature associated with the unsigned or modified content is deemed invalid. This invalid content is presented having a second appearance. Unsigned content can include content having an invalid digital signature, and content having no valid or invalid signatures.