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