Cryptographic Security Architecture
Cryptographic Security Architecture is a technical book that focuses on security architectures, verification techniques, and cryptographic software and hardware. It is an excellent reference source that intricately captures the design process of a security toolkit that has been in use for several years across the globe. The security architecture presented in the book is platform-independent, but the book does touch on platform-specific issues when necessary, especially when cryptlib implementation details are described. The toolkit has been ported to a slew of platforms.
Even though the book and the toolkit benefit from each other's companionship, both can certainly stand alone. The reader doesn't have to be familiar with or even interested in cryptlib to gain from reading Cryptographic Security Architecture . In this review of the book I will keep toolkit discussion to a minimum. The semi-GPL cryptlib security toolkit is OSI-certified open source. The security toolkit includes an excellent user manual which is a formidable 310 pages.
The Passion of the Cryptographic Security Architecture
Cryptographic Security Architecture's first chapter covers the foundational software architecture and is a bit dull. I would hope that the target audience is familiar with basic subjects like object-oriented design and inter-object communications. Too much attention is given to what should have been prerequisite knowledge at the expense of security related matter. For instance, while Gutmann gives a lot of attention to basic object synchronisation (the Kiwi spelling, which is suitably preferred by him) he only alludes to a class of security issues involved with multi-threading. If you can make it through the first chapter, rest assured that Gutmann avoids this flaw in the rest of the book. To be fair, this back-to-basics review does well at underpinning the rest of the security architecture, even though it often reads like a software architecture primer.
The second chapter covers the security architecture, which features such things as permission-based access, least privilege and isolation, mediation, and other expected elements. The design goals include some common goals, like simplicity and efficient implementation. But three of the design goals represent the core philosophy of Gutmann's architecture: The separation of policy definition and enforcement mechanism, a verifiable design (practical vs. theoretical viability), and a flexible security policy.
The separation of the policy definition from the enforcement mechanism solves problems that exist in previous attempts at security architecture (e.g. some Orange Book-based systems hardcode the policy). One claimed benefit of separation is the reduction of complexity in the enforcement mechanism and the improved verifiability that simplicity brings. But I would argue that complexity has been shifted from the toolkit to the toolkit user, who can opt to configure their specialized security policy. What mechanism is going to be used to verify these user-defined policies? It's unlikely the toolkit user's policy will receive the scrutiny that the open source community bestows upon the factory bits.
But I may not fully understand the capabilities of the security policy scheme. Perhaps, when using Gutmann's cryptlib, it is impossible for the toolkit user to configure an incoherent policy. In George Orwell's 1984, the Party worked to deconstruct the English language so that only 'legal' speech could occur. As designed, Newspeak would make illegal statements unspeakable --- and in time, unthinkable. I'm unconvinced that Gutmann's security policy scheme is such a controlled means of expression, where only safe security policies can be spoken. Granted, one could always use the predefined policies, but this path undermines a chief design goal of the architecture: a flexible security policy.
Notwithstanding my nitpicking about the policy, the security architecture chapter is a good example of how the book shines. Gutmann covers in detail his design process and chocks the chapter full of references for the reader's further study. In all, there are almost 700 reference listings, which consume 15% of the book's 320 pages.
The policy definition scheme is followed by a detailed discussion of the security kernel implementation. (The kernel is the policy enforcement mechanism, referred to earlier.) Like most of the book, the writing is as dense as most detailed architectural designs and sometimes sleep-inducing. But Gutmann's writing style is clear, concise, and sometimes funny. Gutmann's writing talent makes even descriptions of "Access Control List for public-key/certificate access" and "Access Control List for an attribute that triggers an object state change" endurable.
Verification techniques for the security architecture are a major theme of the book. Anyone who has attempted to verify that software does what it was specified to do, especially in the security field, will find Gutmann's insights worthwhile reading. This is especially true for anyone who has ever done a Common Criteria-based evaluation, or a verification employing any of its ilk. Gutmann makes an excellent point about the semantic pitfalls of formal methods: "As with ISO 9000, it's possible to produce an arbitrarily bad product but still claim it's correct, since it complies with the paperwork."
Cryptographic Security Architecture also contains the obligatory chapter on random number generation. The chapter includes more of Gutmann's trademark insights. He discusses many software and hardware implementations, including the generators contained in: PGP (Pretty Good Privacy), /dev/random, ssh, Capstone / Fortezza, Intel Pentium III, Microsoft's CryptoAPI, cryptlib, and others. Random number generation flaws abound. For example, he discusses the flaws in the ssh and SSLeay/OpenSSL generators that make it possible to "...suck infinite amounts of state information out of [the random number generators] by repeatedly connecting to the server..."
Towards the end of the book, Gutmann includes a dessert-like discussion of hardware encryption modules. Gutmann's predilection for security hardware is evident as he writes about problems with crypto on end-user systems. This chapter includes all sorts of cryptographic hardware including the designed-for-hostile-environments HiDan embedded PC. One interesting technique to secure modules like the HiDan is to pour a hardening material (e.g. epoxy) into the chamber before sealing it shut.
Regarding the book's construction, while the references are excellent, the glossary and index are poor. Even if you rely on external sources for acronyms, as the author suggests, some of his acronyms are not included in the glossary. For instance, it took me awhile to determine that CMP stood for Certificate Mismanagement Protocol. The index is also oddly incomplete, considering Gutmann's otherwise good documentation habits.
Conclusion I expected Cryptographic Security Architecture to treat the topic of security architecture in a general way, offering many alternatives for designers to ponder while designing their own security architecture. The book does this, but often Gutmann whittles down the prudent design options to one, with most paths arriving at a single destination, namely Gutmann's cryptlib. Don't get me wrong: It's good to be decisive when faced with many architectural tradeoffs, and the ugly alternative is all too often design paralysis. And it's no surprise that cryptlib, according to Gutmann, contains the best architectural elements - he is the author of both the book and the toolkit. Still, the homage to cryptlib often made me unsure that a wide spectrum of design options had been considered: Did the security architecture spawn the cryptlib implementation, or did the implementation spawn the architecture?To be clear, the strong points of the book (and concepts therein) far outnumber the weak ones, and I highly recommend it to anyone interested in security architectures, verification techniques, and cryptographic software and hardware in general. Simply put, the book is excellent and it should expand most reader's knowledge of cryptographic security.
You can purchase Cryptographic Security Architecture: Design and Verification from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Four comments, all troll. Somebody do something.
Tom St. Denis has a nice crypto library at libtomcrypt.org. I like it, anyway.. it's worth a look :)
It's too much of a hassle at the computer level. You just need a guy checking the door at your work. We pay a high school kid (part timer) and it's been great for us.
I fail to see how this "cryptography" is anything more than another attempt at making nerds seem valuable. Self-promoting sons of bitches gonna get swirlies if they cross my path.
Had to look it up. Now I will never be quite sure if some is saying 'A pain in the ass' or a 'A paean in the ass'. They mean very different things.
What worries me all the time is security concepts being opened to the public.
If there are public information on how to build an ATM. Doesn't that technically make the ATM crackable from a reverse engineering standpoint. This pretty much can apply to anything.
He is prolific in the security field, and Gutmann's website at the University of Auckland ...
has just been hacked.
Quick synopsis of the book (if you don't have time to read the whole review):
"A cryptographic security architecture constitutes the collection of hardware and software that protects encryption keys and other related security parameters from misuse. If the process used to generate the cryptographic code is insecure then even the most sophisticated protection mechanics will not do any good. This topic is extremely important, especially for "embedded"-hardware products and services like smart cards. The author offers a novel design that allows for a great deal of customization."
Isn't it The Passion of the Christ Security Architecture?
J.C. was very well secured; those fancy nails has large, flat heads on them so he couldn't slip off. Rumour has it they were going to resort to washers before they found those.
Trolling is a art,
"If you were plowing a field, which would you rather use? Two strong oxen or 1024 chickens?"
I'd go with the chickens, but then again, I'm a dirty hippy.
LOL Moderator didnt look at the posters name... Tom St Denis... or LibTomCrypt
A psychopath can't tell the difference between right and wrong. A sociopath knows the difference - he just doesn't care.
Tom St. Denis si teh incompetant programer!
Also, I would avoid any of his works until the allegations of child/dog rape are resolved. Search google news for more on this.
Looks to be a good book. I'm planning on getting a copy ASAP ... no doubt the DMCA will censor this book (it has provisions against crypto technology) before too long. In these times of censorship and technological tyranning, I feel sad to be an American :-(
For all of those moderators out there that are unaware, the above post is indeed funny.
From Dictionary.com:
paean also pean
n.
1. A song of joyful praise or exultation.
2. A fervent expression of joy or praise: "The art... was a paean to paganism" (Will Durant).
3. An ancient Greek hymn of thanksgiving or invocation, especially to Apollo.
So "A paean in the ass" or "A [fervent expression of joy] in the ass" is indeed very different from "a pain in the ass."
><));>
The funny thing is that Cryptlib is supposedly GPL, but it contains cryptography code by Eric Young (author of the original ssleay that became OpenSSL). Eric Young's code has an advertising clause. Hence, some of the code in the supposedly GPL'd cryptlib violates the GPL.
I think all the crypto-books are wrong. One-time pad is only secure based on the assumption that random numbers do exist.
Yes, the Fedora Core binaries are all developed under GNU/Linux tools, like "vi" and "gcc", then ported to Visual Studio Pro dotNET and built/tested under Windows 2K before the final release. This enhances the user experience and decreases download time.
True. Security through obscurity as a bad practice only means one thing. When designing crytographic algorithms, you should not bank on the obscurity of the algorithm giving you security. Kertchoff's Law is that you should assume the attacker has full details of the algorithm. All the security should rely in the key. That is, knowledge of the algorithm shouldn't be why you think your system is secure. That's all it means!
"Mother's day weekend" isn't that sweet?!!! Guess the little punks shoulda gotten her something better than a homemade card with "mommy" on in in macaroni.
His criticism goes further to say that some security toolkits 'lack real security features altogether.' It comes as no surprise, then, that his recent book... is a 320-page paean documenting... his (own) security toolkit.
Wouldn't it be more helpful, not to mention better motivation to purchase his own security toolkit, if he were to go into more detail of what is wrong with other toolkits than just saying they 'lack real security features altogether.'
Why not write a short critique of other toolkits, ideally explaing advantages and disadvantages each one has..... or is this not supposed to be a book on Security in general, but just documentation on his own toolkit?
I suppose even if you don't want to buy his toolkit you can get ideas from reading about it.
But I may not fully understand the capabilities of the security policy scheme. Perhaps, when using Gutmann's cryptlib, it is impossible for the toolkit user to configure an incoherent policy. In George Orwell's 1984, the Party worked to deconstruct the English language so that only 'legal' speech could occur. As designed, Newspeak would make illegal statements unspeakable --- and in time, unthinkable. I'm unconvinced that Gutmann's security policy scheme is such a controlled means of expression, where only safe security policies can be spoken. Granted, one could always use the predefined policies, but this path undermines a chief design goal of the architecture: a flexible security policy.
Problem with this is that Managment who don't understand the software are often making the decisions, and that is why there are incoherent policies. Maybe if you have pre-defined policies to work with, all of which will work, then Management can choose from the pre-defined policy, resulting in much less hair pulling frustration to the admin.
Promote Sensitivity on Slashdot, make me your friend.
Having not read this book, I don't know if the author addresses the issue, but one key potential weakness in many crypto systems is the math at the core of them. Although the difficulating in cracking many crypto systems scales exponentially with the number of bits in the key, no one can gaurantee that a given size key is intractable. The formula for the time required is a*b^N, but nobody can gaurantee that a and b aren't small numbers.
If some mathematician creates an easy way to factor large numbers (and they have been finding better and better ways to do this), then systems like RSA become vulnerable even if they use umpteen bits. Any math-based crypto system faces this challenge. Ironically, the strength of the system is, in part, based on the weakness of out understand of the math. Unless someone can prove that a lower bounds exists, the system is of unknown uncrackability.
Two wrongs don't make a right, but three lefts do.
Um jackass, you replied to the wrong thread. This thread was about the crappy full of bugs LibTomCrypt library.
Someday, I'll have a real sig.
Good FUCKING Lord, you're arrogant and stupid. The top-level post is correct, ignoramus.
So how can I trust anybody's crypto code?
For what it's worth, LTC is a fantastically architected crypto library. The utter simplicity of what Tom puts together is disarming, compared to the utter horror that ships with (say) OpenSSL. Both Dropbear (a very small SSH server) and MatrixSSL (a very small SSL server) have been built on LTC.
Plus, you get a crypto lib with Makefile.gba. That's Gameboy Advance. Yup.
--Dan
The second chapter covers the security architecture, which features such things as permission-based access, least privilege and isolation, mediation, and other expected elements. ... But three of the design goals represent the core philosophy of Gutmann's architecture: The separation of policy definition and enforcement mechanism, a verifiable design (practical vs. theoretical viability), and a flexible security policy.
It is worth noting that this is exactly what SELinux from the NSA was seeking to apply to Linux at a kernel level. The principle is to confine all user programs and system daemons to an absolute minimum required level of access. That is there is an access manager in the kernel that mediates requests. In turn, there is a policy manager (seperate from the access manager) that maintains policy. Effectively the access manager queries the policy manager and then applies whatever access decision the policy manager returns. This means buffer overflows don't get you anywhere - there is no root account with universal access to exploit!
The system is, in fact, even more flexible than that - seperate access managers exist for processes, filesystem access, and IPC (socket or System V), but the hooks are provided in a way that this is completely modular, and new access managers can be added/written for whatever else you want to control (database access for instance).
The point is, a very fine, well thought out, secure system for access conrol has already been implemented for Linux (and has been folded into the 2.6 kernel). People ought to be using it! If you're running a 2.6 kernel, see if you've got LSM compiled in, if not, do a recompile to include it. Example policies can be found here, and policy management tools (even GUI ones) can be found here. If you're serious about security, the you ought to to be using this stuff. If you're not serious about security, use it anyway and help make Linux as secure as we like to pretend it is.
Jedidiah.
Craft Beer Programming T-shirts
There's no point in criticizing today's solutions if he cannot offer a competing product which can be bought and implemented today.
Most people in industry (who would presumably be the most interested target market for encryption) want a crypto solution which is safe against the neighbor competitor and does not have to be safe against NSA or CIA. They want to buy ready-made, easy-to-implement solutions at good price - he does not seem to offer one?
Other crypto resources.
OK, I admit it I just wanted to use Google Sets for something.
Having not read this book, I don't know if the author addresses the issue, but one key potential weakness in many crypto systems is the math at the core of them.
Symmetric cryptography hardly suffers from any weakness in this area. Even an instant factorization or quantum computing would do little to change that.
Public cryptography on the other hand, must by definition rely on some mathematical relationship between the public and private key. Like e.g.multiplicationfactorization, but that is not the only option.
If some mathematician creates an easy way to factor large numbers (and they have been finding better and better ways to do this), then systems like RSA become vulnerable even if they use umpteen bits.
Not really. Say I have a trivial function like multiplication, which is theoretically O(1) (will take a little longer once you have a real bit-limited computer), while factorization is say O(N^2).
Now you invent a new O(N*ln N) factorization, or an O(N). Does it matter? Not really. You need a longer key, yes. But it's a finite improvement. Unless they can find a O(1) factorization, the system still works. And that, is very unlikely.
The only thing that has held promise of O(1) is quantum computers. But anything we've been able to make in a lab has about 10 qbits at most. I seriously doubt they can keep the quantum effects effective over the thousands of bits required.
Overall mathematics has hardly ever been the problem in any modern cryptosystem, there's literally dozens of them and I can't think of one remotely popular one that has been broken (except for CSS, but whoever designed and implemented that must have flunked out of any cryptography class...)
Kjella
Live today, because you never know what tomorrow brings
Yet another case for the +1, Sacriligious mod.
---- Just another spud server.
So "A paean in the ass" or "A [fervent expression of joy] in the ass" is indeed very different from "a pain in the ass."
Of course, the one could lead to the other.
C8H10N4O2 | Developer > Code
I don't believe that any software library is anything like a security architecture.
But when I looked around 2 years ago for the best crypto library to actually write code with, I settled on Wei Dai's Crypto++
http://www.eskimo.com/~weidai/cryptlib.html
Wow, you should really switch to decaf. If you get this worked up over a technical discussion, I can't imagine trying to discuss something controversial with you. I'd probably be beaten to death by your jerking knees.
That said, nobody ever said it was bad to have obscurity in the system, only that is was bad to rely on that obscurity to provide security. To use your example, it's okay that the protocol used in the microchip in your ID card isn't published on a web site somewhere -- as long as the act of publishing the protocol wouldn't make the chip insecure.
And yes, there are a lot of systems out there that DO rely on "security through obscurity". That does not make security through obscurity a good idea. (and yes, I am purposely repeating the phrase "security through obscurity", just to annoy you
I don't care if it's 90,000 hectares. That lake was not my doing.
"One interesting technique to secure modules like the HiDan is to pour a hardening material (e.g. epoxy) into the chamber before sealing it shut."
;)
Solving abstract problems with implemented ideas first??? Shame on you sir...
0.) post so late, no one will ever see this
1.) Epoxy potting compounds are NOT SECURE and only add to design and calibration problems during manufacture. See 1980's...
2.) Hardware Data encryption? Only possible with embedded recursive encryption algorithms that are dependent on unique internal protected key registers.
3.) Embedded security? If you mean Harvard architecture that's immune to overflows will prevent a privileged User from doing something stupid... lol
4.) Hardware communication security? Any discriminating algorithm must have a probable solution. However, the most secure systems I've seen use high speed synchronized internal clock offsets (not possible for satellite comm. For obvious reasons) and polymorphic encryption modules that mutate when exchanged between two nodes.
5.) Wireless comm.? Antenna-load-sensitive auto-adapting scatter-band UHF SAW based comm.
Hardware and software will always be vulnerable. Any programmer can tell you that Users never do what they are expected to do. Any hardware designer can tell you people rarely know what they want, never alone what the consumer will actually need or tolerate
Peter has permission/licensing rights for all the code contributed.
The fact some might also be available elsewhere under the GPL in irrelevant.
You do see the logical fallacy in this "logical implication" right? Nope, I think not - so much for humour.
Being a moderately competent programmer who can follow a spec. is all very nice, but arrogant posing (complete with self-belittling errors) makes you seem nothing but a fool.
I do not respect false modesty, but false conceit engenders universal contempt.
Q.
Yes, you can buy this.
In fact looking the some of the users on the cryptlib list many very large multinationals do use it.
If you're not serious about security, use it anyway and help make Linux as secure as we like to pretend it is.
Add the condition: and are up to the problems related to it.
Imagine helping some newbie getting some "modprobe foo: access denied" errors; (s)tracing a problem might be a lot more complex, if distros ship "really-secure" by default.
Though I agree; it would be 'a good idea(tm)'.
Well, that one is really down to the distributions, and what sort of security policy they ship with (presuming they were defaulting to having all this stuff on and working). I admit that the default NSA policy is not one you want to be throwing on an average desktop PC. Then again, it should be entirely possible to build appropriate policies. I hear Fedora Core 2 will be shipping with SELinux on by default, and a default policy set up, which makes good sense.
Put it this way, right now when you do a linux install many of the distributions ask a few questions along the lines of "Are you setting up a Server/Desktop/Workstation?" and "The level of security on this box should be Low/Medium/High/Paranoid?". All you have to do is have a few policies written, and install an appropriate policy according to how those questions were answered. Even a nice lenient SELinux policy will leave you much better off security wise than a relatively hardened standard box.
Jedidiah.
Craft Beer Programming T-shirts
For all of those moderators out there that are unaware, the above post is indeed funny.
No offence meant, but this made me chuckle. It's the star trek approach to humour: "the computer has analyzed your claim and detected a trace of sarcasm. this is entirely illogical. capt. kirk will now beat the sh*t out of you."
I'm not so sure that whether something is funny is something that research and analysis uncovers...
Posters recognized by their sig,