Like the story of Genesis, there are two versions of the Reason for Argante.
The first is one people with any feel for computer security will understand.
Every month, hundreds of programs are discovered with bugs in them which
allow hackers to do what they will with your computer. But each bug is almost
exactly the same - a buffer overflow, a format string, a signed offset into
an array, a XSS bug...
Why are completely unrelated programs written by completely different
programmers all making the same mistakes?
The reason is that the environments they work in encourage bad coding,
making secure code hard to write, difficult to check, and unportable.
This is what Argante sets out to break. It constructs a virtual environment
under Unix and Windows platforms, which contains enforced restrictions
on memory access, system interactions, read-only code, and has error handling
provisions on the assembly level.
This makes many people think about Java, but the two concepts are mirror
images: Java implements security using a restrictive, object-oriented
language. Java's sandbox has been bypassed by people who bypassed the
Java language, and the speed impediments of a garbage-collected language
with too many levels of abstraction to count are significant.
The Argante model is: you can code how you like, in any language you
like. But your code can never do something you didn't predict, thanks
to ACL-controlled system interactions, memory bounds checks, and
read-only code. In addition, the functions you can use are harder
to use insecurely than not.
Our motto is "compromise is not the answer" - we haven't traded security
for speed, or achieved simplicity of our code by adding complexity to
yours. (Nor can we sacrifice future developments by preferring backward
compatibility - this is the reason A1 had to be discontinued.)
|