Slashdot Mirror


Coyotos, A New Security-focused OS & Language

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.

49 of 296 comments (clear)

  1. Need for a superuser? by PornMaster · · Score: 3, Interesting

    One of the problems I see with high levels of security without a superuser-style account is the possibility of someone leaving, dying, or forgetting his password, and not being able to get to critical business data.

    How is this resolved without a superuser?

    1. Re:Need for a superuser? by Andreas(R) · · Score: 3, Funny
      One of the problems I see with high levels of security without a superuser-style account is the possibility of someone leaving, dying, or forgetting his password, and not being able to get to critical business data.

      Exhaustive password search, of course.

    2. Re:Need for a superuser? by Coryoth · · Score: 5, Interesting

      One of the problems I see with high levels of security without a superuser-style account is the possibility of someone leaving, dying, or forgetting his password, and not being able to get to critical business data.

      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

    3. Re:Need for a superuser? by GeckoX · · Score: 3, Interesting

      And who has the rights to create that new user that has sufficient rights to get at all of that critical data that the guy who just died left behind?

      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 ;)

      --
      No Comment.
    4. Re:Need for a superuser? by Sheetrock · · Score: 2, Insightful

      I'd pull the stuff from backups. No critical business is without them, and if you're encrypting those I'd hope you're using DSA with multiple keying to a second administrator and an escrow key that sits in the CEO's safe for precisely this situation.

      --

      Try not. Do or do not, there is no try.
      -- Dr. Spock, stardate 2822-3.




    5. Re:Need for a superuser? by OwnedByTwoCats · · Score: 2, Insightful

      The point is that one can have "account creation" priviledges, or even "priviledge granting" privildedges, without having "ability to deliver signals to any process in the system" priviledges.

      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.

    6. Re:Need for a superuser? by ThinkTiM · · Score: 2, Informative

      Yes, you are, so relax. If you separate the roles of creating an account (and defining the priveledges that it has) and setting/resetting/enabling the password on an account, then it takes at least two people to gain access against the wishes of the owner of the system. Most large organizations have a standard that a single role cannot do this, and they usually have the roles working in different groups within the organization.

    7. Re:Need for a superuser? by m50d · · Score: 2, Interesting

      So a determined malicious insider can do everything they can do under traditional unix, yes. But there's defense in depth here. For example, you can probably eliminate all your setuid binaries, just give them the capabilities they need. Cdrecord gets the "set own niceness very high" capability, but a cdrecord vulnerability doesn't make a local root one. Mplayer gets the "direct access to video card" capability. People who just need to be able to mount iso images don't need the root password. It's not a panacea, but it's another layer of protection.

      --
      I am trolling
    8. Re:Need for a superuser? by 3TimeLoser · · Score: 2, Interesting

      It helps separate responsibility.

      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 or create/delete admin accounts. On the other hand, the admin accounts cannot administer the Auditor account or delete audit logs, but can do just about anything else on the system.

      Granted, there is nothing that prevents the Auditor from resetting an admin password or creating a new admin, but that can be tightly controlled and monitored by manual process. For example, the Auditor credentials are only known by the CIO and only used when needed with direct supervision. These credentials can also be sealed and locked up in case the CIO dies or something. Any other use of those credentials should immediately throw up red flags and launch black helicopters.

      It would be nice if the OS enforced these roles, and I think that's what this discussion is all about.

      I'll shut up now.

    9. Re:Need for a superuser? by viktor · · Score: 2, 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 program e.g. needs access to a raw network interface, it does not gain those complete privileges. Such a program will only get the privilege to access the raw network interface, but not to e.g. create new users or open arbitrary files.

      With most UNIX'es all-or-nothing superuser (Solaris 10, among other, implement privileges instead), any program needing a raw network interface automatically gains the right to create users, shutdown the machine, alter any file, and anything else as well.

      So the main difference isn't that there is no superuser, it's that there are many superusers, each of which can only perform a subset of all possible tasks requiring extra privileges. And that means that the Helpdesk staff could for example be allowed to create new accounts, without thereby automatically gaining the right to look in any file belonging to existing users. And processes can be granted any subset of what root can do without automatically gaining all the other privileges at the same time.

  2. Comparison with Multics? by CodeArt · · Score: 5, Insightful

    How Coyotos compares with Multics? Multics was most secured OS ever created with his multi-ring security architecture and security supported directly in HW.

    1. Re:Comparison with Multics? by Elwood+P+Dowd · · Score: 4, Interesting

      Dunno about this Coyotos thing, but a major point of EROS was its checkpointing system & memory architecture. In my completely uninformed understanding, the idea was that there was no filesystem, and the persistent disk was only used to provide virtual memory and checkpoint the memory state.

      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.

      --

      There are no trails. There are no trees out here.
  3. Looks exciting by RatRagout · · Score: 2, Insightful

    Maybe we will finally get an operating system with a thorough security model....hopefully not so thorough that it can't be used...

  4. BitC looks nasty by Panaflex · · Score: 2, Insightful

    ((At least (to me).))

    (pan)

    --
    I said no... but I missed and it came out yes.
    1. Re:BitC looks nasty by Tumbleweed · · Score: 2, Funny

      (((Score)==(+3))(Insightful)))

      I haven't seen so many parentheses since my cat slept on my keyboard. *ba-bam!*

    2. Re:BitC looks nasty by Lorens · · Score: 2, Informative

      Site says that the lisp-like syntax is to describe the language, and that a C-like syntax could be written.

    3. Re:BitC looks nasty by Dasein · · Score: 2, Insightful

      Well, I have to admit to not being a lisp-style syntax fan but take a look at the features. Type inference, pattern matching, theorem proving...

      I can't tell you how many times I've wished that we were using a language that had type inference and pattern matching.

      --
      You are not a beautiful or unique snowflake -- but you could be if you got off your ass.
  5. Re:EROS utilizes FUCK by spac3manspiff · · Score: 2, Funny

    Unless it's implemented on a RISCy processor

  6. That's not the right question by Anonymous Coward · · Score: 5, Insightful

    Any user could encrypt data, leaving it locked forever if the key is lost. That's just the nature of electronic keys. When someone loses a physical key there is always some way to spend enough money to open the safe or whatever. That's not true in the world of encryption. The solution to that problem lies outside of the scope of the OS. Or rather, the Unix/Linux/MS Windows designers decided to put it in the scope of the OS by making certain types of protection non-existant. But that's not a solution to the problem; that's just omitting features which should be there, like giving users good encryption tools for stored files.

    1. Re:That's not the right question by Wesley+Felter · · Score: 2, Informative

      If the data is encrypted with an N-bit symmetric key, you could escrow N-56 bits of the key with your trusted party and they could brute-force the remaining 56 bits in a few days.

      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.

    2. Re:That's not the right question by Doctor+Memory · · Score: 2, Interesting

      It would probably be simpler to encrypt person A's encryption key with trusted person B's public key and escrow it. Then, if something happens to A, B can retrieve the key from escrow and decrypt it. You could cascade this to produce a "chain-of-command"-style process, whereby the key must be sequentially decrypted by a string of people before the original is recovered.

      --
      Just junk food for thought...
  7. Capabilities by Tet · · Score: 4, Interesting
    a project to create an operating system whose security relied on capabilities rather than the traditional Unix model of root or non-root.

    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.

    --
    "The invisible and the non-existent look very much alike." -- Delos B. McKown
    1. Re:Capabilities by Greyfox · · Score: 2, Insightful
      Yah. Your average home user will likely end up setting up an account with all capabilities turned on, thus putting you right back at square one with a "root" user. Every once in a while we see some bozo who wants to ignore 30 years of sysadmin experience and give his regular account root permissions. They usually say exactly the same thing too, "Oh, it's OK, I know what I'm doing," and "I'm not running anything important on my system, so no one will bother attacking it." You know who you are heh heh heh.

      Security is a habit, like good hygene. Most people realize that they need to floss and change their underwear more than once a month and stuff like that. We just need to promote good security habits, too.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    2. Re:Capabilities by plcurechax · · Score: 2, Insightful

      Your average home user will likely end up setting up an account with all capabilities turned on,

      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 (processor feature supported in new versions of Windows and Linux), and Microsoft's Pallidium/NGSC and whatever name Intel is using for their trusted (DRM-friendly) hardware (chipsets and motherboards).

  8. Coyotos by Deathlizard · · Score: 4, Funny

    Hmm. does it work with Roadrunner? :)

    1. Re:Coyotos by B3ryllium · · Score: 2, Funny

      In order to get it to work with Roadrunner, you need to buy some Acme-brand ADSL rocket shoes.

      Guaranteed to singe hair off of nether regions.

  9. Son of a... by tepples · · 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.

    1. Re:Son of a... by Kyont · · Score: 3, Funny

      Dang, you beat me to it. I was thinking of a version with a hyperthread-supporting local application protocol (BitCH-SLAP).

      --
      You shall see a cow on the roof of a cotton house.
  10. so... by mogrify · · Score: 4, Funny

    #include <BitC.h>

    --
    perl -e 'foreach(values %SIG){$_="IGNORE";}while(){}'
  11. The same old saw by Anonymous Coward · · Score: 2, Insightful

    That's like saying "cars are safe enough, it's the drivers that are the problem." Actually, there are a whole bunch of things that have been done to make cars safer: seatbelts, better brake lights, ABS brakes, etc. Saying "it's the users' fault" is just an excuse for doing nothing, when there are plenty of things that could be done. I'm tired of hearing it.

  12. forgotten lessons of Ada 83 or too young to know? by museumpeace · · Score: 3, Insightful

    "...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...."
    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.

    --
    SLASHDOT: news for people who can't concentrate on work or have no life at all and got tired of yelling back at the TV.
  13. Re:Licencing. by Lorens · · Score: 2, Informative

    EROS was distributed under GPL (eventually). One can hope that it will be the same here.

  14. rigorous = unpopular by PMuse · · Score: 2, Funny

    It sounds wonderful, doesn't it?

    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.

    --
    "We reject as false the choice between our safety and our ideals." --The American President (20.1.2009)
  15. I tried BitC once... by goldspider · · Score: 2, Funny

    But it was a real BitCh to learn.

    --
    "Ask not what your country can do for you." --John F. Kennedy
  16. Liyotux by Doc+Ruby · · Score: 2, Insightful

    I think those problems can be solved better by relying only on memory-access objects with bounds checking, and signature/ACLs for every method call, and a stripped microkernel that's privileged only for HW and IPC access. Linux itself could be refactored along these lines, applying lessons learned by experimenting with Coyotos.

    --

    --
    make install -not war

  17. Re:security by kahei · · Score: 2, 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 learn about Windows, not because it is particularly secure, but because it's easy and lots of security concepts from outside the Unix world are found in it, such as ACLs and fine-grained (only compared to Unix) privileges.

    Of course, Windows then goes and does exactly what Unix does, and gives all the privileges to one user and requires that user's token to be used all over the place. But to be honest, usability is what propagates a system, not security.

    --
    Whence? Hence. Whither? Thither.
  18. Hmmm... by noblesse+oblige · · Score: 4, Interesting

    While that was nice, my favorite feature of EROS (besides the name) was the idea that instead of a filesystem a disk was simply non-volitile memory cache. That facilitated my next favorite idea, orthogonal persistance, the somewhat like a persistant software suspend. I'd be interested in finding out (while the home page does not say) if these were the shortcomings of EROS it was alluding to.

    --
    Some will always be above others. Destroy the equality today, and it will appear again tomorrow. --Ralph Waldo Emerson
  19. No that is an insightful question by ChiralSoftware · · Score: 2, Informative

    If you browse the Eros archives, you can see that Mr. Shapiro (the creator of Eros) makes frequent references to Multics as the inspiration for Eros (and therefore Coyotos). I'm not able to answer that question myself but clearly there is a close connection between Coyotos and Multics.

  20. Coyotos? by ee96090 · · Score: 2, Funny

    Am I the only one who read it as Coitus?

    --
    Gustavo J.A.M. Carneiro
  21. Naming by kallisti · · Score: 2, Funny

    So, instead of using the name of a God of Love, they changed to the name of a prostitute's rights organization. Do they ever want to be found in a search?

  22. Re:forgotten lessons of Ada 83 or too young to kno by Dasein · · Score: 2, Informative

    Go ahead and RTFA. I'm only marginally familiar with Ada83. However, I'm a fan of functional programming languages. I can't tell you how many times I've wished for type inference and pattern matching.

    The problem is that, like Haskell, I will probably never work for a company who adopts BitC.

    --
    You are not a beautiful or unique snowflake -- but you could be if you got off your ass.
  23. SELinux, capabilities by ceswiedler · · Score: 2, Informative

    And this will suffer from the same problem: capabilities and ACLs are very difficult to get right, and require extremely good tools as well as informed administrators.

    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.

  24. Color Me Paranoid by ewhac · · Score: 2, 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

  25. Re:When in doubt, remember: by Detritus · · Score: 2, Insightful
    Since when did Linus Torvalds become an expert in the design of new operating systems? I'm serious.

    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.

    --
    Mea navis aericumbens anguillis abundat
  26. Capability security systems under Linux by mseaborn · · Score: 2, Informative

    The purpose behind the EROS or Coyotos kernels is to provide a *fast* capability-based system. You can build a capability system on top of Linux using sockets and other mechanisms; it'll just be slower. It's easier to build in some ways, but the total complexity (including Linux's complexity) is higher, so you have a bit less confidence about how secure the whole thing is.

    An example of this is Plash http://freshmeat.net/projects/plash/. Plash runs processes under Linux with access to nothing by default (by putting them in a chroot() jail, etc.), except that it can make requests to objects via a socket using an object-capability protocol. Plash also provides a modified GNU libc so that normal Linux executables make their filesystem requests as object invocations, basically virtualising the filesystem.

    Plash shows how unmodified Unix programs would work under EROS/Coyotos: it provides a shell (similar to Bash) that lets you run Linux programs with access to a limited set of files, in a convenient way.

  27. Persistence by mknewman · · Score: 2, Informative

    It appears that Persistence was removed from Coyotos. Not sure why, as it appeared to be one of the key features in EROS that differentiated it from 'conventional' OS's. Now what I'm reading is you are simply building a capability based kernel and will run Linux on top. Yeach. Marc

  28. Capability-based security by dumky · · Score: 2, Informative

    More info at http://erights.org.
    The ACL model (based on the notion of principal) is limited because it doesn't scale (your access matrix grows fast as you need finer level access control) and still allows compromised applications to use their permissions for the wrong purpose (confused deputy problem).

  29. Re:forgotten lessons of Ada 83 or too young to kno by dvdeug · · Score: 2, Insightful

    That version supported provability of correctness,

    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 provability

    Not really. Again, there are steps of provability, and Ada is still easier to prove correct than C. It's also possible to produce an Ada subset (SPARK) that is strongly provable; the company that did that has looked at a C++ subset on the request of customers and dismissed it as impossible.

    what got proved was that Ada proved to be a language even its mother didn't love.

    There's a lot of people out there that love Ada. Personally I got tired of beating my head against C++. (No, this is not an excuse for a flamewar; it's a personal choice.)

    [I mean the BNF has 277 production rules...it is seriously ugly to map to other languages.]

    C++ is a complete pain to map to other languages, and nobody seems to care. I don't know where you came up with that number, but I strongly suspect that C++ would be more. In any case, if everyone liked simple syntax, we'd all be using Lisp; most grammar complexities are added on the excuse of making things easier for the programmer at the cost of making it harder for the compiler.

  30. Re:forgotten lessons of Ada 83 or too young to kno by dvdeug · · Score: 2, Insightful

    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.

    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 people would give up their arrays and use bounds checked classes instead.)