Linux Special Interest Group
of the Westchester PC Users Group

...December 17th 2002 Meeting...

Home |Past Meetings |Links |Map |Members' Notes |Electronic Freedom Foundation |Lessons in Linux |About

Here are Charles Campbell's notes on the December 17th, 2002 meeting. But first:

One more plea for support for the Electronic Frontier Foundation to head off the Hollywood suits, Software Moguls, and Publishers who are trying to lock up copyright and "Digital Rights Management" in ways that could destroy the Open Source Movement, Linux, and the Internet. The least we could do AND EVERY ONE OF US SHOULD DO SOMETHING is to join the Electronic Frontier Foundation to become better informed AND MAKE A CONTRIBUTION to help them continue the fight for our freedom!

Will Wilgus gave us a wake-up call on encryption

by showing us the inherent vulnerabilities of ANY encryption systems in use today or in the likely future. Clever programmers are beaten by faster computers and smarter crackers, so the situation is constantly in flux. Appropriate to our group, he said opensource (i.e. Linux Mozilla) encryption with careful usage gives us the best chance of at least knowing where we stand.

With awesome erudition, Will traced the history of encryption from the Persian Wars to the present. Claude Shannon (father of Information Theory) proved the ONLY unbreakable encryption method is the one-time pad, but it is unbreakable only in principle because: (1) sender and receiver must exchange the encryption key, making it vulnerable to theft or interception; (2) the key must be truly random, and no known method will produce a truly random key; (3) the key must be the same length as the text (try that on the Encyclopedia Britannica!); and (4) each key can be used only once. The Russians started using one-time pads in the 1920's after British politicians made public Soviet stuff obviously resulting from decrypted intercepts. Then they blew it in WWII by lazily re-using some of their key material.

The recent development of Public Key Encryption (RSA) avoids some of these problems, but introduced others. Any sender can use the public key, but only the receiver can de-crypt a message using his private key which is never disclosed. But encryption strength is a function of the length of the key (which is a product of two prime numbers, from which the public key private keys can be mathematically derived) as well as upon the cleverness of the encryption algorithm. Key length of 40 bits is child's play to break, and even so-called 'strong encryption' of 128 bits is vulnerable especially if used with a naive or compromised algorithm

The reason for avoiding proprietary encryption systems is that one has no assurance that the key-length is as advertized and that the algorithm is clever and uncompromised, and that there is no secret back-door for the benefit of the government, Microsoft, or a malicious coder in the vendor's company. Even the much-trusted Verisign has serious vulnerabilities, since their system of issuing certificates is naive, and they have no mechanism for revoking one which has been shown to be fraudulent!

So what can we do? Stick to opensource encryption (Linux Mozilla), keep in touch with the opensource community to track changes in the situation.

Will just sent (1/14/2003) a rich collection of further information related to his presentation (25 txt and rtf files including some of the slides that were illegible in the projector and a good bibliography on encryption). He assures me they have been screened for viruses, and I have put them on our web site: go to "Encryption".

He addresses the problem of what to do in more detail than I did above as follows:

"There was some comment on the lack of recommendations for what folks should do at the presentation. Partially this was due to the ad hoc nature of the talk and partially it was deliberate. Everyone's situation is different both in principle and in detail. What is to be protected varies from one person to another, one machine to another, and from one time to another. An attorney (or other professional) may have legal obligations to keep client information secure. Non-attorneys might not want their Quicken files (with their financial information, tax return stuff, ...) spread around. Others may want to keep information about amatory adventures secure. Different degrees of effort (time, money, learning about , ...) to secure the information will be justifable in these (and in all the other) cases. In principle then, the only ethical advice one can offer is to 1) learn enough about crypto to at least rule out most of the Bozo quality stuff and then chose among the remainder keeping in mind the value of what you are trying to secure with the crypto, or 2) hire someone to do the same (making sure somehow, that the person hired is not some Bozo Crypto rep him (or her) self). In either case, the crypto system chosen should:

1) use ONLY publicly known and unbroken encryption/message digest algorithms with key lengths sufficient to make brute force search infeasible by anyone.

2) use only publicly known and unbroken protocols (eg, for digital signatures or time stamping)

3) trust ONLY sources of information that YOU (not your consultant or anyone else) have explicitly decided are worthy of trusting the security of your information to. This specifically includes any use of "digital certificates" from any source, including any recommended by Microsoft, your uncle the Earl of Dartmouth, or your dog. That "everyone else" trusts doesn't mean that you should. Remember that PKI systems rely on 'digital certificates' whose only useful property is a claim that belongs to . It is in effect an electronic notary stamp. Nothing else, however whizbang impressive, is relevant. Would you trust a notary you have never met, is not licensed by any supervisory authority (however superficial), and whose stamp is accessible to whoever can get to or subvert the computer(s)? Maybe not.

4) use only crypto systems which manage (store, generate, use) keys very very carefully. Where are they stored on disk (if at all), how are they sent from here to there (if they are), ... ANY slop in this aspect of crypto system operation makes perfect choices (for all the other points here) pointless.

5) use only crypto systems which randomly generate keys (this is a hard problem and there are no good solutions) and which generate them on your site. NEVER accept any vendor that "streamlines" key generation in the interest of your or anyone's convenience.

6) use only crypto systems that run on secure operating systems. This is LARGE qualification, but a necessary one. If the key you supply to the crypto system is available to others through the local version of the ps command, or if the OS keeps it in the swap file, or ... It won't take all that much for an attack on the OS to subvert your crypto system.

7) use only crypto systems running on OS which are properly and securely installed, configured, and maintained. Not the same point as 7, but related.

8) use only crypto systems which have no whiff of snake oil about them.

9) always (ALWAYS -- no exceptions) use the crypto system you get properly. This means you (and all other users of it) must understand what proper use is, and do it. This means mastering some not so obvious things (reading the manual might be the first, sorry about that) and if the documentation is incompetent, incomplete, misleading, ... (all too common) understanding proper use of the crypto system may be impossible.

Open source has the virtue that those who can read code well can "reverse engineer" proper operation from the code, thereby avoiding the misleading instructions in the documentation. It also has the virtue that you can compile your own version from the source, reducing the chance of a Trojan Horse in a precompiled binary. It also increases the chance that someone in the public crypto community (who knows what he's about) will notice design or implementation blunders -- no guarantees though.

Checklists for choosing crypto systems are like too much strong drink for some of us. It's a vice I have sworn off, again and again. On the other hand, if you can choose your crypto system to meet each of the 9 points above, you'll increase your chances of avoiding some crypto blunder or other very considerably. No promises that you'll be secure, that the crypto system will be convenient to use, ...

There are no good, easy, answers. There is no solution which simply solves YOUR problem --regardless of any marketing claims. The XYZ package might be optimum for you, but knowing it is hard. It takes careful consideration.

Good luck with it all,

Will"

Bruce Keltz found a good source of info on encryption at www.ssh.com/support/cryptography/