All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olivier Sessink <oliviersessink@gmail.com>
To: dm-crypt@saout.de
Subject: Re: [dm-crypt] encrypted root: prevent / detect tampering with	kernel / initrd
Date: Tue, 29 Dec 2009 23:52:37 +0100	[thread overview]
Message-ID: <4B3A8835.1000603@gmail.com> (raw)
In-Reply-To: <20091229201848.GA17029@tansi.org>

Arno Wagner wrote:
> On Mon, Dec 28, 2009 at 09:28:43PM +0100, Olivier Sessink wrote:
>> Hi all,
>>
>> I was wondering if there are some 'common' ways to prevent tampering  
>> with the unencrypted kernel and initrd in the case of an encrypted root  
>> filesystem? 
> 
> No. Any "common" way would automatically become ineffective. Your 
> only chance is to do something unexpected and hence uncommon.

true.

>> If somebody has access to your computer they could change  
>> the initrd and kernel and make your encryption useless (e.g. store the  
>> password in /boot, or send it over the network, etc. etc.). It shouldn't  
>> be too hard to make this at least very difficult.
> 
> It is theoretically impossible and practically very hard.

That sentence was incorrect, read "make this at least very difficult to 
do undetected". I know there is no way to stop the password getting 
stolen, but it should be pretty hard to do this undetected.

>> I was thinking along the lines of:
>> - check a checksum of the MBR and partition table
> => Fake the check

that is practically very hard. As attacker you only have access to to 
the unencrypted /boot the first time. So even if you know there will be 
an MBR check, you have to change the kernel to provide the original MBR 
data when the first sectors of the harddisk is requested by some binary. 
For the MBR this might be feasible, but for the complete /boot device 
this might become more problematic. The attacker cannot change the 
binary that does the check because the attacker doesn't know which one 
it is, and he doesn't know what it looks like (it's in the encrypted 
image). Too hard for a script kiddie. Or am I overlooking something obvious?

[..]
> With an attacker competent enough to do this type of tampering

google and follow the recipe how to change the initrd?

> you are screwed as long as you rely on the on-disk information.

with a determined attacker (does not need to be a hacker) you are 
screwed anyway (tempest attacks, physical keyloggers, camera's, drugs, 
blackmail etc.). Encryption doesn't matter if they want your data.

> But here is something easy: Use an external boot medium for 
> verification, e.g. a memory-stick installed Knoppix with some
> custom check script you call manually or automatically. Keep 
> the external checker system separate from the laptop. With
> that the ideas you outlined above would work. You can, e.g.,
> compary MBR and files in /boot to checksums or good copies.
> I currently have an 8GB SuperTalent Stick with the Knoppix
> DVD installed on it in my vallet. Adding packages and your own
> data/programs is possible as it has a writable filesystem 
> (writes get ovelayed on top of the read-only DVD image).

I am aware of this concept, but it just moves the problem to the usb 
image (somebody sneaks into your hotel room at night ....). And again if 
somebody did change the usb image there is no way you are going to find 
out, even if they did something that could have been detected very 
easily such as a changed initrd. I don't expect our "regular users" to 
carry a very good safe with them day and night (and a safe can be picked 
as well).

Olivier

  reply	other threads:[~2009-12-29 22:52 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-28 20:28 [dm-crypt] encrypted root: prevent / detect tampering with kernel / initrd Olivier Sessink
2009-12-28 21:20 ` Luca Berra
2009-12-28 21:41   ` Olivier Sessink
2009-12-28 23:11     ` Heinz Diehl
2009-12-29 10:05       ` Olivier Sessink
2009-12-29 10:23       ` [lesh] Ivan Nikolic
2009-12-29 12:25       ` Olivier Sessink
2009-12-29 12:37         ` Milan Broz
2009-12-29 20:24       ` Arno Wagner
2009-12-29 21:15         ` Heinz Diehl
2009-12-29 23:02           ` Olivier Sessink
2009-12-30  2:52           ` Arno Wagner
2009-12-30 14:16             ` Heinz Diehl
2009-12-30 15:34               ` Arno Wagner
2009-12-29 21:31         ` Hannes Erven
2009-12-29 21:41           ` Gregy
2009-12-30  2:53           ` Arno Wagner
2009-12-28 22:41 ` Zdenek Kaspar
2009-12-28 22:51   ` Zdenek Kaspar
2009-12-28 22:57 ` Heinz Diehl
2009-12-29 20:18 ` Arno Wagner
2009-12-29 22:52   ` Olivier Sessink [this message]
2009-12-30  2:56     ` Arno Wagner
2009-12-30 10:48       ` Olivier Sessink
2009-12-30 15:28         ` Arno Wagner

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=4B3A8835.1000603@gmail.com \
    --to=oliviersessink@gmail.com \
    --cc=dm-crypt@saout.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.