On Mon, 29 Mar 2021 at 15:23, Ard Biesheuvel <a...@kernel.org> wrote:

> On Fri, 26 Mar 2021 at 19:36, Heinrich Schuchardt <xypron.g...@gmx.de>
> wrote:
> >
> > On 26.03.21 15:12, François Ozog wrote:
> > > Hi
> > >
> > > Trusted Firmware M recently introduced protection against glitching at
> > > key decision points:
> > > https://github.com/mcu-tools/mcuboot/pull/776
> > >
> > > To me this is a key mitigation element for companies that target PSA
> > > level 3 compliance which means hardware attacks resilience.
> > >
> > > I believe similar techniques need to be used in different projects
> > > involved in Linux secure booting (TF-A, OP-TEE, U-Boot, Linux kernel).
> >
> > Power glitches can induce changes in data, in code, and in CPU state.
> > Signing selected variables cannot be a sufficient counter-measure.
> >
> > If you want to protect against power glitches, it seems more promising
> > to do so on the hardware side, e.g.
> >
> > * provide circuitry that resets the board if a power-glitch or an
> >   electromagnetic interference is detected
> > * use ECC RAM
> >
>
> Of course it is more promising to do this on the hardware side, nobody
> is debating that. Whether it makes sense to harden the software as
> well is completely orthogonal to that: on hardened hardware, it adds
> another layer of protection, and on hardware that cannot be hardened
> for some reason (cost, or more often, the fact that it has already
> shipped), it adds a layer of protection where no protection whatsoever
> was available beforehand.
>
> However, I do share some of your skepticism: incorporation of these
> techniques is not trivial, and commoditizing it by dropping it into
> some library that you can link your software against is *not* what I
> would prefer to see. This only encourages a check the box mentality,
> where people either assume that having the library makes everything
> magically secure, or ($DEITY forbid), it gets sucked into the MISRAs
> or FIPSes of this world, and it becomes a certification requirement,
> and using the library is mandatory, regardless of whether there is a
> point to it, or whether it is being used in the right way.
>
> So I'd be more interested in seeing how the underlying methods can be
> applied more widely, and not how it gets shrinkwrapped and shipped
> with a .h file without any need on the part of the developer to
> understand what really goes on under the hood.
>
>  I also think this is first about guidelines with a set of helpers.

For instance, lets consider:

if (checkstuff(input)==0)
{
dostuff();
}

It Can be transformed into something like (yet insufficient to be really
protected but that's gives an idea, more to be read in the TFM code and
readme.md)
/* SUCCESS is an arbitrary value != 0 as 0 is a typical value of a register
when glitched */
if (checkstuff(input, &result) == SUCCESS)
{
letwaitarandomdelay();
if (doublecheck_successful_result(input, result) == SUCCESS)
{
/* this code is not protected against PC attacks */
dostuff();
}

-- 
> Ard.
>


-- 
François-Frédéric Ozog | *Director Linaro Edge & Fog Computing Group*
T: +33.67221.6485
francois.o...@linaro.org | Skype: ffozog
_______________________________________________
boot-architecture mailing list
boot-architecture@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/boot-architecture

Reply via email to