<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";}
span.EmailStyle20
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Bryan D. Payne wrote:<o:p></o:p></p><p class=MsoNormal>> How do you specify encryption algorithms / key length?<o:p></o:p></p><p class=MsoNormal>Currently we’re proposing that any necessary encryption parameters will be specified by the Nova configuration file.  The system administrator may specify the desired encryption algorithm and key length, both of which will be used for all encrypted volumes.  If neither is specified in the configuration file, default settings (e.g., dm-crypt’s default settings) will be used instead.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> How do you plan to handle IVs?<o:p></o:p></p><p class=MsoNormal>dm-crypt, which we use to transparently encrypt disks, provides support for a variety of ways to generate initialization vectors (IVs). AES modes of operation supporting robust IVs that are available through Linux include Encrypted Salt-Sector Initialization Vector (ESSIV) - Linux kernel version 2.6.10 - and Xor-encrypt-xor Tweaked-codebook ciphertext Stealing (XTS) - 2.6.24.  (Note the kernel release shown is the initial release for each of these.)  XTS is specifically designed for use in volume storage applications: it minimizes the storage impact of encryption (no block size increase) and addresses some data-dependent security vulnerabilities where the encrypted data could provide hints about how the data could be decrypted.  Liskov, Rivest, and Wagner (LRW) - 2.6.20 - is another possible mode, but it is not considered sufficiently strong (as called out by the developers of the IEEE P1619 standard.) <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> Need a lot more details on the key management side.  In particular, what would you implement<o:p></o:p></p><p class=MsoNormal>> here if the BP (blueprint) is accepted?<o:p></o:p></p><p class=MsoNormal>The implementation would be rolled out in several phases.  The first release would essentially be a proof of concept of the encryption capabilities.  It would have a simple key management capability used for testing the proof-of-concept implementation.  Initial versions will not integrate fully with OpenStack’s existing mechanisms for authentication, which may limit their security.  A later version is planned that would be based on some basic key management capabilities that would be compatible with the Key Management Interoperability Protocol (KMIP).  The plan is to offload the complexity of implementing key management by using a KMIP server that will talk with the virtualization host to provide a secure link that would deliver the proper keys when needed.  The KMIP server would need to rely on Keystone to provide the authorization credentials validating that the correct user is accessing the block storage device and that the correct key is being accessed.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> And how does the key management link back to Keystone... or does it?<o:p></o:p></p><p class=MsoNormal>In the initial version there would be little or no linkage to Keystone. In a subsequent version, PKI support through Keystone could be used to support authentication of the key management exchanges.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> Are you linking the keys to specific users?  Or is this just a system-level encryption that has no <o:p></o:p></p><p class=MsoNormal>> direct linkage to users?<o:p></o:p></p><p class=MsoNormal>Key management is handled transparently to the user, with keys being associated with only the volume they encrypt (or decrypt).  Keys will be retrieved automatically when a user mounts a volume to which they have access.  In a later version, key management capabilities (e.g. KMIP) may allow keys to be linked to specific users or projects/tenants.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> How does this get turned on / off?  Is this something that is configured at the time a cloud is <o:p></o:p></p><p class=MsoNormal>> setup?  Or is this something that a user can optionally add when launching an instance / creating <o:p></o:p></p><p class=MsoNormal>> a volume?  Or, something in between? <o:p></o:p></p><p class=MsoNormal>To specify that a volume should be encrypted, a new option is being introduced within both the dashboard and the Cinder CLI.  Given this option, the user can choose to encrypt the volume when it's created.  Note that there will be no option to change this setting after volume creation.  System administrators will specify the encryption algorithm, key length, etc. as part of the Nova configuration.  <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> How does this impact performance?  CPU overhead on node?  Network overhead?  Dedup <o:p></o:p></p><p class=MsoNormal>> overhead?  Is any of this tunable or is it all or nothing? <o:p></o:p></p><p class=MsoNormal>CPU overhead: We expect some minor CPU overhead during disk writes and reads when using this feature, but the overhead must still be characterized as part of the future testing.  The use of hardware encryption features such as Intel’s AES-NI could minimize the overhead.<o:p></o:p></p><p class=MsoNormal>Tunability: The AES modes and key strength of the encryption will most likely be configurable, allowing a trade-off of strength and efficiency. <o:p></o:p></p><p class=MsoNormal>Network overhead: We expect minimal network overhead because most disk encryption schemes are designed to encrypt data within approximately the same amount of storage space required by the plaintext.  <o:p></o:p></p><p class=MsoNormal>Data replication:  No added overhead. (See response to network overhead.)<o:p></o:p></p><p class=MsoNormal>Deduplication overhead: Storages engines that support data deduplication will be negatively affected.  For example, volumes with different keys will not have any blocks in common, and even blocks within the same volume will have different contents when encrypted.<o:p></o:p></p></div></body></html>