It is my belief that once ISVs and customers recognize this problem,
they will start modifying their applications to encrypt data at the
application layer. Once we're past the tipping-point on that, there
will be little need for duplicating encryption on storage-devices.
It is not that easy. Protecting data in transit has very different
constraint, security requirements, threat models, attack scenarios than
protecting data at rest on the storage medium. If you design a single
encryption scheme for both, it could be very inefficient in the storage
device: e.g. we might need to store a random IV at every sector, like in
tapes. At small disk sectors this would cause a considerable waste of
capacity, therefore there is often a “need for duplicating encryption on
storage-devices”.
Another issue of the many: To prevent traffic analysis attacks, the storage
address (LBA) has to be encrypted, too, dependent on changing IV’s. This
presents difficulties at disk arrays, where data cannot be routed to the
destination drive without knowing the encryption key, consequently all
drives have to see all the data, and decrypt at least part of the data to
see if it was sent to them.
There are also security concerns. An encrypting disk drive never reveals
its key, it is not stored permanently anywhere. This gives us information
theoretical security: a lost or stolen disk drive does not contain the
information necessary for decrypting its data. However, if the encryption
is performed in the application layer, the key has to be known and
constantly in use there, making it vulnerable to viruses, root kits, bus
analyzers, software bugs, etc.
The key delivered to the drive by P1619.3 or OASIS or any other key
management scheme, must not be the encryption key itself, but an
authentication key, which is part of the input of a one way key derivation
function.