For the last couple days, I've been implementing a cryptographic
cipher framework for Perl 6.  (It's in the Pugs repository if you want
to see it.)  Dealing with this sort of algorithm has brought forward a
feature that I think Perl 6 and Parrot ought to support.

Basically, I'd like to be able to mark a variable as "sensitive" or
"secret".  This implies that the language should overwrite the memory
it uses before deallocating it, and that if possible it should tell
the virtual memory system to avoid swapping it out.  Moreover, it
should probably do so recursively, and to any value that has ever been
stored in the variable.  (In essence, the *variable* marks all
*values* it ever contains as sensitive.)

This feature could make Perl 6 a better language for security work
than any other I've seen.  C and C++ could do this, but only with the
programmer's assistance (by calling a "wipe" function or making sure a
destructor is correctly called), and optimizers have been known to
"helpfully" remove such code.  Many higher-level languages, including
Perl 5, make it hard to know when a piece of data is being
overwritten, rather than a pointer being changed.

--
Brent 'Dax' Royal-Gordon <[EMAIL PROTECTED]>
Perl and Parrot hacker

Reply via email to