throbber
PWEGA 01/913‘Mé
`
`
`
`u.x<
`
`,1H.
`
`v:
`
`PA 494424
`
`
`
`
`Infiifii
`
`
`
`
`
`
`
`
`
`
`
`“Emma
`
`UNITED STATES DEPARTMENT OF COMMERCE
`
`United States Patent and Trademark Office
`
`November 27, 2001
`
`THIS IS TO CERTIFY THAT ANNEXED HERETO IS A TRUE COPY FROM
`THE RECORDS OF THE UNITED STATES PATENT AND TRADEMARK
`
`OFFICE OF THOSE PAPERS OF THE BELOW IDENTIFIED PATENT
`APPLICATION THAT MET THE REQUIREMENTS T0 BE GRANTED A
`
`FILING DATE UNDER 35 USC 111.
`
`APPLICATION NUMBER: 60/270,663
`
`FILING DATE: Februaly 20, 2001
`
`PRIORIT
`
`DOCUMENT
`SUBMITTED OR TRANSMITTED IN
`COMPLIANCE WITH RULE 17.1(a) OR (b)
`
`By Authority of the
`
`effigy/w
`
`N. WOODSON
`
`Certifying Officer
`
`«3:323.
`
`
`
`
`
`
`
`
`.3“;1:3s:_memmamgugL13:
`
`
`mum.
`
`
`mummmmxmmmin
`
`
`
`
`Page 1 of 30
`
`GOOGLE EXHIBIT 1005
`
`

`

`fl; "2/ —-0/
`
`Pleasety ea lus si n + inside this box —’ +
`p
`P
`9 ( )
`
`PTO/$5116 (8-00)
`Approved for use through10l31/2002. 0MB 0651-0032
`US. Patent and Trademark Office; U.S. DEPARTMENT OF COMMERCE
`-:ier the PapenNork Reduction Act or 1995. no persons are required to respond to a collection of Information Unless it displays a valid OMB control number.
`PROVISIONAL APPLICATION FOR PATENT COVER SHEET
`This is a request for filing a PROVISIONAL APPLICATION FOR PATENT under 37 CFR 153(c)-
`INVENTOR(S)
`
`Residence
`
`r,2,M/JJIIIHIIIIIII
`
`°Michael
`
`Brown
`
`P.O. Box 216, 7 Danube Drive
`Heidelberg, Ontario NOB 1Y0
`CANADA
`
`Family Name or Surname
`
`Ci
`
`and either State or Forei n Coun
`
`Additional inventors are being named on the __ separater numbered sheets attached hereto
`TITLE OF THE INVENTION 280 characters max
`
`CODE 5 IGNING SYSTEM AND METHOD
`
`Bar Code Label here
`
`~
`
`Firm or
`Individuamame
`
`Address
`
`FILING FEE
`
`AMOUNT $
`$ 19 0 ' 00
`
`l
`
`RESPMWW Date
`‘
`I
`SIGNATURE
`REGISTRATION N0.
`
`TYPED or PRINTED NAME _———f———-———-DavidB - COChran
`(ifappmpfiate)
`Docket Number:
`
`4
`
`3 9 , 14 2
`
`555255012198
`
`USE ONLY FOR FILING A PROVISIONAL APPLICATION FOR PATENT
`This collection of information is required by 37 CFR 1.51. The information is used by the public to file (and by the PTO to process) a
`provisional application. Confidentiality is govemed lg! 35 use. 122 and 37 CFR 1.14. This collection is estimated to take 8 hours to
`complete, including athen'ng, preparin , and subml
`'ng ‘Ihe complete rovisional a plicalion to the PTO. Time will va
`depending u
`n
`the IndIVIdual case.
`y comments on
`e amount 0 time you require 0 complete
`is form andIor suggestions for re using this bur en,
`should be sent to the Chief lnfon'nation Officer US. Patent and Trademark Office, US. De anment of Commerce, Washington, 0.0.
`20231. DO NOT SEND FEES OR COMPLETED FORMS TO THIS ADDRESS. SEND O: Box Provisional Application, Assistant
`Commissioner for Patents, Washington, DC. 20231.
`
`Direct all correspondence to:
`CORRESPONDENCE ADDRESS
`a: ——+
`OR
`Type Customer Number here
`-
`Dav1d B. Cochran, Esq.
`Jones, Day, Reavis 6; Pogue
`North Point, 901 Lakeside Avenue
`Cleveland was
`16 586—3939
`I
`ENCLOSED APPLICATION PARTS check all thata - I 1
`Specification NumberofPages
`mgkmm t
`[El Drawing(s) NumberofSheets
`omefls edfy)
`error of Attorney fo
`p
`rovi ions. 5,--
`I: Application Data Sheet. See 37 CFR 1.76
`METHOD or PAYMENT OF FILING FEES FOR THISAL APPLICATION FOR PATENT
`I:
`Applicant claims small entity status. See 37 CFR 1.27.
`CI
`A check or money order is enclosed to cover the filing fees
`X
`The Commissioner is hereby authorized to chargefiling _
`fees or credit any overpayment to Deposit Account Number:
`50l432
`[1 Payment by credit card. Fom'I PTO-2038 is attached.
`Ref :
`555 255 0 1 2 1 9 B
`The invention was made by an agency of the United States Government or under a contractwith an agency of the
`United States Government.
`,
`@ No.
`[:1 Yes, The name of the us Government agency and ihe Government contract number are: ___________,________.____.__
`______—4
`
`Address
`
`Page 2 of 30
`
`

`

`PROVISIONAL APPLICATION COVER SHEET
`Additional Page
`
`PTO/$5116 (8-00)
`
`David
`
`Yach
`
`254 Castlefield Ave.
`Waterloo, Ontario NZK 2N1
`CANADA
`
`U.S. Patent and Tra emafk Office, U.S, DEPARTMENT OF COMMERCE
`Agrroved for use mmth 1013172002. 0MB 0651-0032
`Under the Paperwork Reduction AC1 of 1995, no persons are requlrzd to res and to a collection of Information unless It dis [a s a valid OMB comm! number.
`Docket Number
`555255012198
`INVENTOR(S)IAPPUOANT(S)
`_Given Name first and middle
`an
`Famii or Surname
`Ci
`and either State or Forei n Coun
`Herb
`Little
`523A Rosemeadow Crescent
`Waterloo, Ontario NZT lZ9
`CANADA
`
`be included on this form. Provide credit card Information and authorization on PTO—2038.
`
`Number
`
`1
`
`WARNING: information on this form may become public. Credit card information should not
`
`Page 3 of 30
`
`

`

`Title:
`
`Code Signing System and Method
`
`lnventor(s):
`
`Michael Brown, Herb Little, David Yach
`
`Assignee:
`
`Research In Motion Limited
`
`BACKGROUND OF THE INVENTION
`
`Field of the Invention
`
`This invention relates to security protocols with dynamic library linking
`
`digital signature to a program in order to use it on a mobile communications device.
`
`9
`9
`programs such as JavaTM programs. Specifically, this invention relates to assi nin a
`
`-1-
`
`Description of the Prior Art
`
`When an application program arrives at a mobile communications device
`
`such as the RIM Wireless Handheld 957TM or a multiple mode device incorporating both
`
`data and voice communications features, there is a need to control the access that the
`
`application has. For example, if such a device is to be exported, access to any strong
`
`cryptographic routines residing on the device must be restricted.
`
`interfaces to a radio
`
`transmitter may be protected so that destructive applications are unable to flood a wireless
`
`network with transmission signals; similarly, interfaces to a database or file system may be
`
`protected so that destructive applications are unable to fill a device’s storage space with
`
`unwanted data or alter existing data.
`
`One scheme for protecting interfaces involves application software signing,
`
`commonly called code signing. In conventional code signing schemes, an application
`
`Page 4 of 30
`
`

`

`application. If the author is a trusted source, the application may be loaded and executed
`
`on the device.
`
`Most known code signing schemes grant access to device or system
`
`resources for an application program based on authentication of the author of the
`
`application. However, there remains a need for a code signing scheme which provides for
`more selective resource access restriction, based on the particular application instead of
`
`solely upon author authentication.
`
`SUMMARY OF THE INVENTION
`
`it is therefore an object of the invention to provide an improved coding signing
`
`program developer or author generates a signature indicating the identity of the author and
`appends the signature to the application. Upon the arrival of a signed application at a
`device such as described above, the signature is used to authenticate the author of the
`
`-2-
`
`system and method.
`it is a related object of the invention to oversee the management and
`
`execution of Java and other dynamic library link-based applications arriving at a mobile
`
`communications device.
`
`It is a further object of the invention to verify that any application has been
`
`digitally signed as having permission to carry out its intended functions.
`
`A still further object of the invention is to prevent unacceptable applications
`
`from gaining access strong cryptographic routines and any other application programming
`
`interface (API) designated by the API author as “sensitive”.
`
`In the present invention, digital signatures are used to control access to
`
`Page 5 of 30
`
`

`

`sensitive APls, thereby allowing access to only those applications that have been digitally
`
`of the conventional authentication scheme. According to this aspect of the invention, a
`
`5
`
`device checks a digital signature appended to an application to determine whether or not
`
`signed by the author of a sensitive API or by a signing authority acting on behalf of the API
`author. The invention thereby advantageously implements an authorization scheme instead
`
`-3-
`
`the application has been authorized to access device resources.
`
`In a preferred embodiment of the invention, a Java application, which will
`
`access a sensitive API, is developed to run on a device.
`
`in order to run on the device and
`
`access the sensitive API, the author of the API must approve the application by attaching a
`
`digital signature using the author’s private key. Before the application can be executed on
`a device, the signed application will be verified. The author of any APl may decide that the
`
`API should not be exposed to every application on the device, but only to those that have
`
`been verified to be non-destructive, orforwhich some business arrangement pre-exists, for
`
`example.
`
`Further features of the invention will be described or will become apparent in
`
`the course of the following detailed description.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`In order that the invention may be more clearly understood, embodiments
`
`thereof will now be described in detail by way of example, with reference to the
`
`accompanying drawings, in which:
`
`Fig. 1 is a system diagram of a first preferred embodiment the invention;
`
`Figs. 2A and ZB illustrate components of a device on which an application
`
`Page 6 of 30
`
`

`

`may be loaded and executed;
`Fig. 3 is a detailed flow diagram of the signing process according to the first
`
`embodiment;
`
`Fig. 4 is a detailed flow diagram of the handling of a signed application on the
`
`5
`
`device in accordance with the first embodiment;
`Fig. 5 is a system diagram of a second preferred embodiment the invention;
`
`Fig. 6 is a detailed flow diagram of the signing process according to the
`
`second embodiment; and
`Fig. 7 is a detailed flow diagram of the handling of a signed application on the
`
`0
`
`device in accordance with the second embodiment.
`
`application, creating the signed application 8. The signed application 8 may now access
`
`application Y can be executed and granted access to the sensitive API 6, a code signer 10,
`which may be the author of the sensitive API or a competent signing authority chosen by
`the API author and acting on behalf of the API author must sign the application. That is,
`using the author's private key, code signer 10 must attach a digital signature to the
`
`DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
`
`Several embodiments of the invention will now be described with reference to
`
`Figures 1-8.
`
`FIG 1 is an overall system diagram of a first embodiment of the invention. An
`
`application developer 2, creates an application Y, 4, such as a Java application, to run on
`the device 12 and access some sensitive API 6.
`In this embodiment, before the device
`
`20
`
`Page 7 of 30
`
`

`

`and appended to the application. It is also contemplated that a single signature may grant
`
`access to a group of related APls. Signature requirements are easily established in
`
`accordance with any desired level of control of API access.
`
`The signed application 8, having one or more appended signatures, may be
`
`sent via the wireless network 9 or via a serial link (not shown) to the device. In the example
`
`of a Java application, a Java virtual machine (as shown in Fig. 2A) on the device will verify
`
`the digital signature of the signed application 8 before allowing the signed application
`
`access to the sensitive API.
`
`the sensitive API it requires when it arrives on the device.
`If access to more than sensitive
`API is required by the application, a unique signature is preferably generated for each API
`
`applications. Where the device 12 is a multiple mode device capable of data and voice
`
`FIG 2A is a'diagram of the basic components of the invention on the device,
`
`including the Java virtual machine 20, applications 22, and libraries 24. Although the
`
`device represented in Fig. 2A is enabled for Java applications, the invention is in no way
`
`limited thereto. References in this description to Java applications and associated device
`
`components are for illustrative purposes only. As described above, the invention is
`
`applicable to other dynamic library linking-based applications which require access to
`
`device libraries or interfaces.
`
`The Java virtual machine 20 is responsible for managing the linking and
`
`execution of all Java applications that are running on the device. The applications may be
`
`sent to the device over the wireless network or through a serial link. As shown in FIG 23,
`
`the applications 22 may include some signed applications 23 as well as some unsigned
`
`Page 8 of 30
`
`

`

`
`
`
`
`
`
`.32..llitilfll...“‘51:)“ _L o
`
`communications for example, the applications may include data applications, voice
`
`applications and possibly applications relating to both data and voice functionality.
`
`If a library on the device 12 exposes a sensitive API,
`
`it must contain the
`
`following three items:
`
`a) A string 26 that provides a short description of the contents of the library;
`
`b) A public key 28 corresponding to the private key held by the code signer 10, which
`
`public key will be used to verify signatures on signed applications that require
`
`access to the sensitive API; and
`
`c) An API identifier 30 that uniquely identifies the sensitive API. If a library exposes
`
`more than one sensitive API, the library will include an identifier for each sensitive
`
`API.
`
`Any signed application 23 on the device must contain the following three items:
`
`a) The Java byte code that is to be run;
`
`b) One or more digital signatures; and
`
`c) An API identifier for each digital signature indicating which API the digital signature
`
`protects.
`
`FIG 3 is a flow diagram of the code signing scheme ofthe first embodiment. it
`
`on a device, through a library X for example as shown at step 40, then the finished
`
`application will need to be signed before it can run on the device. The developer can write
`
`such an application 4 (FIG 1) and test it in a locally available device simulator environment
`
`in which signature checking is disabled (step 42). Once the developer is satisfied that the
`
`an application developer is writing an application that will require access to a sensitive APl
`
`Page 9 of 30
`
`

`

`protected API, in step 44. . As indicated at step 46, the code signer for the protected API
`
`reviews the application and verifies that it may be granted access to the sensitive APl on
`
`the device 12. The code signer may apply a plurality of criteria to determine whether or not
`
`such access to the sensitive API is to be granted, including but in no way limited to: a
`
`maximum application size restriction, the specific device resources used by the application,
`
`the perceived utility and value of the application to a device user, its interaction with other
`
`applications on the device, and perhaps most important, whether or not the application
`
`appears to contain a virus or destructive code.
`
`application is working properly, the application is submitted to the code signer for the
`
`to it. As described above, the code signer may be the API author or a signing authority
`
`In step 48, the code signer makes a determination of whether or not to sign
`
`the submitted application. If the code signer is satisfied, then in step 50, the code signer
`
`generates a signature, preferably using a hash of the application and a private key, and
`
`appends the digital signature (including the API identifier) to the application. Where the
`
`application requires access to more than one sensitive APl such that more than one
`
`_|. U]
`
`it,“ii...lt
`"iii;
`
`signature is required, steps 46 through 54 would be repeated (not shown). The signed
`
`application is then returned to the application developer as in step 52. Provided that all
`
`required signatures granting access to all required APls have been appended to the
`
`application, the application developer may then send the signed application, as in step 54,
`
`to a real device for execution therein. in step 56, if the code signer does not accept the
`
`code or does not wish to grant access to one or more of the required APls, the developer
`
`receives a rejection notice and the submitted application will not run on the device, if sent
`
`Page 10 of 30
`
`

`

`acting on behalf of the APl author.
`
`FIG 4 is a flow diagram of a method, in accordance with the first embodiment
`
`of the invention, that a device uses to handle a signed application. Once an application
`
`has arrived on the device in step 60, through a wireless communication link or a direct
`
`connection to the device, the virtual machine 20 may begin the verification process. Any
`
`libraries that the application requires must also be present on the device before the
`
`process can continue. Once the device has all of the libraries required by the application, it
`
`will determine if the application needs access to a sensitive APl within one of these
`
`libraries, in step 62.
`
`If not, the application can be linked with all of the libraries it requires,
`
`and executed in step 76.
`
`in step 64, if the application does require access to a protected
`
`'APl, the virtual machine can extract the public key and API identifier from the library
`
`exposing the API. Then, in step 66, the virtual machine looks through all of the signatures
`
`appended to the application, and tries to find one with an identifier matching the API
`l
`
`-3-
`
`identifier extracted from the library. The virtual machine determines if there is a match in
`
`step 68.
`
`if a signature for the specific API is found in step 66, it must then be verified.
`
`Verification of the signature at step 68 preferably involves hashing the application, applying
`
`a public key corresponding to the private key used by the code signer during the code
`
`signing process, and comparing the result with the appended signature. A match between
`
`the locally generated result and the appended signature verifies the signature. if the
`
`signature cannot be verified, the application is not loaded or executed (step 74) and the
`
`process ends (step 78). According to a further aspect of the invention, non-verified
`
`Page 11 of 30
`
`

`

`applications are purged from the device. If the signature is Verified properly in step 68, then
`
`the application must have been signed using the code signer's private key. Since onlythe
`
`code signer has access to that private key, the code signer must have been satisfied that
`
`may be repeated, when the application requires access to more than one sensitive API for
`
`example. When all signatures have been verified, the virtual machine will display a
`
`notification message to the user, including the description of the API required by the
`
`application, such as: “Application X requires access to the 'strong cryptographic primitives’
`
`API.” The user will then be asked if the application should be allowed to proceed, at step
`
`70.
`
`If the user chooses to execute the application, the virtual machine will link the
`
`application with any required libraries and, once the linking process is complete, the
`
`application will be executed as in step 76. Othenrvise, the application will be not be loaded
`
`or executed, and the process ends (78).
`
`the application should be granted access to the sensitive API. This verification process
`
`in the art will appreciate, most application developers invest significant time and expense to
`
`The first embodiment of the invention as described above therefore provides
`
`for control of access to sensitive APls by a code signer. However, this necessitates a
`
`through review of every application requiring access to any sensitive APls on the device by
`
`the code signer. Such application review is a time- and labor-intensive process. The code
`
`signer must also assume the substantial responsibility of ensuring that the code for all such
`
`applications is “clean”, or free from viruses and destructive code.
`
`For an application developer, a code signing scheme according to the first
`
`embodiment requires the transmission of an application to the code signer. As those skilled
`
`Page 12 of 30
`
`

`

`A code signing scheme according to a second embodiment of the invention
`
`provides for API access control, but overcomes both of the above potential disadvantages
`
`of the first embodiment. An overall system diagram of a second embodiment of the
`
`invention is shown in FIG 5. As described above in conjunction with FIG 1, an application
`
`developer 2, creates an application Y, 80, to run on the device 12 and access a sensitive
`
`API 6. The application must therefore be granted access to the sensitive API in order to
`
`run on the device. In accordance with the second embodiment of the invention, the
`
`application developer 2 uses a hashing algorithm, such as the known Secure Hashing
`
`Algorithm SHA1, to generate a hash of the application. For a Java application, the Java
`
`.cod file is preferably used in the hashing operation. Instead of sending the application to a
`
`code signer for approval as in the first embodiment, the hash of the application Y, 82, is
`
`sent to the a signing authority 11. The signing authority 11 is similar to the code signer 10
`
`of the first embodiment, but performs somewhat different functions as will become
`
`apparent as this description proceeds.
`
`between the application developer 2 and the signing authority 11 before the hash of the
`
`application Y, 82, is sent to the signing authority 11. Such a registration process is
`
`preferably initiated when a development or other business relationship between the
`
`prevent early release of applications currently under development. Therefore, a code
`
`signing scheme as described above may actually discourage application development by
`
`certain developers.
`
`application developer 2 and the signing authority 11 is established. Where an application
`
`In a particularly preferred embodiment, a registration process is executed
`
`Page 13 of 30
`
`

`

`developer 2 has entered into an agreement with a manufacturer or service provider of
`
`device 12 to provide further services to the device 12 for example, registration of the
`
`application developer 2 could be performed, regardless of whether or not an application
`
`has yet been completed. The registration of an application developer 2 is preferably limited
`
`to specific APls, such that applications from a particular application developer 2 would be
`
`signed for access only to certain APls. Therefore, a hash of an application from an
`
`application developer registered with the signing authority 11 for developing applications
`
`requiring access to a data messaging API or a voice- or telephony—related API in a
`
`communication device for example, would not be signed by the signing authority 11 to also
`
`thus closely controlled.
`
`The registration process begins with a request from an application developer
`
`-2 to use a particular API.
`
`‘If the developer 2 has established some sort of business
`
`relationship as described above, the signing authority 1 1 may then provide the application
`
`developer 2 with detailed information about the API to allow the application developer2 to
`
`‘ write applications which operate with the API. The application developer 2 may submit a
`
`grant access to a cryptographic or any other sensitive API on'the device. API access is
`
`-11..
`
`registration request to the signing authority 11 to be registered as a developer of
`
`applications for the particular API. The signing authority 1 1 then registers the application
`
`developer 2 accordingly
`
`The signing authority 11 thereby controls which application developers may
`
`write applications requiring access to sensitive APls. Dilferent developers may have
`
`different API access requirements and may thus acquire differentAPl access registrations.
`
`Page 14 of 30
`
`

`

`The nature of some APls, such as any cryptographic APls, may require more strict controls
`
`than messaging or telephony APls for example. As described above, export regulations
`
`may define specific guidelines for access to any cryptographic APls on a device. The
`
`registration operations performed by the signing authority 11 can be adapted to implement
`
`any such guidelines.
`
`If export regulations require that an application developer obtain a
`
`permit in order to access a cryptographic API, then the signing authority 11 would confirm
`
`that the application developer has obtained such a permit before registering the developer
`
`for cryptographic API access.
`
`When a hash of an application Y, 82, is sent to the signing authority 11, an
`
`-12-
`
`wireless network or loaded onto the device through a direct connection (not shown). The
`\
`
`authentication process is performed by the signing authority 11 to authenticate the
`
`application developer 2. Provided that the application developer 2 has previously been
`
`registered with the signing authority 11 and the registration has not expired or been
`
`revoked, the signing authority 11 will sign the hash of the application and send the
`
`signature 84 back to the application developer 2. The signature 84 is generated using a
`
`secret key of the signing authority 11 and the hash 82 of the application, as described
`
`above. Most modern signature algorithms involve calculation of a hash of an input file or
`
`data, and any such algorithm may be used in this embodiment of the invention. Instead of
`
`generating a hash of its input however, the signing authority 11 may use the hash 82 of the
`
`application sent by the developer 2. The signature 84 is then appended to the application
`
`80 to form a signed application 86, which may be transmitted to the device 12 over a
`
`device 12 must verify the appended signature 84 before the application is executed. if
`
`Page 15 of 30
`
`

`

`access to more than one sensitive API is required, then more than one signature 84 may
`
`be generated by the signing authority 11 and appended to the application 80.
`
`The second embodiment of the invention differs from the first embodiment
`
`primarily in aspects relating to code signing and signature verification. The actual
`
`applications and executiOn thereof are substantially the same for both embodiments. Thus,
`
`applications 80, signed in accordance with the code signing scheme of the second
`
`embodiment of the invention, may be executed in a device as shown in FIG 2A and FIG 28
`
`-13-
`
`developer as in step 94. Steps 56, 92 and 94 may be repeated if access to more than one
`
`as described above.
`
`The code signing process according to the second embodiment
`
`is
`
`represented in the flow diagram of FIG. 6. As in FIG 4, an application requiring access to a
`
`sensitive API on a device is shown at 40, using a library X for example. The application,
`
`when complete, may be tested in a device simulator environment in which signature
`
`checking is disabled (step 42).
`
`If proper operation of the application within the simulator
`
`environment/is verified, then the application is hashed and the hash of the application is
`
`submitted to the author of the protected API orthe signing authority, in step 88. At step 90,
`
`the signing authority 11 determines whether or not the application developer is registered
`
`with the signing authority 11 . If so, then in step 92, a signature is generated using a private
`
`key, and the digital signature (including the API identifier) is returned to the application
`
`sensitive API is required by the application. The application developer appends the
`
`signature or signatures to the application (96) and may then send the signed application,
`
`as in step 98, to a device. In step 56, if the application developer is not registered with the
`
`Page 16 of 30
`
`

`

`the hash of the application should not be signed, then the developer receives a rejection
`
`notice and the submitted application will not run on any device.
`
`FIG 7 illustrates the operations executed on a device upon receipt of an
`
`application signed in accordance with the second embodiment of the invention. The
`
`process begins at a step 60 when an application with at least one appended signature
`
`arrives at the device. As described above, any libraries that the application requires must
`
`also be present on the device before the process can continue. At step 62, it is determined
`
`whether or not the application requires access to a sensitive API within any of these
`
`I libraries.
`
`If not, the application is linked with all of the libraries it requires and executed, at
`
`step 76.
`
`In step 64, it the application does require access to a protected API, the virtual
`
`machine (FIG 2A) extracts the public key and API identifier from the library exposing the
`
`API.
`
`it a corresponding signature with an identifier matching the API identifier extracted
`
`from the library has been appended to the application, as determined at step 66, then the
`
`virtual machine attempts to verify the signature (102) by calculating a hash of the
`
`application 80 and using the public key corresponding to the private key used by the
`
`signing authority 11.
`
`if the signature cannot be verified, the application is not loaded or
`
`executed (step 74) and the process ends (step 78). As described above, non-verified
`
`signing authority 1 1 or is not registered for access to one of the required APls, such that
`
`-14-
`
`applications may possibly be purged from the device.
`
`if the signature is verified in step 102, then the virtual machine will display a
`
`notification message to the user, including the description of the API required by the
`
`application, and await input from the user to indicate whether or not the application should
`
`Page 17 of 30
`
`

`

`be allowed to proceed, at step 70.
`
`If the user chooses to execute the application, the
`
`virtual machine will link the application with any required libraries and the application will be
`
`executed (76). Otherwise, the application will be not be loaded or executed (74), and the
`
`process ends (78).
`
`Notably, in the second embodiment, only a hash 84 of the application is sent
`
`to the signing authority 11 by the application developer 2, such that the signing authority 11
`
`does not check the application for errors, viruses, and the like. Responsibility forthe code
`
`therefore lies with the application developer 2. Since the application developer 2, in order
`
`to be registered with the signing authority 11, must have established a service or other
`
`business relationship with the signing authority 1 1 or the entity on whose behalf the signing
`
`authority 11 acts, the application developer 2 will ensure that no destructive or othenrvise
`
`problematic code is sent to any devices. Should any such code be found in a signed
`
`application or suspected because of peculiar, destructive or problematic behaviour
`
`-15-
`
`
`
`5i?ll:iiiLIl'tit:
`
`exhibited when a signed application is executed on a device, the signature forthe particular
`
`application will be revoked. The registration or privileges of the application developer2 with
`
`the signing authority 11 may also be suspended or revoked, since the signature 84
`
`provides an audit trail through which the developer of a problematic application may be
`
`identified. In such an event, all devices would preferably be informed of the revocation or
`
`instructed to download an updated revocation list.
`
`it any applications for which the
`
`corresponding signatures have been revoked are running on a device, the device halts
`
`execution of the application and may purge the application from its local storage. Every
`
`device would also preferably store and periodically update a revocation list to ensure that
`
`Page 18 of 30
`
`

`

`80, not the application 80 itself, is sent to the signing authority 11 .
`
`Although the signature 84 generated by the signing authority 11 is dependent
`
`upon authentication of the application developer and confirmation that the application
`
`developer has been properly registered, the signature 84 includes the hash of the
`
`signing schemes, in which API access is granted to any applications arriving from trusted
`
`application developers or authors.
`
`In the invention, APl access is granted on an
`
`application-by—application basis and thus can be more strictly controlled or regulated.
`
`It will be appreciated that the above description relates to the preferred
`
`embodiment by way of example only. Many variations on the invention will be within the
`
`scope of those knowledgeable in the field, and such variations are within the scope of the
`
`any subsequently received or downloaded signed applications for which a signature has
`
`been revoked will not be verified and are therefore not executable on any device.
`
`in addition, hashing algorithms are designed to prevent reconstruction of an
`
`input from the hash, or at least render such reconstruction computationally infeasible. As
`
`such, security concerns regarding the release of applications under development for
`
`verification by a signing authority should be alleviated. Only a hash 84 of the application
`
`application 80 and is therefore application-specific. This cont

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