Re: Os and implementing good gpu drivers(nvidia)
Posted: Tue Nov 03, 2015 5:12 pm
Hi,
All I'm suggesting that an "ahead of time compiler" alone is grossly inadequate for security purposes (regardless of whether that "ahead of time compiler" is an assembler, a C compiler, a Rust compiler, or a compiler for a far more restrictive language); because regardless of how restrictive the language is nothing protects the OS from bugs in that "ahead of time compiler".
Of course you're right in that bugs are a common problem for all software; which is why (especially for monolithic kernels) you also want hardware protection to protect from bugs in the kernel; and why some people prefer micro-kernels, and why some people run OSs in virtual machines (to add an extra layer of protection), and why IOMMUs can be used for more than just virtualisation, and why Intel added MPX (which is used by Linux as additional hardware protection against kernel bugs), and why Intel added SGX to protect some applications (those that need a high level of security) from everything else in the OS.
Relying on a compiler and nothing else for security (and ignoring all the security/protection features the CPU provides) is as idiotic as relying on the hardware's security alone (and having a compiler that never checks for or detects any errors). You want multiple layers; not "all eggs in same basket".
Of course even with multiple layers of security (e.g. an "ahead of time" compiler checking for errors when converting source into byte code, a virtual machine checking for errors at run-time, and the OS using the CPU's protection features) you end up with frequent critical vulnerabilities in Java; despite the fact that it's a mature product that's been constantly improved over 2 entire decades.
Cheers,
Brendan
As soon as you do that you end up with run-time overhead and run-time failures. Yes, it's possible, but it's also crappy and (the "extra run-time overhead" part) is something Rusky was trying to say wasn't necessary.embryo2 wrote:Wrong. It can inject safety checks (as you already know, but refuse to consider this option).Brendan wrote:That brings me to unsolvable problems. What does the compiler do if it can't possibly determine if a piece of code is safe or not?
The only thing it can do is "false negatives".
You're the one that keeps bringing up "managed". I'm the one who forgot about "managed" days ago (after showing that AlexHully's plans are not "managed" at all).embryo2 wrote:It is common problem for all software, would it be managed or not. So, let's forget about this common thing while talking about managed vs unmanaged.Brendan wrote:Your entire OS's security will depend on this compiler. Your entire OS's security will depend on something that's expected to have between 80000 and 400000 errors.
All I'm suggesting that an "ahead of time compiler" alone is grossly inadequate for security purposes (regardless of whether that "ahead of time compiler" is an assembler, a C compiler, a Rust compiler, or a compiler for a far more restrictive language); because regardless of how restrictive the language is nothing protects the OS from bugs in that "ahead of time compiler".
Of course you're right in that bugs are a common problem for all software; which is why (especially for monolithic kernels) you also want hardware protection to protect from bugs in the kernel; and why some people prefer micro-kernels, and why some people run OSs in virtual machines (to add an extra layer of protection), and why IOMMUs can be used for more than just virtualisation, and why Intel added MPX (which is used by Linux as additional hardware protection against kernel bugs), and why Intel added SGX to protect some applications (those that need a high level of security) from everything else in the OS.
Relying on a compiler and nothing else for security (and ignoring all the security/protection features the CPU provides) is as idiotic as relying on the hardware's security alone (and having a compiler that never checks for or detects any errors). You want multiple layers; not "all eggs in same basket".
Of course even with multiple layers of security (e.g. an "ahead of time" compiler checking for errors when converting source into byte code, a virtual machine checking for errors at run-time, and the OS using the CPU's protection features) you end up with frequent critical vulnerabilities in Java; despite the fact that it's a mature product that's been constantly improved over 2 entire decades.
Cheers,
Brendan