← Back to team overview

maria-developers team mailing list archive

Re: [Maria-discuss] MariaDB encryption

 

2014-06-17 14:03 GMT-03:00 Jonas Oreland <jonaso@xxxxxxxxxx>:

> Hi again,
>
> 1) we have not done column level encryption at all.
>
nice, did you check that have an idea at mariadb atlassian mdevs, maybe
this could help?
https://mariadb.atlassian.net/browse/MDEV-4912


>
> 2) keys are managed in a separate module (which can be overridden by
> plugin, which we do for testing)
> 3) keys have 32 bit version
> 4) different key versions can exists simultaneously in database
>
nice


>
> 5) for innodb we encrypt both datafiles and logfiles
> 6) encryption of innodb datafiles works roughly like this:
> - pages are encrypted with aes ctr
> - page 0 of each encrypted datafile contains IV
> - all pages except page 0 is encrypted
> - if compression is used, pages are encrypted after compression
> - pages are encrypted/decrypted by calls added to innodb-buffer-pool module
> - encrypted pages are "tagged" with which key-version encrypted it
> - different pages in database can be encrypted with different key version
> - when key-server module reports that a new key version is available, a
> background task will re-encrypt database with new key-version (key rotation)
> - key rotation is performed with configurable number of threads, that will
> perform configurable amount of IOPS.
> one can also configure how frequently pages shall be key-rotated (i.e max
> key "age")
>

nice something like a i/o wrapper between filesystem calls and innodb,
right?




>
> /Jonas
>
>
>
> On Tue, Jun 17, 2014 at 6:40 PM, Elmar Eperiesi-Beck <
> elmar@xxxxxxxxxxxxxxxx> wrote:
>
>> Hi,
>> I agree with you. If we want to know, what Google has developed as
>> encryption feature, we will have to wait for your source code to be
>> published.
>>
>> In the meantime, you can find our concept for the encryption on our
>> website: http://bit.ly/1slJyuI
>> Feedback (negative and positive) from all of you is welcome - and needed!
>>
>> Best Regards
>> Elmar
>>
>>
>> Am 17.06.2014 um 12:50 schrieb Jonas Oreland <jonaso@xxxxxxxxxx>:
>>
>> Hi again,
>>
>> > by "interfaces" I was looking for the Maria DB place/ function /
>> hook... where you are enhancing the MariaDB Code.
>>
>> I'm not sure how to convey this in a digestible form, attaching diffstats
>> below. Not sure if it's helps :-(
>>
>> There are many aspects of it.
>> And each of the sub-projects (innodb data, innodb log, maria, tempfiles,
>> binlog) has "interesting" details.
>>
>> /Jonas
>>
>>
>> storage/innodb has this diffstat:
>>  CMakeLists.txt       |    2
>>  btr/btr0cur.cc       |    9
>>  buf/buf0buf.cc       |  213 +++++
>>  buf/buf0checksum.cc  |    8
>>  buf/buf0dblwr.cc     |   40 -
>>  buf/buf0flu.cc       |    6
>>  buf/buf0rea.cc       |    7
>>  dict/dict0load.cc    |    8
>>  fil/fil0crypt.cc     | 1986
>> +++++++++++++++++++++++++++++++++++++++++++++++++++
>>  fil/fil0fil.cc       |  280 ++++++-
>>  fsp/fsp0fsp.cc       |   36
>>  handler/ha_innodb.cc |  110 ++
>>  handler/i_s.cc       |  292 +++++++
>>  handler/i_s.h        |    1
>>  include/buf0buf.h    |   60 +
>>  include/buf0buf.ic   |   29
>>  include/fil0fil.h    |  266 ++++++
>>  include/fsp0fsp.h    |    9
>>  include/log0crypt.h  |   85 ++
>>  include/log0log.h    |   21
>>  include/log0recv.h   |    5
>>  include/mtr0log.ic   |    2
>>  include/mtr0mtr.h    |    8
>>  include/srv0srv.h    |    8
>>  log/log0crypt.cc     |  256 ++++++
>>  log/log0log.cc       |   93 ++
>>  log/log0recv.cc      |   35
>>  mtr/mtr0log.cc       |    4
>>  row/row0import.cc    |    3
>>  srv/srv0srv.cc       |   14
>>  srv/srv0start.cc     |   29
>>  31 files changed, 3853 insertions(+), 72 deletions(-)
>>
>> storage/maria has this diffstat:
>>  CMakeLists.txt                            |   12
>>  ha_maria.cc                               |   12
>>  ma_bitmap.c                               |   63 ++--
>>  ma_blockrec.c                             |  222 ++++++++------
>>  ma_blockrec.h                             |   26 +
>>  ma_check.c                                |   49 +--
>>  ma_checkpoint.c                           |    4
>>  ma_close.c                                |    2
>>  ma_create.c                               |   56 +++
>>  ma_crypt.c                                |  464
>> ++++++++++++++++++++++++++++++
>>  ma_crypt.h                                |   26 +
>>  ma_delete.c                               |    2
>>  ma_key_recover.c                          |   10
>>  ma_loghandler.c                           |   63 +---
>>  ma_open.c                                 |   48 ++-
>>  ma_pagecache.c                            |  154 ++++++---
>>  ma_pagecache.h                            |   34 +-
>>  ma_pagecrc.c                              |  118 ++++---
>>  ma_static.c                               |    1
>>  ma_write.c                                |   24 -
>>  maria_def.h                               |   81 ++---
>>  unittest/ma_pagecache_consist.c           |   28 -
>>  unittest/ma_pagecache_rwconsist.c         |   27 -
>>  unittest/ma_pagecache_rwconsist2.c        |   27 -
>>  unittest/ma_pagecache_single.c            |   27 -
>>  unittest/ma_test_loghandler_pagecache-t.c |   29 -
>>  26 files changed, 1102 insertions(+), 507 deletions(-)
>>
>> A noticeable difference between innodb and maria is that we didn't
>> implement encryption of the log for maria,
>> as we only added support for temporary tables. For maria we also only
>> added encryption support for BLOCK format
>> but added all the features to this format so that it was usable for all
>> temp-table scenarios. maria also doesn't have
>> key-rotation feature like innodb has.
>>
>> I couldn't (as) easily extract diffstats for binlog and tempfile
>> encryption.
>> You have to wait for the code to get published...
>>
>>
>> On Tue, Jun 17, 2014 at 7:29 AM, Elmar Eperiesi-Beck <
>> elmar@xxxxxxxxxxxxxxxx> wrote:
>>
>>> Hi,
>>> by "interfaces" I was looking for the Maria DB place/ function / hook...
>>> where you are enhancing the MariaDB Code.
>>> This would help me to understand what you are trying to do.
>>>
>>> Elmar
>>>
>>> Am 17.06.2014 um 07:02 schrieb Jonas Oreland <jonaso@xxxxxxxxxx>:
>>>
>>> Hi again,
>>>
>>> > What is the type of license of your code?
>>>
>>> I asked internally about license, and it seems like we releasing dual
>>> gpl2/apache licensed code.
>>>
>>> > I would like to know, which interfaces from maria-DB you are using.
>>>
>>> I don't 100% understand the question.
>>> We didn't write any actual encryption code, but used the one provided in
>>> openssl.
>>> Other than that, we didn't really "use interfaces", but rather
>>> added/modified functionality/interfaces here and there.
>>>
>>> Can you be more specific ?
>>>
>>> /Jonas
>>>
>>>
>>>
>>> On Sat, Jun 7, 2014 at 11:20 PM, Elmar Eperiesi-Beck <
>>> elmar@xxxxxxxxxxxxxxxx> wrote:
>>>
>>>> Hi!
>>>> We (eperi) would be glad to do a joined work with Google.
>>>> Our solution works with MS-SQL, Oracle and other DBs and we are
>>>> currently porting it to MariaDB - and - as Monty said - its never to late
>>>> to put some sources together and make the best for the open source
>>>> community.
>>>>
>>>> What is the type of license of your code?
>>>>
>>>> Jonas, I am looking forward to connect to you directly.
>>>>
>>>> Regards
>>>> Elmar
>>>>
>>>> Hi!
>>>>
>>>> > Hi Jonas,
>>>> > (same Jonas we know from NDBCLUSTER? :-) Good to see you again)
>>>> >
>>>> > On 6 Jun 2014, at 02:31, Jonas Oreland <jonaso@xxxxxxxxxx> wrote:
>>>> >
>>>> >> Hi there,
>>>> >> I read this blog post
>>>> >>
>>>> http://monty-says.blogspot.com/2014/05/for-your-eyes-only-or-adding-better.html
>>>> >> and wanted to inform you that we at Google has developed
>>>> on-disk/block-level encryption for Innodb, aria (as used by temporary
>>>> tables), binlogs and temp-files.
>>>> >> The code is not yet published, but we expect it to be within a few
>>>> weeks or so.
>>>> >> We (of course?) think that it would be better if you instead of
>>>> developing new code
>>>> >> spent the time testing/reviewing ours.
>>>>
>>>> We are out course happy to do this!
>>>>
>>>> >> I'm happy to answer questions on the topic,
>>>> >> and will let you know once we've published it.
>>>>
>>>> The main question I have about the Innodb encryption is if it based on
>>>> the compression code we did for fusion-io?
>>>> The idea we had on our side was that by using the new compression hooks
>>>> we could add encryption with very little changes to the Innodb code.
>>>> Looking forward to when you are ready to publish the code so we can
>>>> discuss your changes in detail.
>>>>
>>>> > This is great news!
>>>> >
>>>> > From what I gather, from Monty's blog post (and a 1:1 we had some
>>>> time back), this is something done by a partner/external company that has a
>>>> mostly OSS solution, that we should integrate into 10.1
>>>>
>>>> Yes,  that's correct. It I would have known that Google was working on
>>>> encryption I would have included them in my discussions with eperi.
>>>> Fortunately it's not yet too late to do this.
>>>> I am sure eperi would like to work on the Google code as a base!
>>>>
>>>> > That said, Google's release of something that works for InnoDB, Aria,
>>>> binlogs, temp files (and presumably not too hard to add for MyISAM) is
>>>> something we should definitely review and target for 10.1
>>>>
>>>> Yes!
>>>>
>>>> Regards,
>>>> Monty
>>>>
>>>>
>>>>
>>>
>>
>>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~maria-developers
> Post to     : maria-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~maria-developers
> More help   : https://help.launchpad.net/ListHelp
>
>


-- 
Roberto Spadim
SPAEmpresarial
Eng. Automação e Controle

References