[OLPC-devel] Secure BIOS on the OLPC
Krishna Sankar (ksankar)
ksankar at cisco.com
Sun Aug 27 17:42:18 EDT 2006
One more thought - AM not sure we should leave the update bios to the kids. Possibly under the supervision of an adult, teacher et al would be a good idea. One way or other, the little ones need to learn good security practices, that is appropriate to their level.
Another question - do we have incremental download of some sort, especially as the device is inherently intermittently connected.
Cheers
<k/>
> -----Original Message-----
> From: devel-bounces at laptop.org
> [mailto:devel-bounces at laptop.org] On Behalf Of Ivan Krstic
> Sent: Sunday, August 27, 2006 2:11 PM
> To: devel at laptop.org
> Cc: Mark J. Foster
> Subject: [OLPC-devel] Secure BIOS on the OLPC
>
> [This is important, and your comments are requested -- please read.]
>
> While working on the OLPC security policy and threat model, I
> spent some time thinking about how we're going to perform
> BIOS updates.
>
> In the unprotected scenario, the kernel is able to write a
> new BIOS directly to the SPI flash. Our threat model assumes
> that the kernel could be completely compromised, which is why
> we need hardware-level
> protection: otherwise, a worm could go and brick the BIOS of
> every Internet and mesh-reachable OLPC laptop before we blinked.
>
> The solution that's been devised and worked on (before I got
> involved) is to hand control of the SPI #WE line to the EC,
> which would require that a combination of keys is physically
> pressed before allowing a SPI flash write. This would mean
> that worms are no longer a viable attack
> vector: all SPI flashing requires physical user interaction.
>
> I argue that this solution is deeply flawed for three reasons:
>
> * while it stops a worm-type attack, it does nothing against
> phishing, where the kids will be convinced to hold the
> buttons down while a malicious BIOS gets flashed
>
> * it allows any BIOS to be flashed, so long as the keys are
> pressed, when in reality there's no direct need to support
> non-OLPC BIOSes
>
> * it requires the kids' cooperation for legitimate upgrades,
> which means the kids suddenly need to distinguish between
> legitimate and illegitimate upgrades, or fall prey to phishing
>
> After spending about 18 hours looking at various secure BIOS
> solutions, involving anything from TPM hardware to
> complicated secure BIOS payloads, I thought the above
> solution, while flawed, is the best we can do.
>
> At some unpleasant hour of the morning last night, I had a
> flash of inspiration, and I think I've solved this in a much
> better way. Here's how:
>
> 1. The EC code is tweaked to remove the keys-pressed requirement.
> Instead, the EC boots with the SPI #WE enabled, but can
> receive a special instruction that permanently disables the
> line until the EC is rebooted (without the ability to
> re-enable it until then).
>
> 2. When a new BIOS is to be flashed, it is written by the
> system upgrade facility (or a worm or an attacker) to a
> pre-determined location on the NAND, say /boot/new-bios.
>
> 3. The LB payload we ship is changed: when mounting the NAND
> to kexec the regular kernel, LB first checks for the
> existence of the /boot/new-bios file.
>
> If the file is present, the LB payload verifies that the
> binary is cryptographically signed by OLPC. This is all done
> within the known-good LB payload.
>
> If the signature verification fails, LB deletes
> /boot/new-bios and continues. If verification succeeds, LB
> flashes the file into the SPI flash (remember, the EC started
> with #WE enabled).
>
> 4. Fully regardless of the previous-step, LB always signals
> the EC to disable the SPI #WE before kexecing the regular kernel.
>
> Voila. This is now a completely secure BIOS solution which
> requires no TPM, allows fully automatic upgrades without the
> user's cooperation (such as pressing keys), and fully
> protects both against phishing and automated attacks -- in
> fact, it's vector-independent. The design also allows
> provisions to be made for kids that are brave enough to want
> to hack their BIOSes, as well as for countries which want to
> offer additional non-OLPC BIOSes.
>
> If you see any problems with this solution, please point them
> out right away, since I'd like to ask Mark and Ray to
> implement the necessary EC changes as soon as possible.
>
> Cheers,
>
> --
> Ivan Krstić <krstic at solarsail.hcs.harvard.edu> | GPG:
> 0x147C722D _______________________________________________
> Devel mailing list
> Devel at laptop.org
> http://mailman.laptop.org/mailman/listinfo/devel
>
More information about the Devel
mailing list