`Atkinson et al.
`
`US005892904A
`[11] Patent Number:
`[45] Date of Patent:
`
`5,892,904
`Apr. 6, 1999
`
`[54] CODE CERTIFICATION FOR NETWORK
`TRANSMISSION
`
`[75] Inventors: Robert G. Atkinson, Woodinville;
`Robert M. Price, Seattle; Aaron M.
`COIItOI‘eI‘, Kirkland, all of Wash-
`
`[73] Assignee: Microsoft Corporation, Redmond,
`Wash
`
`[21] Appl' NO‘: 761’484
`[22] Filed:
`Dec_ 6, 1996
`
`IIlt. Cl-6 ...................................................... ..
`[52] US. Cl. .......................... .. 395/187.01; 380/4; 380/21
`[58] Field of Search ............................. .. 395/186, 187.01,
`395/188.01; 380/4, 21, 23, 25, 29, 30, 43
`
`[56]
`
`References Cited
`
`us’ PATENT DOCUMENTS
`4/1987 GrenZebach et a1. ................... .. 380/21
`4,661,657
`3/1990 Brachtl et a1. ..... ..
`.. 380/25
`4,908,861
`9/1991 Dyson ------------ --
`-- 380/25
`5,050,212
`570707528 12/1991 Hawe ct a1~ ~~
`380/48
`5’121’345
`6/1992 LentZ """"" "
`364/550
`5,343,527
`8/1994 Moore .... ..
`380/4
`5,359,659 10/1994 Rosenthal ....... ..
`380/4
`5,473,691 12/1995 MeneZes et a1. .
`380/25
`5,475,826 12/1995 Fischer ............................. .. 395/182.04
`
`5,475,839 12/1995 Watson et al. ........................ .. 395/650
`5,495,533
`2/1996 Linehan et a1. .
`380/21
`5,610,982
`3/1997 Micali ..................................... .. 380/25
`
`Primary Examiner—Albert DeCady
`Attorney, Agent, or Firm—Klarquist Sparkman Campbell
`Leigh & Whinston, LLP
`
`[57]
`
`ABSTRACT
`
`A certi?cation or signing method ensures the authenticity
`and integrity of a computer program, an executable ?le, or
`code received over a computer network. The method is used
`by a publisher or distributor to “sign” an executable ?le so
`can be transmitted
`Con?dence to a recipient Over an
`open network like the Internet. The executable ?le may be
`of any executable form, including an executable or portable
`executable .exe ?le format, a .cab cabinet ?le format, an .ocx
`object control format, or a Java class ?le. The code signing
`method assures the recipient of the identity of the publisher
`as the source of ?le (i.e., its authenticity) and that the ?le has
`not been modi?ed after being transmitted by the publisher
`(i.e., the integrity of the ?le). As a result, the code signing
`method allows an executable ?le to be transmitted over open
`computer networks like the Internet with increased certainty
`in the identity of the source of the ?le and minimized risk of
`contracting a computer virus or other malicious executable
`Computer ?les~
`
`31 Claims, 8 Drawing Sheets
`
`Executable file
`
`Publisher Signature
`
`Publisher-encrypted
`
`Cryptographic digest of
`executable ?le
`
`Executable ?le name
`
`Hyperlink to executable file
`description
`
`Publisher Digital Certificate
`Publisher's name
`
`Publisher's public key
`
`102
`
`A
`110
`
`/
`
`106
`
`‘
`l
`./
`
`T\112
`
`T\114
`._\
`,_\ 122
`124
`"\
`126
`
`Expiration date of publisher's //_\128
`license
`
`Hyperlink to agency's policy
`
`’\
`130
`
`Hyperlink to agency's identifier / \132
`
`/
`
`Symantec 1022
`IPR of U.S. Pat. No. 8,677,494
`
`000001
`
`
`
`U.S. Patent
`
`Apr. 6, 1999
`
`Sheet 1 0f 8
`
`5,892,904
`
`mm
`
`ow
`
`on
`
`
`
`@255 wzizom
`
`.5558:
`
`SE
`
`_
`
`SE .mEzzE
`
`522E
`
`
`
`mO_>wO .5950
`
`mm
`
`mm
`
`
`
`
`
`
`
`_ , K x5528 @N _ I I l I I I I ll?llllllullllllllllllllll'llllp
`
`mm P .OE
`
`u \ \ _
`
`
`
`_1 llllllllllllllllllllllllll |||_ _ _
`
`_ _
`
`n / :23 Y/ _
`
`_ _
`
`_ _
`_ _
`
`_
`
`_
`
`_ _
`_ _
`
`
`
`_ 3% 55% E052 _
`
`n 8/ u
`_ Eosmz _ 3/ z_<_>_ _ 3< S _
`_ $553M “
`
`8 N _
`
`_ 2328mm _
`SE28 may/E05 _
`
`000002
`
`
`
`U.S. Patent
`
`Apr. 6, 1999
`
`Sheet 2 0f 8
`
`5,892,904
`
`Fig. 2A
`
`HTML
`DOCUMENT
`
`IMAGES
`
`MODEM
`
`COMPUTER
`
`000003
`
`
`
`U.S. Patent
`
`Apr. 6, 1999
`
`Sheet 3 of 8
`
`5,892,904
`
`Fig. 2B
`
`E “|('05(|fi '.-:.'DOTa'I|OlI - -ICIIISDH IIIEYHEI EX['II)IeY
`[Ila
`E_aIr
`jlew go Fgvorlus
`gelp
`
`‘I
`
`7”’
`
`¢ 6 3 tfi
`H #
`|’oIward
`Slop
`Rgflezli
`Home
`Datk
`J‘ Address l‘|!t|:2/!'W|FH.|'|iZl'O:Dfl (on
`‘ |
`rrnonu-:13
`
`acnnuu
`
`I
`
`(R E3':§ .fi
`Senrch
`'avori(u
`‘rint
`l'on1
`
`I
`
`aurmm
`
`anus»
`
`|
`
`vnrun: us
`
`I
`
`|$:|u.'| < Lu.'¢li.IrI
`
`% Microsoft“
`
`WPERE DO
`
`u 'N'AN‘ YO G0 TDIIAY
`
`Free Downloads
`
`About Microsoft
`B991 exerisnoed wiih
`
`'1§,"§,‘,',§,. 1
`Explore»
`5”?“ '1“ *3 ‘W1
`
`- Live Mnnd mthe htern¢t:\MrIIowc Strale
`Immmn Hll (amps. Paul Mam? mu .Ium nlrnn
`
`Briefin . Turn in simulcast:
`
`Horde? alzo 3 the chm Jflhc Microsoft Frufcssional Dcvclo
`The Renaissance of DislriaJ19:| Ccwpuiing.
`
`r's Conference:
`
`s 'IIIIIhI'l W911 sinas I :1
`Mu-.msn11 I
`Thc10Jhotlistic an objcttiwz srap:hoto"hc 11o31;:opJla' cyocrcaacc
`E|8Sl||'lEI|0|'IS. |l'CfEaS3E|il’aT11E on M|3fCI5ElT."S TalT||'{ JTWEE SIISS 3111 ntemet
`Exp cIr:r'3 0'; release helped I:oo;t Mitrnsoflto wmberonal
`
`TO Pfliflitle iI'I ‘(OBIS
`
`The main rompone-119 of Sun ard oracle‘; Networl-: rzomputingu-i;io1 d:m‘t
`
`
`address key MIcrns0n‘3 Ne'.FL'. nmatve am In c'osmIn..u.Aa:. . 4...::.. ....._.._._..._..g. .:.-: ....:..... ..a:. . n..:... .. . nu. . .._.. .: ... .. _A
`
`000004
`
`000004
`
`
`
`U.S. Patent
`
`Apr. 6, 1999
`
`Sheet 4 0f 8
`
`5,892,904
`
`Fig. 3
`
`Executable file
`
`100 \ Obtain cryptographic digest,-\
`of executable file
`104
`
`1
`
`Form publisher signature A
`with cryptographic digest
`108
`
`l
`
`Attach publisher signature
`and publisher digital
`certificate (with publisher's A
`public key and link to
`120
`agency's identifier) to
`executable file
`
`Fig. 7
`Internet Explorer
`
`E] E] El
`
`180
`
`The program <Program Tit|e> was published by
`<Publisher> under an Internet Publishing License
`granted by <Agency>. Do you wish to run it?
`4-’- 182
`
`Yes
`
`No
`
`Help
`
`+
`
`+
`
`More about <Program Title?84
`
`More about Internet Publishing Licenses
`ranted b <A enc >’._\
`9
`Y
`9
`y
`184
`
`A
`Endorsements... 186
`
`000005
`
`
`
`U.S. Patent
`
`Apr. 6, 1999
`
`Sheet 5 0f 8
`
`5,892,904
`
`Fig. 4
`
`Executable file
`
`'
`
`Publisher Signature
`
`Publisher-encrypted
`Cryptographic digest of
`executable file
`
`Executable file name
`
`/\
`
`102
`
`A
`110
`
`/,
`/ \1O6
`
`/"\
`/
`112
`
`Hyperlink to executable file
`description
`
`,~\
`/
`
`1 14
`
`Publisher Digital Certificate
`Publisher's name
`
`Publisher's public key
`
`.\
`,\ 122
`/
`124
`/”\
`126
`
`Expiration date of publisher's //-\128
`license
`
`Hyperlink to agency's policy
`
`/’\
`130
`
`Hyperlink to agency's identifier / \132
`
`/
`
`000006
`
`
`
`U.S. Patent
`
`Apr. 6, 1999
`
`Sheet 6 0f 8
`
`5,892,904
`
`Fig. 5
`
`-
`-
`Browser Application
`
`A 138
`
`Agency Public key
`
`.
`
`/'\
`
`136
`
`Fig. 10
`
`220
`
`Obtain listing of /’—\ 222
`\ revoked digital
`certificates
`
`®No
`
`Is
`digital certificate
`revoked ?
`
`224
`
`Yes
`vi
`Render dialog that b 226
`digital certificate is
`revoked
`
`000007
`
`
`
`U.S. Patent
`
`Apr. 6, 1999
`
`Sheet 7 0f 8
`
`5,892,904
`
`Fig. 6
`
`Receive computer program file A152
`
`150 \ |SI a
`publlsher
`signature
`'ncluded?
`
`Yes
`
`154
`
`No
`
`l
`Decrypt digital
`A certificate with
`158
`agency's public key to
`obtain publisher's key
`
`l
`Render dialog
`notifying user of /_\156
`absence of publisher
`signature
`
`Is digital
`.
`.
`certlficate properly —No—>
`decrypted 7
`'
`
`160
`
`164 /“ Decode publisher
`digital certificate with
`publisher's public key
`
`V
`166 / Compute hash of
`computer program
`
`v b
`Render dialog
`162
`notifying user that
`.
`.
`attached d|_g|ta|_
`certificate is lnvalld
`
`T
`
`No
`
`computed hash
`match publisher
`digital certificate
`
`168
`
`Yes
`i
`170 /~ Render digital
`certificate dlalog
`
`000008
`
`
`
`U.S. Patent
`
`Apr. 6, 1999
`
`Sheet 8 0f 8
`
`5,892,904
`
`Fig. 8
`
`'/_\190
`Meta-agency Digital Certificate
`x/?
`192
`Agency's name
`
`Agency's public key
`.
`
`Expiration date of agency's
`license
`
`194
`//_\
`A
`196
`
`/"—\
`
`198
`
`Scope of agency s licensing
`
`.
`
`-
`
`-
`
`Fig. 9
`
`200
`
`Decode meta-agency
`digital certificate with b 202
`meta-agency's public
`key to obtain agency's
`public key
`
`Decode agency digital /-\204
`certificate with agency's
`public key to obtain
`next level of public key
`
`is
`public key to
`another level of
`agency?
`
`206
`
`No
`v
`Decode publisher
`digital certificate with
`publisher's public key
`
`/‘ 208
`
`000009
`
`
`
`1
`CODE CERTIFICATION FOR NETWORK
`TRANSMISSION
`
`FIELD OF THE INVENTION
`
`This invention relates generally to obtaining computer
`software over an open computer netWork like the Internet
`and, in particular, to identifying the source of such softWare.
`
`BACKGROUND AND SUMMARY OF THE
`INVENTION
`
`The Internet is a Well knoWn, global netWork of coopera
`tively interconnected computer netWorks. The World Wide
`Web portion of the Internet is a collection of server com
`puters (referred to as “sites”) on the Internet Which store
`HTML documents that can be publicly accessed by com
`puter users having a connection to the Internet. There are
`many such World Wide Web sites on the Internet.
`Software, generally knoWn as “Internet broWsers,” are
`noW in Widespread use for retrieving (also knoWn as
`“doWnloading”) and vieWing electronic documents in hyper
`text markup language (HTML) format from the World-Wide
`Web. Originally, these HTML documents Were simply
`ASCII coded character ?les generally consisting of text and
`HTML “tags” that specify formatting of the document, links
`(referred to as “hyper-links”) to related documents on the
`netWork, and other ?les that contain information (e.g.,
`sound, images, video, etc.) to be combined into the docu
`ment. Typical HTML documents found on the World Wide
`Web include both text and tags specifying ?les for several
`images that are to be displayed With the text. In use, broWser
`softWare alloWs a user to navigate (also knoWn as
`“broWsing”) betWeen documents and sites on the World
`Wide Web.
`More recently, the ?les that broWsers are capable of
`accessing and utiliZing include executable ?les such as, for
`example, OLE (object linking and embedding) controls and
`JAVA applets. These executable ?les Were at ?rst used to
`enhance the image characteristics of an HTML document by
`adding features that move or have other changing image
`characteristics. Moreover, it is expected that the functional
`ity of such executable ?les Will increase to include a Wide
`range of applications and application components. In addi
`tion to broWsers utiliZing executable ?les, the marketing and
`distribution of computer softWare is increasingly utiliZing
`netWork-based distribution rather than the traditional distri
`bution of computer readable media such as magnetic
`(?oppy) diskettes or optical (CD-ROM) disks.
`A danger in Wide-spread distribution of executable ?les
`over open netWorks like the Internet is an increased risk of
`contracting computer viruses or other malicious executable
`computer ?les. Computer viruses have long been a scourge
`of computer oWners and operators because of the relative
`ease of contracting many viruses and the potentially devas
`tating damage that viruses can cause. A common and effec
`tive defense to computer viruses has been to install execut
`able ?les only from computer readable media that are knoWn
`to be virus-free, such as the original media on Which
`softWare are distributed by a manufacturer or softWare
`distributor or publisher.
`Con?dence in the authenticity of the original media is
`established by conventional marketing devices such as
`packaging, trademarks, the reputation of retailers offering
`the softWare, etc. SoftWare that is distributed over an open
`netWork like the Internet does not have identifying
`packaging, ?xed original media, or even a retail establish
`ment that can be visited. As a consequence, softWare distri
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`5,892,904
`
`2
`bution over an open netWork is susceptible to corruption by
`a party impersonating a proper softWare distributor or by the
`softWare being modi?ed after it is transmitted by the dis
`tributor.
`One approach to addressing this problem is to create a
`protective and padded virtual machine on the softWare
`recipient’s computer. Such a virtual machine, Which is often
`referred to as a playpen or sandbox, alloWs untrusted,
`possibly malicious code to be executed Without fear that it
`could cause any unauthoriZed or unWarranted actions. This
`approach is an outgroWth of the security architecture in
`existing computer operating systems. A problem With this
`approach is that it is extraordinarily dif?cult to create a
`sandbox that is actually secure against malicious code.
`Unexpected security holes are commonly discovered in
`supposedly secure operating systems that use this method.
`But even assuming that this difficulty could be overcome,
`a fundamental quandary With the sandboxing approach is
`that there is a very strong tension betWeen creating a
`sandbox safe enough to run perhaps malicious code, but yet
`With suf?cient access to system resources to be capable of
`performing useful operations. For example, sandboxed code
`that is alloWed to make netWork connections off of a host
`machine (e.g., TCP, FTP, EMail, or otherWise) should not
`have access to any information on the machine that is to be
`kept private. As other examples, some system utilities such
`as a disk defragmenter or an indexing utility that locates the
`lost documents on a hard disk Would likely be inoperable as
`sandboxed code. A sandbox that successfully protected
`against the damage these utilities might possibly cause
`Would prevent them from carrying out their intended pur
`pose.
`The present invention provides a certi?cation or signing
`method for ensuring the authenticity and integrity of a
`computer program, an executable ?le, or code received over
`a computer netWork. The method is used by a publisher or
`distributor to “sign” an executable ?le so it can be trans
`mitted With con?dence to a recipient over an open netWork
`like the Internet. The executable ?le may be of any execut
`able form, including an executable or portable executable
`.exe ?le format, a .cab cabinet ?le format, an .ocx object
`control format, or a Java class ?le.
`The code signing method assures the recipient of the
`identity of the publisher as the source of ?le (i.e., its
`authenticity) and that the ?le has not been modi?ed after
`being transmitted by the publisher (i.e., the integrity of the
`?le). As a result, the code signing method alloWs an execut
`able ?le to be transmitted over open computer netWorks like
`the Internet With increased certainty in the identity of the
`source of the ?le and minimiZed risk of contracting a
`computer virus or other malicious executable computer ?les.
`In one implementation, the method includes determining
`a cryptographic digest or “hash” of the executable ?le and
`forming a publisher signature With the cryptographic digest.
`The publisher digital signature also includes an identifying
`name of the executable ?le and a link or hyperlink to a
`description of the executable ?le. The publisher signature is
`formed With a public-private key signature algorithm, such
`as the RSA public key cipher, as is knoWn in the art.
`A publisher digital certi?cate is attached to the publisher
`signature. The publisher digital certi?cate is issued by a
`certi?cation authority or agency to authenticate the identity
`of the publisher issuing the publisher signature. The pub
`lisher digital certi?cate is a cryptographic certi?cate that
`includes the softWare publisher’s name, a public key corre
`sponding to a private key used by the publisher to sign the
`
`000010
`
`
`
`5,892,904
`
`3
`?le, an expiration date (or validity period) of the certi?cate,
`and a link or hyperlink to the certi?cation agency, including
`a statement of its certi?cation policy and its identi?er (e.g.,
`trademark). The digital certi?cate is encrypted With a private
`key corresponding to a Widely knoWn and readily available
`certi?cation agency public key. For example, the certi?ca
`tion agency public key may be on or linked to a key that is
`on the recipient’s computer in association With a broWser
`application or another softWare application or the operating
`system. Alternatively, the certi?cation agency public key
`may be posted on an open netWork like the Internet, or
`otherWise published.
`This certi?cation of the executable ?le or code is con
`?rmed or read at the recipient’s computer. The public key for
`the publisher’s signature is obtained by decoding or decrypt
`ing the digital certi?cate With the certi?cation agency public
`key, thereby assuring the authenticity of the softWare pub
`lisher. A cryptographic digest or hash is determined for the
`code as it is received. The digest is compared to the digest
`included in the publisher signature. A match betWeen the
`digests con?rms the integrity of the code. A dialog is then
`rendered by the recipient computer indicating Who is pro
`viding the code and the certi?cation agency that has authen
`ticated the identity of the publisher.
`This tWo-level identity con?rmation provides the recipi
`ent With a concise, simple assurance of the authenticity and
`integrity of the doWnloaded code or executable ?le. By
`authenticating the identity of the publisher rather than the
`actual code, the certi?cation agency need not authenticate
`the code being signed by the publisher. This alloWs the
`certi?cation agency to authenticate the identity of a rela
`tively large number of softWare publishers. Links to the
`certi?cation agency and a description of the code are ren
`dered in the dialog and alloW the recipient to obtain addi
`tional information about the code and the agency’s certi?
`cation policies before choosing to run or accept the code.
`Additional features and advantages of the invention Will
`be made apparent from the folloWing detailed description of
`an illustrated embodiment Which proceeds With reference to
`the accompanying draWings.
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a block diagram of a computer system that may
`be used to implement a method and apparatus embodying
`the invention.
`FIG. 2 is a block diagram of the computer system of FIG.
`1 connected to a remote computer netWork (e.g., the
`Internet) for locally broWsing electronic documents residing
`at a remote computer site.
`FIG. 3 is a How diagram representing a code certi?cation
`or signing method for ensuring the authenticity and integrity
`of a computer program or an executable ?le received over a
`computer netWork.
`FIG. 4 is a schematic representation of an executable ?le
`With a publisher signature according to the present inven
`tion.
`FIG. 5 is a schematic representation of a root public key
`incorporated into a broWser application.
`FIG. 6 is a How diagram representing a publisher signa
`ture con?rmation method.
`FIG. 7 illustrates an exemplary digital certi?cate dialog
`rendered on a display screen to provide a user With a simple
`tWo-part identity con?rmation of the publisher of an execut
`able ?le.
`FIG. 8 is a diagrammatic illustration of a meta-agency
`digital certi?cate by Which a higher-level or meta-agency
`
`4
`grants a certi?cation agency authority to issue publisher
`digital certi?cates.
`FIG. 9 is a How diagram of an agency/meta-agency
`certi?cate decoding method.
`FIG. 10 is a How diagram of a digital certi?cate revoca
`tion method.
`
`DETAILED DESCRIPTION OF EMBODIMENT
`
`Referring to FIG. 1, an operating environment for an
`illustrated embodiment of the present invention is a com
`puter system 20 With a computer 22 that comprises at least
`one high speed processing unit (CPU) 24, in conjunction
`With a memory system 26, an input device 28, and an output
`device 30. These elements are interconnected by at least one
`bus structure 32.
`The illustrated CPU 24 is of familiar design and includes
`an ALU 34 for performing computations, a collection of
`registers 36 for temporary storage of data and instructions,
`and a control unit 38 for controlling operation of the system
`20. The CPU 24 may be a processor having any of a variety
`of architectures including Alpha from Digital, MIPS from
`MIPS Technology, NEC, IDT, Siemens, and others, x86
`from Intel and others, including Cyrix, AMD, and Nexgen,
`and the PoWerPc from IBM and Motorola.
`The memory system 26 generally includes high-speed
`main memory 40 in the form of a medium such as random
`access memory (RAM) and read only memory (ROM)
`semiconductor devices, and secondary storage 42 in the
`form of long term storage mediums such as ?oppy disks,
`hard disks, tape, CD-ROM, ?ash memory, etc. and other
`devices that store data using electrical, magnetic, optical or
`other recording media. The main memory 40 also can
`include video display memory for displaying images
`through a display device. Those skilled in the art Will
`recogniZe that the memory 26 can comprise a variety of
`alternative components having a variety of storage capaci
`ties.
`The input and output devices 28, 30 also are familiar. The
`input device 28 can comprise a keyboard, a mouse, a
`physical transducer (e.g., a microphone), etc. The output
`device 30 can comprise a display, a printer, a transducer
`(e.g., a speaker), etc. Some devices, such as a netWork
`interface or a modem, can be used as input and/or output
`devices.
`As is familiar to those skilled in the art, the computer
`system 20 further includes an operating system and at least
`one application program. The operating system is the set of
`softWare Which controls the computer system’s operation
`and the allocation of resources. The application program is
`the set of softWare that performs a task desired by the user,
`using computer resources made available through the oper
`ating system. Both are resident in the illustrated memory
`system 26. Preferably, the operating system employs a
`graphical user interface Where the display output of an
`application program is presented in a rectangular area
`(sometimes referred to as a “WindoW”) on the screen of the
`output device 30 and is also multi-tasking (alloWing appli
`cation programs to execute computing tasks in multiple
`threads), such as Microsoft Corporation’s Windows@ 95 or
`Windows@ NT operating system, IBM’s OS/2 Warp oper
`ating system, Apple’s Macintosh System 7 operating
`system, X-WindoWs, etc.
`In accordance With the practices of persons skilled in the
`art of computer programming, the present invention is
`described beloW With reference to acts and symbolic repre
`sentations of operations that are performed by computer
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`000011
`
`
`
`5,892,904
`
`5
`system 20, unless indicated otherwise. Such acts and opera
`tions are sometimes referred to as being computer-executed.
`It Will be appreciated that the acts and symbolically repre
`sented operations include the manipulation by the CPU 24 of
`electrical signals representing data bits Which causes a
`resulting transformation or reduction of the electrical signal
`representation, and the maintenance of data bits at memory
`locations in memory system 26 to thereby recon?gure or
`otherWise alter the computer system’s operation, as Well as
`other processing of signals. The memory locations Where
`data bits are maintained are physical locations that have
`particular electrical, magnetic, or optical properties corre
`sponding to the data bits.
`FIG. 2 shoWs a broWsing environment 50 in Which
`computer 20 (also shoWn in FIG. 1) runs softWare, referred
`to herein as a “browser,” for uni?ed broWsing of electronic
`documents and other data from local sources (e.g., the
`secondary storage 42 of FIG. 1) and from a remote computer
`netWork 52. The broWser can be integrated With the oper
`ating system softWare, or can be separate application soft
`Ware. The illustrated remote computer netWork 52 is the
`Internet, Which is described in the Background and Sum
`mary of the Invention above. In the illustrated broWsing
`environment 50, the computer 20 connects to the computer
`netWork 52 over a telephone line 54 With a modem 56. Other
`physical connections to the computer netWork alternatively
`can be used, such as an ISDN, T1 or like high speed
`telephone line and modem, a television cable and modem, a
`satellite link, an optical ?ber link, an Ethernet or other local
`area netWork technology Wire and adapter card, radio or
`optical transmission devices, etc. The invention can alter
`natively be embodied in a broWsing environment for other
`public or private computer netWorks, such as a computer
`netWork of a commercial on-line service or an internal
`corporate local area netWork (LAN), an intranet, or like
`computer netWork.
`Documents for broWsing With the illustrated broWser can
`reside as ?les of a ?le system stored in the computer’s
`secondary storage 42 (FIG. 1), or reside as resources at a
`remote computer 58 (also referred to as a “site”) connected
`to the computer netWork 52, such as a World-Wide Web site
`on the Internet. The illustrated document 60 residing at the
`site 58 conforms With HTML standards, and may include
`extensions and enhancements of HTML standards.
`HoWever, the illustrated broWser also can broWse documents
`having other data formats (e.g., Microsoft® Word
`documents, etc.) from the computer 20 or remote computer
`58. In conformance With HTML, the illustrated document 60
`can incorporate other additional information content 62,
`such as images, audio, video, executable programs, etc.
`(hereafter simply “images” 62), Which also reside at the
`remote computer 58. The document 60 and images 62
`preferably are stored as ?les in a ?le system of the remote
`computer 58. The document 60 incorporates the images 62
`using HTML tags that specify the location of ?les or other
`Internet resource containing the images on the Internet 52.
`When used for broWsing documents, the illustrated
`broWser displays the document in a WindoW 68 or rectan
`gular area of the computer’s display 30 allocated to the
`broWser by the operating system. The illustrated WindoW 68
`comprises a frame 70, a document display area 72, and user
`interface controls 74. The broWser displays the document
`Within the document display area 72 of the WindoW 68.
`FIG. 3 is a How diagram representing a code certi?cation
`or signing method 100 for ensuring the authenticity and
`integrity of a computer program, code, or an executable ?le
`102 received over computer netWork 52, or any other
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`6
`computer netWork. Method 100 is used by a publisher or
`distributor to “sign” executable ?le 102 so it can be trans
`mitted securely to a recipient over an open netWork like the
`Internet. Executable ?le 102 may be of any executable form
`including, for example, an .exe executable or portable
`executable ?le format, a .cab cabinet ?le format, an .ocx
`object control format, or a Java class ?le format.
`Code signing method 100 assures the recipient of the
`identity of the source of ?le 102 (i.e., its authenticity) and
`that the ?le Was not modi?ed after it Was transmitted by that
`source (i.e., the integrity of ?le 102). As a result, code
`signing method 100 alloWs an executable ?le to be trans
`mitted over open computer netWorks With increased cer
`tainty in the identity of the source of the ?le and minimiZed
`risk of contracting a computer virus or other malicious
`executable computer ?les.
`Process block 104 indicates that a cryptographic digest or
`“hash” 106 (FIG. 4) of executable ?le 102 is obtained or
`computed. Standard hash functions are available, such as
`“MD 5” and “SHA”. These functions take a variable-length
`input string and convert it to a ?xed-length output string of
`128 bits or more (called a cryptographic digest). This
`?xed-length string “?ngerprints” the ?le by producing a
`value that indicates Whether a ?le submitted for doWnload
`matches the original ?le. Hashing functions and the values
`they generate are secure in that it is computationally infea
`sible to alter a document Without changing its hash.
`Process block 108 indicates that a publisher signature 110
`(FIG. 4) is formed With cryptographic digest 106. Preferably,
`publisher signature 110 also includes an identifying name
`112 of executable ?le 102 and a link or hyperlink 114 to a
`description of executable ?le 102.
`In one embodiment, publisher signature 110 is formed
`With a public-private key signature algorithm, such as the
`RSA public key cipher according to the PKCS #7 format
`promulgated by RSA Laboratories, PKCS#7: Cryptographic
`Message Syntax Standard. Version 1.5, November, 1993.
`Public key algorithms use a con?dential private key to
`encrypt information and a freely available public key to
`decrypt or validate the encrypted information. Such encryp
`tion is secure because is it computationally infeasible to
`determine the private key from the public key.
`Process block 120 indicates that a publisher digital cer
`ti?cate 122 (FIG. 4) and publisher signature 110 are attached
`or appended to or incorporated to executable ?le 102.
`Publisher signature 110 and publisher digital certi?cate 122
`together form a keyed source con?rmation With a secure
`representation of the executable ?le. Publisher digital cer
`ti?cate 122 is issued by a certi?cation authority or agency to
`authenticate the identity of the publisher issuing publisher
`signature 110. Publisher digital certi?cate 122 is a crypto
`graphic certi?cate that conforms, for example, to a standard
`X509 certi?cate format With version 3 extensions, as pro
`mulgated in The Directory-Authentication FrameWork,
`CCITT (Consultation Committee, International Telephone
`and Telegraph) International Telecommunications Union,
`Geneva, 1989.
`Publisher digital certi?cate 122 includes the softWare
`publisher’s name 124, the public key 126 corresponding to
`the private key used by the publisher to form publisher
`signature 110, an expiration date (or validity period) 128 of
`the certi?cate, a link or hyperlink 130 to the certi?cation
`agency’s policy for granting certi?cates, and a link or
`hyperlink 132 to the certi?cation agency’s identi?er (e.g.,
`trademark). In addition, publisher digital certi?cate 122 can
`include a version indicator that identi?es the certi?cate
`
`000012
`
`
`
`5,892,904
`
`7
`format, a serial number and name that identify the certi?
`cation authority, an algorithm identi?er that identi?es the
`algorithm used to sign the certi?cate, together With any
`necessary parameters, and a signed-data object or signature
`by the certi?cation authority or agency (e.g., according to
`the PKCS #7). Publisher digital certi?cate 122 is issued by
`a certi?cation agency that typically is separate from the
`softWare publisher. Digital certi?cate 122 is encrypted With
`a private key corresponding to a Widely knoWn and readily
`available public key.
`With reference to FIG. 5, a root public key 136 for
`decrypting digital certi?cate 122 is associated With a
`broWser application 138 that implements calls for reading
`and decrypting publisher signature 110. As a result, root
`public key 136 is Widely knoWn and distributed and rela
`tively insusceptible to malicious substitution With a spurious
`public key. It Will be appreciated, hoWever, that root public
`key 136 can be Widely knoWn and distributed in other
`manners, such as by incorporation into other softWare appli
`cations or operating systems, posting on an open netWork
`like the Internet, or publication.
`FIG. 6 is a How diagram representing a publisher signa
`ture con?rmation method 150 that is performed, for
`example, by or in response to a call by broWser application
`138. Signature con?rmation method 150 provides a recipient
`of executable ?le 102 (FIG. 4) With simple and effective
`assurance of the authenticity and integrity of executable ?le
`102.
`Process block 152 indicates that a user receives an execut
`able computer program ?le via an open netWork like the
`Internet.
`Decision block 154 represents an inquiry as to Whether
`the executable ?le includes a publisher signature 110. For
`example, broWser application 138 searches the received
`executable ?le or its header (as described beloW in greater
`detail) for a publisher signature in the form of a crypto
`graphic message of a conventional standard such as, for
`example, PKCS #7 version 1.5, promulgated by RSA Labo
`ratories. Whenever a publisher signature is not included in
`the program ?le, decision block 154 proceeds to process
`block 156, and otherWise proceeds to process block 158.
`Process block 156 indicates that a dialog or noti?cation is
`rendered notifying the user of the absence of a publisher
`signature in the program ?le 138. The noti?cation can be
`rendered by broWser application 138 as a dialog, for
`example, and can include user queries as to Whether to open
`or run executable ?le 102.
`Process block 158 indicates that publisher digital certi?
`cate 122 is decrypted With a Widely knoWn public key, such
`as public key 136 associated With broWser appl