throbber
Ulllted States Patent [19]
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket