IP Library Granted Patent US 7,908,490
Granted Patent B2
US 7,908,490 · App. 11/973,115 · Granted Mar 15, 2011

Techniques for synchronizing and archive-versioning of encrypted files

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,908,490
App. No.
11/973,115
Granted
Mar 15, 2011
Kind
B2
Abstract

Techniques are presented for synchronizing and archive-versioning encrypted files. Blocks of encrypted data are managed and metadata is maintained for the blocks. The metadata identifies a maximum number of blocks and an index or parameter string. The string includes transaction identifiers and relative block numbers. The metadata is used as parameter information to a hash algorithm along with a hash key to acquire a unique initialization vector for each block. Each initialization vector when supplied to a cipher service along with a particular block of data produces an encrypted version of the data supplied or supplies a decrypted version of the data supplied. The techniques are also applied to files being archived and versioned from a storage volume.

Claims (35)

1. A method implemented in a non-transitory computer-readable medium and for executing on a machine, comprising:

managing a synchronized version of a file as encrypted blocks of data that when assembled and when decrypted represent a copy of that file;

maintaining metadata for the encrypted blocks, wherein the metadata includes a maximum number for the encrypted blocks and an index string identifying added and removed ones of the encrypted blocks;

using the maximum number and selective portions of the index string as input to a hash algorithm along with a hash key to produce initialization vectors for each of the encrypted blocks, the initialization vectors used to properly encrypt and decrypt data associated with each of the encrypted blocks;

detecting a new block being added within the encrypted blocks; and

appending a new string to the index string of the metadata, wherein the new string includes a plus sign symbol followed by a relative position location number as to where the new block is to be positioned within the encrypted blocks.

2. A method implemented in a non-transitory computer-readable medium and for executing on a machine, comprising:

managing a synchronized version of a file as encrypted blocks of data that when assembled and when decrypted represent a copy of that file;

maintaining metadata for the encrypted blocks, wherein the metadata includes a maximum number for the encrypted blocks and an index string identifying added and removed ones of the encrypted blocks;

detecting an existing block being deleted within the encrypted blocks; and

appending a new string to the index string of the metadata, wherein the new string includes a minus sign followed by a relative position location number within the encrypted blocks that identifies the existing block that was removed from the encrypted blocks; and

using the maximum number and selective portions of the index string as input to a hash algorithm along with a hash key to produce initialization vectors for each of the encrypted blocks, the initialization vectors used to properly encrypt and decrypt data associated with each of the encrypted blocks.

3. A method implemented in a non-transitory computer-readable medium and for executing on a machine, comprising:

managing a synchronized version of a file as encrypted blocks of data that when assembled and when decrypted represent a copy of that file;

maintaining metadata for the encrypted blocks, wherein the metadata includes a maximum number for the encrypted blocks and an index string identifying added and removed ones of the encrypted blocks;

using the maximum number and selective portions of the index string as input to a hash algorithm along with a hash key to produce initialization vectors for each of the encrypted blocks, the initialization vectors used to properly encrypt and decrypt data associated with each of the encrypted blocks;

parsing the index string for added and removed blocks, wherein added block numbers are prefixed with a plus sign symbol and deleted block numbers are prefixed with a minus sign symbol; and

iteratively reconstructing the initialization vectors during the parsing for each block number in response to the added block numbers and the deleted block numbers.

4. The method of claim 3 further comprising:

passing each initialization vector for each block number to a cipher service to decrypt data;

ordering the decrypted data; and

producing the file.

5. The method of claim 1 , wherein maintaining further includes identifying repeating patterns of added or deleted block numbers in the index string and compressing each repeated pattern within the index string.

6. The method of claim 1 , wherein maintaining further includes acquiring the maximum number of blocks as a fixed constant or calculating the maximum number of blocks as a predefined maximum file size divided by a predefined block size.

7. A system implemented in a non-transitory computer-readable medium, comprising:

a synchronization service implemented in a non-transitory computer-readable machine and to process on a machine; and

an initialization vector service implemented in a non-transitory computer-readable machine and to process on the machine or a different machine,

wherein the synchronization service is to maintain an encrypted version of a file in synchronization with a decrypted version of that file via encrypted blocks, and wherein the initialization vector service is to maintain metadata for the encrypted blocks that includes a maximum number for the encrypted blocks and an index string, the index string identifying added and removed ones of the encrypted blocks, and wherein the initialization vector service is to produce an initialization vector for each encrypted block of the encrypted version of the file in response to the maximum number and selective portions of the index string, each initialization vector permits a particular block of data associated with the file to be encrypted or decrypted when supplied to a cipher service, wherein the initialization vector service is to serially append a substring onto the index string when a new block of data is detected as being inserted within the encrypted blocks, wherein the substring includes a plus sign symbol and a number representing a relative block position within the encrypted blocks to place the new block of data.

8. A system implemented in a non-transitory computer-readable medium, comprising:

a synchronization service implemented in a non-transitory computer-readable machine and to process on a machine; and

an initialization vector service implemented in a non-transitory computer-readable machine and to process on the machine or a different machine,

wherein the synchronization service is to maintain an encrypted version of a file in synchronization with a decrypted version of that file via encrypted blocks, and wherein the initialization vector service is to maintain metadata for the encrypted blocks that includes a maximum number for the encrypted blocks and an index string, the index string identifying added and removed ones of the encrypted blocks, and wherein the initialization vector service is to produce an initialization vector for each encrypted block of the encrypted version of the file in response to the maximum number and selective portions of the index string, each initialization vector permits a particular block of data associated with the file to be encrypted or decrypted when supplied to a cipher service, wherein the initialization vector service is to serially append a substring onto the index string when an existing block of data is detected as being deleted from the encrypted blocks, wherein the substring includes a negative sign symbol and a number representing a block position within the encrypted blocks that identifies the existing block to remove.

9. The system of claim 7 , wherein the metadata is appended to a first of the encrypted blocks as a header.

10. The system of claim 7 , wherein the metadata is stored separately from the encrypted blocks.

11. The system of claim 7 , wherein the synchronization service is to invoke the initialization vector service to produce encrypted versions of the file or to produce a decrypted version of the file.

Assignments (15)
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
CHANGE OF NAME Recorded Sep 13, 2016
From: NOVELL, INC.
To: MICRO FOCUS SOFTWARE INC.
Reel/Frame 040020/0703 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0316 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034469/0057 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0216 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034470/0680 →
GRANT OF PATENT SECURITY INTEREST FIRST LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0216 →
GRANT OF PATENT SECURITY INTEREST SECOND LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0316 →
RELEASE OF SECURITY INTEREST IN PATENTS FIRST LIEN (RELEASES RF 026270/0001 AND 027289/0727) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0077 →
RELEASE OF SECURITY IN PATENTS SECOND LIEN (RELEASES RF 026275/0018 AND 027290/0983) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0154 →
GRANT OF PATENT SECURITY INTEREST (SECOND LIEN) Recorded May 13, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026275/0018 →
GRANT OF PATENT SECURITY INTEREST Recorded May 12, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026270/0001 →