Hi Nikolay,

I noticed that some tickets have been created for this feature. Hopefully,
you haven't started implementation yet, because at this point community is
not aware of concrete architecture and proposed public API. We need to
continue discussion and come up with detailed design. Of most importance we
need to understand the following:
1) How encryption is configured - public API is needed (how to setup key
providers, how to enable encryption for specific caches, etc)
2) How encrypted cluster is started - normally, I do not expect any
additional manual actions from user once everything is configured.
Especially, in presence of auto-activation capability.
3) How and where encrypted cache keys are stored
4) Protocol of key's exchange between nodes
5) Detailed description of encryption flow - what algorithm is used? will
we use CBC?
6) What changes would be required to WAL logic (at the very least -
enumerate affected types of records)?
7) Would it be possible to enable/disable encryption on specific
cache/table in runtime?
8) Would these changes affect compression design anyhow?

Vladimir.

On Tue, Apr 10, 2018 at 5:30 PM, Vladimir Ozerov <voze...@gridgain.com>
wrote:

> Hi NIkolay,
>
> Regarding system caches, rule of thumb here - do not use them. Keys should
> be stored near cache.
>
> As far as password:
> 1) Oracle auto-login wallet [1]
> 2) MySQL- password may be set inside configuration [2]
>
> I do not think that any kind of prompts are needed here out of the box.
> May be we could consider them in future, but at the moment it looks
> redundant to me.
>
> [1] https://docs.oracle.com/cd/E11882_01/network.112/
> e40393/asotrans.htm#CHDCCHBH
> [2] https://dev.mysql.com/doc/refman/5.7/en/keyring-
> encrypted-file-plugin.html
>
> On Mon, Apr 9, 2018 at 5:42 PM, Nikolay Izhikov <nizhi...@apache.org>
> wrote:
>
>> Hello, Vladimir.
>>
>> > 1) Why do you propose to store CEK in separate cache?
>>
>> All CEKs data should be available on all cluster nodes.
>> We want to use system cache to get data synchronization feature "for
>> free".
>>
>> > We consider storing any metadata in system caches as antipattern from
>> our previous experience.
>>
>> Very interesting!
>> Can you share your experience?
>> I didn't know that.
>> I think we can use any convinient storage for CEK.
>> Current design doesn't couple to system caches, so we can change this
>> part at any moment.
>>
>> > 2) I do not think that decryption process should require any
>> "administrator" role and passwords.
>> > Instead, we can have a kind of pluggable interface which will provide
>> decrypted MEK on demand when it is needed.
>> > This should be pre-configured in advance on server node(s).
>> > AFAIK this is how a number of other vendors work.
>>
>> Can't agree with you, for now.
>> Can you please send me some info about implementation you refer to?
>> We study following papers to make current design:
>>
>> 1. ORACLE [1]
>>
>> To enable encryption one has to execute following statement:
>>
>> `ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY *clear_text_password*`
>> Or after database server restart - `ALTER SYSTEM SET WALLET OPEN
>> IDENTIFIED BY *clear_text_password*`
>> So yes, administrator is involved into server restart.
>> And no, it's not all automatic.
>>
>> 2. MSSQL [4] - AFAIK uses some Windows OS internal key storage to write
>> and read master key.
>> DB server process should have administrator(system) priveleges to access
>> that storage.
>>
>> > Instead, we can have a kind of pluggable interface which will provide
>> decrypted MEK on demand when it is needed.
>>
>> We, for sure, will have pluggable interface for providing MEK.
>> But, from my point of view, default implementation should use some
>> default java features.
>> I think we should use java key store.
>> It requires to have a clear text password to be loaded [3]
>>
>> [1] https://docs.oracle.com/cd/B19306_01/network.102/b14268/asot
>> rans.htm#BABJJAIG
>> [2] https://technet.microsoft.com/en-us/library/bb934049(v=sql.110).aspx
>> [3] https://docs.oracle.com/javase/8/docs/api/java/security/
>> KeyStore.html#load-java.io.InputStream-char:A-
>> [4] https://technet.microsoft.com/en-us/library/bb934049(v=sql.110).aspx
>>
>> > 3) CEK decryption should not be tied to MEK decryption.
>>
>> MEK will be available from the moment it obtained to the node stop.
>> So, we can decrypt existing or encrypt newly created CEK whenever it
>> necessary.
>>
>> > 4) I do not think that SSL should be a strict requirement. It is up to
>> the> user to asses the risks.
>>
>> I'm fully OK with it.
>> Let's remove that restriction.
>>
>> В Пн, 09/04/2018 в 11:35 +0300, Vladimir Ozerov пишет:
>> > Hi Nikolay,
>> >
>> > First of all thank you for excellent summary. Two-tiered key management
>> is
>> > well respected technique and makes perfect sense to me. However, several
>> > questions regarding architecture arises:
>>
>> > 3) CEK decryption should not be tied to MEK decryption. Main reason -
>> CEK
>> > could be required during dynamic cache/table creation. So there should
>> be
>> > no coupling between activation and CEK processing.
>>
>> > 4) I do not think that SSL should be a strict requirement. It is up to
>> the
>> > user to asses the risks.
>> >
>> > On Fri, Apr 6, 2018 at 9:59 PM, Denis Magda <dma...@apache.org> wrote:
>> >
>> > > Nikolay, Dmitriy R.,
>> > >
>> > > Thanks for the research and for writing down a summary in the IEP
>> form.
>> > >
>> > > Please answer several high-level questions:
>> > >
>> > >    - Is it necessary to have CEP keys for every cache? Not sure how
>> all the
>> > >    keys will be managed if the user wants to encrypt 10-100 caches.
>> Is it
>> > >    possible to use a single CEP by default with an option of having a
>> > > unique
>> > >    one for a cache with more sensitive information?
>> > >    - It's not written, but I guess it would be up to me which caches
>> to
>> > >    encrypt, right? In practice, you don't need to have all the data
>> > > encrypted.
>> > >    Usually, companies look to hide personal, payments history, etc.
>> > >    - Should we think of procedures of CEP keys regeneration? A key
>> can be
>> > >    lost or stolen.
>> > >    - Similar question goes for MEP key.
>> > >
>> > > --
>> > > Denis
>> > >
>> > > On Thu, Apr 5, 2018 at 2:15 PM, Dmitriy Setrakyan <
>> dsetrak...@apache.org>
>> > > wrote:
>> > >
>> > > > Here is a correct link to IEP:
>> > > > https://cwiki.apache.org/confluence/display/IGNITE/IEP-
>> > > > 18%3A+Transparent+Data+Encryption
>> > > >
>> > > > On Thu, Apr 5, 2018 at 12:01 PM, Nikolay Izhikov <
>> nizhi...@apache.org>
>> > > > wrote:
>> > > >
>> > > > > Hello, Igniters.
>> > > > >
>> > > > > Based on previous discussion [1] we've created "IEP-18:
>> Transparent
>> > >
>> > > Data
>> > > > > Encryption" [2]
>> > > > > I've planned to start implementation of TDE in few weeks.
>> > > > > I will create JIRA ticket for each piece of implementation.
>> > > > >
>> > > > > So, please, see IEP-18 and give us feedback.
>> > > > >
>> > > > > Dima Ryabov, huge thanks for pushing TDE IEP forward.
>> > > > >
>> > > > > [1] http://apache-ignite-developers.2346864.n4.nabble.
>> > > > > com/Transparent-Data-Encryption-TDE-in-Apache-Ignite-td18957.html
>> > > > > [2] https://cwiki.apache.org/confluence/pages/viewpage.
>> > > > > action?pageId=75979078
>> > > > >
>>
>
>

Reply via email to