[Cryptography] RNG design principles
leichter at lrw.com
Tue Nov 29 05:33:07 EST 2016
>> Hmm. Sounds kind of like a pipe, or a socket. The semantics is mainly already there, just not specifically as a file system.
> The context in which I brought up this question was the idea
> of storing secret information in the file system, in a new
> way that ensures this information can be read once...
Yes, of course. But the point I was making is that the user side of the semantics is pretty much already there. You don't need a file with special properties. You need something like a pipe that gets filled with information obtained from some form of persistent storage not otherwise accessible at all.
Put another way: Imagine there's a named pipe at a known location accessible during the early boot sequence. The named pipe *acts as if* it was created by a process that wrote a single initial value to it, then waited for a single return value to be written back, closed the pipe, and exited. That process would get the initial value from some private-and-accessible-only-to-itself persistent memory, and write the new value back to the same place.
That pipe would have the right semantics. The conjectural process couldn't be implemented as a normal Unix process because (a) it would have to run too early; (b) the only persistent storage available to a Unix process is the file system; (c) there's no way to have a file accessible to exactly one process. So you'd have to find a different way to hack that into boot. But that seems easier than adding a whole new kind of file object to file systems, just to implement this one special file.
BTW, the Mac OS System Integrity Protection - which makes certain parts of the file system accessible only for reading, even to root, except to specifically entitled programs - would, with a minor extension (the ability to make some files inaccessible even for read) get you close to being able to implement what you want using an actual boot-time-started process. (If I remember right, various access mechanisms in VMS would have made similar restrictions trivial to implement 20+ years ago.)
More information about the cryptography