Johannes Schauer Marin Rodrigues <jo...@debian.org> writes:

> Hi,
>
> Quoting Simon Josefsson (2025-03-08 13:43:26)
>> My point was that there is no reasonable way to gain confidence about
>> security properties of any piece of non-free microcode.  Everyone can now
>> produce AMD microcode that corrupts your machine in advanced ways that evade
>> detection, but we don't know if such malicious corruption is included in the
>> official microcode.  Having source code for the microcode would help gain
>> confidence in it, and is the reasonable request.  If the request is denied, I
>> would consider the vendor not trustworthy and look into options.
>
> I do not understand something about this argument.
>
> If you don't trust the vendor, then it makes no difference whether or not new
> official firmware/microcode can be uploaded/flashed or not. If you don't trust
> the vendor, then the initial microcode that came with your device might 
> already
> be doing things that go against your interests.
>
> Of course we cannot have much confidence in a piece of microcode of which we 
> do
> not have the source code. But we also cannot have much confidence in a piece 
> of
> hardware with non-flashable firmware of which we don't have the vhdl/verilog
> sources. So what is the difference?

These are good questions and I believe that if you can see that there is
a difference between the two positions, it is easier to appreciate the
need for fully free operating systems, and that not offering fully free
Debian installer images (even as an option) is problematic.

Many years ago I also reacted the same way you and many others do --
"there is no difference between the act of loading non-free firmware
into my hardware and then using it compared to the act of using my
hardware that contains non-free software in it".

However I have come to realize that, yes, there is a significant and
fundamental difference between these two cases.

I'm not good at explaining this difference, and I believe the reason so
many still believe there is no differeence between these positions
suggests that we need better ways to articulate the difference.  I'm
sure most people here are familiar with RMS' argument on this:

https://www.gnu.org/distros/free-system-distribution-guidelines.html

The way that I came to understand and appreciate the difference between
the act of loading non-free firmware into hardware, and the act of using
non-free firmware in hardware, is to first acknowledge that hardware is
different from software.  Software people often think that their ideals
on how to design things should apply equally to hardware.  Hardware
people often think the reverse.  I've seen these patterns collide many
times, notably when I was involved with Yubico.  The escape mechanism is
to acknowledge that there has to be different ideals.  You don't have to
design hardware the way you design software, and vice versa.  If you are
stuck applying the same ideals for both concepts, it is harder to work
out what is right for software and what is right for hardware
separately.  And harder for experts to work efficiently within their own
area.

So what are good ideals for software?  There are many patterns to
subscribe to, but I believe https://www.gnu.org/philosophy/free-sw.html
and https://www.gnu.org/distros/free-system-distribution-guidelines.html
are worthy to aspire to.  Non-free firmware doesn't belong here.

I'm not a hardware person, so I'm less confident what good designs for
hardware should be, and it seems there is less consensus what the
desirable properties really are.  One fundamental property that I would
like is that I want to be able to examine and modify all steps that
ultimately lead to production of the hardware.  I'm sure there are more
properties that are desirable.  It is easy to see that this is a
required but not sufficient condition: otherwise you can end up
producing a closed device ecosystem like an iPhone.

> If I don't trust vendor X, then I cannot buy hardware from them independent of
> whether or not the vendor allows me to flash proprietary binary blobs from
> them. If I do trust vendor X, then why would I not trust their proprietary
> binary blobs?

One difference is that you could chose to trust their hardware (CPUs)
but don't trust their software (non-free firmware).

Consumer level protection in society is generally different when I buy a
hardware product compared to if I'm granted a license to use some
software.  If I buy a bike or helmet it has to meet certain criteria for
it to be allowed to be sold (at least where I live) but different laws
apply if I use a piece of software under some legal terms of services.

Just because I place trust in entity X for the purpose of A doesn't mean
that I necessarily must trust entity X for the purpose of B.  That is
the slippery slope that vendors want you to walk into so they can
excercise more control.

> I do not think you will find many on this list who will disagree with the
> sentiment that it would be great if we had sources, schematics etc for many
> more things. On the other hand, I don't think you can currently buy a device
> that is capable to run, for example, a modern web browser and is fully open.
> This is why I voted in the last GR as I did. I'm typing this on an MNT Reform
> which is probably among the most open computers you can buy today but the 
> chips
> in it are *not* open silicon. Yes, it would be great if they were and it would
> be great if the firmware blobs I need would not be proprietary. But I already
> chose to trust the manufacturers of the chips in my laptop or otherwise I 
> would
> not be typing these lines. Why would I trust the silicone from vendor X and
> distrust the firmware/microcode from vendor X? Having non-free-firmware 
> enabled
> by default in the Debian installer just continues pursuing a trust 
> relationship
> you already decided on entering when you bought the hardware, no?

Right, I see that if you don't appreciate the difference between these
two cases, it is reasonable and logical to regard non-free firmware as
unproblematic.

/Simon

Attachment: signature.asc
Description: PGP signature

Reply via email to