IEEE Scramble This document specifies a scramble mechanism to use in storage security. Synopsis: Author(s): Yaron Klein, Sanrad Ltd. Edit & Review: Revision Level: 1.0 Revision Date: Jan. 18, 04 Introduction This document specifies an IEEE P1619 r=1 scramble algorithm. The scramble algorithm may be use in compliance to the IEEE Tweak algorithm for additional strength or on its own for a low level encryption. This document includes the following sections: - Definitions, acronyms and symbols. - Mathematical properties - Specification - Implementation issues Definitions AES Bit Byte Sector Disk Volume File System Advanced Encryption Standard A binary digit having a value of 0 or 1 A group of eight bits A basic storage unit of a disk (usually a 512 byte). A physical storage element of sectors. A storage element constructed of parts from one or more disks. A method of storing user’s files on a volume. Motivation Protecting data in a shared storage elements (or data at rest) differs from protecting data in a communication systems (or data in transit) is several ways: In a shared storage element, the hacker may have unlimited or relatively long time to decrypt the data, while in communication systems, the data may be irrelevant after a short time. In a shared storage element, key exchange is impossible while in data in transit, the encryption keys may change every short period of time. In communication systems the data is usually a raw data with no characteristics, while is storage element the data is stored in a well-known file system. This includes known patterns in known locations. The basic storage encryption standard [Tweak] uses AES as a basic encryption algorithm and a Tweak algorithm to reduce the element of patterns. However, this may be insufficient for advanced hackers. Those can use the known patterns to decrypt the information. Also, for the other side of the scale, the storage encryption standard requires high computational power from the user’s resources. A low level user may only want to protect against a simple hacker without the necessity to pay in CPU utilization. Storage Preliminaries A storage volume is an array of sectors where each sector indexed. The user can read or write to each sector. Usually, a layer of file system buffers between the user and the volumes data. This layer enables the user to interact with the volume with file level API. The output from the file system layer goes down to a SCSI layer. It encapsulates the read or write command into a SCSI command. Such command has an index of the start sector, the size of the data (in sectors) and the data. The main commands are Write Commands (where data is written from the user to the volume) and Read Command (where data is read from the volume to the user). If a virtualization layer exists (e.g., Raid system), the address in the SCSI command is converted according to the virtual map. Then, it is transferred to the physical disk for execution. Mathematical Preliminaries Consider a volume with N sectors. The sectors are indexed from 0 to N-1 on the discrete interval 0, N 1. A one to one map from the domain to itself is a function such that: f (ni ) n j ni 0, N 1 such that: n j 0, N 1 and: if ni nk than f (ni ) f nk If we plug a device down from the SCSI layer that on each Write command maps each sector using such function, we “scramble” the volume’s raw data. In the other direction, in each Read command, we need to use the inverse function f 1 before executing the command. We can say that the process of the scrambling is encryption and the function f is the key. Such function can be analytical function, e.g., f ni ni a b where, gcd N , a 1 In this case, a and b are the code. Practical Functions A different function can be a simple map. That is, the user can set an ordered array of size N and shuffle it using some random algorithm. In here, f ni Ani , where A is the shuffled array. The key here is the array. If we consider that 1 GB of storage requires about 2097152 sectors, than such an array may require an expensive memory space. We can than consider a reduced version of it. Without loss of generality, assume that N 2 b . Define a shuffled array of 2 b entries. Denote a corollary function f b ni Ab ni to all ni 0,2 b . For large N, divide the b bits to t intervals b1 , b2 ,..., bt such that b1 b2 ... bt b . For each interval define a function f bi as above. For each ni 0, N 1, disassemble ni to elements of bi bits according to the intervals, shuffle using the appropriate f bi function and assemble the element back. For example, in order to shuffle volume of 1 MB with sector size of 512 bytes ( 211 sectors), we can use 2 intervals 5,6. The code length is 2 5 2 6 96 bytes. Without loss of generality, assume that N is a multiple of 2 b , such that N 2 b M . Define a shuffled array of 2 b entries. Denote a corollary function f b mi Ami to all mi 0,2 b . Denote the b least significant bits of ni as LS b ni and the remains most significant bits as MS b ni . Note that ni MS b ni LS b ni . Then, we can define a function such that: f ni MS b ni Ab LS b ni Complexity The complexity of the encryption is O1 - one memory fetch. Efficiency The above algorithm does not protect the volume from an advanced hacker. Since the data on the sector is not encrypted, known patterns can be found on the disk. However, due to the size of typical volume, a brute force hacking is infeasible. The encryption complexity is trivial, but performance problems may arise because of the physical nature of the disk. A basic command of continuous data is split into nonsequential commands. Thus, overload the disk’s rotor. Bibliography [Tweak] Cyril Guyot, IEEE Tweak.