Re: Should we automatically generate a module signing key at all?

From: Linus Torvalds
Date: Fri May 22 2015 - 17:09:20 EST


On Fri, May 22, 2015 at 1:44 PM, Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote:
>
> In the threat model where module signatures matter in the first place
> [1], this prevents reproducible builds from serving their purpose. I
> can build a kernel with a fresh signing key and throw away the private
> key. You can build a canonically identical kernel with a private key
> that you keep. A third party using mine is safe, but a third party
> using yours is unsafe, even though the whole packages canonicalize to
> exactly the same bytes.

So the thing is, I don't see why the third party couldn't just re-sign
his kernel with his own key (and throw it away).

Now he *is* safe. He can verify that the kernel and module images
match, and he has just guaranteed that no other modules can be loaded,
since module loading depends on *his* key.

So even if the silly case, I think signatures actually work fine.

And if he doesn't have access to all modules, then he wasn't safe with
the hash model anyway, because he'd have hashes in the kernel that he
couldn't validate. So by definition, he'd have to have access to
everything he needs to just re-sign things.

And yes, he would need the ability to insert his own public key in the
kernel image (he already has the ability to re-sign the modules, we
have the script for that in the kernel build tree).

I still think that kind of "strip off and re-populate" the signatures
is a better model than having two completely different validation
models. I also suspect it's less work (although I do agree that it
likely means that we should package out certs differently).

But whatever. Code talks louder than words. If you have a good model
that does *not* screw up the build, and isn't too nasty, maybe we can
add that alongside signature verification.

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/