|Número de publicación||US6880083 B1|
|Tipo de publicación||Concesión|
|Número de solicitud||US 09/476,037|
|Fecha de publicación||12 Abr 2005|
|Fecha de presentación||31 Dic 1999|
|Fecha de prioridad||31 Dic 1999|
|Número de publicación||09476037, 476037, US 6880083 B1, US 6880083B1, US-B1-6880083, US6880083 B1, US6880083B1|
|Inventores||Rodney A. Korn|
|Cesionario original||Intel Corporation|
|Exportar cita||BiBTeX, EndNote, RefMan|
|Citas de patentes (3), Otras citas (6), Citada por (46), Clasificaciones (11), Eventos legales (4)|
|Enlaces externos: USPTO, Cesión de USPTO, Espacenet|
1. Field of the Invention
The present invention relates to the field of encryption. Specifically, the present invention relates to creating and executing secure, i.e., encrypted, scripts by a world wide web-enabled application.
2. Description of the Related Art
A script differs from an applet. Although an applet also is downloaded as part of a Web page and run on a client system, the applet stands alone, that is, it is not part of the browser application, just as an application program, such as a word processor application, is not part of an operating system.
In addition to scripts and applets, controls enhance Web browsers. For example, ActiveX controls are interactive objects in a Web page that provide interactive and user-controllable functions. ActiveX controls are part of a set of technologies available from Microsoft Corporation, based on a refinement of the well known COM standard, that is directed to enabling interactive content for Web pages. ActiveX currently is supported by the Microsoft Windows operating system, but will be supported on other platforms, such as the Macintosh platform available from Apple Computer, and UNIX platforms.
Without sufficient security mechanisms in place, it is possible to download a Web page that contains controls that launch an application that causes harm or unintended results, e.g., to the client system. Furthermore, if the controls are not secure, the provider of a Web site risks attack by computer hackers, and is vulnerable to software bugs.
The invention provides a method for creating a secure script. Executable commands in the script are hashed, and the hashed values for the commands are encrypted and appended to the script.
The present invention is illustrated by way of example and not limitation in the following figures. Like references indicate similar elements, in which:
An embodiment of the present invention enables Web pages to execute software applications on a client system, e.g., a personal computer (PC), in a secure manner using a signed control, and a signed and encrypted script. Embodiments of the invention may be represented as a software product received over, and/or stored on, a machine-readable medium (also referred to as a computer-readable medium or a processor-readable medium). The machine-readable medium may be any type of magnetic, optical, or electrical storage medium including a diskette, CD-ROM, memory device (volatile or non-volatile), or similar storage mechanism. Moreover, the machine readable medium may be accessed at a server by a client via a network connection between the client and server, for example, in a client/server computing environment. The machine-readable medium may contain various sets of instructions, code sequences, configuration information, or other data. For example, the procedures described herein can be stored on the machine-readable medium. Those of ordinary skill in the art will appreciate that other instructions and operations necessary to implement the described invention may also be stored on the machine-readable medium.
In one embodiment of the invention, a script in a World Wide Web page (“Web page”, “Web document”, or “HyperText Markup Language (HTML) document”) is hashed and encrypted. A control in the Web page, such as ActiveX, decrypts and hashes the script to verify the script has not been altered or tampered with, before executing or causing to execute the script. In this manner, one can serve to a client web pages that contain interactive content or that execute local applications in a secure fashion. The described embodiment involves a script that may be invoked by a Web browser application, or more particularly, by a control in a Web page downloaded by the Web browser application. However, it should be noted that any application or software program can benefit from the present invention to protect malicious modification of or hacking to a script or the like.
With reference to
Any well known or proprietary hashing function may be utilized to compute a hashed value for each executable command in the script. Each executable command is provided at 105 as the key value input to the hashing function, from which the hashing function computes a hashed value corresponding to the executable command. In one embodiment of the invention, each executable command may be hashed, while in other embodiments of the invention, some number of executable commands, e.g., one or more but less than all of the executable commands, may be hashed. In one embodiment of the invention, the hashing function utilizes public key A that is tied to the script, as described below, thus making it highly unlikely that the script was authored or edited by an unauthorized individual without access to the corresponding private key.
At 120, each hashed value is encrypted using well known asymmetric, i.e., public, key cryptography techniques. For example, each hashed value is encrypted using private key A 106. This process is also referred to in cryptography as creating a public key digital signature. Public key digital signatures provide a way to prove that the signed data was signed by one who had a copy of a particular private key, in this case, private key A.
The signed hashed values for the executable commands are embedded or appended to the script at 130. Alternatively, the hashed values may first be appended to the script and then signed. A public key A corresponding to the private key A may be appended to the script as well, or obtained from the public key authentication infrastructure, e.g., a certification authority. (A public file known as a certificate is issued by the certification authority and contains an entity's public key, identifying information, and a signature provided by the certification authority). At 140, the script, including the signed hashed values and public key, if present, may be encrypted using a symmetric key 107 to provide a second level of encryption. The encryption is not necessary for protection of the script, but hides the public key, if included in the script.
In a Web-enabled application, the script, encrypted or not as the case may be, is converted as appropriate for inclusion in a Web page. The public key A 108 corresponding to the private key A 106 is provided to control, i.e., interactive objects that provide interactive and user-controllable functions, in the Web page. In one embodiment of the invention, the Web page utilizes ActiveX control from Microsoft Corporation. The control is also signed at 160, to hide public key A provided therein at 150. The control is signed using a different private key, key B provided at 109. The script is ready for the execution process upon activation of the control by, e.g., a Java applet or a user clicking a button on the Web page.
The process of securely executing the script is now described with reference to FIG. 2. In one embodiment of the invention, a user running a Web browser application visits a Web site and downloads a Web page containing interactive content. The user activates a control in the Web page, for example, by clicking on an applet. Recall from the above discussion that the control is signed at 160 with a public key digital signature using private key B 109. Thus, at 210, the signature is verified using public key B 205. Verification is accomplished by decrypting the signed control with public key B. If any change has occurred to either the control or the signature, it will be detected at 210. At 220, the script is decrypted with symmetric key 107. (Symmetric key encryption requires only one key that is shared by the encryption process and decryption process). Of course, the decryption is necessary only if the script was correspondingly encrypted at 140.
At 230, the executable commands in the script are hashed, using the same hashing function utilized at 110. The hashed commands that were encrypted and appended to the script at 120 and 130, respectively, are now decrypted at 240, using public key A, which was provided to the control at 150. The decrypted hashed commands are compared at 250 with the commands hashed at 230. If no changes in the script occurred between hashing and encrypting at 110 and 120, and hashing and decrypting at 230 and 240, the decrypted hashed commands obtained at 240 should be identical to the hashed commands obtained at 230, and the script may begin execution at 260. If, on the other hand, the commands hashed at 230 are not the same as the hashed commands decrypted at 240, the user is cautioned or warned, for example, by displaying a message in a pop up window or the like in a display screen for the client system. The user may, according to one embodiment of the invention, select to proceed with execution of the script. This is useful, for example, if a new version of the script is released, in which case hashed values for the commands in the old version of the script will not match the hashed values for the commands in the new version.
In one embodiment of the invention, the decrypted hashed commands are maintained so that a comparison between hashed command values and decrypted hashed command values may be performed before every execution of the script. Alternatively, a comparison is performed between execution of each command, to ensure there is no dynamic modification of the script or particular commands in the script. In each case, the user is warned as appropriate. In this manner, verification of the source and integrity of a script in an application, such as may be in a Web page, is accomplished.
|Patente citada||Fecha de presentación||Fecha de publicación||Solicitante||Título|
|US6324650 *||2 Nov 1998||27 Nov 2001||John W.L. Ogilvie||Message content protection and conditional disclosure|
|US6367012 *||6 Dic 1996||2 Abr 2002||Microsoft Corporation||Embedding certifications in executable files for network transmission|
|US6546487 *||19 Oct 1999||8 Abr 2003||Sun Microsystems, Inc.||System and method for protecting use of dynamically linked executable modules|
|1||"Internet Security: Email: Pretty Good Privacy (PGP)," www.waubonsie.com:8001/security/email.html, printed Dec. 23, 1999, 2 pages.|
|2||"Internet Security: Introduction to Encryption: What is cryptography?", www.waubonise.com:8001/security/intro.html, printed Dec. 23, 1999, 2 pages.|
|3||"What is ActiveX?," Microsoft white paper, 3 pages.|
|4||:Internet Security: World Wide Web: Secure Socket Layer(SSL), www.waubonsie.com:8001/security/www.html, printed Dec. 23, 1999, 4 pages.|
|5||Aurili, Mikael, "Cryptography," http://courses.cs.vt.edu/ cs3604/lib/Privacy/Aurili.4, html, printed Dec. 23, 1999, 4 pages.|
|6||Whittle, Robin, "Cryptography for Encryption, Digital Siggnatures and Authentication," www.ozemail.com.au/firstpr/crypto, printed Dec. 23, 1999, 20 pgs.|
|Patente citante||Fecha de presentación||Fecha de publicación||Solicitante||Título|
|US7003800 *||6 Nov 2000||21 Feb 2006||Ralph Victor Bain||Self-decrypting web site pages|
|US7308492 *||1 Oct 2003||11 Dic 2007||Sony Corporation||Method and apparatus for use in remote diagnostics|
|US7313823 *||26 Sep 2001||25 Dic 2007||Zhenyu Gao||Anti-alternation system for web-content|
|US7366896 *||29 Ago 2000||29 Abr 2008||Microsoft Corporation||Systems and methods for limiting access to potentially dangerous code|
|US7428570 *||26 Dic 2000||23 Sep 2008||Wimba.Com S.A.||Process of communication between an applet and a local Agent using a Socket communication channel|
|US7631198||10 May 2005||8 Dic 2009||Seagate Technology||Protocol scripting language for safe execution in embedded system|
|US7707620 *||6 May 2005||27 Abr 2010||Cisco Technology, Inc.||Method to control and secure setuid/gid executables and processes|
|US7760904 *||2 May 2006||20 Jul 2010||Lg Electronics Inc.||Proprietary watermark system for secure digital media and content distribution|
|US7822934 *||30 Jun 2004||26 Oct 2010||T&D Corporation||Multipurpose semiconductor integrated circuit device|
|US7877813||26 Jul 2007||25 Ene 2011||Lg Electronics Inc.||Copy protection method and system for digital media|
|US7984121 *||5 Nov 2007||19 Jul 2011||Sony Corporation||Method and apparatus for use in remote diagnostics|
|US8176249 *||28 Abr 2007||8 May 2012||Amiram Grynberg||Methods for embedding session secrets, within application instances|
|US8205094 *||28 May 2003||19 Jun 2012||Nokia Corporation||Tamper evident removable media storing executable code|
|US8302170 *||22 Sep 2009||30 Oct 2012||Bespoke Innovations S.A.R.L.||Method for enhancing network application security|
|US8359658||15 Mar 2008||22 Ene 2013||Microsoft Corporation||Secure authoring and execution of user-entered database programming|
|US8607072 *||26 Abr 2011||10 Dic 2013||Broadcom Corporation||Storage device content authentication|
|US8635325||28 Jun 2011||21 Ene 2014||Sony Corporation||Method and apparatus for use in remote diagnostics|
|US8910247 *||6 Oct 2010||9 Dic 2014||Microsoft Corporation||Cross-site scripting prevention in dynamic content|
|US9069549||10 Oct 2012||30 Jun 2015||Google Technology Holdings LLC||Machine processor|
|US9378360 *||24 Jun 2014||28 Jun 2016||Flexera Software Llc||Secure if antecedent|
|US9448823 *||10 Oct 2012||20 Sep 2016||Google Technology Holdings LLC||Provision of a download script|
|US9525673 *||29 May 2015||20 Dic 2016||Sap Se||Content protection for extract, transform, load (ETL) scripts|
|US20020040432 *||26 Sep 2001||4 Abr 2002||Zhenyu Gao||Anti-alternation system for homepage|
|US20020166051 *||3 May 2001||7 Nov 2002||Marvin Moser||Method, system, and apparatus for encrypting a web browser script|
|US20030028363 *||26 Dic 2000||6 Feb 2003||Johanna Nobili||Process of communication between an applet and a local agent using a socket communication channel|
|US20040122908 *||1 Oct 2003||24 Jun 2004||Sony Corporation, A Japanese Corporation||Method and apparatus for use in remote diagnostics|
|US20050182928 *||12 Feb 2004||18 Ago 2005||Chandar Kamalanathan||System and method for secure HTML links|
|US20050216907 *||28 May 2003||29 Sep 2005||Corinne Dive-Reclus||Tamper evident removable media storing executable code|
|US20060190529 *||30 Jun 2004||24 Ago 2006||T & D Corporation||Multipurpose semiconductor integrated circuit device|
|US20060193492 *||2 May 2006||31 Ago 2006||Kuzmich Vsevolod M||Proprietary watermark system for secure digital media and content distribution|
|US20060253909 *||6 May 2005||9 Nov 2006||Mikhail Cherepov||Method to control and secure setuid/gid executables and processes|
|US20060259895 *||10 May 2005||16 Nov 2006||Seagate Technology Llc||Protocol scripting language for safe execution in embedded system|
|US20070028211 *||29 Jul 2005||1 Feb 2007||Microsoft Corporation||Interpreter security mechanism|
|US20070083378 *||11 Oct 2005||12 Abr 2007||Microsoft Corporation||Secure application programming interface|
|US20070271469 *||26 Jul 2007||22 Nov 2007||Lg Elextronics Inc.||Copy protection method and system for digital media|
|US20070288763 *||28 Abr 2007||13 Dic 2007||Amiram Grynberg||Methods for Embedding Session Secrets, within Application Instances|
|US20080059606 *||5 Nov 2007||6 Mar 2008||Sony Corporation||Method and apparatus for use in remote diagnostics|
|US20090133132 *||15 Mar 2008||21 May 2009||Microsoft Corporation||Secure Authoring and Execution of User-Entered Database Programming|
|US20100077216 *||22 Sep 2009||25 Mar 2010||Bespoke Innovations S.A.R.L.||Method for enhancing network application security|
|US20110202776 *||26 Abr 2011||18 Ago 2011||Broadcom Corporation||Storage Device Content Authentication|
|US20120090026 *||6 Oct 2010||12 Abr 2012||Microsoft Corporation||Cross-site scripting prevention in dynamic content|
|US20130191442 *||10 Oct 2012||25 Jul 2013||Motorola Mobility Llc||Provision of a download script|
|US20130198325 *||10 Oct 2012||1 Ago 2013||Motorola Mobility Llc||Provision and running a download script|
|CN102368257A *||30 Sep 2011||7 Mar 2012||微软公司||Cross-site scripts prevention in dynamic contents|
|WO2012047432A2 *||6 Sep 2011||12 Abr 2012||Microsoft Corporation||Cross-site scripting prevention in dynamic content|
|WO2012047432A3 *||6 Sep 2011||5 Jul 2012||Microsoft Corporation||Cross-site scripting prevention in dynamic content|
|Clasificación de EE.UU.||713/170, 713/171|
|Clasificación internacional||H04L9/32, G06F21/00|
|Clasificación cooperativa||H04L9/3247, G06F21/52, H04L9/3236, H04L2209/60|
|Clasificación europea||G06F21/52, H04L9/32N, H04L9/32L|
|8 Mar 2000||AS||Assignment|
Owner name: INTEL CORPORATION, CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:KORN, RODNEY A.;REEL/FRAME:010682/0155
Effective date: 20000114
|9 Oct 2008||FPAY||Fee payment|
Year of fee payment: 4
|1 Oct 2012||FPAY||Fee payment|
Year of fee payment: 8
|18 Nov 2016||REMI||Maintenance fee reminder mailed|