tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: amd64: kernel aslr support
On Oct 5, 8:30pm, Thor Lancelot Simon wrote:
}
} > * The RNG is not really strong. Help in this area would be greatly
} > appreciated.
}
} This is tricky mostly because once you start probing for hardware
} devices or even CPU features, you're going to find yourself wanting
} more and more of the support you'd get from the "real kernel".
}
} For example, to probe for RDRAND support on the CPU, you need a
} whole pile of CPU feature decoding. To probe for environmental
} sensors or an audio device you may need to know a whole pile about
} ACPI and/or PCI. And so forth.
}
} EFI has a RNG API, but I think it's usually just stubbed out and
} besides, you can't rely on having EFI...
It does, but it isn't listed as a runtime service, so likely
isn't available after ExitBootServices() is called, which would be
called by efiboot.
} I think I'd suggest some combination of:
}
} * Just enough CPU-feature support to find/use RDRAND
} (Intel's sample code is not that big and I think it's
} suitably-licensed)
}
} * Hash the contents of the "CMOS RAM" and/or EFI boot variables
We currently have no support, of which I'm aware, for accessing
EFI bot variables.
} * Maybe poke around for an IPMI BMC (has environmental sensors),
} or a TPM (has a RNG) on the LPC bus
}
} * Maybe poke around for on-die temperature/voltage sensors
} (will again require some CPU identification support).
}
} * Rather than just using rdtsc once, consider using rdtsc to
} "time" multiple hardware oscillators against one another;
} at the very least, you've always got the hardware clock.
}
} * Also, you can use rdtsc to time memory accesses.
}
} For quick and dirty "entropy extraction", you can crunch as much of this
} data as you're able to connect together using SHA512.
}
} I know, little or none of this is easy.
}
} Thor
}-- End of excerpt from Thor Lancelot Simon
Home |
Main Index |
Thread Index |
Old Index