Slashdot Mirror


NSA Open Sources Tokeneer Research Project

An anonymous reader writes to mention that the Tokeneer research project has been released to the open source community by the US National Security Agency. The main goal of this project was to show how highly secure software can be developed cost-effectively. "Tokeneer has been written in SPARK Ada, a high level programming language designed for high-assurance applications. Originally a subset of the Ada language, it is designed in such a way that all SPARK programs are legal Ada programs. Ada is the natural choice for mission-critical, high-integrity systems due to its combination of flexibility, reliability and ease of use, and SPARK further adds a static verification toolset that combines depth, soundness, efficiency and formal guarantees."

20 of 94 comments (clear)

  1. This smells like a Slashvertisement... by Wulfstan · · Score: 4, Insightful

    ...because although Tokeneer has been released as open source the SPARK toolchain is owned by a company and the specification for SPARK is fully controlled by them. Has money changed hands somewhere?

    --
    --- Nick, hard at work :->
    1. Re:This smells like a Slashvertisement... by PotatoFarmer · · Score: 5, Funny

      Nah. If that were the case then the summary would be more about SPARK than the project that was actually open sourced.

      ...

      Oh, right. Carry on.

  2. Useless by bluefoxlucid · · Score: 4, Insightful

    Java is also the perfect high security language, because you can't make security holes with it. Same with C#. Same with VB.NET. We've heard this again and again from people who simply don't understand the problem.

    1. Re:Useless by Talennor · · Score: 3, Insightful

      Don't say I can't make security holes in Java.

      I can make security holes in whatever language I want! Really.

      --

      //TODO: signature
    2. Re:Useless by ushering05401 · · Score: 3, Insightful

      The final line of GP's comment indicates a sarcastic tone was intended. I doubt GP is suggesting that it is not possible to open a security hole with a VB.NET program.

    3. Re:Useless by kbielefe · · Score: 5, Insightful

      Until you've seen in real life a compiler error telling you that you accidentally tried to add a variable holding a distance in meters to one with a distance in feet, you don't know what you're talking about. Although people can find a way to break any language, some programming languages indeed are much more resistant to bugs than others.

      --
      This space intentionally left blank.
    4. Re:Useless by Lost+Engineer · · Score: 3, Insightful

      Any language with type checking could do that. Ada's selling point is that it's easy to make a static analysis tools for it because you can't do certain things that make static analysis hard. That could actually be said about a lot of "academic" languages as well, but Ada caught on in certain niches a long time ago and so continues to be used.

    5. Re:Useless by Yvanhoe · · Score: 3, Insightful

      Buffer overflows are not the only security errors out there, you know. Yet it is the only one that the languages you quote prevent.

      --
      The Wise adapts himself to the world. The Fool adapts the world to himself. Therefore, all progress depends on the Fool.
  3. Very poor summary by mihalis · · Score: 5, Insightful

    What is being released is a small sub-component of the Tokeneer called the TIS ("Tokeneer ID Station") which reads biometric info about a user and if it matches signs a token so that the user can be authenticated to other components on the workstation. It's potentially an interesting little nugget of code, but not something I expect the open source community to get very excited about.

    As for the existing comments on this story, I agree this is a bit like a sales pitch (and I used to work in Ada myself). Note that it's Ada not ADA (it's named after Ada Byron, Countess of Lovelace).

    1. Re:Very poor summary by mihalis · · Score: 3, Informative

      Sure...

      ADA is an acronym for American Dental Assocation.

      Ada is a girls name (short for Adeline).

      Ada (the programming language) was named after Ada Byron. Calling it ADA would be like calling me CHRIS.

      Ada Byron is credited with being the worlds first programmer as she came up with some punch cards for the Jacquard (programmable) loom. Something like that. It's been a while.

      She was the daughter of Lord Byron - "Mad, Bad and Dangerous to Know" as someone put it (Oscar Wilde?).

  4. Re:ADA propaganda? by againjj · · Score: 4, Interesting
    It looks like that a company (Praxis) was able to create part of a security software product (Tokeneer) while following development process for developing security software, in partnership with another company (AdaCore) which provided the tools, and it was funded by NSA. Then it was put out as a press release. The source code is available for free (as in beer) but is not free (as in speech). This was extracted from one of the source files:

    -- Tokeneer ID Station Core Software
    --
    -- Copyright (2003) United States Government, as represented
    -- by the Director, National Security Agency. All rights reserved.
    --
    -- This material was originally developed by Praxis High Integrity
    -- Systems Ltd. under contract to the National Security Agency.

    Though, the funny thing was that I thought the US government was not able to hold copyright.

  5. Re:Tokeneer? by owlstead · · Score: 4, Informative

    It's a Biometric Token system. I haven't been able to find out any more, so I'm now downloading all of their software, just to find this out.

    It's a lot about ADA, about contract based design, about checking invariants, and NOTHING about the actual functionality. As somebody who is in security and knows about Common Criteria first hand I must say this might be a very interesting thing. EAL 5 is not something to be sneered at.

    If the software actually does something, that's another matter. I'll try right away. I'll let you know when I got it running, if it ever does. Now lets hope the website has not been hacked and that it doesn't contain a virus :)

    Where's the secure hash stored on an offsite SSL page?

  6. Re:ADA propaganda? by erroneus · · Score: 4, Insightful

    I don't know one way or the other, but one thing is certain -- anything the tax payers pay for should be owned by the taxpayers and controlled by taxpayers as far as can be deemed appropriate. (So, government buildings cannot be used by the homeless to sleep in!) But something as easy to share as software should definitely be owned by and made available to the people.

    I wonder what it would take to get that written into law?

  7. Re:Tokeneer? by owlstead · · Score: 4, Informative

    There I am replying to myself.

    This is basically a proof of concept piece of code. It shows that Common Criteria EAL 5 (and possibly further) is not out of reach for a software program. EAL 5 and further require (semi) formal proof that a system is correct:

            * EAL-1: Functionally tested
            * EAL-2: Structurally tested
            * EAL-3: Methodically tested and checked
            * EAL-4: Methodically designed, tested, and reviewed
            * EAL-5: Semi formally designed and tested
            * EAL-6: Semi formally verified, designed, and tested
            * EAL-7: Formally verified, designed, and tested

    Now anybody who is in software engineering knows that this is not a very light requirement. You can write tests until you die of old age, but even then you won't be able to prove anything is fully conform demands.

    The system itself is pretty "simple": the hardware consists of a biometric device, two smart card readers and a display device. That's all. Oh, and a door of course, since that is the basic function. It's about opening a door :)

    But that's not important at all. What's important that this is a development environment with which you can build *very* secure software, that can be verified against EAL 5. In that respect this is indeed a sales pitch. A rather interesting one, I don't think there are many EAL 5 certified *software* products.

  8. VERIFICATION by A+non-mouse+Coward · · Score: 5, Informative

    It's all about the formal verification, or the "correctness" of the implementation (binary executable) of the problem. If you follow the works of the late Edsger Dijkstra, he argued that all code should really be an abstraction of a formal mathematical proof of a solution to a problem. Now, most "agile" software developers through that out the window as shite, but we need to find a compromise somewhere in between.

    If we were able to do formal verification of a binary, then the world wouldn't need to see source code to know you can trust third-party written code. Ada or whatever language, the research significance here is that the characteristics of the language and compilation that yields positive steps towards formal verification. So, maybe for you "secure" is "I patched it and today's signature database from [insert vuln scanner] doesn't find any holes", but for three letter institutions (and anyone who has worked diligently enough in security to become jaded like me) that's just not good enough. A better definition of "secure" software would be "I know what it is intended to do and I can formally prove it does that and only that."

    Word of the day is verification.

    --
    libertarian: (n) socially liberal, financially conservative; neither left, nor right.
  9. A Security Hole in Java by KnowlerLongcloak · · Score: 4, Informative

    ResultSet readFromDatabase(String userInput)
    {
        String sql = "select * from users where userid = " + userInput;
        PreparedStatement psMyStatement = connMyConnection.prepareStatement(sql);
        ResultSet rsResults = psMySQLStatement.executeQuery();
        return rsResults;
    }

    This is called a SQL Injection security hole. You can write it in practically any language that connects to a database.

  10. Re:ADA propaganda? by binaryDigit · · Score: 3, Informative

    Sorta. The govt is like any other entity that pays a contractor for copyrightable works. By default, the govt retains the copyright for any works done by the contractor for the govt. Some contracts can grant the contractor either limited/full or shared/exclusive rights depending on how the work is performed and who pays for what.

    Note that just because it belongs to the US govt, it doesn't mean that the public has access to it. Many works are either classified, or very commonly, deemed FOUO (For Official Use Only) which restricts access to software.

  11. Re:ADA propaganda? by volxdragon · · Score: 3, Informative

    Though, the funny thing was that I thought the US government was not able to hold copyright.

    Government employees cannot initiate copyright (ie, create a work and claim it has a copyright), but copyrighted works (ie, those developed by contractors) can have the copyright assigned to the government (and may be required by contract to do so). Yes, it's a fine splitting of hairs, but that's the deal...

  12. It's open source software, and important by dwheeler · · Score: 4, Interesting

    It's released as open source software - free as in speech, not just free as in beer. At least, that was the intent (I've had lengthy email conversations with Praxis about this). It's just that figuring that out is complicated; you have to seriously trudge through their docs to get the real licensing story.

    The problem is that they (NSA/Praxis) didn't simply slap an open source software license on it. Instead, you have to hunt in Praxis' user's guide (section 2 on licensing), which says that you (the public) get all the rights that Praxis got from NSA. Then, you have to look at the NSA/Praxis contract, which says that you have the right to use, modify and redistribute (that's an imperfect quote from memory, see the files for the details). I haven't analyzed this in great depth, but I can confirm (after several emails with Praxis) that the intent, at least, was to release Tokeneer as open source software.

    I wish Praxis had just slapped a standard open source software license on the code. For the code they wrote themselves, Praxis simply applied the 2-clause BSD license, which is unambiguously open source software. Presumably their contracts made them release it in this unusual way.

    Anyway, this is important and a good thing. In theory, if you could prove that any given program is correct, you'd eliminate or greatly reduce a lot of our problems with software. Currently, there are almost no published examples of formal methods applied to actual programs. And without examples, it's hard to make things better, improve on them, etc. This is not the end, but perhaps it's the glimmer of a beginning.

    You're absolutely correct, the tools required to prove this are not open source software. Thus, I'd say this is not an "open proof" (an open proof is where the source code of the program, the proofs, and the required tools are all open source software). But it's a step forward from having almost no publicly-available examples of real programs where formal methods have been applied to this degree.

    --
    - David A. Wheeler (see my Secure Programming HOWTO)
  13. Re:ADA propaganda? by IP_Troll · · Score: 3, Insightful

    Copyright (2003) United States Government, as represented by the Director, National Security Agency. All rights reserved.

    The copyright notice says All Rights Reserved which means, the NSA claims have all the rights and the contractor has none.

    The NSA contract isn't here to scrutinize so what ifs about "who really owns the code" are shots in the dark. Relying on the NSA's claim of ownership is a defense to copyright infringement. Everybody here can develop using the code without worrying about legitimate third party copyright infringement claims.

    The fact that the public is able to download the software means the public has access to this software and it is not classified or FOUO.

    So, everyone can safely conclude that they are allowed to develop using this code.

    I don't mean to be argumentative, the parent post just didn't have a conclusion.