BACKGROUND OF INVENTION
1. Field of Invention
[0001] This invention relates generally to information management systems and more particularly
to distributed information management systems.
2. Discussion of Related Art
[0002] Information management systems are widely used. Such systems often include a database
that stores "artifacts." An artifact is a collection of data in an organized form
that is manipulated by the information management system. Artifacts are often computer
files. A common type of information management system is a version control system,
such as may be used to manage files of computer source code in an enterprise developing
software.
[0003] Information management systems are often networked so that multiple people within
an enterprise may work with the artifacts. In the example of a source code management
system, program developers, project managers, test engineers and others within the
enterprise may all access the source code files. The files may be stored in a central
database. To facilitate use of the files throughout the enterprise, information management
systems often include a server linked to the database. The server is connected to
a network, allowing workstations for the individual users of the information in the
information management system to retrieve copies of the artifacts from the database.
As users require artifacts, their workstations send requests to the server, which
then provides copies of the artifacts over the network.
[0004] A networked architecture for an information management system may be used even when
the enterprise has multiple work sites distributed over a relatively wide geographic
area. A wide area network, including possibly the Internet, allows individual workstations
at distributed locations to communicate with a server that has access to the database
of artifacts.
[0005] Where any part of the communication path between the client and the server is unsecured,
a secure channel may be created over the network, even if the network is unsecured.
The Internet is an example of an unsecured communication path. Examples of secure
channels that may be created over an insecure network are a secure socket layer (SSL)
connection or a virtual private network (VPN).
[0006] In a secure channel, the communication protocol is such that it is difficult for
an unintended recipient to determine the content of information transmitted over the
network, even if the transmissions are intercepted. For example, a device transmitting
through a SSL channel encrypts information as the information is transmitted. The
information may also be broken into pieces so that there is no readily detectable
correlation to information being transmitted. As a result, an unintended recipient
may not even be able to identify the portions of the transmissions that represent
files or other logically related blocks of data, making efforts to "crack" an encryption
mechanism more difficult.
[0007] A drawback of using a secure channel is the amount of time required by a user to
download information over the secure channel and the overhead imposed in a client-server
environment. SSL employs a unique asymmetric key pair for each user's session. A unique
symmetric key is used for encryption of data as it is transmitted over the channel.
Where information on a server is to be distributed to multiple clients, using SSL
channels imposes a high overhead on the server. It would be desirable to provide an
improved method and apparatus for an information management system such as may be
operated by an enterprise with geographically disbursed sites interconnected by unsecured
channels.
SUMMARY OF INVENTION
[0008] The invention relates to an information management system in which a computing device
may receive information about an artifact over a secure channel. This information
is used to retrieve and decrypt an encrypted version of the artifact over an unsecured
channel.
[0009] In one aspect, the invention relates to a method of communicating between a server
having access to a plurality of artifacts, and a client having access to a proxy server
having a cache associated therewith, the cache storing copies of artifacts. The method
comprises communicating a first request from the client to the server; communicating,
in response to the request, from the server to the client encoded information about
the artifact; generating, from the client to the proxy server, a second request using
the encoded information; and when a copy of the artifact is stored in the cache, providing
in response to the second request a copy of the artifact from the cache.
[0010] In a further aspect, the invention relates to a method of operating a computing device
to access an artifact, the device coupled to a network through a secure and an unsecured
channel may be formed. The method comprises: using the secure channel to receive information
concerning an artifact; using the information concerning an artifact to use the unsecured
channel to request a copy of the artifact; receiving the artifact in encrypted form;
and using the information concerning the artifact to convert the artifact from the
encrypted form to a decrypted form.
[0011] In a further aspect, the invention relates to a source code control system of the
type having equipment at a first site, equipment at a second site and a network interconnecting
equipment at the first site and equipment at the second site. The equipment at the
first site comprises a memory storage device storing a plurality of versions of a
plurality of source code files; a server comprising a computer-readable medium storing
computer-executable instructions for encrypting a version of a source code file to
create an encrypted artifact; communicating over the network the encrypted artifact;
and communicating over the network encryption information concerning the encrypted
artifact. The equipment at the second site comprises a client computer, the client
computer comprising a computer-readable medium storing computer-executable instructions
for obtaining the encryption information; receiving the encrypted artifact over the
network; and using the encryption information to decrypt the encrypted artifact to
generate the version of the source code file.
BRIEF DESCRIPTION OF DRAWINGS
[0012] The accompanying drawings are not intended to be drawn to scale. In the drawings,
each identical or nearly identical component that is illustrated in various figures
is represented by a like numeral. For purposes of clarity, not every component may
be labeled in every drawing. In the drawings:
FIG. 1 is sketch illustrating the architecture of an information management system
according to an embodiment of the invention;
FIG. 2A is a sketch illustrating communications between equipment illustrated in the
information management system of FIG. 1;
FIG. 2B is a sketch illustrating communications between equipment in the information
management system of FIG. 1 according to an alternative operating state;
FIG. 2C is a sketch illustrating communications between equipment in the information
management system of FIG. 1 according to an alternative operating state; and
FIG. 3 is a flow chart depicting processing of information in an information management
system according to the invention.
DETAILED DESCRIPTION
[0013] An improved information management system is provided by allowing secure communications
of artifacts over an unsecured channel. The artifacts are communicated in an encrypted
form and may be stored in a proxy server local to the workstation receiving the artifacts.
A secure channel is used to transmit a relatively small amount of information about
each artifact. Such a system, may, for example, be used to connect a remote site of
an enterprise to a central site using an unsecured channel such as the Internet. A
source code management system is used herein as an example information management
system.
[0014] FIG. 1 depicts an information management system according to one embodiment of the
invention. The information management system includes a central site 110 and a remote
site 112. The central site 110 and remote site 112 are connected through a network,
which may be the Internet 114.
[0015] Central site 110 includes a database 120. Database 120 is formed from computer-readable
and computer-writable storage media. It includes controllers that organize the storage
and retrieval of artifacts. In the described embodiment, each artifact is a file containing
source code that is part of a development project being performed by the enterprise
that operates central site 110 and remote site 112. In this example, each file in
database 120 is described by a file name, and multiple versions of each file may be
stored in database 120. Database 120 may be a database as known in the art, but any
suitable form of database may be used.
[0016] Central site 110 includes multiple client workstations 126
1, 1262...1264. In use, each client workstation may be used by a person within the
enterprise managing central site 110 and remote site 112 to process artifacts from
database 120. Each workstation may, for example, be used by a code developer who creates
source code files that are stored in database 120. Alternatively, a client workstation
may be used by a code tester who retrieves a source code file from a database 120
and tests it. Each client workstation may, for example, be a personal computer or
similar computing device.
[0017] Central site 110 includes a server 122. Server 122 is connected to database 120.
Server 122 is accessible to each of the client workstations 126
1, 126
2, 126
3 and 126
4 over wide area network 124. Server 122 may be a combination of hardware and software
elements that receives communications from client workstations 126
1, 1262...1264 requesting that an artifact stored in database 120 be passed to the
client workstation. Server 122 contains hardware and software elements that receive
such requests and access database 120 to provide a copy of the requested artifact
to the workstation. Server 122 may be a file server communicating using HTTP messages
as is known in the art, but any suitable implementation may be used.
[0018] Remote site 112 includes one or more remote client workstations 156. Here, a single
remote client workstation 156 is shown for simplicity, but the invention may be most
useful when multiple client work stations access artifacts in database 120 from a
remote sites. Remote client workstation 156 may be the same type of workstation as
client workstations 126
1...126
4 and may be used for the same purposes. Remote client workstation 156 should therefore
have access to artifacts stored in database 120 similar to client workstations 126
1...126
4. However, the information flow path between remote client workstation 156 and database
120 passes through the Internet 114, which is an unsecured network.
[0019] A secure channel may be formed between remote client workstation 156 and server 122
as is known in the art. However, the secure channel need not be used directly to transfer
artifacts in database 120 to remote client workstation 156. To allow more rapid access
to artifacts stored in database 120, a secure channel between remote client workstation
156 and a server at central site 110 is used to transmit a relatively small amount
of information. This information is used to access and enable use of an encrypted
artifact transmitted over an unsecured channel through Internet 114. The artifact
may be encrypted outside of the protocol used to transmit information over the network,
which can yield more efficient transmission of artifacts.
[0020] One way in which the efficiency of transmissions of artifacts over an unsecured channel
is increased that the encrypted artifacts may be cached, even in unsecured locations.
Any suitable hardware and software may be used to cache artifacts. In the pictured
embodiment, remote site 112 includes a proxy server 150, which is one example of a
device that may cache artifacts. Proxy server 150 may be a proxy server as is known
in the art. Proxy server 150 is connected between remote client 156 and Internet 114.
As remote client workstation 156 requests artifacts, such as files or web pages, to
be downloaded over Internet 114, proxy server 150 may receive and store copies of
the artifacts in computer-readable and computer-writable memory associated with proxy
server 150. The stored information forms a cache of artifacts. Subsequent requests
for artifacts can be fulfilled from the cache, reducing traffic over the network.
[0021] As remote client workstation 156 generates further requests for information, those
requests may pass first to proxy server 150. If proxy server 150 has stored in its
cache the artifact requested, proxy server 150 provides the artifact to remote client
workstation 156 from its cache. The request is not then transmitted to the Internet
114. Providing information from a cache associated with proxy server 150 can increase
the speed at which artifacts can be provided to remote client workstation 156. The
speed increase is greatest when the same artifact is accessed frequently, whether
the access is made by one remote client workstation or several different remote client
workstations. In a source code management system, artifacts containing portions of
source code currently under development are often accessed frequently.
[0022] Traditionally, the Internet 114 is not regarded as providing a secure channel. Because
proxy servers normally store information obtained over an unsecured channel, proxy
servers are often not secure. To provide secure communications between remote client
workstation 156 and server 122, artifacts to be transmitted are encrypted. Where proxy
server 150 is not secure, artifacts may be cached in proxy server 150 in encrypted
form
[0023] Further efficiencies may be obtained by caching encrypted artifacts at the central
site 110. In the illustrated embodiment, central site 110 includes a reverse proxy
server 140 that also stores copies of encrypted artifacts. Reverse proxy server 140
is an example of a device that may be used to cache artifacts. Reverse proxy server
140 may be a proxy server as known in the art, including a cache operating according
to policies that may be as known in the art. Reverse proxy server 140 may encrypt
artifacts or may receive artifacts in an encrypted form.
[0024] In the pictured embodiment, as requests for artifacts are transmitted over Internet
114, they arrive at reverse proxy server 140. If reverse proxy server 140 stores in
its cache an encrypted version of the requested artifact, it may provide a copy of
the encrypted artifact. When reverse proxy server 140 does not already store in its
cache an encrypted copy of the artifact, it may request the artifact from server 122.
Server 122 may then provide an encrypted artifact over wide area network 124. Reverse
proxy server 140 may then store the encrypted artifact in its cache and transmit the
encrypted artifact over Internet 114.
[0025] FIG. 2A illustrates a sequence of communications between the elements of the information
management system pictured in FIG. 1. The interchange begins with remote client workstation
156 establishing a secure channel to server 122. In the embodiment of FIG. 2A communication
is initiated in a secure channel 210. Secure channel 210 may be formed using traditional
secure protocols, whether now known or hereafter developed. In the described embodiment,
secure channel 210 is created using a secure socket layer (SSL) protocol. Because
request 212 is sent over a secure channel to server 122, neither proxy server 150
nor reverse proxy server 140 has access to the contents of the request. Request 212
goes directly to server 122 in this embodiment.
[0026] Request 112 identifies one or more artifacts to be provided to remote client workstation
156. In this embodiment, each artifact is identified by its file name. Where database
120 stores files as part of a version control system, the file name may identify a
specific version of a file. Server 122 at central site 110 responds to request 212
with bundle 214.
[0027] Bundle 214 is also transmitted over the secure channel 210. Bundle 214 provides information
allowing remote client workstation 156 to obtain and utilize a requested artifact.
For this embodiment, bundle 214 includes an identifier for an encrypted version of
the artifact. Bundle 214 includes an encryption key that may be used to decrypt an
encrypted version of the artifact. Also, bundle 214 may include an error detecting
code, such as a hash code, prepared for the requested artifact.
[0028] In this embodiment, the identifier is a code assigned to the artifact. Each artifact
in database 120 has a unique identifier assigned by server 122. Preferably, the identifier
does not reveal information about the function or structure of the artifact. In contrast,
file names are often selected to be descriptive of the function of the artifact. In
the described embodiment, the identifier is used to refer to the artifact in communications
transmitted over unsecured channels. Using a non-descriptive identifier instead of
a file name may increase security. Unauthorized recipients of transmissions over an
unsecured channel receive reduced information that can be used to "crack" the encryption
of an artifact. Each identifier may be assigned in any suitable way. For example,
identifiers may be randomly assigned or may be assigned in the order in which artifacts
are added to database 120. Where database 120 stores multiple versions of files, each
version will have its own identifier.
[0029] The encryption key associated with bundle 214 is a key that may be used to decrypt
an encrypted version of the artifact. Many forms of encryption are known and any suitable
form of encryption may be used. In the described embodiment a symmetrical encryption
algorithm is used such that the key used to encrypt an artifact is the same key that
is used to decrypt the artifact. In the described embodiment, an encryption algorithm
having keys with at least 64 bit is used. Examples of suitable algorithms are the
AES 128 and AES 256 encryption algorithms. Each artifact may have a unique encryption
key. Where database 120 stores multiple versions of files, each version may have its
own encryption key.
[0030] The error checking code associated with bundle 214 provides a further measure of
security. The error checking code is generated by performing an operation on the artifact
at central site 110. The value generated for the error checking code depends on the
contents of the file representing the artifact. Remote client workstation 156 may
perform the same operation on the artifact it receives. If the error checking code
associated with the bundle 214 does not match the error checking code generated by
the remote client workstation 156, remote client workstation 156 may identify that
the file was corrupted or altered as the result of tampering. In the described embodiment,
the error checking code is generated through a hashing algorithm. One example of a
hashing algorithm that may be used is the SHA1 hashing algorithm, but any suitable
method of generating an error checking code may be used.
[0031] Once the bundle 214 is received at remote client workstation 156, remote client workstation
156 may generate a request 216 for a copy of the encrypted artifact. In the example
embodiment, the identifier provided as part of the bundle 214 serves as a page address
for the artifact. In the example where remote site 112 is connected to central site
110 over the Internet 114, communications may be in the form of HTTP messages as are
traditionally used over the Internet. Request 216 may be an HTTP GET request. In this
example, the identifier transmitted in bundle 214 may be a portion of the URL for
the file containing the artifact. Accordingly, request 216 may be in the form of
HTTP://server/identifier. The portion of the URL represented as
HTTP://server identifies the web address for server 122. The portion of the URL identified as "identifier"
represents a particular file accessible to server 122, such as a file stored in database
120.
[0032] When the information management system pictured in FIG. 1 begins operation, proxy
server 150 contains no artifacts in its cache. This scenario is depicted in FIG. 2A.
Accordingly, request 216 passes through proxy server 150 as request 218.
[0033] Request 218 passes over Internet 114 to reverse proxy serve 140. As the information
management server of FIG. 1 begins operations, reverse proxy server 140 also contains
no information concerning artifacts. Request 218 passes through reverse proxy server
140 as request 220.
[0034] Request 220 passes over wide area network 124 to server 122. Server 122 uses the
identifier in the request transmitted by remote client work station 156 to identify
a particular artifact in database 120. Server 122 retrieves the artifact from database
120. The artifact may be encrypted in any suitable hardware programmed to execute
an encryption algorithm. In this scenario, server 122 encrypts the artifact using
the key transmitted with bundle 214. It is not, however, necessary that encryption
be performed by server 122. As an example of one alternative, database 120 may store
an encrypted version of each artifact and server 122 may simply retrieve an encrypted
version of the requested artifact.
[0035] Regardless of how the artifact is stored or encrypted, server 122 prepares a response
222 to the GET request initiated by remote client workstation 156. In the example
where communication between remote client workstation 156 and server 122 is over Internet
114 using an HTTP protocol, the encrypted artifact is included in reply 222 according
to formatting prescribed by the HTTP protocol.
[0036] Reply 222 passes first to reverse proxy server 140. Reverse proxy server 140 may
cache a copy of the encrypted artifact included in reply 222 according to its policies.
The encrypted artifact may be stored in the cache associated with reverse proxy server
140 indexed by the URL used to request the artifact from server 122. Any subsequent
request for the same artifact will use the same URL in a get request. Accordingly,
while an unencrypted artifact is cached in reverse proxy server 140, reverse proxy
server 140 may identify and respond to subsequent requests for that artifact.
[0037] Reply 224 containing the encrypted artifact is sent from reverse proxy server 140
over Internet 114 to proxy 150. Proxy 150 may also store the encrypted artifact in
its cache according to its policies. The encrypted artifact may also be stored in
the cache associated with proxy server 150 also indexed by the URL used to request
the artifact. If remote client workstation 156 subsequently requests a copy of the
same artifact while stored in the cache associated with proxy server 150, proxy server
150 may respond by providing an encrypted copy of the artifact from its cache.
[0038] The encrypted artifact is sent in reply 226 from proxy server 150 to remote client
workstation 156. Remote client workstation 156 may be programmed with decryption software
that uses the encryption key included in bundle 214. The copy of the encrypted artifact
included in reply 226 may therefore be decrypted at remote client workstation 156.
The error checking code transmitted in bundle 214 may then be applied to the decrypted
copy of the artifact to verify proper transmission of the artifact.
[0039] Once the software programs executing on remote client workstation 156 have determined
that remote client workstation 156 has received a valid copy of the requested artifact,
acknowledgement 230 may be sent. In this embodiment, acknowledgement 230 is transmitted
over a secure channel 228. However, any suitable means to communicate an acknowledgement
may be used.
[0040] Acknowledgement 230 may be used by server 122 to reduce the number of artifacts communicated
to remote client workstation 156. For example, if remote client workstation 156 requests
a related group of files, information from previous acknowledgements may be used by
server 122 to determine that remote client workstation 156 has already been provided
with a subset of the files in the group. Accordingly, server 122 may determine that
an appropriate response to a request for a group of files requires sending less than
all of the files in the group. However, acknowledgement 230 may not be included in
all embodiments.
[0041] FIG. 2B illustrates an alternative exchange of information that may occur. As with
the exchange of information illustrated in FIG. 2A, the interaction begins with a
request 252 sent by remote client workstation 156. The request 252 is transmitted
over a secure channel 250. Server 122 responds to request 252 with a bundle 254. Bundle
254 may contain an identifier for the file or files identified in request 252. Bundle
254 may also include an encryption key and an error checking code associated for each
requested file. This information is returned to remote client workstation 156 over
secure channel 250.
[0042] Remote client workstation 156 uses the identifiers contained in bundle 254 to issue
a request 256 for the artifacts over an unsecured channel. Request 256 passes to proxy
server 150. In the interchange illustrated by FIG. 2B, proxy server 150 has the requested
artifact cached. The copy of the artifact may have been cached as a result of a previous
interaction with remote client workstation 156 or any other workstation at remote
site 112 connected through proxy server 150.
[0043] Proxy server 150 provides the requested artifact in an encrypted form without making
a request to server 122. Proxy server 150 generates reply 258 containing a copy of
the artifact in an encrypted form.
[0044] As discussed above in connection with FIG. 2A, remote client workstation 156 uses
the encryption key included in bundle 254 to decrypt the artifact. Remote client workstation
156 may then apply the error checking code included in bundle 254 to verify that it
has correctly received an uncorrupted copy of the requested artifact. In response,
remote client workstation 156 may generate an acknowledgement 262. In this example,
this acknowledgement 262 is sent to server 122 using a secure channel 260. In this
way, even though server 122 did not directly supply a copy of a requested artifact
to remote client workstation 156, server 122 may ascertain that remote client workstation
156 has a copy of the requested artifact.
[0045] This scenario illustrated in FIG. 2B may be typical of interchanges that occur when
remote site 112 is a development office of a larger enterprise. Remote site 112 may
include multiple developers all accessing the latest version of source code files
under development for a specific product. Accordingly, each developer may use a remote
client workstation such as remote client workstation 156 that is loaded with copies
of each of the source files every day. By using an unsecured protocol, such as HTTP,
to transmit files, proxy server 150 may identify specific files as they are transmitted
to remote client workstations and cache copies of them. Even if proxy server 150 is
an unsecured server, unauthorized access to the artifacts does not reveal information
about the artifacts because they are encrypted. But because proxy server 150 may identify
artifacts as they are being transmitted, it may cache them and respond to subsequent
requests for the artifacts. In this way, the amount of information transmitted over
Internet 114, or any other connection between remote site 112 and central site 110
may be significantly reduced.
[0046] FIG. 2C shows an alternative transaction that may occur in response to a request
for an artifact sent from remote client workstation 156. In this illustration, request
272 is sent from remote client workstation 156. Request 272 is sent over a secure
channel 270 that may be formed through Internet 114. Request 272 is directed to server
122 and identifies the artifact or artifacts to be provided to remote client workstation
156.
[0047] Server 122 responds to request 272 by sending a bundle 274. Bundle 274 includes an
identifier by which remote client workstation 156 may form a request for the appropriate
artifact. Bundle 274 may also includes an encryption key and other information related
to the artifact, such as an error checking code.
[0048] Remote client workstation 156 uses the information about the artifact contained in
bundle 274 to generate request 276. Request 276 uses the identifier in bundle 274
to format a request for the artifact. Request 276 is here shown to pass to proxy server
150.
[0049] In this example, proxy server 150 does not have a copy of the artifact requested
in its cache. Accordingly, a request 278 is generated from proxy server 150. Request
278 passes through Internet 114 to reverse proxy server 140.
[0050] In the example illustrated in FIG. 2C, remote proxy server 140 has stored a copy
of the requested artifact in its cache. Accordingly, reverse proxy server 140 generates
response 280 in response to request 278. Response 280 includes a copy of the requested
artifact. The artifact may be transmitted in any suitable protocol, but in the embodiments
described herein, the HTTP protocol is used. The artifact is transmitted in an encrypted
form.
[0051] Reply 280 passes through Internet 114 to proxy server 150. Because proxy server 150
does not have a copy of the requested artifact stored in its cache, proxy server 150
stores a copy of the artifact in reply 280. The artifact may be stored in the cache
associated with proxy server indexed by the URL used in request 276. The URL used
in request 276 uses the identifier provided in bundle 274 rather than the actual file
name.
[0052] Proxy server 150 forwards a copy of the encrypted artifact as part of reply 282.
Remote client workstation 156 receives reply 282. Remote client workstation 156 may
decrypt the encrypted copy of the artifact included with reply 282 by using the encryption
key provided as part of bundle 274. Remote client workstation 156 may also apply the
error checking code to the decrypted file to determine that the file had not been
corrupted or tampered with while it is was transmitted over unsecured portions of
the network connection between remote site 112 and central site 110.
[0053] Remote client workstation 156 may then send an acknowledgement 286 to server 122.
In this example, acknowledgement 286 is transmitted over a secure channel 284.
[0054] Though proxy server 150 and reverse proxy server 140 are not required, FIG. 2C illustrates
a benefit of including a reverse proxy server 140 as part of the information management
system in an enterprise. Reverse proxy server 140 reduces the amount of information
transmitted over wide area network 124. It also reduces the amount of time server
122 spends encrypting the artifacts from database 120.
[0055] FIG. 3 illustrates a process by which an information management system may operate.
The process beings at block 310 where a client initiates a secure connection with
a server. The client may be a remote client workstation such as 156 pictured in FIG.
1. However, the same process may be employed with clients such as 126
1, 126
2,... 126
4 located at a central site.
[0056] At block 312, the client requests one or more files from a server. The request sent
at block 312 may identify one or more files. Because the request is sent over a secure
channel, the request may identify each file by name or in any identification format,
even if it reveals information about the file that is preferable to be retained secure
within an enterprise. Any suitable format may be employed to request one or multiple
files. For example, a request for multiple files may be formatted as a series of requests
for individual files. However, any suitable format may be employed.
[0057] At block 314, the server responds with a bundle providing information concerning
the requested files. The bundle includes information required to access the files
in a secure way over an unsecured channel. In this example, the bundle includes for
each file an identifier that may be used to form a network address from which to request
the file. The bundle also includes for each file an encryption key. Preferably, the
encryption key is different for each of the files. Using a separate encryption key
for each file ensures that, even if one encryption key is compromised, only a relatively
small percentage of the total information stored in the information management system
is compromised. The bundle may additionally include other information about the requested
file. In the examples described above, the additional information included an error
checking code so that errors in transmission or tampering with the file can be identified.
Other possible information that may be included in a bundle may be the size of the
file, the date it was stored in database 120, or other information useful to a client
requesting a file. If the bundle provides information on multiple files, the information
may be provided in any suitable format. For example, the information can be provided
formatted as a stream of sets of data, with one set for each file.
[0058] At block 316, the client uses information provided with the bundle to request one
or more files over the unsecured communication channel.
[0059] At decision block 318, a decision is made whether the file is available from a proxy
server to which the client has access. If so, processing proceeds to block 320 where
the proxy provides the file. The file is provided in encrypted form.
[0060] If at decision block 318 it is determined that the file is not available locally
to the client, processing proceeds to block 330. At block 330, the proxy forwards
the file request to a central location.
[0061] At decision block 322, a reverse proxy at the central location determines whether
it has cached a copy of the requested file. If so, processing proceeds to block 338
where the reverse proxy provides the file.
[0062] Where the reverse proxy has not cached the file, processing proceeds to block 334.
At block 334, the server managing the database retrieves a requested file. Encryption
may be performed in any suitable computer processor, which may be server 122, but
other servers or computers may be used to perform the encryption. At process block
336 the file is encrypted.
[0063] The process continues at block 338. Regardless of whether the reverse proxy server
obtains the file from its cache or encrypts a version of the file provided by the
server at the central location, at block 338 the reverse proxy server provides the
file to the client.
[0064] Processing continues at block 340 once the file has been provided to the client.
Processing proceeds to block 340 whether the encrypted file is provided by the reverse
proxy or from the proxy at the site near the client. At block 340, the remote client
decrypts the file. The decrypted file may then be provided to an application running
on the remote client.
[0065] The process illustrated by FIG. 3 may be implemented in any suitable manner. For
example, the software on the remote client workstation controlling interactions with
the file management system may be implemented as software in the application layer
of a protocol stack.
[0066] In embodiments where files are transferred using a standard protocol such as HTTP,
proxy server and reverse proxy serve 140 may be traditional hardware and software
elements such as are used for proxy servers in any now known or hereafter developed
application. Likewise, server 122 and database 120 may be implemented using traditional
server and database hardware and software access, whether now known or hereafter developed.
The server 122 or reverse proxy server 140 may be programmed with software to encrypt
files and provide bundles in response to requests issued by remote clients. Such software
may, for example, be incorporated into a server at the central site or in any convenient
hardware or software accessible to the central site. Such program may, for example,
be incorporated into the application level of a protocol stack.
[0067] Various alternative embodiments are possible. For example, it is described that artifacts
are requested over the unsecured network using a coded identifier, which can reduce
the amount of information about any of the artifacts that is exposed in the unsecured
network. Where using the name or other identifier for the artifact does not reveal
an undesirable amount of information, it is not necessary that the request use a coded
identifier.
[0068] As another example, it was described that decryption of encrypted files occurs at
the remote client workstation. The decryption process may be performed in any suitable
processor. Where unauthorized access to proxy server 150 is not a concern, proxy server
150 may perform the decryption and store decrypted copies of artifacts in its cache.
Alternatively, a separate processor at remote site 112 may be used to perform the
decryption of artifacts.
[0069] Likewise, the time and place at which encryption occurs may also be varied. For example,
encrypted artifacts may be stored in database 120. In such an embodiment, server 122
may decrypt files before providing them to client workstations 126
1,... 126
4 or other processors connected to server 122 over a secure network. Alternatively,
client workstations 126
1,...126
4 may receive encrypted artifacts and decrypt them before use. Redistributing the processing
load in this fashion may, for example, be desirable where the amount of information
distributed to remote sites is large in comparison to the amount of information used
at central site 110. In that regard, "central" and "remote" are terms indicating the
nature of the network connections between the database storing artifacts and the processor
that receives the artifacts for use. The database 120 need not be stored at a location
that is central to the enterprise using the information management system.
[0070] Having thus described several aspects of at least one embodiment of this invention,
it is to be appreciated that various alterations, modifications, and improvements
will readily occur to those skilled in the art.
[0071] Such alterations, modifications, and improvements are intended to be part of this
disclosure, and are intended to be within the spirit and scope of the invention. Accordingly,
the foregoing description and drawings are by way of example only.
[0072] The above-described embodiments of the present invention can be implemented in any
of numerous ways. For example, the embodiments may be implemented using hardware,
software or a combination thereof. When implemented in software, the software code
can be executed on any suitable processor or collection of processors, whether provided
in a single computer or distributed among multiple computers.
[0073] Also, the various methods or processes outlined herein may be coded as software that
is executable on one or more processors that employ any one of a variety of operating
systems or platforms. Additionally, such software may be written using any of a number
of suitable programming languages and/or conventional programming or scripting tools,
and also may be compiled as executable machine language code.
[0074] In this respect, the invention may be embodied as a computer readable medium (or
multiple computer readable media) (e.g., a computer memory, one or more floppy discs,
compact discs, optical discs, magnetic tapes, etc.) encoded with one or more programs
that, when executed on one or more computers or other processors, perform methods
that implement the various embodiments of the invention discussed above. The computer
readable medium or media can be transportable, such that the program or programs stored
thereon can be loaded onto one or more different computers or other processors to
implement various aspects of the present invention as discussed above.
[0075] The term "program" is used herein in a generic sense to refer to any type of computer
code or set of instructions that can be employed to program a computer or other processor
to implement various aspects of the present invention as discussed above. Additionally,
it should be appreciated that according to one aspect of this embodiment, one or more
computer programs that when executed perform methods of the present invention need
not reside on a single computer or processor, but may be distributed in a modular
fashion amongst a number of different computers or processors to implement various
aspects of the present invention.
[0076] Various aspects of the present invention may be used alone, in combination, or in
a variety of arrangements not specifically discussed in the embodiments described
in the foregoing and is therefore not limited in its application to the details and
arrangement of components set forth in the foregoing description or illustrated in
the drawings. For example, aspects described in one embodiment may be combined in
any manner with aspects described in other embodiment.
[0077] Also, the timing and ordering of steps may be varied. For example, interactions illustrated
by FIG. 2A...2C begin with the remote client issuing a request and receiving an identifier
and encryption key relating to a particular artifact. It is possible that the identifier
and encryption key for a single artifact may be changed. If so, it may be necessary
for each remote client to request the identifier and encryption key each time it requires
the file. However, it is possible that a client work station may store a copy of an
identifier and encryption key for a file and generate requests such as 216, 256 or
276 using an encryption key it has obtained previously and stored.
[0078] Use of ordinal terms such as "first," "second," "third," etc., in the claims to modify
a claim element does not by itself connote any priority, precedence, or order of one
claim element over another or the temporal order in which acts of a method are performed,
but are used merely as labels to distinguish one claim element having a certain name
from another element having a same name (but for use of the ordinal term) to distinguish
the claim elements.
[0079] Also, the phraseology and terminology used herein is for the purpose of description
and should not be regarded as limiting. The use of "including," "comprising," or "having,"
"containing," "involving," and variations thereof herein, is meant to encompass the
items listed thereafter and equivalents thereof as well as additional items.
1. A method of communicating between a server having access to a plurality of artifacts
and a client having access to a proxy server, the proxy server having a cache associated
therewith, the cache storing copies of artifacts, the method comprising:
a) communicating a first request for an artifact from the client to the server;
b) in response to the request, communicating from the server to the client encoded
information about the artifact;
c) generating, from the client to the proxy server, a second request using the encoded
information; and
d) when a copy of the artifact is stored in the cache, providing in response to the
second request a copy of the artifact from the cache.
2. The method of claim 1, additionally comprising selectively providing the second request
to the server when a copy of the artifact is not stored in the cache.
3. The method of claim 1, wherein communicating encoded information about the artifact
comprises communicating an identifier for the artifact.
4. The method of claim 1, wherein:
a) communicating encoded information about the artifact comprises communicating encryption
information about the artifact; and
b) providing the copy of the artifact from the cache comprises providing an encrypted
copy of the artifact.
5. The method of claim 4, additionally comprising decrypting the encrypted copy of the
artifact using the encryption information.
6. The method of claim 1, wherein communicating a first request comprises:
a) establishing a secure connection between the client and the server; and
b) transmitting the first request using the secure connection.
7. The method of claim 6, wherein establishing a secure connection comprises establishing
an SSL connection.
8. The method of claim 4, wherein the server is coupled to a second proxy server, the
second proxy server having a second cache:
a) the method further comprising encrypting the artifact and storing a copy of the
encrypted artifact in the second cache; and
b) wherein providing an encrypted copy of the artifact comprises retrieving the encrypted
copy of the artifact from the second cache.
9. A method of operating a computing device to access an artifact, the device coupled
to a network through which a secure channel and an unsecured channel may be formed,
the method comprising:
a) using the secure channel to receive information concerning the artifact;
b) using the information concerning the artifact to transmit a request for a copy
of the artifact over the unsecured channel;
c) receiving the artifact in encrypted form over the unsecured channel; and
d) using the information concerning the artifact to convert the artifact from the
encrypted form to a decrypted form.
10. The method of claim 9, wherein the information concerning the artifact comprises an
encryption key.
11. The method of claim 10, wherein the information concerning the artifact comprises
an identifier.
12. The method of claim 10, wherein the information concerning the artifact comprises
an error detecting code.
13. The method of claim 9, wherein using a secure channel to receive information concerning
the artifact comprises using a secure channel to receive information concerning a
plurality of artifacts.
14. The method of claim 9, additionally comprising sending a communication over the network
indicating that the computing device received a copy of the artifact.
15. A source code control system of the type having equipment at a first site, equipment
at a second site and a network interconnecting the equipment at the first site and
the equipment at the second site, wherein:
a) the equipment at the first site comprises:
i) a memory storage device storing a plurality of versions of a plurality of source
code files;
ii) a server comprising a computer-readable medium storing computer-executable instructions
for:
A) encrypting a version of a source code file to create an encrypted artifact;
B) communicating over the network the encrypted artifact;
C) communicating over the network encryption information concerning the encrypted
artifact;
b) the equipment at the second site comprises a client computer, the client computer
comprising a computer-readable medium storing computer-executable instructions for:
i) obtaining the encryption information;
ii) receiving the encrypted artifact over the network; and
iii) using the encryption information to decrypt the encrypted artifact to generate
the version of the source code file.
16. The source code control system of claim 15, wherein the computer-readable medium of
the server further comprises computer-executable instructions for encrypting each
of a plurality of versions of a source code file with a different encryption key.
17. The source code control system of claim 16, additionally comprising a cache coupled
to the network, the cache storing a plurality of encrypted source code files.
18. The source code control system of claim 17, wherein:
a) the memory storage device stores each of the plurality of versions of a plurality
of source code files in connection with a first type identifier; and
b) the computer-readable medium of the server further comprises computer-executable
instructions for communicating over the network a second type identifier concerning
the encrypted artifact;
c) the cache stores the plurality of encrypted source code files in connection with
the second type identifier.
19. The source code control system of claim 17:
a) additionally comprising a plurality of client computers each having a browser adapted
for downloading pages over the network; and
b) wherein the cache additionally stores computer-executable instructions for caching
the pages downloaded over the network.
20. The source code control system of claim 19, wherein the network comprises the Internet.