throbber
Exhibit D: Claim Chart Comparing CFS Source Code and its Obvious Combination with the CFS I Article with
`Claims of the ‘358 Patent
`
`NOTE: Computer source code is typically comprised of multiple files that provide various functionality of the
`ultimate computer program. In addition to the source code, a source code distribution may provide release notes,
`other descriptions of the source code functionality and instructions to compile and install the computer software.
`The complete CFS Source Code for Version 1.3.3 with all files has been provided as Exhibit 1009. The citations I
`make in the following chart are in many cases to individual source code files and lines within those files.
`I have
`used the formatting convention, filename:lines, for my citations. Exhibit 1009 also includes the source code notes
`file which I cite with the indication “notesms”.
`
`The CFS Source Code alone anticipates almost all of the claims of the ‘358 patent. CFS I references are used even
`for those claims for additional clarification as both CFS Source Code and CFS I describe the same Cryptographic
`File System (CFS.)
`
`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`1. A process of decrypting
`documents comprising:
`
`CFS Source Code
`
`CFS source code anticipates and/or renders obvious claim 1 of the ‘358 Patent as described
`below.
`
`system level through a standard Unix file system interface to encrypted files. Users associate a
`
`CFS source code discloses a process of decrypting documents.
`
`Specifically, CFS source code refers to the encryption and decryption of “files.”
`
`“CFS pushes encryption services into the Unix(tm) file system. It supports secure storage at the
`
`BlackBerry Corporation Exhibit 1017, pg. 1
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`cryptographic key with the directories they wish to protect. Files in these directories (as well as
`their pathname components) are transparently encrypted and decrypted with the specified key
`without further user intervention; cleartext is never stored on a disk or sent to a remote file
`
`server.” (See notes.ms: 17-24).
`
`A “file” in CFS would be considered a “document” as used in the ‘358 patent because files on a
`computer are inherently a “structural unit of... data that can be stored, retrieved, and
`exchanged... as a separate unit” as the ‘358 patent requires. Computer files to a person of
`ordinary skill in the art at the priority date of the ‘358 patent were simply “a set of related records
`treated as a unit.” (See, e.g., [MB System/36 Environment Pogromming, First Edition
`(http://pic.dhe.ibm.com/infocenter/iseries/v6rlm0/topic/books_web/sc4l4730.pdf) at 1—2.)
`
`Furthermore, the ‘358 patent uses the terms “document” and “file” interchangeably. (See, e.g.,
`‘358 at 8:10-23.)
`
`Alternatively, to the extent that CFS source code doesn’t disclose this limitation, CFS source
`code in combination with CFS I renders obvious this limitation.
`
`CFS I
`
`CFS Source Code.
`
`“The Cryptographic File System (CFS) pushes encryption services into the file system itself.”
`Abstract.
`
`[A] providing plural documents
`having respective names
`
`CFS Source Code.
`CFS source code discloses “providing plural documents having respective names.”
`
`Specifically, CFS source code discloses providing multiple files/documents in directories. Each
`file in the directory has a name associated it. Furthermore, the file names are encrypted by the
`
`BlackBerry Corporation Exhibit 1017, pg. 2
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`“Filenames are similarly encrypted.” (See notes.ms:348)
`
`See also cfs_fileid structure at cfs.h:72-89, encryptname function at cfs_fh.c:l92-218, and
`nfsproc_create_2 function at cfs_nfs.c:444-544.
`
`Alternatively, to the extent that CFS source code doesn’t disclose this limitation, CFS source
`code in combination with CFS I renders obvious this limitation.
`
`CFS I.
`
`
`
`“For each encrypted file accessed through an attach point, cfsd generates a unique file handle that
`is used by the client NFS interface to refer to the file. For each attach point, the CFS daemon
`maintains a table of handles and their corresponding underlying encrypted names. P. 14, 2““1 col.,
`lSt full para.
`
`[B] providing a crypto server for
`causing documents to be
`decrypted
`
`CFS Source Code.
`
`CFS source code discloses “providing a crypto server for causing documents to be decrypted.”
`
`Specifically, CFS source code causes a processor to perform certain functions. The crypto server
`in CFS is a local network file system (NFS) server that provides a server daemon for encryption
`and decryption.
`
`“CFS runs entirely at user level, as a local NFS server running on the client machine's "loopback"
`interface. The system consists of... cfsd. .. (the CFS server daemon), and a small suite of tools. ..
`(cmkdir, cattach, cdetach,. .. and... ssh)... that create encrypted directories and manage keys as
`they are used” (See notes.ms:42-55).
`
`See also nfsproc_read_2 fimction at cfs_nfs.c:3 1 1-369; readblock fimction at cfs_fh.c:77-l l8;
`and dodecrypt function at cfs_fl1.c:3 10-330.
`
`BlackBerry Corporation Exhibit 1017, pg. 3
`
`

`

`CFS I.
`
`Fig. 2 shows a “CFS Daemon” With a “NFS Svr. Interface” and “Encryption/Decryption Engine”
`
`[C] providing a first table having
`the names of encrypted
`documents
`
`CFS Source Code.
`CFS source code discloses “providing a first table having the names of encrypted documents.”
`
`The ‘358 Patent
`
`CFS Source Code & CFS I
`
`Claims/Elements
`
`Alternatively, to the extent that CFS source code doesn’t disclose this limitation, CFS source
`code in combination with CFS I renders obvious this limitation.
`
`representing a row in the file hash table. (See, e.g., cfs.h:72-89)
`
`Specifically, CFS Source Code discloses a file hash table comprising of s_f i leid structs that
`stores data relating to a file. The file hash table is a first table as used in the‘358 patent. A struct
`is a basic data structure that stores one or more variables. A struct can be used, for example, to
`implement a table. Each variable of the struct corresponds to a column in the table. As an
`example, if i l e i d element of the c f s_f i l e i d struct corresponds to a column comprising a
`file identifier for a file. CFS may maintain a of s_f i leid struct for one or more files, each
`
`BlackBerry Corporation Exhibit 1017, pg. 4
`
`

`

`typedef struct cfs_fileid { /* hash table entry */
`int fileid; /* inode */
`int key;
`/* key id, for future use */
`char vect[9];
`/* pertubation vector */
`char vectname[1024]:
`/* name of symlink w/ pert vect */
`
`/* dir only; for shortlinks. */
`int 1ink_count;
`int linkid;
`/* short links only */
`#endif
`
`struct cfs_fileid *next;
`struct instance *ins;
`} cfs_fileid;
`
`/* this is redundnat, but helps */
`
`/* the name should be changed to a list of names, and we should make
`sure we have the right one open.
`Lookup (not link) adds names,
`remove and rmdir delete names. */
`struct fdcache *fd;
`/* fd, if already open, or NULL (reg files only)*/
`int parent;
`/* dir only; —1 for instance root
`(send back self]*/
`#ifdef SHORTLINKS
`
`CFS I
`
`Furthermore, the file hash table includes names of the encrypted files. One column in the file
`hash table, name, corresponds to the filename and path to the file. (See, e.g., cfs.h:77.) Another
`column in the file hash table, f ileid, represents a unique identifier for the file. (See, e.g.,
`
`cfs.h:73.) Both name and fileid represent the name of encrypted documents as used by the
`‘35 8 patent. An entry in the file hash table is created for each encrypted file.
`
`The following is a mapping of the claim terms to the names given to those terms in the CFS
`source code:
`
`first table
`
`hash table of of s file id structs
`
`names of enc pted documents
`
`int fileid, char *name
`
`BlackBerry Corporation Exhibit 1017, pg. 5
`
`

`

`The ‘358 Patent
`
`CFS Source Code & CFS I
`
`Claims/Elements
`
`“Files are stored in encrypted form and with encrypted path names in the associated standard
`directories, ....” P. 11, col. 2, § 2.2, 3rd para.
`
`89 and cfs.h: 146-161).
`
`Specifically, the file hash table also includes a column ins, which is a pointer to the instance
`struct associated with a file. The instance struct includes cf 3 key key, i.e., an
`encryption/decryption key. Thus, for each encrypted file in the file hash table, there exists a key
`name (ins) associated With the decryption key value for the encrypted file.
`(See, e.g.,cfs.h:72-
`
`“For each encrypted file accessed through an attach point, cfsd generates a unique file handle that
`is used by the client NFS interface to refer to the file. For each attach point, the CFS daemon
`maintains a table of handles and their corresponding underlying encrypted names.” p. 14, 2“d col.,
`lSt full para. (emphasis added)
`
`CFS Source Code.
`CFS source code discloses “for each of the names of encrypted documents in the first table, a key
`name associated with a decryption key value for the encrypted document.”
`
`[D] for each of the names of
`encrypted documents in the first
`table, a key name associated with
`a decryption key value for the
`encrypted document
`
`BlackBerry Corporation Exhibit 1017, pg. 6
`
`

`

`typedef—{ /* hash table entry */
`
`/* key id, for future use */
`int key;
`char vect[9];
`/* pertubation vector */
`char vectnamel1024];
`/* name of symlink w/ pert vect */
`
`/* the name should be changed to a list of names, and we should make
`sure we have the right one open.
`Lookup (not link) adds names,
`remove and rmdir delete names. */
`struct fdcache *fd;
`/* fd, if already open, or NULL (reg files only)*/
`int parent;
`/* dir only; —1 for instance root
`(send back self)*/
`#ifdef SHORTLINKS
`
`/* dir only; for shortlinks. */
`int 1ink_count;
`int linkid;
`/* short links only */
`#endif
`struct cfs_fileid *next;
`struct instance *ins;
`} cfs_fileid;
`
`/* this is redundnat, but helps */
`
`} instance;
`
`u_char checkl8];/* we just encrypt the date and copy it here */
`int uid;
`/* authorized uid */
`/* we need a better credential mechanism */
`/* same as its position in instances[] */
`/* use perturbation vectors */
`/* invisability */
`(0 is infinite) */
`/* absolute timeout
`/* idle timer (0 is infinite) */
`/* last access time (for use by idle timer) */
`/* to be killed */
`
`typedef struct instance {
`
`char pathINFS_MAXPATHLEN+1];
`char namelNFS_MAXNAMLEN+l];
`
`/* path to get to files w/r/t root */
`/* name of the attach point */
`
`int id;
`int highsec;
`int anon;
`int timeout;
`int idle;
`int access;
`int dead;
`
`BlackBerry Corporation Exhibit 1017, pg. 7
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`The following is a mapping of the claim terms to the names given to those terms in the CFS
`source code:
`
`decryption key value
`
`c f 3 key key
`
`Alternatively, to the extent that CFS source code doesn’t disclose this limitation, CFS source
`code in combination with CFS I renders obvious this limitation.
`
`CFS I.
`
`“Each directory is protected by set of cryptographic keys. These keys can be supplied by user
`entry via the keyboard or, if hardware is available, through removable "smart cards" connected to
`the client computer. When entered from the keyboard, keys take the form of arbitrary-length
`"passphrases" [key name] which are used to generate the set of internal cryptographic keys [key
`value] used by CFS's encryption routines.” P. 11, 2nd col., last para.
`
`
`
`CFS Source Code.
`[E] detecting an open command
`for a given document issuing from CFS Source Code discloses “detecting an open command ...”
`a user of an application program
`using a user input device
`
`Specifically, CFS (cfsd) detects the file system operations such as open command and close
`command for a given file.
`
`“CFS is implemented as a server, called cfsd, for the Sun Network File System (NFS) protocol
`plus extensions for associating keys with directories. cfsd monitors the local host virtual network
`interface for remote procedure calls requests from the local machine. Once the local machine
`invokes an NFS “mount” on the localhost interface for the CFS mount point (/crypt), cfsd handles
`file system operations for the mounted file system as if it were a remote file server.” (See
`
`BlackBerry Corporation Exhibit 1017, pg. 8
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`notes.ms2121-129.)
`
`During the installation process, CFS registers the function responsible for reading and decrypting
`a file, nfsproc_read_2, with the network file system (NFS) service. Thus, when NFS detects that
`a file is to be read, the registered CFS read function will be executed (See README.linux:49)1.
`
`It is inherent that
`The commands are issued from a user of an application such as echo and cat2.
`the commands are issued using a user input device such as a keyboard. As an example, cat
`command opens the file, reads the contents, closes the file and displays the content of the file on
`the terminal. It may use NFSPROC_LOOKUP, NFSPROC_READ to locate the file, open and
`read the contents of the file.
`
`See, also, README.linux:42-54, nfsproto.x at 298-354, rpcgenout.shar.
`
`Alternatively, to the extent that CFS source code doesn’t disclose this limitation, CFS source
`code in combination with CFS I renders obvious this limitation.
`
`
`
`CFS I.
`
`“When a read or write operation occurs, the handle is used as an index into this table to find the
`underlying file name. cfsd uses regular Unix system calls to read and write the file contents,
`which are encrypted before writing and decrypted after reading, as appropriate. To avoid repeated
`open and close calls, cfsd also maintains a small cache of file descriptors for files on which there
`have been recent operations. Directory and symbolic link operations, such as readdir, readlink,
`and lookup are similarly translated into appropriate system calls and encrypted and decrypted as
`needed.” p. 14, 2nd col., lSt full para. (emphasis added)
`
`[F] in response to the open
`
`CFS Source Code.
`
`1 It is inherent that the file has to be opened to be read.
`
`BlackBerry Corporation Exhibit 1017, pg. 9
`
`

`

`The ‘358 Patent
`
`CFS Source Code & CFS I
`
`Claims/Elements
`
`command, the crypto server using
`the first table to determine if the
`
`given document should be
`decrypted
`
`CFS Source Code discloses “in response to the open command, ...”
`
`When the CFS Source Code calls nf sproc_read_2 function, which is responsible for reading
`and decrypting a file3, CFS attempts to retrieve the corresponding entry, of s_f i leid* h,
`from the file hash table. Specifically, when nf sproc_read_2 is called from the NFS service
`to read a file, the corresponding file handle, ap—>f h, is included as a parameter.
`
`the NFS file system (so that the file is opened without decryption).
`
`The file handle for the file is passed to the geth function (See cfs_fi1.c:396-428) in order to
`
`retrieve the file hash table entry corresponding to the file to be read. The geth function in turn
`
`calls the f indh function (See cfs_fh.c:367-392), which searches through the file hash table until
`
`it finds a file hash table entry with a f i leid that matches the id of the file to be read (See
`
`cfs_fl1.c:384). The matching file hash table entry is assigned to variable h (See cfs_fl1.c:388). If
`
`no matching entry is found, then the NULL value is assigned to h (See cfs_fl1.c:39l). Thus, a file
`that needs decryption will be identified in the file hash table, whereas a file that does not need
`encryption will be assigned a NULL value and control transferred back to the program calling on
`
`BlackBerry Corporation Exhibit 1017, pg. 10
`
`

`

`—<ap.rm
`readargs *ap;
`SR rp;
`
`static readres ret;
`static char buffer[8192];
`int fd;
`int uid;
`int len;
`
`cfskey *kew;
`int ht;
`
`cfs_fileid *h;
`
`311
`312
`313
`314
`315
`316
`317
`318
`319
`320
`321
`322
`323
`324
`325
`326
`327
`
`328 readres *
`
`
`static cfs_fileid *
`findh(id,ins
`#ifdef SHORTLINKS
`.linkid)
`int linkid:
`#else /* SHORTLINKS */
`)
`#endif /* SHORTLINKS */
`int id:
`int ins;
`
`#ifdef DEBUG
`
`printf("read:\n");
`#endif
`
`if ((ht=htype 1| =geth _i )) !=H_REG)
`
`{
`
`BlackBerry Corporation Exhibit 1017, pg. 11
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`378
`379
`380
`
`381
`
`383
`384
`385
`386
`387
`388
`389
`
`39o
`391
`
`uiint bucket;
`cfs_fileid *f;
`
`bucket=hash(id);
`
`{
`while (f!=NULL)
`if (f->fileid == id)
`#ifdef SHORTLINKS
`if (f->linkid == linkid)
`#endif /* SHORTLINKS */
`return f;
`f=f->next;
`
`/* note recast */
`
`}
`return NULL;
`
`
`
`392
`
`}
`
`[See, also, cfs_fl1.c at 395 — 428.]
`
`The determination of whether to decrypt a document is made by determining if an entry
`corresponding to the document exists in the file hash table. If a corresponding entry in the file
`hash table, the document is decrypted.
`
`Alternatively, to the extent that CFS source code doesn’t disclose this limitation, CFS source
`code in combination with CFS I renders obvious this limitation.
`
`CFS I.
`
`“. . .0de uses regular Unix system calls to read and write the file contents, which are encrypted
`before writing and decrypted after reading, as appropriate.” p. l4, 2““1 col., lSt full para. (emphasis
`added)
`
`[G] if the given document should
`be decrypted, then
`
`CFS Source Code discloses “if the given document should be decrypted.”
`
`BlackBerry Corporation Exhibit 1017, pg. 12
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`Specifically, if an entry corresponding to the file to be read exists in the file hash table, the
`nfsproc_read_2 function proceeds (See cfs_nfs.c:3l 1-331).
`
`if ((ht=htype (h=geth(—i )) !=H_REG)
`ret.status=herr(ht)7
`return &ret;
`
`{
`
`}
`
`205 #definem (&((f)—>ins—>key))
`
`Specifically, if an entry for the file to be read does not exist in the file hash table, the ht ype
`
`function (See cfs_fl1.c:43 1-440) Will not return H_REG. This causes nf sproc_read_2
`function to return control to the calling function. (See cfs_nfs.c:330). However, if the geth
`
`function (See cfs_fl1.c:396-428) successfully retrieves a file ID table entry for the file, the ht ype
`function Will return H_RE G. Accordingly, execution of the function nf sproc_read_2
`proceeds. (See cfs_nfs.c:328).
`
`CFS Source Code discloses “retrieving the key name ...”
`
`Specifically, CFS Source Code retrieves the instance pointer, h—>ins, (i.e., the key name) from
`the associated file hash table entry. The file hash table entry is identified using the name of the
`document (i.e., int fi leid). (See cfs_nfs.c:328—33l and 347; and cfs.h:205).
`
`[H] retrieving the key name
`associated with the name of the
`
`given document from the first
`table
`
`cfi-I.3.3/cfi_nfi.c:346-34 7:
`346
`/* do the read */
`347
`key=keyof(h);
`
`cfi-1.3.3/Cfi.h:205:
`
`BlackBerry Corporation Exhibit 1017, pg. 13
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`Also in cfi-1.3.3/cfi.h:
`72
`typedef—{ /* hash table entry */
`vs
`
`74
`75
`76
`77
`78
`79
`80
`81
`82
`83
`
`84
`85
`86
`
`for future use */
`/* key id,
`int key;
`char vect[9];
`/* pertubation vector */
`Char vectnamel1024];
`/* name of symlink w/ pert vect */
`Char *name;
`/* encr oted oath, w/r/t cfs root */
`/* the name should be changed to a list of names, and we should make
`sure we have the right one open.
`Lookup (not
`link) adds names,
`remove and rmdir delete names. */
`struct fdcache *fd;
`/* fd,
`if already open, or NULL (reg files only)*/
`int parent;
`/* dir only; —1 for instance root
`(send back self)*/
`#ifdef SHORTLINKS
`
`/* dir only; for shortlinks. */
`int linkicount;
`int linkid;
`/* short
`links only */
`#endif
`
`87
`88
`
`struct cfs_fileid *next;
`struct instance *ins;
`} cfsifileid;
`
`/* this is redundnat, but helps */
`
`
`
`See, also, cfs.h: 72-89.
`
`[I] retrieving the decryption key
`value associated with the key
`name from a second table, the
`second table having at least one
`decryption key value
`
`CFS Source Code discloses “retrieving the decryption key ...”
`
`Specifically, CFS Source Code discloses a second table implemented as an array of instance
`structs (i.e., an “instances table”). An array is a basic data structure that can be used, for
`example, to implement a table. Each element of the instance struct corresponds to a column.
`As an example, key element of the instance struct corresponds to a column Whole name is
`key. Rows of the instances table can be accessed using the array indices. For example, to access
`the second row of the instances table, index 1 is used4.
`
`BlackBerry Corporation Exhibit 1017, pg. 14
`
`

`

`cfisJ‘h.c: 66:
`66
`instance *instancesININSTANCES];
`
`Once the instance pointer (i.e., the key name) for the file is determined, the instance pointer is
`used to determine the key value associated with the file from the instances table. (See, e.g.,
`cfs_nfs.c:347, cfs.h:205, and cfs_fh.c:66) The instance pointer points to the decryption key
`value, h—>ins—>key.
`
`cfis-I . 3.3/cfi9_nfs.c:34 7:
`346
`/* do the read */
`347
`key=keyof(h);
`
`cfis-I.3.3/cfi9.h:205:
`205 #definem (&((f)—>—))
`
`Also in afih:
`146
`typedef struct instance {
`147
`cfs_fileid *file[HMASK+1];
`148
`char path[NFS_MAXPATHLEN+1];
`149
`char name[NFS_MAXNAMLEN+1];
`
`/* path to get to files w/r/t root */
`/* name of the attach point */
`
`
`
`u_char check[8];/* we just encrypt the date and copy it here */
`int uid;
`/* authorized uid */
`/* we need a better credential mechanism */
`/* same as its position in instances[] */
`/* use perturbation vectors */
`/* invisability */
`(O is infinite) */
`/* absolute timeout
`/* idle timer
`(0 is infinite) */
`/* last access time (for use by idle timer) */
`/* to be killed */
`
`151
`152
`153
`154
`155
`156
`157
`158
`159
`160
`161
`
`int id;
`int highsec;
`int anon;
`int timeout;
`int idle;
`int access;
`int dead;
`} instance;
`
`BlackBerry Corporation Exhibit 1017, pg. 15
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`The following is a mapping of the claim terms to the names given to those terms in the CFS
`Source Code:
`
`second table
`
`instance
`
`*instances[NINSTANCES]
`
`[J] causing the given document to
`be decrypted.
`
`CFS Source Code discloses “causing the given document to be decrypted.”
`
`Specifically, after the CFS Source Code retrieves the decryption key, it calls readblock
`
`function, which reads the encrypted data from the file. The readblock function calls the
`
`dodecrypt function which decrypts the data.
`
`347
`348
`349
`350
`
`351
`352
`353
`
`key=keyof(h);
`{
`if (key==NULL)
`ret.status=cfserrno;
`break;
`
`}
`if ((len readblock(buffer,fd,ap—>offset,ap—>count,
`key,vectof(h)))<0){
`
`
`
`2. The process of decrypting
`documents of claim 1 further
`
`CFS Source Code in combination with Chan ‘018 renders claim 2 of ‘358 obvious as described
`below.
`
`comprising providing an
`electronic document management
`system comprising a SQL
`database, a SQL database server
`and a SQL database client,
`
`CFS Source Code anticipates claim 1 as described above. To the extent CFS explicitly does not
`disclose a SQL database, a SQL database server and a SQL database client, Chan ‘018 discloses
`these elements.
`
`BlackBerry Corporation Exhibit 1017, pg. 16
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`wherein the electronic document
`
`management system performs the
`detecting step.
`
`Chan ‘018 discloses an electronic document management system comprising a SQL database
`management system (DBMS). This includes SQL database, SQL database server and SQL
`database clients.
`
`
`
`“The information server includes a database management system (DBMS) with an interface
`procedure for receiving and responding to SQL statements from client computers.
`The
`database access procedure includes embedded encrypted SQL statements, representing a
`predefined subset of a predefined full set of SQL statements ....” Abstract (emphasis added).
`“The present invention relates generally to systems and methods for enabling remote client
`computers to access data in a database server using standard SQL-level statements ....” (Col. 1,
`ll. 4-6 (emphasis added».
`
`Since the database resides on the SQL electronic document management system, commands to
`open the documents residing on the SQL database would be detected by the SQL electronic
`document management system.
`
`CFS Source Code
`
`The CFS Source Code discloses a hash file table that includes an indicator of Whether a file
`
`should be encrypted by the absence or presence of an entry for the file in the file hash table. As
`explained in claim 1, element [F], if the entry is present in the hash file table, the file needs to be
`decrypted. If the entry is not present, the file does not need decryption. Since a database is a
`well—known method for storing tables, it would be an obvious design choice to store the file hash
`table in a database (See claim 1, element [F]).
`
`Rackman ’646
`
`Alternatively, to the extent CFS source code doesn’t disclose claim 3, CFS source code in
`combination with Rackman ‘646 renders obvious claim 3 as described below.
`
`Furthermore, Rackman ‘646 discloses a database in a document production system. The database
`stores images of documents For example, in the system of Rackman, “Field 2 consists of two
`
`3. The process of decrypting
`documents of claim 1 further
`
`comprising
`providing a database, the database
`including an indicator of whether
`the documents should be
`
`decrypted if the indicator in the
`database does not indicate that the
`
`given document is to be
`decrypted, determining that the
`document should not be
`
`decrypted.
`
`BlackBerry Corporation Exhibit 1017, pg. 17
`
`

`

`The ‘358 Patent
`
`CFS Source Code & CFS I
`
`Claims/Elements
`
`It would be obvious for one of skill in the art to combine the flags in the database of Rackman
`with CFS to provide “a database. . .including an indicator of whether documents should be
`decrypted,” as recited in claim 3.
`
`bits, a redaction-exists flag, and a this-is-it flag. The former flag is a 1 if the document is being
`produced to opposing counsel in redacted form. As discussed above, what is actually produced is
`an image pair--an encrypted unredacted image, and an unencrypted redacted image. (Even the
`latter image may have been encrypted with a confidentiality encryption key, and the former
`image may have been doubly encrypted if it is confidential.) The second flag identifies a
`particular image as one of these two forms. If the this-is-it flag is a 1, then the associated image is
`in redacted form; if the flag is a 0, then the associated image is not redacted (although it will be
`encrypted). If the redaction-exists flag is a 0, then there is only one associated (unredacted)
`image, and the value of the this-is-it flag is irrelevant” (See Rackman, col. 6, 11. 14—29).
`
`security with good performance on a modern workstation” (See notes.ms:24-26)
`
`4. The process of decrypting
`documents of claim 1 further
`
`comprising decrypting the given
`document with a DES algorithm.
`
`CFS Source Code anticipates claim 4 of the ‘358 patent as described below.
`
`CFS Source Code discloses “the process of decrypting ...”
`
`Specifically, the CFS Source Code discloses performing decryption with DES algorithms.
`
`“CFS employs a novel combination of DES stream and codebook cipher modes to provide high
`
`BlackBerry Corporation Exhibit 1017, pg. 18
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`/* granularity of DES encryption */
`#define CFSBLOCK 8
`/* writing is a bit tricky — if not
`8 byte boundry,
`read in prev & next
`8 byte boundry first, make the change in place, and write back the whole
`thing *J
`
`i—‘toNNNN
`
`single DES *J
`BDES *X
`key hybrid IDEA in/ai *f
`key hybrid BLOWFISH (nia) */
`key hybrid SKIPJACK (PCMCIA)
`key hybrid MacGuffin *f
`/* 1 key hybrid SAFER~SK128 *X
`f* 3 key hybrid BDES *f
`
`(nfai */
`
`card.
`
`STD_DES 0
`THREE—DES 1
`#define IDEA 2
`#define BLOWFISH 3
`
`#define SKIPJACK 4
`#define MCG 5
`#define SAFERfiSKlES 6
`#define TRUE_THREE_DES 7
`
`5. The process of decrypting
`documents of claim 1 wherein the
`
`The CFS Source Code anticipates and/or renders obvious claim 5 of the ‘358 patent as described
`below.
`
`second table is stored in a smart
`
`The CFS Source Code teaches the use of smart cards. Smartcards are portable data storage
`devices.
`
`“The smartcard version of the command is similar in operation, but also requires a CFS smartcard
`be present in the smartcard reader.” (cattach.1:25-26)
`
`“The smartcard version of \chmkdir\fP initializes a key smartcard and requires that a blank
`smartcard be inserted into the smartcard reader.” (ckdir.1:13-15)
`
`It would be obvious for one of ordinary skill in the art at the time to store the second table in a
`smart card.
`
`To the extent that the CFS Source Code does not disclose the use of smart card for storing the
`second table, CFS Source Code in combination with CFS 1 references renders claim 9 of the ‘358
`
`BlackBerry Corporation Exhibit 1017, pg. 19
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`patent obvious.
`
`fl
`CFS I discloses that the keys (i.e., the key values) and hence the second table could be stored in a
`smart card.
`
`“In particular, keys could be contained in or managed by "smart cards" that would remain in the
`physical possession of authorized users” (CFS 1, pg. 11, 2“d col., 2“d par.).
`
`
`
`Specifically, CFS Source Code is a computer program which can be installed on computers with
`SunOS 4.1.2 and BSD/3 86 operating system.
`“CFS was developed under SunOS 4.1.2 and BSD/ 386 (BSDI).” (See Notes.ms:l70.)
`“The system is designed to be installed on individual single- user workstations.” (See
`Notes.ms:182-183.)
`
`6. A computer program product
`comprising a computer usable
`medium having computer
`readable program code embodied
`therein for decrypting documents,
`the program code for causing a
`processor to
`
`CFS Source Code anticipates claim 6 of the ‘358 patent as described below.
`
`CFS Source Code discloses “a computer program product ...”
`
`It is inherent that such computers include a computer usable medium such as a hard drive or a
`floppy drive.
`“. . .cleartext is never stored on a disk ...” (Notes.msz23)
`
`When installed, the CFS Source Code resides on the hard disk (or the floppy drive.) When
`running, the software program resides on the memory of the computer and causes the processor
`of the computer execute instructions that are part of the CFS Source Code.
`
`See also, claim 1, preamble & element [B].
`
`BlackBerry Corporation Exhibit 1017, pg. 20
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`See claim 1, preamble, element [A] & element [B].
`
`See claim 1, element [C].
`
`See claim 1, element [D].
`
`[A] cause plural documents to be
`decrypted, the documents having
`respective names
`
`[B] record in a first table
`the names of the encrypted
`documents
`
`[C] for each of the names of
`encrypted documents in the first
`table, a key name associated With
`a decryption key value for the
`encrypted document
`
`[D] detect an open command for a
`given document issuing from a
`user of an application program
`using a user input device
`
`[E] in response to the open
`command use the first table to
`
`determine if the given document
`should be decrypted
`
`
`
`See claim 1, element [E].
`
`See claim 1, element [F].
`
`[F] if the given document should
`be decrypted, then
`
`See claim 1, element [G].
`
`[G] retrieve the key name
`associated with the name of the
`
`given document from the first
`
`See claim 1, element [H].
`
`BlackBerry Corporation Exhibit 1017, pg. 21
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`——
`
`[H]]retrieve the decryption key
`value associated with the key
`name from a second table, the
`second table having at least one
`decryption key value
`
`See claim 1, element [1].
`
`[1] cause the given document to be
`decrypted.
`
`See claim 1, element [J].
`
`
`
`7. The computer program product
`of claim 6, the program code
`further for causing the processor
`to decrypt the given document
`with a DES algorithm.
`
`8. A general purpose computer
`system comprising the computer
`program product of claim 6.
`
`CFS Source Code anticipates claim 7 of the ‘358 patent as described below.
`
`See claim 4.
`
`CFS Source Code anticipates claim 8 of the ‘358 patent as described below.
`
`CFS expressly discloses that the system is operated on a general purpose computer system.
`SunOS is an operating system that would be run on general purpose computers.
`
`“CFS as distributed runs under SunOS and, with a little coaxing, several other BSD-derived
`systems including BSD/386” (See notes.ms:3 1-32).
`
`See also, claim 6 at Preamble.
`
`9. The computer program product
`of claim 6, the program code
`further for causing the processor
`
`The CFS Source Code anticipates and/or renders obvious claim 9 of the ‘358 patent as described
`below.
`
`BlackBerry Corporation Exhibit 1017, pg. 22
`
`

`

`The ‘358 Patent
`
`Claims/Elements
`
`CFS Source Code & CFS I
`
`to obtain decryption key values
`from a portable data storage
`device.
`
`The CFS Source Code teaches the use of smart cards. Smartcards are portable data storage
`devices.
`
`“The smartcard version of the command is similar in operation, but also requires a CFS smartcard
`be present in the smartcard reader.” (cattach. 1 225-26)
`
`“The smartcard version of \chmkdir\fP initializes a key smartcard and requires that a blank
`smartcard be inserted into the smartcard reader.” (ckdir. l : 13-15)
`
`It would be obviou

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


Or .

Accessing this document will incur an additional charge of $.

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

Accept $ Charge
throbber

Still Working On It

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

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

throbber

A few More Minutes ... Still Working

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

Thank you for your continued patience.

This document could not be displayed.

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

Your account does not support viewing this document.

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

Your account does not support viewing this document.

Set your membership status to view this document.

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

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

Become a Member

One Moment Please

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

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

Your document is on its way!

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

Sealed Document

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

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


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket