Coyotos, A New Security-focused OS & Language 296
wap writes "For those who haven't been following the EROS project, it has now migrated to the Coyotos project. EROS, the Extremely Reliable Operating System, was a project to create an operating system whose security relied on capabilities rather than the traditional Unix model of root or non-root. Capabilities allow a rigorous verification of the security of a system, something which is not possible in Unix-style and MS Windows systems. Coyotos is to be a real-world usable implementation of the ideas from EROS, complete with a Linux emulator layer. It also specifies a new language, called BitC which allows the programmer to prove that the code implements certain semantics, thus providing another layer of verifiable security. Could this be the most leet OS and language of 2005?" Another submittor asks how this stacks up against using Systems Management and "standard" OSes.
Need for a superuser? (Score:4, Interesting)
How is this resolved without a superuser?
Re:Need for a superuser? (Score:3, Funny)
Exhaustive password search, of course.
Re:Need for a superuser? (Score:2)
You rip the drive out and stick into another computer. If there is encryption, superuser won't solve it anyway.
Re:Need for a superuser? (Score:2)
That's not the right question (Score:5, Insightful)
Re:That's not the right question (Score:2)
Re:That's not the right question (Score:2)
Encryption systems with multiple keys can be made by encrypting the text with a secret key K, and then placing K itself at the beginning but encrypted with various keys X, Y, and Z. So if you have any of the keys X, Y, or Z, you can decrypt K and then you can decrypt the text.
Hypothetically it would not be so hard to take our key K, encrypt it with some insecure algorithm, then encrypt *that* with s
Re:That's not the right question (Score:3, Informative)
Alternately, you could use secret splitting to divide the escrowed data among M trusted parties such that K of them must cooperate to recover the data.
Re:That's not the right question (Score:3, Interesting)
Mac OS X, however does deal with this issue. (Score:2)
This is like the behavior where you typo your login password after the eighth character. You get into your account because the OS, like other BSD based
Re:A simple solution?! (Score:2)
Re:Need for a superuser? (Score:5, Interesting)
In SELinux, which I am more familiar with, and which also gets rid of the "superuser" account, everything is handled by context or role. That means you can isolate a process that wants "root" access to certain files by restricting its role to one that has access to only those files. Thus there is no "root" account that has access to everything. At the same time, it's possible to create a role that allows suitable access to make changes and/or recover lost data if necessary.
I presume Coyotos, with its "capabilities" will work similarly - ie. there is no "root" account that has access to everything, but instead various capabilities that bound access to various resources.
Jedidiah
Re:Need for a superuser? (Score:4, Interesting)
I see a bit of a chicken or an egg thing here.
There will always have to be either the concept of a superuser, or there must be a way to create an account with any rights possible, otherwise it would be a very easy system to lose data to.
So, no superuser. This means there must be some way to create an account with sufficient rights to recover lost data, which kinda undermines the security in the first place.
Hope I'm missing something
Re:Need for a superuser? (Score:3, Insightful)
In unix, "root" has all the permissions. There is no way to grant someone permission to do one extraordinary thing without giving that user permission to do a whole host of extraordinary things.
Re:Need for a superuser? (Score:2)
Re:Need for a superuser? (Score:2, Informative)
Re:Need for a superuser? (Score:3, Interesting)
Re:Need for a superuser? (Score:3, Informative)
I see a bit of a chicken or an egg thing here. There will always have to be either the concept of a superuser, or there must be a way to create an account with any rights possible, otherwise it would be a very easy system to lose data to.
Somewhere on the system, individuals or people working together must somehow be able to create users with all possible privileges, that is correct. So individually or collectively they can do anything. That is not the difference.
The difference is that just because a pr
Re:Need for a superuser? (Score:2, Interesting)
I'm thinking out loud here, but let's assume there is an account or role (lets call it Auditor) that is used to create admin accounts and can recover password/encryption keys. Ideally, this account would be separate from the admin accounts used to manage the system and be the only one with access to certain audit logs/resources/encryption keys.
This way, the Auditor account cannot manage the system or have root access to the file system, but it can recover encrypted data
Re:Need for a superuser? (Score:3, Insightful)
Re:Need for a superuser? (Score:2)
Re:Need for a superuser? (Score:2)
Re:Need for a superuser? (Score:2)
Suppose an administrator creates a block of space he wishes to dedicate to a particular user. The act of creation returns a capability(unforgeable referenc
Re:Need for a superuser? (Score:2)
In this case, theres a capability that says "create or modify accounts" and some user(s) will be given that capability, and those users will be responsible for creating or resetting passwords on accounts, and hopefully they won't all take the same airplane together, or at least that they have a password to an account saved in some vault somewhere.
Re:Need for a superuser? (Score:2)
The "missing password" problem is orthogonal to having root vs not having one. After all, unix admins die too, although one might find it hard to believe.
There are interesting cryptographic methods that solve this problem in a tricky way. An algorithm
But you need r00t to change the iptables. (Score:2)
Re:So many good ideas never make it... (Score:2)
Its like the saying goes "Saying that trinary computing is not worth it is like saying in 1990 that its just not worth it to build an open source unix like kernel".
Re:So many good ideas never make it... (Score:2)
This is a completely different situation. It remains to be seen whether this will see any traction in the industry. In a way, there are similar concepts, but they are al
Comparison with Multics? (Score:5, Insightful)
Re:Comparison with Multics? (Score:2)
Firstly, there's that. Secondly, it _was_ the most secure OS ever created, because it was one of the first to be designed with multiple users/networked use in mind. However, keep in mind that it was built with 1960s computer science, 1960s ciphertech, without the lessons learned over the next 40 some odd years, for use on machines with _very_ limited computing power. In other words, it doesn't hold a candle to modern secure operating systems, except for
Re:Comparison with Multics? (Score:5, Interesting)
So if you turn off the computer, and turn it back on again, it loads the last checkpoint, and your processes are all running and in the same state. That's what they mean by "Extremely reliable". There are supposedly processes running in KeyKOS, a similar OS, that have been running since before the computer's current hardware had been built. If that makes sense.
Dunno if Multics did that.
Re:Comparison with Multics? (Score:2)
Re:Comparison with Multics? (Score:2)
I'm not suggesting that all security is worthless, and some systems need to be really, really secure, I'm just noting that there's a lot of people (developers and sys/network admins) who are enamored with the theoretical underpinnings of security to the point where they implement security measures that do more harm (in terms of reducing or eliminating productivity) than good.
I don't think so. (Score:2)
No that is an insightful question (Score:3, Informative)
Re:No that is an insightful question (Score:2)
Looks exciting (Score:2, Insightful)
Re:Looks exciting (Score:2)
BitC looks nasty (Score:3, Insightful)
(pan)
Re:BitC looks nasty (Score:3, Funny)
I haven't seen so many parentheses since my cat slept on my keyboard. *ba-bam!*
Re:BitC looks nasty (Score:2)
Re:BitC looks nasty (Score:2)
Son of a... (Score:5, Funny)
Imagine what happens when Microsoft tries to compete by making a buggier implementation of BitC. It'll give us yet another reason to BitC# at Microsoft.
Re:Son of a... (Score:3, Funny)
Re:BitC looks nasty (Score:2, Informative)
Re:BitC looks nasty (Score:2)
Check out Structure and Interpretation of Computer Programs [mit.edu].
Re:BitC looks nasty (Score:3, Insightful)
I can't tell you how many times I've wished that we were using a language that had type inference and pattern matching.
Capabilities (Score:5, Interesting)
This has been possible in Linux (and some proprietary Unices) for some time now. Why the need for a separate OS? But mechanism alone won't solve your problems. You need to have suitable policies that make use of those mechanisms. And as the Fedora guys have found out with their SELinux adventures, getting the policies right for any non-trivial system is a bitch.
Re:Capabilities (Score:3, Insightful)
S
Re:Capabilities (Score:2)
Re:Capabilities (Score:3, Insightful)
This is a research OS being worked on at an university (John Hopkins) by several graduate students. It is not intended to being part of Fedora Core 4.
Just like Trusted Computing platforms like Trusted Solaris and Trusted HP/UX (I forget the name for the Trusted version of VMS, and several others) this is not intended for mainstream replacement of "mainstream" OSes. For that look at PaX, exec-shield, NX support
Re:Capabilities (Score:2)
I pray for the day that every computer user neither needs to be a sysasmin with 30 years of experience nor needs the perpetual support of sysadmins (IT departments, sysadmin friends, etc).
Just because it's the status quo doesn't mean it's the way it should be.
Re:Capabilities (Score:2)
Re:Capabilities (Score:2)
2) They are abandoning persistence for Coyotos.
And no, the concept of an RTOS does not go out the window due to persistence. No, they do not have to halt everything to do a checkpoint. If the performance hit of checkpointing would not allow them to keep their contract with a real time thread, then... they would not make the contract with that real time thread, and their RTOS is still an RTOS, isn't it.
Re:Capabilities (Score:2)
You wouldn't need a separate OS... if it weren't for the fact that Posix/Linux "capabilities" are not real capabilities. Furthermore, EROS/Coyotos has much finer-grained access control, ie. a capability to a memory page, or a disk sector, rather than "capabilities" only to coarse-grained objects such as terminals as in Posix.
Re:Capabilities (Score:2)
Coyotos (Score:4, Funny)
Re:Coyotos (Score:3, Funny)
Guaranteed to singe hair off of nether regions.
so... (Score:5, Funny)
License? (Score:2)
forgotten lessons of Ada 83 or too young to know? (Score:4, Insightful)
Developers, promoters and users of this language should consider the fate of Ada83 language before they invest a ton of effort or money. Yes, it may be strong as Fort Knox but writing software costs money and the language supports provability but does NOT eliminate the need to do up front design and heavy integration testing at the end of a project...Only the proprietors of Fort Knox would consider the cost benefit ratio of such software worthwhile. The rest of us would have to weigh it more carefully. C-derived languages got a lot of code written quickly mostly because they did not encumber the engineer with many considerations beyond the function or behavior and representation of data...the "I'm not going to give you a chance to screw up" approach to programming embodied in Ada does not map well to typical [if somewhat shoddy] coding practices and creates a much steeper learning curve for would-be programmers. I admit I have yet to RTFA but I already have this "here we go again" feeling.
Re:forgotten lessons of Ada 83 or too young to kno (Score:2)
Re:forgotten lessons of Ada 83 or too young to kno (Score:2)
That version supported provability of correctness, a feature that was easy to sell to a security conscious customer [not customers as there was really only one]. But that provability meant that many dynamic coding practices, in particular the method dispatching needed for object oriented programming, were not tolerable: for a compiler to prove code was right, it had to be immutable and look at run time exactly as it did at compile time. This restriction proved
Re:forgotten lessons of Ada 83 or too young to kno (Score:3, Insightful)
There's only steps of provability. Ada 83 was more provable than most languages, but there's a lot more to it. And its failure in many cases seems to have been high-price, low-quality compilers designed for sale only to the DoD, which fought Ada internally in a lot of places.
he next version, Ada 95, added features in a vain attempt to achieve OOness
In a vain attempt? Do you care to explain why Ada 95 is not an OO language?
explicitly abandonded provab
Re:forgotten lessons of Ada 83 or too young to kno (Score:3, Informative)
The problem is that, like Haskell, I will probably never work for a company who adopts BitC.
Re:forgotten lessons of Ada 83 or too young to kno (Score:2)
....skimming
....yumm, nice parens! tastes a bit like Lisp...hurray for econmomical parsing.
....skimming...
monomorphic variables ? what happens to procedure with two variables not bound as to type? infer all you want but how to mix/promote types?
....no module idea, charset limited to 7bit unicode: thats gotta get fixed.
OMG! Shades of Ada "MOD" types in wolves clothing!..breaks all attempts at straightforward mapping to C/C++/Java short of intro
Re:forgotten lessons of Ada 83 or too young to kno (Score:2)
I think this is a great analogy for Coyotos. Developing and verifying the kernel will cost tens of millions of dollars, but once it's done it can be used by a lot of people for a long time without much change.
Re:forgotten lessons of Ada 83 or too young to kno (Score:2)
Yes -- Ada83 died on the vine not because it couldn't get programmers, but because it couldn't get reasonable compilers. The hurdles were just far too high.
Now there is a reliable, cheap, well supported Ada compiler, and in spite of the lack of programmers many projects are able to use Ada appropriately.
BTW, Ada didn't support provability; it encouraged software enginee
Re:forgotten lessons of Ada 83 or too young to kno (Score:3, Insightful)
And for that we all pay on a daily basis as boxes get rooted and used as zombies and spam servers. It is so easy to stop buffer overflows, at such a little cost, that it's a crying shame C is still being written for anything that connects to the network. (C++ might be better, if peo
No software so secure (Score:2)
Just one problem - it can't do anything useful either.
rigorous = unpopular (Score:3, Funny)
Come, raise a toast to all those restrictive languages that are so wildly popular with programmers today. Let us all thank Wirth that none of their free-wheeling, permissive contemporaries are still in use.
It's working though (Score:2)
I tried BitC once... (Score:3, Funny)
Liyotux (Score:3, Insightful)
Doesn't really matter does it (Score:2, Insightful)
Not true (Score:2)
Re:Doesn't really matter does it (Score:2)
Capabilities are amazingly powerful. If you can't refer to something, there's no way to possibly mess that something up.
That does require some clever configuration, but current work seems to show that such configuration is conceivably possible.
-Billy
Hmmm... (Score:4, Interesting)
Coyotos? (Score:2, Funny)
Naming (Score:3, Funny)
Re:Naming (Score:2)
A tight race between two emerging Secured OSS (Score:2)
IEEE BOSS [bosswg.org]
or
Coyote OS [coyotos.org]
My money is on Coyote.
SELinux, capabilities (Score:3, Informative)
For quite a while (as the OP points out) the Linux kernel hasn't checked for "uid=0". Instead it checks for one of many capabilities, like CAP_SET_SYSTEM_TIME or whatever. You can give these fine-grained capabilities to other users. SELinux does something similar for applications, letting you restrict in extremely fine-grained detail what a process can do.
The key word is fine grained. It's pretty difficult to build a sand castle if you have to move individual grains. If you can manage it, it's one hell of a sand castle, but you need tools, patterns, and layers to do it.
Implementing capabilties, roles, contexts, etc. doesn't solve anything by itself, any more than a compiler solves problems by itself. It gives us the ability to solve the problem, but we're still left with the hard work.
The most interesting work going on in this area IMO is (believe it or not) Fedora. They're trying really hard to integrate SELinux into a usable operating system. It's much harder than it looks; at the moment they only have certain services running under SELinux restrictions, but eventually they'll get to a complete model where it really will be difficult to comprimise the system.
It's not hard to secure a system; just turn it off. It's very hard to secure a system so that it allows "approved" actions and disallows everything else.
Re:SELinux, capabilities (Score:2)
Re:SELinux, capabilities (Score:2)
-Billy
Color Me Paranoid (Score:3, Insightful)
While I can see a role for EROS and other capability-based systems in places where security is not just important, it's the product (banks, the military, intelligence agencies), I become deeply suspicious when someone suggests placing such systems in the consumer marketplace (desktop computers, media servers, etc.).
The reason I become suspicious is because capability-based systems are designed to distrust the person using them, including the machine's owner. Again, in environments where security is paramount, this is a reasonable thing to do -- you don't want personal or sensitive information getting in the hands of an unauthorized person, even if they own the machine it's stored on. But in all other environments, the machine should treat the owner as God and obey all commands and yield up any and all data He/She demands.
I fear that capability-based systems will be one of the prongs media companies will use to attack Fair Use and other rights. I worry that "content providers" will demand PCs that distrust their owners and obey their commands, not mine. Capability-based systems are an excellent way to bring this about. Yes, I know capability-based systems can be hacked into obeisance, but it's a lot more trouble. Frankly, I would prefer it didn't happen at all.
Schwab
Why the new language? (Score:2)
Either way, things I like:
*Provable security
*Extremely fine grain, almost fractally self-similar, security
*No need for 'root'
Things I'm not so sure about:
*No filesystem (at least with EROS)
*Not having 'root' is such a change, it's hard for me to understand how someone would take car
Re:Why the new language? (Score:2)
Ack! It killed my "E-Lang (or just 'E')" link.
Capability security systems under Linux (Score:2, Informative)
An example of this is Plash http://freshmeat.net/projects/plash/ [freshmeat.net]. Plash runs processes under Linux with access to nothing by default
Persistence (Score:3, Informative)
Re:Persistence (Score:2)
First, if you put "persistence" in the OS, the OS has to know about disks, which, otherwise, a microkernel does not.
More significantly, "persistence" means keeping your mistakes around. Memory leaks are forever. Software upgrades are very tough.
OS design needs to go in the other direction, that of efficient transaction processing, where execution environments are created, used, and quickly flushed. That's better from a security and reliability standpoint.
That's not the EROS website! (Score:2)
http://www.eros-minn.com/eros.htm [eros-minn.com]
They even have escorts for you if you need help installing.
Re:EROS utilizes FUCK (Score:2, Funny)
Re:EROS utilizes FUCK (Score:2)
The same old saw (Score:2, Insightful)
Re:security (Score:3, Insightful)
This is a horribly, horribly naive thing to say.
The unix model of security is extremely simplistic -- though it could be argued that this is preferable to a more comprehensive system that happens to have gaping holes made in it, ie Windows. I suppose you could argue that the unix model is effective considering it's extreme simplicity -- but it remains a system not designed with security as a primary goal, and not granular enough for security to be easily retrofitted.
You would be well advised to at least
Re:security (Score:2)
That is of course only
Any proper admin can give any differnt list of permissions to any different number of users. You can have DNS admins and printer admins and Install admins and anything else you like. If you set it up that way.
The problem is, people are so exasperatingly lazy about actualy *doing* anything about security that it really doesn't matter in the end. You can hand the mo
Re:Licencing. (Score:2, Informative)
Re:BitC? (Score:2)
kidding
Re:When in doubt, remember: (Score:3, Insightful)
He's a very smart guy and a gifted programmer, but he has restricted himself to a niche, implementing UNIX compatible operating systems on Intel architecture computers.