> And definitely this approach is much simplier to implement

I agree.

If we allow to made nodes offline for reencryption then we can implement a 
fully offline procedure:

1. Stop node.
2. Execute some control.sh command that will reencrypt all data without 
starting node
3. Start node.

Pavel, can you, please, write it one more time - what disadvantages in offline 
procedure?

> 25 мая 2020 г., в 11:20, Alexei Scherbakov <alexey.scherbak...@gmail.com> 
> написал(а):
> 
> And definitely this approach is much simplier to implement because all
> corner cases are handled by rebalancing code.
> 
> пн, 25 мая 2020 г. в 11:16, Alexei Scherbakov <alexey.scherbak...@gmail.com
>> :
> 
>> I mean: serving supply requests.
>> 
>> пн, 25 мая 2020 г. в 11:15, Alexei Scherbakov <
>> alexey.scherbak...@gmail.com>:
>> 
>>> Nikolay,
>>> 
>>> Can you explain why such restriction is necessary ?
>>> Most likely having a currently re-encrypting node serving only demand
>>> requests will have least preformance impact on a grid.
>>> 
>>> пн, 25 мая 2020 г. в 11:08, Nikolay Izhikov <nizhi...@apache.org>:
>>> 
>>>> Hello, Alexei.
>>>> 
>>>> I think we want to implement this feature without nodes restart.
>>>> In the ideal scenario all nodes will stay alive and respond to the user
>>>> requests.
>>>> 
>>>>> 24 мая 2020 г., в 15:24, Alexei Scherbakov <
>>>> alexey.scherbak...@gmail.com> написал(а):
>>>>> 
>>>>> Pavel Pereslegin,
>>>>> 
>>>>> I see another opportunity.
>>>>> We can use rebalancing to re-encrypt node data with a new key.
>>>>> It's a trivial procedure for me: stop a node, clear database, change a
>>>> key,
>>>>> start node and wait for rebalancing to complete.
>>>>> Data will be re-encrypted during rebalancing.
>>>>> 
>>>>> Did I miss something ?
>>>>> 
>>>>> пт, 22 мая 2020 г. в 16:14, Ivan Rakov <ivan.glu...@gmail.com>:
>>>>> 
>>>>>> Folks,
>>>>>> 
>>>>>> Just keeping you informed: I and my colleagues are highly interested
>>>> in TDE
>>>>>> in general and keys rotations specifically, but we don't have enough
>>>> time
>>>>>> so far.
>>>>>> We'll dive into this feature and participate in reviews next month.
>>>>>> 
>>>>>> --
>>>>>> Best Regards,
>>>>>> Ivan Rakov
>>>>>> 
>>>>>> On Sun, May 17, 2020 at 10:51 PM Pavel Pereslegin <xxt...@gmail.com>
>>>>>> wrote:
>>>>>> 
>>>>>>> Hello, Alexey.
>>>>>>> 
>>>>>>>> is the encryption key for the data the same on all nodes in the
>>>>>> cluster?
>>>>>>> Yes, each encrypted cache group has its own encryption key, the key
>>>> is
>>>>>>> the same on all nodes.
>>>>>>> 
>>>>>>>> Clearly, during the re-encryption there will exist pages
>>>>>>>> encrypted with both new and old keys at the same time.
>>>>>>> Yes, there will be pages encrypted with different keys at the same
>>>> time.
>>>>>>> Currently, we only store one key for one cache group. To rotate a
>>>> key,
>>>>>>> at a certain point in time it is necessary to support several keys
>>>> (at
>>>>>>> least for reading the WAL).
>>>>>>> For the "in place" strategy, we'll store the encryption key
>>>> identifier
>>>>>>> on each encrypted page (we currently have some unused space on
>>>>>>> encrypted page, so I don't expect any memory overhead here). Thus, we
>>>>>>> will have several keys for reading and one key for writing. I assume
>>>>>>> that the old key will be automatically deleted when a specific WAL
>>>>>>> segment is deleted (and re-encryption is finished).
>>>>>>> 
>>>>>>>> Will a node continue to re-encrypt the data after it restarts?
>>>>>>> Yes.
>>>>>>> 
>>>>>>>> If a node goes down during the re-encryption, but the rest of the
>>>>>>>> cluster finishes re-encryption, will we consider the procedure
>>>>>> complete?
>>>>>>> I'm not sure, but it looks like the key rotation is complete when we
>>>>>>> set the new key on all nodes so that the updates will be encrypted
>>>>>>> with the new key (as required by PCI DSS).
>>>>>>> Status of re-encryption can be obtained separately (locally or
>>>> cluster
>>>>>>> wide).
>>>>>>> 
>>>>>>> I forgot to mention that with “in place” re-encryption it will be
>>>>>>> impossible to quickly cancel re-encryption, because by canceling we
>>>>>>> mean re-encryption with the old key.
>>>>>>> 
>>>>>>>> How do you see the whole key rotation procedure will work?
>>>>>>> Initial design for re-encryption with "partition copying" is
>>>> described
>>>>>>> here [1]. I'll prepare detailed design for "in place" re-encryption
>>>> if
>>>>>>> we'll go this way. In short, send the new encryption key
>>>> cluster-wide,
>>>>>>> each node adds a new key and starts background re-encryption.
>>>>>>> 
>>>>>>> [1]
>>>>>>> 
>>>>>> 
>>>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=95652384#TDE.Phase-3.Cachekeyrotation.-Copywithre-encryptiondesign
>>>>>>> .
>>>>>>> 
>>>>>>> вс, 17 мая 2020 г. в 18:35, Alexey Goncharuk <
>>>> alexey.goncha...@gmail.com
>>>>>>> :
>>>>>>>> 
>>>>>>>> Pavel, Anton,
>>>>>>>> 
>>>>>>>> How do you see the whole key rotation procedure will work? Clearly,
>>>>>>> during
>>>>>>>> the re-encryption there will exist pages encrypted with both new and
>>>>>> old
>>>>>>>> keys at the same time. Will a node continue to re-encrypt the data
>>>>>> after
>>>>>>> it
>>>>>>>> restarts? If a node goes down during the re-encryption, but the
>>>> rest of
>>>>>>> the
>>>>>>>> cluster finishes re-encryption, will we consider the procedure
>>>>>> complete?
>>>>>>> By
>>>>>>>> the way, is the encryption key for the data the same on all nodes in
>>>>>> the
>>>>>>>> cluster?
>>>>>>>> 
>>>>>>>> чт, 14 мая 2020 г. в 11:30, Anton Vinogradov <a...@apache.org>:
>>>>>>>> 
>>>>>>>>> +1 to "In place re-encryption".
>>>>>>>>> 
>>>>>>>>> - It has a simple design.
>>>>>>>>> - Clusters under load may require just load to re-encrypt the data.
>>>>>>>>> (Friendly to load).
>>>>>>>>> - Easy to throttle.
>>>>>>>>> - Easy to continue.
>>>>>>>>> - Design compatible with the multi-key architecture.
>>>>>>>>> - It can be optimized to use own WAL buffer and to re-encrypt pages
>>>>>>> without
>>>>>>>>> restoring them to on-heap.
>>>>>>>>> 
>>>>>>>>> On Thu, May 14, 2020 at 1:54 AM Pavel Pereslegin <xxt...@gmail.com
>>>>> 
>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Hello Igniters.
>>>>>>>>>> 
>>>>>>>>>> Recently, master key rotation for Apache Ignite Transparent Data
>>>>>>>>>> Encryption was implemented [1], but some security standards (PCI
>>>>>> DSS
>>>>>>>>>> at least) require rotation of all encryption keys [2]. Currently,
>>>>>>>>>> encryption occurs when reading/writing pages to disk, cache
>>>>>>> encryption
>>>>>>>>>> keys are stored in metastore.
>>>>>>>>>> 
>>>>>>>>>> I'm going to contribute cache encryption key rotation and want to
>>>>>>>>>> consult what is the best way to re-encrypting existing data, I see
>>>>>>> two
>>>>>>>>>> different strategies.
>>>>>>>>>> 
>>>>>>>>>> 1. In place re-encryption:
>>>>>>>>>> Using the old key, sequentially read all the pages from the
>>>>>>> datastore,
>>>>>>>>>> mark as dirty and log them into the WAL. After checkpoint pages
>>>>>> will
>>>>>>>>>> be stored to disk encrypted with the new key (as usual, along with
>>>>>>>>>> updates). This strategy requires store the identifier (number) of
>>>>>> the
>>>>>>>>>> encryption key into the encrypted page.
>>>>>>>>>> pros:
>>>>>>>>>> - can work in the background with minimal performance impact
>>>>>> (this
>>>>>>>>>> impact can be managed).
>>>>>>>>>> cons:
>>>>>>>>>> - page duplication in the WAL may affect performance and
>>>>>> historical
>>>>>>>>>> rebalance.
>>>>>>>>>> 
>>>>>>>>>> 2. Copy partition with re-encryption.
>>>>>>>>>> This strategy is similar to partition snapshotting [3] - create
>>>>>>>>>> partition copy encrypted with the new key and then replace the
>>>>>>>>>> original partition file with the new one (see details [4]).
>>>>>>>>>> pros:
>>>>>>>>>> - should work faster than "in place" re-encryption.
>>>>>>>>>> cons:
>>>>>>>>>> - re-encryption in active cluster (and on unstable topology) can
>>>>>> be
>>>>>>>>>> difficult to implement.
>>>>>>>>>> 
>>>>>>>>>> (See more detailed comparison [5])
>>>>>>>>>> 
>>>>>>>>>> Re-encryption of existing data is a long and rare procedure (It is
>>>>>>>>>> recommended to change the key every 6 months, but at least once
>>>>>> every
>>>>>>>>>> 2 years). Thus, re-encryption can be implemented for maintenance
>>>>>> mode
>>>>>>>>>> (for example, on a stable topology in a read-only cluster) and in
>>>>>>> such
>>>>>>>>>> case the approach with partition copying seems simpler and faster.
>>>>>>>>>> 
>>>>>>>>>> So, what do you think - do we need "online" re-encryption and
>>>> which
>>>>>>> of
>>>>>>>>>> the proposed options is best suited for this?
>>>>>>>>>> 
>>>>>>>>>> [1] https://issues.apache.org/jira/browse/IGNITE-12186
>>>>>>>>>> [2]
>>>>>>> https://www.pcisecuritystandards.org/documents/PCI_DSS_v3-2-1.pdf
>>>>>>>>>> [3]
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>> https://cwiki.apache.org/confluence/display/IGNITE/IEP-43%3A+Cluster+snapshots#IEP-43:Clustersnapshots-Partitionscopystrategy
>>>>>>>>>> [4]
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=95652384#TDE.Phase-3.Cachekeyrotation.-Copywithre-encryptiondesign
>>>>>>>>>> .
>>>>>>>>>> [5]
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=95652384#TDE.Phase-3.Cachekeyrotation.-Comparison
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> 
>>>>> Best regards,
>>>>> Alexei Scherbakov
>>>> 
>>>> 
>>> 
>>> --
>>> 
>>> Best regards,
>>> Alexei Scherbakov
>>> 
>> 
>> 
>> --
>> 
>> Best regards,
>> Alexei Scherbakov
>> 
> 
> 
> -- 
> 
> Best regards,
> Alexei Scherbakov

Reply via email to