linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Artem Bityutskiy <dedekind1@gmail.com>
To: Joel Reardon <joel@clambassador.com>
Cc: linux-mtd@lists.infradead.org, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [patch] Add design document for UBIFS secure deletion
Date: Mon, 26 Mar 2012 18:03:21 +0300	[thread overview]
Message-ID: <1332774201.22278.47.camel@sauron.fi.intel.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1203231705500.22944@eristoteles.iwoars.net>

[-- Attachment #1: Type: text/plain, Size: 3419 bytes --]

On Fri, 2012-03-23 at 17:38 +0100, Joel Reardon wrote:
> I'll answer some quickly here now while they're fresh in mind and add them
> to the doc later.
> 
> >
> > > In particular, it does not behave like a
> > > +log-structured file system: when a KSA LEB is updated, its contents are
> > > +written to a new physical location on the flash memory, UBI's logical map is
> > > +then updated to this new physical address and the previous version of the KSA
> > > +LEB is then erased.
> >
> > Am I right that you basically wanted to say that when you update a KSA
> > LEB, you make sure that the physical flash does not contain the old
> > contents of this LEB? Would be nice to re-phrase.
> >
> > Side question - how do you do this?
> 
> Here I'm just spelling out atomic update, so nothing fancy except
> leb_change() to replace the keys.

This will write the new data to a different PEB, and schedule the old
PEB for erasure in background. If the UBI thread is alive, it will
schedule the erasure soon. But if it is stopped or dead, the erasure may
happen only when there is a need in an empty PEB.

To make sure the old contents are really erased, you'd have to call
'ubi_sync()'. But the problem with this is that it will force erasure of
_all_ the scheduled PEBs, so it may block for long time, especially on
NOR.

For the security things you'd probably need to extend 'ubi_leb_change()'
and add a 'sync' parameter which would make sure the previous PEB is
synchronously erased before 'ubi_leb_change()' returns. I think it is
very easy to do.

> Protected as in the kernel stops joe user from reading raw from /dev/mtd,
> no?

No, I think both UBI volumes and MTD devices are world-readable.


> > Hmm, why is it necessary to re-initialize unused keys?
> >
> 
> This can be a mount option actually, it was a response to  attack that was
> proposed to me about the design. The idea here is that, suppose the
> attacker reads the drive at time X with sufficient privilages to read the
> keys. Then the attacker will know for certain that those keys will
> eventually be used to encrypt data. So they can compromise not only the
> current data, but also future data. By replacing unused keys, the attacker
> is limited only to compromizing current data.

Would be nice to put this to the doc, and I do not think we need a mount
option for this.

> Ah, yes! Any other tool?

No, just this one.

> > Hmm, interesting how you manage checkpoints. I guess the easiest would
> > be to have a special inode (not visible for users) and store checkpoints
> > there?
> >
> 
> The first block of the KSA stores only checkpoints, so KSA size is 1 +
> minrequired + some slack. So this may need the multiple LEB
> approach for one of the other UBIFS areas when its size is too big, but I
> havn't done that since its generally so highly compressable that it
> wasn't ever a concern.

But I guess the larger is the volume the larger the checkpoint is? Also,
would you please rename it to something else because checkpoint is a
very common word with more or less commonly understood meaning, and
using it for something else in context of file-systems is asking for
troubles. Even if you call it 'backpack' (random word from my head) -
I'll be happier :-) But something more sensible is more appreciated of
course :-)

-- 
Best Regards,
Artem Bityutskiy

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2012-03-26 15:03 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-09 15:24 [patch] Adding Secure Deletion to UBIFS Joel Reardon
2012-02-13 16:54 ` Artem Bityutskiy
2012-02-23 14:59   ` Joel Reardon
2012-02-23 15:29     ` [patch] Add encryption key parameter to compress/decompress functions Joel Reardon
2012-03-09  7:17       ` Artem Bityutskiy
2012-03-19 16:54         ` [patch] Add design document for UBIFS secure deletion Joel Reardon
2012-03-20 20:10           ` Randy Dunlap
2012-03-21 13:26             ` Joel Reardon
2012-03-21 16:20               ` Artem Bityutskiy
2012-03-21 16:10           ` Artem Bityutskiy
2012-03-23 13:50             ` Joel Reardon
2012-03-23 15:38               ` Artem Bityutskiy
2012-03-23 16:38                 ` Joel Reardon
2012-03-26 15:03                   ` Artem Bityutskiy [this message]
2012-02-29 17:09     ` [patch] Adding Secure Deletion to UBIFS Artem Bityutskiy
2012-03-15 14:48     ` [patch] Remove notion of key schemes Joel Reardon
2012-03-16 12:43       ` Artem Bityutskiy
2012-03-16 12:51       ` Artem Bityutskiy
2012-03-16 13:34         ` Joel Reardon
2012-03-16 13:41           ` Artem Bityutskiy
2012-03-16 15:02             ` Joel Reardon
2012-03-19 14:56               ` Artem Bityutskiy
2012-02-20 20:15 ` [patch] Move CRC computation to separate function Joel Reardon
2012-02-29 16:10   ` Artem Bityutskiy
2012-03-19 22:46     ` Joel Reardon
2012-03-23 14:09       ` Artem Bityutskiy
2012-03-23 16:45         ` Joel Reardon
2012-03-23 16:51           ` Artem Bityutskiy
2012-03-25 20:38             ` Joel Reardon
2012-03-26 15:34               ` Artem Bityutskiy
2012-03-25 21:11             ` [patch] Add a encryption key parameter to the compress / decompress function Joel Reardon
2012-03-25 21:38               ` [patch] Add cryptographic functionality when a key is passed to the compress / decompress functions Joel Reardon
2012-03-27  8:33                 ` Artem Bityutskiy
2012-03-29 14:39                   ` [patch] UBIFS: " Joel Reardon
2012-04-02 14:36                     ` Artem Bityutskiy
2012-04-02 14:48                       ` Joel Reardon
2012-04-02 14:57                         ` Artem Bityutskiy
2012-04-02 14:58                           ` Joel Reardon
2012-04-03 10:29                           ` Joel Reardon
2012-04-03 10:41                             ` Guillaume LECERF
2012-04-03 11:35                               ` Joel Reardon
2012-03-27  8:27               ` [patch] Add a encryption key parameter to the compress / decompress function Artem Bityutskiy
2012-03-29 14:11                 ` [patch] UBIFS: " Joel Reardon
2012-04-02 14:02                   ` Artem Bityutskiy
2012-02-29 17:25 ` [patch] Adding Secure Deletion to UBIFS Artem Bityutskiy
2012-03-01 13:41   ` Joel Reardon
2012-03-09  7:36     ` Artem Bityutskiy
2012-03-09 19:29       ` Joel Reardon
2012-03-12 13:30         ` Artem Bityutskiy
2012-03-12 13:34           ` Joel Reardon
2012-03-12 13:36           ` Artem Bityutskiy
2012-03-12 13:37             ` Joel Reardon
2012-03-14 10:20             ` Joel Reardon
2012-03-14 10:27               ` Artem Bityutskiy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1332774201.22278.47.camel@sauron.fi.intel.com \
    --to=dedekind1@gmail.com \
    --cc=joel@clambassador.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).