From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Theodore Ts'o <tytso@mit.edu>
Cc: Andreas Dilger <adilger@dilger.ca>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
lsf-pc@lists.linux-foundation.org
Subject: Re: [Lsf-pc] [LSF/MM TOPIC] fs-verity: file system-level integrity protection
Date: Sun, 28 Jan 2018 10:03:10 -0800 [thread overview]
Message-ID: <1517162590.3082.55.camel@HansenPartnership.com> (raw)
In-Reply-To: <20180128024604.GA12320@thunk.org>
On Sat, 2018-01-27 at 21:46 -0500, Theodore Ts'o wrote:
> On Sat, Jan 27, 2018 at 08:19:19AM -0800, James Bottomley wrote:
> >
> > I certainly buy this approach, and it fits well with the limited
> > data size there is in xattrs but Ted said in the initial proposal
> > the entire tree would be present in the file. I can't see a need
> > for supplying the entire tree rather than reconstructing it but
> > maybe there's an android use case I'm not seeing (Like not wanting
> > to waste limited CPU power).
>
> You can certainly reconstruct the Merkle tree at install time, but it
> does need to be saved on disk. My assumption was that Merkle tree
> would be written to disk by userspace, along with the fs-verity
> header, simply because it would make things much simpler for the
> kernel, and in my view you *have* to modify userspace in some way.
OK, so we agree then that what IMA provides: a hash and potential
signature over the hash is sufficient input for what you want and does
provide existing tooling to achieve it.
> > Just so I understand the mechanics: The xattr would contain the
> > head node. When this is written, the tree would be reconstructed
> > from the file and verified. If it verifies, it must be stored in
> > the filesystem data somehow (or at least the lowest layer), so all
> > subsequent uses of the file can proceed from the per page hash even
> > after unmount and remount? Then I certainly think it suits both
> > cases.
>
> Yes.... in theory we could store the bare root hash (and some other
> bare minmum information, such as the PKCS7 signature and the elments
> of a fs-verity header) in an xattr, and setting that xattr would
> magically cause the merkle tree to be reconstructed and stored on
> disk. But most of the file sytem developers have considered the use
> of setting or clearing xattrs to cause magically code paths to be
> executed to be an extremely bad idea.
Hang on, you've jumped straight from a discussion of ideas to an insane
implementation ... can we take a step back? I'm thinking of three
separate things
1. Could the signature piece of this be done in the way IMA currently
does file signatures. We all agree "yes" on this, since a signed
mekle hash head is the same size as an existing IMA signature and
therefore does fit into xattrs.
2. Could IMA use a merkle tree for hash verification a page at a time
as part of its implementation? I think the answer to this is yes,
except the hook has to be somewhere in the page fault mechanism, so
it would need some exploration and prototyping.
3. Could the merkle tree be cached somehow in the filesystem (probably
as part of the filesystem implementaiton)? You've already assumed
"yes" for this since it's how fs-verity is proposed to work.
So the issue we could discuss is how all this is tied together. The
implementation could be your special format file for 3. but with the
head hash signature in an xattr. What we get back on tar would be the
ordinary file + xattr, but perhaps tar could use this to reconstruct
the magic file on untar.
I do think the "special format magic file" is a violation of the unix
principles of files being "just files" but if it's the only way, I
suppose I could be persuaded. However, this part should also be
discussed; it does seem like, to satisfy unix principles, the merkle
tree should be provided separately from the file, possibly as a
fcntl().
James
> And since I don't really care about the use case, I can let *you*
> try to convince Cristoph and Al Viro that his is a good idea, despite
> the general agreemnt by all file system developers that we've been
> there, done that, decided it was a really bad idea, and let's never
> ever do that again. (And then you can get some of the "the IMA
> people are insane" taint on yourself. :-)
>
> - Ted
>
next prev parent reply other threads:[~2018-01-28 18:03 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-25 19:11 [LSF/MM TOPIC] fs-verity: file system-level integrity protection Theodore Ts'o
2018-01-25 21:49 ` Chuck Lever
2018-01-25 23:39 ` Theodore Ts'o
2018-01-26 0:47 ` James Bottomley
2018-01-26 2:30 ` Theodore Ts'o
2018-01-26 4:50 ` James Bottomley
2018-01-26 14:58 ` Theodore Ts'o
2018-01-26 16:44 ` [Lsf-pc] " James Bottomley
2018-01-26 21:55 ` Theodore Ts'o
2018-01-27 7:58 ` Andreas Dilger
2018-01-27 16:19 ` James Bottomley
2018-01-27 17:08 ` James Bottomley
2018-01-28 2:46 ` Theodore Ts'o
2018-01-28 17:19 ` James Bottomley
2018-01-28 18:03 ` James Bottomley [this message]
2018-01-28 18:19 ` Chuck Lever
2018-01-29 6:39 ` James Bottomley
2018-01-29 15:22 ` Chuck Lever
2018-01-30 6:47 ` James Bottomley
2018-01-28 21:49 ` Theodore Ts'o
2018-01-28 22:49 ` Theodore Ts'o
2018-01-28 23:04 ` Mimi Zohar
2018-01-29 0:38 ` Theodore Ts'o
2018-01-29 1:53 ` Mimi Zohar
2018-01-29 2:38 ` Theodore Ts'o
2018-01-29 3:39 ` Mimi Zohar
2018-01-29 4:40 ` Theodore Ts'o
2018-01-29 4:50 ` Theodore Ts'o
2018-01-29 12:09 ` Mimi Zohar
2018-01-29 13:58 ` Mimi Zohar
2018-01-29 23:02 ` Theodore Ts'o
2018-01-30 23:25 ` Mimi Zohar
2018-01-31 16:05 ` Theodore Ts'o
2018-01-31 17:12 ` James Bottomley
2018-01-31 18:46 ` Theodore Ts'o
2018-01-31 20:41 ` James Bottomley
2018-02-01 0:03 ` Theodore Ts'o
2018-02-01 23:04 ` Dave Chinner
2018-02-01 23:43 ` Andreas Dilger
2018-02-02 0:13 ` Dave Chinner
2018-02-02 5:34 ` James Bottomley
2018-02-02 2:40 ` Theodore Ts'o
2018-02-02 9:05 ` Dave Chinner
2018-01-31 20:40 ` Mimi Zohar
2018-01-31 22:00 ` Theodore Ts'o
2018-02-01 15:17 ` Mimi Zohar
2018-01-29 0:21 ` James Bottomley
2018-01-29 1:03 ` Theodore Ts'o
2018-01-29 21:21 ` Andreas Dilger
2018-01-26 18:13 ` Mimi Zohar
2018-01-29 18:54 ` Michael Halcrow
2018-01-26 7:58 ` Colin Walters
2018-01-26 15:29 ` Theodore Ts'o
2018-01-26 16:40 ` Colin Walters
2018-01-26 16:49 ` [Lsf-pc] " James Bottomley
2018-01-26 17:05 ` Colin Walters
2018-01-26 17:54 ` Mimi Zohar
2018-02-02 0:02 ` Steve French
2018-02-07 13:04 ` David Gstir
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=1517162590.3082.55.camel@HansenPartnership.com \
--to=james.bottomley@hansenpartnership.com \
--cc=adilger@dilger.ca \
--cc=linux-fsdevel@vger.kernel.org \
--cc=lsf-pc@lists.linux-foundation.org \
--cc=tytso@mit.edu \
/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).