At 9:02 AM -0400 9/23/99, Steven M. Bellovin wrote:
>In message <v04210102b40f68d103d7@[63.193.122.223]>, Martin Minow writes:
>
> >
> > Yeah, but 370 Assembler H had a very extensive macro facility and
> > you could hide all kinds of wierd stuff in 370 code. Not too many
> > folk left around who can read it.

If I remember right you could turn off macros, but even if you could 
not, it is easy to filter your assembler source to ensure there are 
no macro definitions.  And here are plenty of people who are still 
using 370 code. I believe the entire US enroute air traffic control 
system is written in BAL.

>
>And those of us who once could no longer remember how to -- for me, it's at
>least 20 years (more like 25, actually) since I touched the stuff...
> >
> > I have a copy of Decus C (Open Source PDP-11 C) lying around and
> > wrote enough of its compiler and code generator to know what it can
> > and cannot do, in case anyone is interested. The entire source code
> > of the C compiler is small enough to sight-verify in about a man-month.
> > A "Small C" compiler (see early issues of Dr. Dobbs) can be implemented
> > in about 3 man months and ought to be good enough for crypto work.

Martin, you should Zip or tar those files and sign the archive 
immediately. Then publish the signature here.

>
>That isn't the real problem -- most crypto routines per se are small enough
>that one could verify the machine code without too much effort.  The problem
>is the environment they're embedded in.  By that I mean not just the
>crypto-using application, but the entire operating system.  By example, I
>could verify the machine code for IDEA, but not PGP and certainly not your
>favorite version of UNIX.
>
>               --Steve Bellovin

The point of having a verified small C Compiler is not to compile 
crypto code, it is to compile GNU C++ or an intermediate-sized 
open-source compiler that can then compile GNU C++.  The goal should 
be to produce a signed golden object version of GNU C++ whose 
provenance, in terms of the object code that was used in compiling 
it, is reproducibly traceable to either an ancient compiler or a 
small compiler that any computer science class can build from scratch 
as a term project -- preferably both.

Our moderator, whose hard work in keeping this list excellent I 
really appreciate, but with whom I must disagree here, interjected:

>[And then how do you trust your assembler? Or the compiler and
>assembler you compiled the C compiler on? And the linker? If you
>really try hard enough on all this, you find your self smack dab in
>front of Kurt Goedel's door, and he tends to have unpleasant news for
>visitors who come to him looking for solace.
>          --Perry]

Perry, if you really believe that the question of whether a given 
lump of object code contains a Thompson Trap is formally undecidable 
I'd be interested in seeing a proof. Otherwise Herr Goedel has 
nothing to do with this. Your argument reminds me of claims I always 
hear that nothing can be measured because of the Heisenberg 
Uncertainty principle. I don't dispute that building trusted systems 
is hard and time consuming or that Thompson's paper adds another 
dimension to the difficulty, but his work does not prove it is 
impossible.

On the other hand, you did mention me in the same breath as David 
Hilbert, so perhaps I shouldn't complain.

Arnold Reinhold

Reply via email to