Page 1 of 2 12 LastLast
Results 1 to 10 of 31

Thread: Systemd To Secure Logs With "Forward Secure Sealing"

Hybrid View

  1. #1
    Join Date
    Jan 2007
    Posts
    10,188

    Default Systemd To Secure Logs With "Forward Secure Sealing"

    Phoronix: Systemd To Secure Logs With "Forward Secure Sealing"

    Systemd has picked up a new feature -- Forward Secure Sealing (FSS) -- in an attempt to better secure system logs on the local file-system in the event a hacker penetrates the system the logs cannot be modified...

    http://www.phoronix.com/vr.php?view=MTE2NDk

  2. #2
    Join Date
    Dec 2011
    Posts
    1,308

    Default Git

    Git also use something similar. It hash the hashes or something.

  3. #3
    Join Date
    Aug 2010
    Posts
    37

    Default

    What is stopping the attacker from changing the logs and resealing the logs (as the key is on the local machine)?

  4. #4
    Join Date
    Jan 2009
    Location
    Italy
    Posts
    82

    Default

    Quote Originally Posted by wpoely86 View Post
    What is stopping the attacker from changing the logs and resealing the logs (as the key is on the local machine)?
    The sealing key changes with time (15m by default) and the old key is securely erased; the algorithm is designed so that given K(t) is easy to compute K(t+1) (i.e. the new key), but it's not possible to compute K(t-1) given K(t) (i.e. it's not possible to compute the "old" key given the current one). The starting point K(0) is derived from the verification key (which is not stored on the machine), and using the verification key it's possible to generate K(t) for any t.
    An attacker could tamper with the last portion of the log, the one cover with the key currently stored on the system, but cannot alter the past checkpoints (seals) since he is unable to compute the older keys (including K(0)).

  5. #5
    Join Date
    Jun 2009
    Location
    Liège (Belgium)
    Posts
    78

    Default

    With all due respect to Lennart, I don't get all this security through cryptography that's going on. I'm rather sceptic, not that I refuse to admit anything but I'm finding the current security "trend" rather scary.

    As far as logs are concerned, why go with cryptography exactly? To me logs are append-only to the very least. Why not "invent" a new filesystem (e.g. yalogfs) that would accept files to be opened only in "append" mode or be truncated? («You can kill me but you cannot alter me!») I'm thinking of it roughly but I would love to keep things as simple as can be and introducing cryptographic keys for just log files seems a little... overkill to me. (What if I lose the most important key, for instance?)

    I'm pretty sure it's still possible to achieve using common solutions, even if they need to be tuned, like in my suggestion. For instance, log files could be syslogged to a secondary machine, which archives them at once. Of course this would mean all services must support syslog but I guess it's not a big deal, right? And one might object syslog is sending in clear form, okay, but there are also VLANs (for instance) or secure tunnels to prevent wiretapping, right?

    I mean securing log files doesn't necessarily *require* encryption, does it? Especially knowing that cryptography or not, there'll *always* be (IMHO) one way at least to alter a system without the sysadmin's consent, no matter how protected it is -- he, hacker, who will is going to find a way. Call me an idiot otherwise, no problem ;-).

  6. #6
    Join Date
    Mar 2010
    Posts
    32

    Default

    Quote Originally Posted by VinzC View Post
    As far as logs are concerned, why go with cryptography exactly? To me logs are append-only to the very least. Why not "invent" a new filesystem (e.g. yalogfs) that would accept files to be opened only in "append" mode or be truncated? («You can kill me but you cannot alter me!») I'm thinking of it roughly but I would love to keep things as simple as can be and introducing cryptographic keys for just log files seems a little... overkill to me. (What if I lose the most important key, for instance?)
    Actually what you describe one of grsecuritys most basic features.
    The problem with "your solution" is that on an unprotected linux system (no selinux, grsecurity or other means to prevent full root access) the attacker might just read and write to the block device directly.
    Last edited by Flyser; 08-21-2012 at 09:25 AM.

  7. #7
    Join Date
    Dec 2011
    Posts
    1,308

    Default

    Quote Originally Posted by VinzC View Post
    «You can kill me but you cannot alter me!»
    Oh, that's pretty cool.

  8. #8
    Join Date
    Jul 2008
    Posts
    1,677

    Default

    Quote Originally Posted by tettamanti View Post
    The sealing key changes with time (15m by default) and the old key is securely erased; the algorithm is designed so that given K(t) is easy to compute K(t+1) (i.e. the new key), but it's not possible to compute K(t-1) given K(t) (i.e. it's not possible to compute the "old" key given the current one). The starting point K(0) is derived from the verification key (which is not stored on the machine), and using the verification key it's possible to generate K(t) for any t.
    An attacker could tamper with the last portion of the log, the one cover with the key currently stored on the system, but cannot alter the past checkpoints (seals) since he is unable to compute the older keys (including K(0)).
    so if the key changes every few minutes, how do keep the other key a) seperate b) without of reach and c) still up to date?

    Sounds... not very secure.

    Either way, a guy has root access you are toast.

  9. #9
    Join Date
    Jan 2009
    Location
    Italy
    Posts
    82

    Default

    Quote Originally Posted by energyman View Post
    so if the key changes every few minutes, how do keep the other key a) seperate b) without of reach and c) still up to date?
    The verification key ("other") is generated only once at system setup and is never altered.

    Quote Originally Posted by energyman View Post
    Either way, a guy has root access you are toast.
    The point is to ensure the integrity of the logs *up to* the intrusion, once the attacker has gained root privileges all the data must be considered untrusted.

  10. #10
    Join Date
    Jul 2008
    Posts
    313

    Default

    Quote Originally Posted by tettamanti View Post
    The sealing key changes with time (15m by default) and the old key is securely erased; the algorithm is designed so that given K(t) is easy to compute K(t+1) (i.e. the new key), but it's not possible to compute K(t-1) given K(t) (i.e. it's not possible to compute the "old" key given the current one). The starting point K(0) is derived from the verification key (which is not stored on the machine), and using the verification key it's possible to generate K(t) for any t.
    An attacker could tamper with the last portion of the log, the one cover with the key currently stored on the system, but cannot alter the past checkpoints (seals) since he is unable to compute the older keys (including K(0)).
    So couldn't an attacker log on, grab K(t) from wherever it's currently stored, be evil for several hours, then go back and re-write the log verbatim until the start of K(t), then (with knowledge of how to compute all keys after K(t)) rewrite an altered log from then onwards?

    It might be a bit more secure if a key change was initiated upon each login, but an attacker could still hide all activity after that, and make their login look legitimate.

    It might also be a bit more secure if the log is fully encrypted and unreadable on the local host, which would force the attacker to guess what a legitimate log could look like.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •