Language selection

Search

Patent 2341213 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 2341213
(54) English Title: SYSTEM AND METHOD FOR ENABLING SECURE ACCESS TO SERVICES IN A COMPUTER NETWORK
(54) French Title: SYSTEME ET PROCEDE PERMETTANT L'ACCES SECURISE A DES SERVICES DANS UN RESEAU INFORMATIQUE
Status: Expired
Bibliographic Data
(51) International Patent Classification (IPC):
  • H04L 9/30 (2006.01)
  • H04L 9/00 (2006.01)
  • H04L 29/06 (2006.01)
(72) Inventors :
  • RIGGINS, MARK D. (United States of America)
(73) Owners :
  • BLACKBERRY LIMITED (Canada)
(71) Applicants :
  • VISTO CORPORATION (United States of America)
(74) Agent: OSLER, HOSKIN & HARCOURT LLP
(74) Associate agent:
(45) Issued: 2009-05-26
(86) PCT Filing Date: 1998-08-21
(87) Open to Public Inspection: 2000-03-02
Examination requested: 2003-08-07
Availability of licence: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): Yes
(86) PCT Filing Number: PCT/US1998/017410
(87) International Publication Number: WO2000/011832
(85) National Entry: 2001-02-19

(30) Application Priority Data: None

Abstracts

English Abstract





A global server (106) includes a communications engine for establishing a
communications link with a client (114a); security means
coupled to the communications engine for determining client privileges; a
servlet host engine coupled to the security means for providing to
the client (114a), based on the client privileges, an applet which enables I/O
with a secured service (110a); and a keysafe for storing a key
which enables access to the secured service (110a). The global server may be
coupled to multiple sites, wherein each site provides multiple
services. Each site may be protected by a firewall (116). Accordingly, the
global server stores the keys for enabling communication via
the firewalls (116) with the services (110a).


French Abstract

Un serveur global (106) comprend un moteur de communications permettant d'établir une liaison de communications avec un client (114a), des moyens de sécurisation accouplés au moteur de communications, chargés d'évaluer les privilèges des clients, un moteur hôte mini-serveur accouplé aux moyens de sécurisation pour fournir au client (114a), sur la base des privilèges accordés au client, une mini-application autorisant I/O avec un service sécurisé, et une sécurité de clé pour la mémorisation d'une clé autorisant l'accès au service sécurisé. Le serveur global peut être couplé à des sites multiples, chaque site fournissant des services multiples. Chaque site peut être protégé par un coupe-feu (116). En conséquence, le serveur global mémorise les clés pour autoriser la communication, via les coupe-feu (116), avec les services (110a).

Claims

Note: Claims are shown in the official language in which they were submitted.





WHAT IS CLAIMED IS:


1. A system on a server computer system, comprising: a communications engine
configured to establish a communications link with a client;

a security services engine coupled to the communications engine configured to
present to the client a plurality of user authentication protocol options,
each user
authentication protocol option having a particular level of authentication
associated with it
to authenticate a user according to at least one user authentication protocol
and to
determine user privileges based on the identity of the user and the level of
authentication;

a web server engine configured to present a set of available services based on
the
user privileges, at least one of the available services requiring additional
authentication
information to be provided before access to the service is granted to enable
the client to
select a particular service from the set of available services;

a host engine coupled to the security services engine and to the web server
configured to provide to the client executable service communication code that
enables
communication with the particular service; and

a keysafe configured to store keys, each key for enabling communication
between
the client and a service selected from the set of available services and
including all
additional authentication information required by the selected service for
authenticating
the user to the selected service, the executable service communication code
functioning to
retrieve a key corresponding to the particular service from the keysafe upon
execution of
the code.


2. The system of claim 1, wherein the communications engine uses SSL to create
a
secure communications link with the client.


3. The system of claim 1, wherein the communications engine negotiates an
encryption protocol for transferring messages to and from the client.


4. The system of claim 1, wherein the communications engine uses public key
certificates for transferring messages to and from the client.



-17-




5. The system of claim 1, wherein the security services use public key
certificates to
authenticate a user of the client to determine the user privileges.


6. The system of claim 1, wherein the security services use a digital
signature to
authenticate the user to determine the user privileges.


7. The system of claim 1, wherein the host engine forwards to the client
security code
for enabling the client to perform a security protocol recognized by the
security services.

8. The system of claim 1, wherein one of the available services is secured by
a
firewall and one of the keys includes the additional authentication
information to enable
communication through the firewall.


9. The system of claim 1, further comprising a firewall for protecting the
system.


10. The system of claim 1, wherein one of the keys includes an address
identifying the
location of the selected service.


11. The system of claim 1, wherein the code uses a key to provide to the
client a direct
connection with the selected service.


12. The system of claim 1, further comprising a proxy for communicating with
the
selected service, and wherein the code enables the client to communicate with
the proxy
and one of the keys enables the proxy to locate the selected service.


13. A method comprising:

establishing a communications link with a client;

presenting to the client a plurality of user authentication protocol options,
each user
authentication protocol option having a particular level of authentication
associated with

it;

authenticating the user according to at least one user authentication protocol

option;

determining user privileges based on the identity of a user and the level of
authentication;



-18-




presenting a set of available services based on the user privileges, at least
one of
the available services requiring additional authentication information to be
provided
before access to the service is granted;

enabling the client to select a particular service from a set of available
services;
providing to the client executable service communication code that enables
communication with the particular service; and

retrieving a key from a set of keys, each key corresponding to a respective
service
from the set of available services, the retrieved key for enabling
communication between
the client and the particular service selected and including all additional
authentication
information required by the selected service for authenticating the user to
the selected
service, the executable service communication code functioning to retrieve a
key
corresponding to the particular service from the keysafe upon execution of the
code.


14. The method of claim 13, wherein establishing a communications link
includes the
step of using SSL to create a secure communications link with the client.


15. The method of claim 13, wherein establishing a communications link
includes the
step of negotiating an encryption protocol for transferring messages to and
from the client.

16. The method of claim 13, wherein establishing a communications link
includes the
step of using public key certificates for transferring messages to and from
the client.


17. The method of claim 13, wherein determining user privileges includes the
step of
using public key certificates to authenticate a user of the client.


18. The method of claim 13, wherein determining user privileges includes using
a
digital signature to authenticate the user.


19. The method of claim 13, wherein establishing a communications link
includes
forwarding to the client security code for enabling the client to perform a
recognized
security protocol.


20. The method of claim 13, further comprising: using one of the keys to
communicate
through a firewall to the selected service.



-19-




21. The method of claim 13, wherein the method is performed by a server
employing a
firewall to protect the server.


22. The method of claim 13, wherein one of the keys includes an address
identifying
the location of the selected service.


23. The method of claim 13, wherein providing includes the step of providing
to the
client a direct connection with the service.


24. The method of claim 13, further comprising:

using a proxy to communicate with the service, and wherein providing includes
enabling the client to communicate with the proxy.


25. A system on a server computer system, comprising:

means for establishing a communications link with a client;

means for presenting the client a plurality of user authentication protocol
options,
each user authentication protocol option having a particular level of
authentication;
means for authenticating a user according to at least one user authentication
protocol;

means for determining user privileges based on the identity of the user and
the
level of authentication;

means for presenting a set of available services based on the user privileges,
at
least one of the available services requiring additional authentication
information to be
provided before granting access to the service;

means for enabling the client to select a particular service from a set of
available
services;

means for providing to the client executable service communication code that
enables communication with the particular service; and

means for retrieving a key from a set of keys, each key corresponding to a
respective service from the set of available services, the retrieved key for
enabling


-20-




communication between the client and the particular service selected and
including all
additional authentication information required by the selected service for
authenticating
the user to the selected service, the executable service communication code
functioning to
retrieve a key corresponding to the particular service selected from the
keysafe upon
execution of the code.



-21-

Description

Note: Descriptions are shown in the official language in which they were submitted.



CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
SYSTEM AND METHOD FOR ENABLING SECURE ACCESS TO SERVICES IN A
COMPUTER NETWORK

BACKGROUND OF THE INVENTION
1. Field of the Invention

This invention relates generally to computer networks, and more particularly
to a
system and method for enabling secure access to services in a computer
network.2.
Description of the Background Art

In its infancy, the Internet provided a research-oriented environment where
users and
hosts were interested in a free and open exchange of information, and where
users and hosts
mutually trusted one another. However, the Internet has grown dramatically,
currently

interconnecting about 100,000 computer networks and several million users.
Because of its
size and openness, the Internet has become a target of data theft, data
alteration and other
mischief.

Virtually everyone on the Internet is vulnerable. Before connecting, companies
balance the rewards of an Internet connection against risks of a security
breach. Current
security techniques help provide client and server authentication, data
confidentiality, system

integrity and system access control.

The most popular of the current security techniques is a firewall, which
includes an
intermediate system positioned between a trusted network and the Internet. The
firewall
represents an outer perimeter of security for preventing unauthorized
communication between
the trusted network and the Internet. A firewall may include screening
routers, proxy servers
and application-layer gateways.

For users on the internet to gain access to protected services on the trListed
network,
they may be required to provide their identity to the firewall by some means
such as entering
a password or by computing a response to a challenge using a hardware token.
With proper
authentication, the user is allowed to pass through the firewall into the
local network, but is
typically limited to a predetermined set of services such as e-mail, FTP, etc.

-1-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
Some local network managers place just outside the firewall a server, often
referred to
as a "sacrificial lamb" for storing non-confidential data which is easily
accessible by the
remote user but providing little security.

A De-Militarized Zone, or DMZ, sits between two firewalls protecting a trusted
network. The external firewall protects servers in the DMZ from external
threats while
allowing HyperText Transfer Protocol (HTTP) requests. The internal firewall
protects the
trusted network in the event that one of the servers in the DMZ is
compromised. Many
companies use DMZs to maintain their web servers.

Another security technique for protecting computer networks is the issuance
and use
of a public key certificates. Public key certificates are issued to a party by
a certificate
authority, which via some method validates the party's identity and issues a
certificate stating
the party's name and public key. As evidence of authenticity, the certificate
authority
digitally signs the party's certificate using the certificate authority's
private key.

Thus, when a user via a client computer connects to a server, the client
computer and
server exchange public key certificates. Each party verifies the authenticity
of the received
certificates by using the certificate authority's public key to verify the
signature of the
certificate. Then, by encrypting messages with the server's public key the
user can send
secure communications to the server, and by encrypting messages with the
user's public key
the server can send secure communications to the user. Although any party
might present a

public key certificate, only the real user and the real host have the
corresponding private key
needed to decrypt the message. Examples of authentication and key distribution
computer
security systems include the Kerberos' security system developed by the
Massachusetts
Institute of Technology and the NetSP' security system developed by the IBM
Corporation.

These security techniques do not solve problems associated with the roaming
(traveling) user. For the roaming user, maintaining identification and
authentication
information such as passwords, certificates, keys, etc. is a cumbersome
process. Further,
accessing multiple systems requires multiple keys, which often are too complex
to track and
use. Also, direct access to systems behind firewalls compromises security.
Therefore, a

-2-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
system and method are needed to enable remote access to computer services
easily and
securely.

SUMMARY OF THE INVENTION

The present invention provides a system and method for enabling secure access
to
services in a computer network. The network system includes a global server
coupled via a
computer network to computer services. The global server includes a
communications engine
for establishing a communications link with a client; security means coupled
to the
communications engine for determining client privileges; a servlet host engine
coupled to the

security means for providing to the client, based on the client privileges, an
applet which
enables I/O with a secured service; and a keysafe for storing keys which
enable access to the
secured services. The global server may be coupled to multiple sites, wherein
each site
provides multiple services. Each site may be protected by a firewall.
Accordingly, the global
server stores the keys for enabling communication via the firewalls with the
services.

The method includes the steps of establishing a communications link with a
client;
identifying and authenticating the client; determining client privileges;
providing to the client,
based on the client privileges, an applet which enables I/O with a secured
service; and
retrieving a key which enables access to the secured service.

The system and method of the present invention advantageously provide a
globally-
accessible trusted third party, i.e., the global server. This trusted third
party securely stores
keys, and acts as a single identification and authentication service. Other
systems may be
accessed through the global server. The global server uses the stored keys to
authenticate the
user under an identity that is understood by the other system's existing
security services, and
establishes a secure communications channel to the desired service. Because of
a global

firewall, the global server is substantially protected from external threats.
Accordingly, the
global server provides authorized clients with secure communication through
firewalls with
services. The global server may enable multiple levels of identification and
authentication
services. Accordingly, the global server may enable multiple levels of
resource access based

-3-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
on the user's status, the strengths of the identification and the
authentication and on the
privacy of the communications channel.

Because of the global firewall and the identification and authentication
services
performed by the global server, corporations can store relatively secret
information on the
global server for use by authorized clients. Yet, the present invention also
enables

corporations to maintain only a portion of their secret information on the
global server, so that
there would be only this limited loss should the trusted third party system be
compromised.
Further, the global server advantageously may act as a client proxy for
controlling access to
services, logging use of keys and logging access of resources.

-4-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
BRIEF DESCRIPTION OF THE DRAWINGS

FIG. I is a block diagram illustrating a roaming-user network access system,
in
accordance with the present invention;

FIG. 2 is a block diagram illustrating details of an example client of FIG. 1;
FIG. 3 is a block diagram illustrating details of the global server of FIG. 1;

FIG. 4 is a block diagram illustrating details of an example service server of
FIG. 1;
FIG. 5 is a flowchart illustrating a method for remotely accessing a secure
service;
FIG. 6 is a flowchart illustrating details of the FIG. 5 step of creating a
link between a
client and the global server of;

FIG. 7 illustrates an example web page;

FIG. 8A is a flowchart illustrating details of the FIG. 5 step of accessing a
service in a
first embodiment;

FIG. 8b is a flowchart illustrating details of the FIG. 5 step of accessing a
service in a
second embodiment; and

FIG. 8C is a flowchart illustrating details of the FIG. 5 step of accessing a
service in a
third embodiment.

-5-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

FIG. I is a block diagram illustrating an exemplary roaming-user network
access
system 100 in accordance with the present invention. System 100 includes an
interconnected
network of computers referred to herein as an "Internet" 102. System 100
further includes a

first company network 112, a second company network 118, a kiosk network 138
and an
Internet Service Provider (ISP) network 143, each network being coupled to the
Internet 102.
Company network 112 includes a firewall 116 coupled between the Internet 102
and a

client computer 114a. Company network 118 includes a firewall 120 coupled
between the
Internet 102 and an internal network signal bus 126. Company network 118
further includes
a first server 108a for providing a first service 110a, a second server 108b
for providing a

second service 1 l Ob, a first client computer 114b storing a program for
providing a third
service 110c and a second client computer 114c, each being coupled to signal
bus 126.
Example services 110a-I l Od include an e-mail service program, an address
book service
program, a calendar service program, a paging service program, and a company
database
service program.

The kiosk network 138 includes a first client computer 114d and a second
client
computer 114e, each being coupled to the Internet 102. The ISP network 143
includes an ISP
148 coupled via a wireless channel 146 to a first client computer 114f and
coupled via
modems 152 and 156 and via transmission line 154 to a second client computer
114g.

The Internet 102 includes a global server 106 which is protected by a global
firewall
104 and includes a server 108c for providing a service 110d.
Intercommunication between
client computers 114a-114g and services II lOd is accomplished via the global
server
106. If, for example, a user of any one of the client computers 114a-114g
wants to access a
service 110a-110d (which is provided at a location within system 100 that is
unknown to the

user), then the user applies a known Uniform Resource Locator (URL) to access
a web page
operated by global server 106. An example web page 700 is shown in and
described with
reference to FIG. 7. The global firewall 104 protects the global server 106
from external
threats.

-6-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
Before obtaining access privileges to the functionality provided by the global
server
106, the user must first obtain authorization from the global server 106.
Obtaining
authorization typically requires user identification and authentication, for
example, using
public-key certificates. Once authenticated, the global server 106 provides
the user with

access to the services 110a-11 Od. It will be appreciated that varying levels
of access to
services 110a-110d will be granted based on varying strengths of
identification and
authentication and on the privacy of the communications channel.

To enable user access to and control of the services I 10a-1 lOd, the global
server 106
may use conventional applets, servlets or agents in a distributed network
environment, such
as the JavaT"' distributed environment produced by the Netscape Corporation.
The global

server 106 provides the user's client with access to and control of the
service 110a-110d. The
global server 106 may redirect the user's client to access the service 110a-
110d itself, the
global server 106 may access the service 110a-110d itself and provide I/O to
the client by
proxy, or the global server 106 may provide the service 110a-110d itself.
These three

different modes of access to the services 110a-110d are described with
reference to FIGs. 8A-
8C.

The global server 106 maintains the network addresses of all the services 110a-
1 l Od,
the user's public and private keys, the user's account numbers, firewall
authentication
information, etc. Firewall authentication information includes the necessary
identification,

passwords and certificates needed to pass firewalls 116 and 120. Accordingly,
the user need
only maintain the URL of the global server 106, and identification and
authentication
information such as a password or hardware token for obtaining access to the
functionality of
the global server 106. Thus, the roaming user can access computer services
110a-110d using
any computer terminal which is connected to the Internet 102.


FIG. 2 is a block diagram illustrating details of a client computer 114, such
that each
of clients 114a-114d is an instance of the client 114. The client 114 includes
a Central
Processing Unit (CPU) 210 such as a Motorola Power PC microprocessor or an
Intel

-7-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
Pentium microprocessor. An input device 220 such as a keyboard and mouse, and
an output
device 230 such as a Cathode Ray Tube (CRT) display are coupled via a signal
bus 240 to
CPU 210. A communications interface 250, a data storage device 260 such as
Read Only
Memory (ROM) or a magnetic disk, and a Random-Access Memory (RAM) 270 are
further

coupled via signal bus 240 to CPU 210. The communications interface 250 of
client
computer 114 is coupled to the Internet 102 as shown in and described with
reference to FIG.
l.

An operating system 280 includes a program for controlling processing by CPU
210,
and is typically stored in data storage device 260 and loaded into RAM 270 for
execution.
Operating system 280 includes a communication engine 282 for generating and
transferring

message packets to and from the internet 106 via the communications interface
250.
Operating system 280 further includes an internet engine such as a web browser
284,
e.g., the Netscape'T' web browser produced by the Netscape Corporation or the
Internet
Explorer' web browser produced by the Microsoft Corporation. The web browser
284

includes an encryption engine 285 for encrypting messages using public and
private keys, and
an applet engine 286 for executing applets 288 downloaded from the global
server 106 to
enable the access to computer services I l0a-I l Od. Downloaded applets 288
may include
security applets 290 for performing services such as user identification and
authentication,
message integrity services, and certificate verification. The browser 284
further receives web

page data (391, FIG. 3), configuration data 390 and information identifying a
set of selectable
services 110a-110d, and uses the information to display the web page (700,
FIG. 7). The web
browser 284 enables a user via the client 114a-114g to select one of the
services 110a-110d
for execution.

It will be appreciated that a client 114a-114g such as client 114b may include
a
service engine 490 (see FIG. 4) for providing a service 110a-110d such as
service I lOc.
Thus, it is possible for a client 114b user to request access to service 110c
via the global
server 106, without knowing that the service.110c is provided by client 114b.
Accordingly,

-8-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
the global server 106 will provide client 1 l4 with an applet 288 for
providing user interface
I/O of service 110c back to client 114b.

FIG. 3 is a block diagram illustrating details of the global server 106, which
iricludes a
CPU 310 such as a Motorola Power PC microprocessor or an Intel Pentium
microprocessor. An input device 320 such as a keyboard and mouse, and an
output device
330 such as a CRT display are coupled via a signal bus 340 to CPU 310. A
communications
interface 350, a data storage device 360 such as ROM or a magnetic disk, and a
RAM 370 are
further coupled via signal bus 340 to CPU 310. The communications interface
350 is

conventionally coupled as part of the Internet 102 to the clients 114.
Although the global
server 106 is described as a single computer, it will be appreciated that the
global server 106
may include multiple computers networked together.

Operating system 380 includes a program for controlling processing by CPU 310,
and
is typically stored in data storage device 260 and loaded into RAM 370 for
execution.

Operating system 380 includes a communication engine 382 for generating and
transferring
message packets to and from client computers 114 via the communications
interface 350.
Operating system 380 further includes, as part of global firewall 104,
security services

384 for opening a communications channel with users. For example, when a
client attempts
to access the global server 106, the security services 384 first determines
whether the global
server 106 accepts in-bound communications from a particular port (not shown)
and whether

the servlet host engine 386, described below, is authorized to connect to that
particular port.
If so, the security services 384 allows the communications engine 382 to open
a
communications channel via the particular port to the client 114a-114g.
Otherwise, no
channel will be opened.

The operating system 380 further includes a web engine 387 which, based on
user's
identification, the strength of the user's authentication and the privacy of
the communications
channel, forwards web page data 391 and information identifying a set of
available services
110a-110d to the client 114a-114g. An example web page 700 is shown and
described with

-9-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
reference to FIG. 7. The web engine 387 enables a user to select a service 1
l0a-l lOd from
the web page 700.

The web engine 387 includes a servlet host engine 286, which downloads
security
applets 290 including an authentication applet (not shown) to the client
computer 114 and
accordingly executes an authentication servlet 397 of servlets 398 for
performing

identification and authentication services. The authentication applet 290
prompts the user for
identification and authentication information, and then communicates the
information to the
authentication servlet 397. The authentication serviet 397 verifies that the
information is
correct. It will be noted that the user's authentication information is not
necessarily sent to

the authentication servlet 397, but rather its existence and correctness is
proven via a secure
means such as a secure hash. The servlet host engine 386 further includes a
secure
communications engine 396 which may use public key certificates to negotiate a
secure
communications channel with the client computer 114.

Upon selection of a service 110a-1 lOd, the servlet host engine 386 downloads
a

corresponding applet 388, corresponding configuration data 390 and
corresponding user data
392 and may download corresponding service address information 394 to the
client computer
114. Configuration data 390 includes infonnation for configuring the user's
web browser
284, for configuring the downloaded applets 288, and for configuring the
selected service
110a-110d. User data 392 may include user-and-service-specific information
such as stored

bookmarks, calendar data, pager numbers, etc. which was specifically stored on
the global
server 106 for easy access. Service address information 394 identifies the
location of the
services 110a-110d provided in system 100 by the global server 106. The client
computer
114 executes the corresponding downloaded applet 288, which via the servlet
host engine 386
(possibly using a corresponding servlet 398) enables the user to access and to
control the

corresponding services 1 l0a-1 lOd. The downloadable applets 388,
configuration data 390,
user data 392 and service address information 394 may be stored on the data
storage device
360.

-10-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
A keysafe 395 is a data file for storing each user's identification
information, each
user's public and private keys, each firewall's password information, etc. The
keysafe 395 is
organized in a linked list format so that, based on the selected service 110a-
110d, the global
server 106 can retrieve the appropriate firewall's password information, the
appropriate user's

identification information and keys, etc. The keysafe 395 may be stored on the
data storage
device 360.

FIG. 4 is a block diagram illustrating details of a service server 108, such
that servers
108a-108c and client 114b are instances of server 108. Server 108 includes a
CPU 410 such
as a Motorola Power PC microprocessor or an Intel Pentium microprocessor. An
input

device 420 such as a keyboard and mouse, and an output device 430 such as a
CRT display
are coupled via a signal bus 440 to CPU 410. A communications interface 450, a
data storage
device 460 such as ROM or a magnetic disk, and a RAM 470 are further coupled
via signal
bus 440 to CPU 410. The communications interface 450 is coupled to the clients
114 as

shown in and described with reference to FIG. 1.

The operating system 480 includes a program for controlling processing by CPU
410,
and is typically stored in data storage device 460 and loaded into RAM 470 for
execution.
Operating system 480 also includes a communications engine 482 for generating
and
transferring message packets via the communications interface 450 to and from
clients 114 or

to and from global server 106. Operating system 480 further includes security
services 484
for negotiating a secure channel with users, a secure communications engine
486 for opening
the secure channel with the users, and a service engine 490 for providing a
service 110a-I l Od
to the users.

The service engine 490 includes a service interface 492 for receiving and
translating
messages to and from downloaded applets 288 currently executing on the client
114, and
includes a service processor 494 and service data 496 for processing the
service requests from
the user. The service data 496 may include previously-generated documents,
database
information, etc. It will be appreciated that the service data 496 is similar
to the user data

-11-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
392, such that it includes the same type of information but is maintained on
the service server
108 instead of on the global server 108.

FIG. 5 is a flowchart illustrating a method 500 enabling a user to access
services

110a-110d in computer network system 100. Method 500 begins by the client 114
in step
505 creating a communications link with the global server 106. Step 505 is
described in
greater detail with reference to FIG. 6. The global server 106 in step 510
conf rms that the
user has privileges to access the functionality of the global server 106.
Confirming user
access privileges may include examining a user certificate, obtaining a secret
password, using

digital signature technology, etc. It will be appreciated that the security
services 384 may
cause the servlet host engine 386 to forward a security applet 389 via the
communications
channel to the client 114 for performing user authentication.

After user access privileges are confirmed, the web page engine 387 of the
global
server 106 in step 515 downloads web page data 391 and configuration data 390
to the client
114. The browser 284 of the client 114 in step 520 uses the web page data 391
and the

configuration data 390 to display a web page 700 (FIG. 7) on the output device
230 of the
client 114 and to enable access to the services 110a-110d which are offered by
the global
server 106. An example web page 700 is shown and described with reference to
FIG. 7.
From the options listed on the web page 700, the user in step 525 via input
device 220

selects a service 110a-110d. In response, the servlet host engine 386 of the
global server 106
in step 530 downloads the corresponding applet(s) 388, applet configuration
data 390, user
data 392 and possibly service address information 394 to the client 114.
Applet configuration
data 390 preferably includes user-specific preferences, such as user-preferred
fonts, for
configuring the selected service 110a-110d. User data 392 may include user-
specific and

service-specific information such as stored bookmarks, calendar data, pager
numbers, etc.
Service address information 394 identifies the location of the selected
service 110a-110d.
Alternatively, the corresponding applet(s) 388, applet configuration data 390,
user data 392

-12-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
and service address information 394 could have been downloaded in step 515
with the web
page data 391 and the configuration data 390.

The applet engine 286 of the client 114 in step 535 executes the corresponding
downloaded applet 288. The service server 108 in step 537 initiates the
service engine 490.
The global server 106 in step 538 selects one of the three modes of access
described in FIGs.

8A-8C for enabling the client computer 114 to communicate with the
corresponding service
engine 490. For example, if the user selects the service 1 l Od on server
108c, which is not
protected by a separate firewall, then the global server 106 may provide the
user with direct
access. If the user selects service 110a provided by server 108a within
company network

118, then the global server 106 may access the service 110a as a proxy for the
user. It will be
appreciated that each firewall 106 and 120 may store policies establishing the
proper mode of
access the global server 106 should select. Other factors for selecting mode
of access may
include user preference, availability and feasibility. The global server 106
in step 540
provides the client 114 user with access to the selected service 110a-110d.
Step 540 is

described in greater detail with reference to FIGs. 8A, 8B and 8C.

FIG. 6 is a flowchart illustrating details of step 505, which begins by the
client 114
user in step 605 using a known Uniform Resource Locator (URL) to call the
global server
106. The global server 106 and the client 114 in step 607 create a secure
communications

channel therebetween, possibly by applying Secure Sockets Layer (SSL)
technology. That is,
the security services 384 of the global server 106 in step 610 determine if in-
bound secure
communications are permitted and, if so, creates a communications channel with
the client
114. The browser 284 of the client 114 and the security services 384 of the
global server 106
in step 615 negotiate secure communications channel parameters, possibly using
public key

certificates. An example secure communications channel is RSA with RC4
encryption. It
will be appreciated that the global server 106 may be configured to use one of
ten encryption
protocols and the client 114 may be enabled to use one of five encryption
protocols. Step 615
thus may include selecting one of the encryption protocols which is common to
both the

-13-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
global server 106 and the client 114. The encryption engine 285 of the client
114 and secure
communications engine 396 of the global server 114 in step 620 use the secure
channel
parameters to create the secure communications channel. Method 505 then ends.

FIG. 7 illustrates an example URL-addressable HyperText Markup Language
(HTML)-based web page 700, as maintained by the servlet host engine 386. The
web page
700 includes a title 710 "Web Page," a listing of the provided services 715
and a pointer 770
for selecting one of the provided services 715. As illustrated, the provided
services 715 may
include an e-mail service 720, a calendaring service 730, an internet access
service 740, a

paging service 750 and a fax sending service 760. Although not shown, other
services such
as bookmarking, QuickCard', etc. may be included in the web page 700.

FIG. 8A is a flowchart illustrating details of step 540 in a first embodiment,
referred
to as step 540a, wherein the global server 106 provides the client 114 with a
direct connection
to the service 1 l0a-l 10d. Step 540a begins by the downloaded applet 288 in
step 805

retrieving the service address 394 of the selected service 110a-110d from data
storage device
360 and the authentication information for the service 110a-110d from the
keysafe 395. The
communications engine 282 in step 810 creates a direct and secure connection
with the
communications engine 482 of the service server 108 at the retrieved service
address, and

uses the authentication information to authenticate itself. The applet 288 in
step 815 acts as
the I/O interface with the service engine. Step 540a then ends.

FIG. 8B is a flowchart illustrating details of step 540 in a second
embodiment,
referred to as step 540b, wherein the global server 106 acts for the client
114 as a proxy to the
service 1 l0a-I 10d. Step 540b begins with the applet 288 in step 840
retrieving the "service"

address, which results in directing it to the global server 106. Thus, the
applet 288 in step
.845 creates a connection with the global server 106. The servlet host engine
386 of the global
server 106 in step 850 retrieves the service address of the selected service
110a-110d and the
-14-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
authentication information for the selected service 110a-110d from the keysafe
395. The
secure communications engine 396 of the global server 106 in step 855
negotiate secure
channel parameters for creating a secure channel with the secure
communications engine 486
of the service server 108.

Thereafter, the applet 288 in step 860 acts as the I/O interface (enables the
user to
make requests of the service engine 490) with the secure communications engine
396 of the
global server 106. If the servlet host engine 386 in step 865 determines that
it is unauthorized
to perform a client 114 user's request, then the servlet host engine 386 in
step 870 determines
whether the method 540b ends, e.g., whether the user has quit. If so, then
method 820b ends.

Otherwise, method 540b returns to step 860 to obtain another request. If the
servlet host
engine 386 in step 865 determines that it is authorized to perform the client
114 user's
request, then the servlet host engine 386, possibly using servlets 398, acts
as the proxy for the
client 114 to the service engine 490. As proxy, the servlet host engine 386
forwards the
service request to the service 110a-110d for the applet 288 and forwards
responses to the

requesting applet 288 currently executing on the client 114. Method 540b then
returns to step
870.

FIG. 8C is a flowchart illustrating details of step 540 in a third embodiment,
referred
to as step 540c, wherein the service 110a-110d being requested is located on
the global server
106. Step 540c begins with the applet 288 in step 880 retrieving the service
address for the

service i 10a-1 lOd, which results in providing the applet 288 with the
service address of the
service 1 l0a-110d on the global server 106. Thus, the applet 288 in step 882
creates a secure
connection with the global server 106. No additional step of identification
and authentication
is needed since the client 114 has already identified and authenticated itself
to the global

server 106 in step 510 of FIG. 5.

In step 884, a determination is made whether the service 110a-110d is
currently
running. If so, then in step 886 a determination is made whether the service 1
l0a-110d can
handle multiple users. If not, then the global server 106 in step 890 creates
an instance for the

-15-


CA 02341213 2001-02-19

WO 00/11832 PCT/US98/17410
user, and the applet 288 in step 892 acts as the I/O interface with the
service 110a-110d on the
global server 106. Otherwise, if the service 110a-110d in step 886 determines
that it cannot
handle multiple users, then method 540a proceeds to step 892. Further, if in
step 884 the
global server 106 determines that the service 110a- I l Od is not currently
running, then the

global server 106 in step 888 initializes the service I l0a-110d and proceeds
to step 886.

The foregoing description of the preferred embodiments of the invention is by
way of
example only, and other variations of the above-described embodiments and
methods are
provided by the present invention. Components of this invention may be
implemented using

a programmed general purpose digital computer, using application specific
integrated circuits,
or using a network of interconnected conventional components and circuits. The
embodiments described herein have been presented for purposes of illustration
and are not
intended to be exhaustive or limiting. Many variations and modifications are
possible in light
of the foregoing teaching. The invention is limited only by the following
claims.

-16-

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date 2009-05-26
(86) PCT Filing Date 1998-08-21
(87) PCT Publication Date 2000-03-02
(85) National Entry 2001-02-19
Examination Requested 2003-08-07
(45) Issued 2009-05-26
Expired 2018-08-21

Abandonment History

There is no abandonment history.

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Application Fee $300.00 2001-02-19
Maintenance Fee - Application - New Act 2 2000-08-21 $100.00 2001-02-19
Registration of a document - section 124 $100.00 2001-07-05
Maintenance Fee - Application - New Act 3 2001-08-21 $100.00 2001-08-02
Maintenance Fee - Application - New Act 4 2002-08-21 $100.00 2002-08-07
Maintenance Fee - Application - New Act 5 2003-08-21 $150.00 2003-08-05
Request for Examination $400.00 2003-08-07
Maintenance Fee - Application - New Act 6 2004-08-23 $200.00 2004-07-20
Maintenance Fee - Application - New Act 7 2005-08-22 $200.00 2005-07-20
Maintenance Fee - Application - New Act 8 2006-08-21 $200.00 2006-08-21
Maintenance Fee - Application - New Act 9 2007-08-21 $200.00 2007-07-24
Maintenance Fee - Application - New Act 10 2008-08-21 $250.00 2008-07-18
Final Fee $300.00 2009-03-10
Maintenance Fee - Patent - New Act 11 2009-08-21 $250.00 2009-07-30
Maintenance Fee - Patent - New Act 12 2010-08-23 $250.00 2010-08-05
Maintenance Fee - Patent - New Act 13 2011-08-22 $250.00 2011-08-04
Maintenance Fee - Patent - New Act 14 2012-08-21 $250.00 2012-08-10
Registration of a document - section 124 $100.00 2012-11-15
Maintenance Fee - Patent - New Act 15 2013-08-21 $450.00 2013-08-12
Maintenance Fee - Patent - New Act 16 2014-08-21 $450.00 2014-08-11
Maintenance Fee - Patent - New Act 17 2015-08-21 $450.00 2015-08-10
Maintenance Fee - Patent - New Act 18 2016-08-22 $450.00 2016-08-15
Registration of a document - section 124 $100.00 2017-05-10
Maintenance Fee - Patent - New Act 19 2017-08-21 $450.00 2017-08-14
Registration of a document - section 124 $100.00 2018-01-16
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
BLACKBERRY LIMITED
Past Owners on Record
GOOD TECHNOLOGY CORPORATION
GOOD TECHNOLOGY HOLDINGS LIMITED
RIGGINS, MARK D.
ROAMPAGE, INC.
VISTO CORPORATION
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Abstract 2001-02-19 1 49
Description 2001-02-19 16 777
Representative Drawing 2001-05-28 1 10
Claims 2001-02-19 5 137
Drawings 2001-02-19 10 202
Cover Page 2001-05-28 1 38
Abstract 2002-01-14 1 49
Claims 2002-01-14 5 137
Claims 2008-07-10 5 154
Representative Drawing 2009-04-29 1 14
Cover Page 2009-04-29 2 51
Correspondence 2001-04-25 1 25
Assignment 2001-02-19 4 117
PCT 2001-02-19 3 124
Prosecution-Amendment 2001-02-19 1 18
Assignment 2001-07-05 5 254
Correspondence 2001-08-13 1 13
PCT 2001-08-14 3 146
Prosecution-Amendment 2003-08-07 1 34
Fees 2006-08-21 2 52
Office Letter 2017-05-17 1 45
Correspondence 2006-06-27 1 30
Office Letter 2017-07-31 1 53
Correspondence 2006-07-06 1 16
Correspondence 2006-07-06 1 22
Correspondence 2006-08-21 4 142
Correspondence 2006-08-31 2 73
Correspondence 2006-09-12 1 15
Correspondence 2006-10-13 1 28
Correspondence 2006-11-10 2 62
Prosecution-Amendment 2007-04-25 400 17,119
Prosecution-Amendment 2007-04-25 400 14,236
Prosecution-Amendment 2007-04-25 400 16,713
Prosecution-Amendment 2007-04-25 402 17,390
Prosecution-Amendment 2007-04-30 2 31
Prosecution-Amendment 2008-01-10 3 125
Prosecution-Amendment 2008-07-10 7 232
Prosecution-Amendment 2008-10-01 183 12,687
Prosecution-Amendment 2008-10-20 2 32
Prosecution-Amendment 2009-03-04 4 183
Prosecution-Amendment 2009-03-16 2 28
Correspondence 2009-03-10 1 44
Prosecution-Amendment 2009-03-16 220 9,752
Prosecution-Amendment 2009-03-30 2 30
Assignment 2012-11-15 20 1,346
Correspondence 2013-05-08 1 31