>>Would it help to include that value [World Wide Name] in the upper bits of I?
It would prevent user errors, simplifies the key loading command, but
makes the initial multiplication more costly (fewer 0's). It might be a
factor of 2 slower. One could hash this value down to 16 bit (with some
secret included), if performance was critical. In a huge network of
disk there will be collisions, but an attacker would not know, which
disk share the same IV, so there are no easy exploits.

Laszlo

> -------- Original Message --------
> Subject: RE: LBA-to-I mapping & key scopes
> From: "Elliott, Robert (Server Storage)" <[EMAIL PROTECTED]>
> Date: Fri, December 16, 2005 10:59 am
> To: <[EMAIL PROTECTED]>
> 
> SCSI disk drives usually include a 64-bit NAA IEEE Registered identifier
> that is unique for the drive (the logical unit name in the INQUIRY
> command Device Identification VPD page); ATA disk drives optionally
> include such an identifier (the World Wide Name field in IDENTIFY DEVICE
> data).
> 
> Would it help to include that value in the upper bits of I?
> --
> Rob Elliott, [EMAIL PROTECTED]
> Hewlett-Packard Industry Standard Server Storage Advanced Technology
> https://ecardfile.com/id/RobElliott
> 
> 
>  
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On 
> > Behalf Of [EMAIL PROTECTED]
> > Sent: Friday, December 16, 2005 9:51 AM
> > To: [EMAIL PROTECTED]
> > Subject: RE: LBA-to-I mapping & key scopes
> > 
> > >>If you have enough plaintext/ciphertext pairs with the same key
> > You don't. Users must you different keys for different drives to avoid
> > comparison attacks, so you only see one AES plaintext-ciphertext pair
> > per key. Even if K1 is reused and I=0 is allowed you see only as many
> > plaintext-ciphertext pairs as disk drives you put on spin stands. Very
> > few. This is not an issue.
> > 
> > >>that's just more keys to manage. [K, K+1, K+2...]
> > No. It is still just one key, plus an offset (~drive index).
> > 
> > >>a controller serving many disks would probably want to use 
> > as few keys as possible
> > True. This is a slight advantage of using drive-indices instead of
> > incremented keys. For the majority of the applications it just
> > complicates things without improving the security. If a user is dumb
> > enough to use the same key on many drives, why do you think he won't
> > set all the drive indices to 0?
> > 
> > >>LRW is not a _perfect_ solution
> > It does improve the security of data at rest. For the cases, where
> > traffic analysis is a feasible attack, P1619 should revive one of the
> > long block encryption modes. Since the proposed standard does not
> > include one, implementers have no choice. If they face 
> > traffic analysis
> > type attacks, they have to add extra proprietary measures, leading to
> > many incompatible solutions.
> > 
> > Laszlo
> > 
> > > -------- Original Message --------
> > > Subject: RE: LBA-to-I mapping & key scopes
> > > From: "Colin Sinclair" <[EMAIL PROTECTED]>
> > > Date: Fri, December 16, 2005 7:22 am
> > > To: <[EMAIL PROTECTED]>
> > > 
> > > > >>this opens the door for an easy attack on the AES to get K1.
> > > > If there was a weakness in AES in ECB mode. None is 
> > known, so there is
> > > > no argument against allowing I = 0.
> > > 
> > > If you have enough plaintext/ciphertext pairs with the same 
> > key, this starts opening doors. For the
> > > ease of avoiding I=0, I think it should be done. There is 
> > nothing in the original "LRW" paper which
> > > describes such a problem, but then neither does it specify 
> > the use of a GF multiply to implement the
> > > function T = h(I) chosen from family of hash functions H 
> > (by virtue of changing K2). Because h(0) ==
> > > 0 whatever h (ie K2) is chosen, this may invalidate the 
> > security proof for LRW? I don't know, this
> > > is beyond me!
> > > 
> > > Cryptographic algorithms (such as LRW) are dangerous 
> > things. They often need things like IVs which
> > > need to be unique and/or random to guarantee security, but 
> > leave it up to the user (in this case
> > > 1619 standard) to ensure this is achieved. So the 1619 
> > standard should make every attempt to ensure
> > > security is not violated by defining a simple and 
> > consistent way of forming I values in a storage
> > > application. Otherwise, repeated or illegal I values could 
> > be used because a vendor/implementor
> > > doesn't understand the restrictions.
> > > 
> > > In my most recent suggestion, with the top byte defined as 
> > a drive index, this could start at 1 for
> > > a single/first drive thus preventing I becoming 0 even if 
> > the LBA is used without additive offset.
> > > The drive is then configured (by some command extension 
> > over the interface) at power up with the key
> > > and a "drive index within key scope". The contribution that 
> > the drive index makes to the T values is
> > > static and that part of the GF multiplication can be 
> > precomputed when the key is loaded, thus
> > > getting us back to a much reduced per-sector (or 
> > per-contiguous-sector-burst) multiplication for
> > > typical LBAs of ~32 bits.
> > > 
> > > I propose:
> > > 
> > >   i = drive_index<<120 + LBA<<n + (0,1,2...j-1),
> > > 
> > >   where n = ceil(log2(j)), and j = ceil(sector_size/16)
> > >   and drive_index is in range 1..255.
> > > 
> > > For a key scope spanning multiple drives, the index must be 
> > varied accordingly. The controller can
> > > program each connected drive uniquely at power up.
> > > 
> > > For a single drive with one scope, the index defaults to 1 
> > and the LBA can be completely unmodified
> > > (apart from shift offset). For multiple key scopes on a 
> > single drive (partitions?) the LBA used in
> > > this calculation could be normalised to 0 within the 
> > partition/scope, or it could be completely
> > > unmodifed (easier) - just need to choose either rule and 
> > document it.
> > > 
> > > Note (for Don): n & j are both constant after the drive is 
> > formatted to a specific sector size.
> > > Surely it is not that much effort for internal disk 
> > software to compute this and remember it for
> > > internal encryption operations? Or for external controller 
> > software to query the drive parameters
> > > (which is probably has to do anyway) and work it out! The 
> > standard should only define the
> > > _composition_ of I, not the fine details of how or where it 
> > is computed.
> > > 
> > > Also, apologies for using "<<" in the equation above; we 
> > now agree that I is defined back to front
> > > and that the LS bit of I is on the right, to match the GF 
> > polynomial. I have now used "i =" where i
> > > is the integer value which gets encoded bitwise backwards 
> > into I. This is why $5.2 needs to be
> > > re-written very carefully!
> > > 
> > > > >>The interface would be the I vector, since LRW is 
> > defined like that, not in terms of LBAs
> > > > Here I see a problem.
> > > 
> > > I meant interface between disk or controller software, and 
> > any encryption acceleration module
> > > (software subroutine or hardware), not the connector on the 
> > back of the drive. The LRW I value
> > > should be totally hidden from the storage user (an OS?), 
> > who only cares about LBAs.
> > > 
> > > > >>Outside of the disk you probably don't get the ability 
> > to start the seek for a write
> > > > It looks like I need to write a more extensive 
> > explanation, why it is
> > > > not a good idea to implement LRW outside of the disk. I 
> > wrote about it
> > > > several times, but it gets just ignored. So give me a 
> > couple of hours,
> > > > I will post it.
> > > 
> > > I read this; some good points raised. I think we all agree 
> > LRW is not a _perfect_ solution and there
> > > are many types of attacks. But LRW is likely to be adopted 
> > by many vendors, both outside and inside
> > > the drives (depending on which market segment they are in), 
> > so we should at least make it work for
> > > both scenarios, I feel. I'm not that qualified to comment 
> > on this any more because may main interest
> > > is ensuring the crypto is correctly used, unambiguously 
> > defined and is easy to implement as a
> > > sub-module.
> > > 
> > > > >>What about a RAID application
> > > > If the encryption is done in each individual disk drive, 
> > you just have
> > > > to provide a different key for each. They can be K, K+1, 
> > K+2,... Since
> > > > the encryption is transparent, the controller does not have to do
> > > > anything different than before, except providing the keys 
> > to the drives
> > > > at power up. If you encrypt in the controller, I will 
> > explain why the
> > > > security is weaker.
> > > 
> > > OK, that's just more keys to manage. Changing keys in 
> > hardware accelerators (or software, for that
> > > matter) sometimes incurs a latency due to precomputations. 
> > So a controller serving many disks would
> > > probably want to use as few keys as possible? My proposal 
> > does not preclude an implementation from
> > > using one key per drive.
> > > 
> > > > >>How about defining the top byte of I to be a drive index
> > > > It can be done. We need yet another new disk command, or, 
> > modify the not
> > > > yet defined one, which transfers the keys to the drive: (K1, K2,
> > > > Drive_index). It allows you to use the same K1 and K2 keys for
> > > > different drives. It does not add much to the security, 
> > since you could
> > > > always use different (but related) keys without any 
> > significant danger
> > > > of collision.
> > > 
> > > Agreed it does not affect the security. The standard must 
> > either explicitly state key scopes cannot
> > > be used across multiple drives, or it must define a drive 
> > index or similar to preclude duplicate I
> > > values.
> > > 
> > > The working group as a whole needs to decide which way to 
> > go, before the text of $5 can be
> > > updated...
> > > 
> > > As the key transfer command is not yet defined, adding 
> > another parameter to it is probably not an
> > > issue?
> >

Reply via email to