Weblogs for dkg

Posted by dkg on Wed 6 May 2009 at 06:15
Last week at eurocrypt, a small group of researchers announced a fairly serious attack against the SHA-1 digest algorithm, which is used in many cryptosystems, including OpenPGP. The general consensus is that we should be moving in an orderly fashion toward the theater exits, deprecating SHA-1 where possible with an eye toward abandoning it soon (one point of reference: US gov't federal agencies have been directed to cease all reliance on SHA-1 by the end of 2010, and this directive was issued before the latest results).

Since Debian relies heavily on OpenPGP and other cryptographic infrastructure, i'll be blogging about how Debian users can responsibly and carefully migrate toward better digests. This post focuses on some first steps for users of gpg, and for Debian Developers and Debian Maintainers in particular.

The good news is that gpg and gpg2 both support digest algorithms from the stronger SHA-2 family: SHA512, SHA384, SHA256, and SHA224.

By using these stronger digest algorithms some of your signatures may be un-readable by users of older software. However, gpg and PGP (a proprietary implementation) have both had support for at least SHA256 for well over 5 years. Debian's gnupg packages have supported the full SHA-2 family since sarge.

However, most existing signatures in today's Web of Trust were made over the SHA-1 digest algorithm, which means that abandoning it immediately would cause the Web of Trust as we know it to evaporate. So we need to rely on SHA-1-based signatures until a reasonably-fleshed-out Web of Trust based on stronger digests is in place. Since we don't want to have to rely on SHA-1 for too much longer, we need to collectively start the transition now.

So what can you do to help facilitate the move away from SHA-1? I'll outline three steps that current gpg users can do today, and then i'll walk through how to do each one:

  • start making data signatures and web-of-trust certifications using stronger digests,
  • explicitly state your preferences for stronger digests when receiving private communications, and
  • If you are currently using a 1024-bit DSA primary key (which relies for signatures on a 160-bit hash, traditionally SHA-1), transition to a new 2048-bit RSA key.
The first two are simple, quick, and painless actions. You'll be done with them in minutes! The third is tougher, and while you can start it today, key transitions take a little bit of time to complete. Read on for a HOWTO!

This entry has been truncated read the full entry.

 

Posted by dkg on Mon 4 May 2009 at 23:46
Tags: ,
Providing city services only to users of specific proprietary software is bad public policy.

I just discovered that New York City's 2009 Summer Youth Employment Program requires Internet Explorer in order to apply online.

Even downloading the pdf version of the application to print out from the site is impossible under non-IE browsers because the actual pdf link is wrapped in some IE-only javascript. And even if you could download the PDF directly, any additional "online information to help you select a SYEP provider" is inaccessible for the same reason.

I just called 311 and filed an official complaint against the NYC Dept. of Youth and Community Development (DYCD), who sponsor the program.

I also called the number on the application page (1-800-246-4646), and spoke with "Karen" from the DYCD, who explained that the site was a New York City web site, and that it had been created by DoITT (the Department of Information Technology and Telecommunications) at the request of the DYCD, but that the DYCD didn't program it directly. She seemed to misunderstand the tech behind the situation, saying "we can't bring it to a higher level (like Firefox) because then it wouldn't work for everyone". I was happy that she understood that Firefox was a concern here, but the point is not to build the site "higher" to Firefox, but to use standard technology that all browsers can access for a public site.

Karen also seemed to think the situation was acceptable because the city youth "can always use IE on local public library computers" to access the site. Note that the applications involve submitting very detailed information (SSN, health insurance, family income, criminal record, selective service registration #, etc), which are things that i would personally be unwilling to submit over a shared public computer if i had any other choice. Furthermore, this crappy implementation decision encourages the NYPL to continue to spend limited resources on proprietary software to an out-of-state monopolist to run their computer labs, which is money that could be better spent locally (or even spent on books or something similarly quaint and library-like).

I'm frustrated. This is 2009. The application process for public services here should not require any proprietary technology, but it uses it gratuitously. This excludes legitimate citizens, and encourages Microsoft in its ongoing pursuit of monopoly status. Both of these are bad things.

I submitted feedback on the DYCD customer survey web site, and submitted two 150-word-limited(!) complaints to Commissioner Mulgrav of the DYCD and Commissioner Cosgrave of DoITT.

I'm sure they'd be interested in hearing from other people about this. Is this kind of proprietary lock-in what we should expect from a Mayor who cuts budgets city-wide except for IT? Where is all that money going? What is the city getting out of it?

 

Posted by dkg on Sat 25 Apr 2009 at 02:48
Tags: , ,
I just noticed Matthew Palmer's Insane/Brilliant idea of the day: he proposes to use large sets of USB serial adapters with a sheevaplug as a cheap serial console server.

As part of upstream on cereal, i feel obliged to mention that package as a tool for managing serial console farms like this. It's designed to run in a small footprint, stores timestamped logs for the consoles, supports concurrent remote access, and uses standard unix accounts (usually via ssh) to permit read and/or write access to each port. It has saved me exactly the headaches Matt describes many times.

However, i've had trouble getting multiple identical USB serial adapters to persist at standard device file locations across reboot. That is, if you have four pl2303 devices from the same manufacturer, it seems to be a crapshoot which one will be /dev/ttyUSB0 after you restart your system. I could find no distinguishing data in the sysfs to get udev to persistently key off of, anyway. if you know a way to do it, i'd be happy to see it!

Depending on how many ports you need, another alternative would be to use a sheevaplug with a multiport USB-to-serial adapter. While i haven't tried this specific hardware, it would remove the need for the hub, and potentially would mean you didn't need any extra power. I'm assuming that this device would give you persistent port naming, but i haven't tried it. Pricewise, it seems to be a win, too: $100 for the SheevaPlug and $100 for the 8-port adapter.

 

Posted by dkg on Wed 25 Mar 2009 at 06:27
So i'm a couple hours late for Ada Lovelace Day (in my time zone at least), but i wanted to mention Leslie Pack Kaelbling, an excellent technologist who has also had a significant impact on my life.

Her extremely short biography says (in full):

Leslie Pack Kaelbling is Professor of Computer Science and Engineering at the Computer Science and Artificial Intelligence Laboratory (CSAIL) at the Massachusetts Institute of Technology. Her research focuses on decision-making under uncertainty, learning, and sensing with applications to robotics.

She is also the founder and co-editor-in-chief of the Journal of Machine Learning Research, an active open-access academic collection which encourages the development of open source software for the field of machine learning. Cool stuff!

lpk was my professor when i was an undergraduate (before she went to MIT), and she opened my mind to a lot of great ideas about artificial intelligence, machine learning, robotics, and computation in general. Beyond the specifics that she taught, though, she also demonstrated what it means to be a spirited and engaged academic, both in research and in teaching. I think i first read Stanslaw Lem in one of her robotics classes (it was one of the stories from The Cyberiad), where she encouraged us to think not just about the technical possibilities of machinery, but also about the social possibilities. And it wasn't just theorizing: I also had the chance to do significant work with robotics hardware (both real and emulated) in a lab under her friendly and open supervision.

She developed a new introductory series of two classes for the school's Computer Science department, which i was unfortunately too late to take. They're designed to reach students who were discouraged by the traditional programming-heavy approach, and focus instead on the issues of theory, abstraction, and collaboration, with programming taking a subordinate place to understanding the nature of computation itself. Later in my scholastic career, I had the privilege of helping her out as a teaching assistant, working with her on various robotics projects, advising a handful of younger students with her, and having her advise my final-year project, where i tested and evaluated variants of the boosting machine-learning algorithm. Throughout all of this, and despite my typical collegiate distractions, Leslie helped me understand technical details and nuance about the possibilities that we have with these incredible machines, and how they might be made to interact with the real world with all of its contradictory input and uncertainty.

So here's to Leslie Pack Kaelbling: thank you for all your amazing contributions to our field, and for the things you taught me and the opportunities you shared!

 

Posted by dkg on Tue 17 Mar 2009 at 18:18
Tags: ,
I live in the USA. Our government issues many grants to scientists for research via the National Institute of Health. I recently found out about the NIH's recent requirement that publicly-funded research must be published freely online within 12 months. As you can imagine, i think this is a remarkably Good Thing (though 12 months seems a little bit long for fast-moving fields).

Apparently, John Conyers and several co-sponsors have introduced HR 801, which appears intended to overturn this remarkable policy, primarily for the benefit of the companies that publish scientific journals.

This bill is a shame, and i had hoped for better from Rep. Conyers, who otherwise has a remarkably positive record as a legislator advocating for government transparency and the public good. Sadly, his stance on so-called "Intellectual Property" seems characterized by heavy-handed legislation designed to benefit the parties already heavily favored by the current imbalanced copyright situation.

If you live in the US (and especially if you live in Conyers' district in Michigan), please send him e-mail or get in touch by phone and tell him to drop the bill. You might also check the list of cosponsors to see if one of them is more local to you.

If you want to read more, Lawrence Lessig has written about this issue, addressing Congressman Conyers directly in the Huffington Post. Curiously, Rep. Conyers' web site contains no mention of HR 801.

 

Posted by dkg on Fri 27 Feb 2009 at 19:44
I'm supporting a medium-sized (~70 regular clients and a half-dozen servers) LAN. It's a single logical ethernet segment, but it's built as a tree of cascaded switches. DHCP service is provided by a single host running ISC's DHCPD (via dhcp3-server).

DHCP itself is one of the single points of failure in the network layout. i'd really like to make this DHCP server redundant (so that i can take that host down for service if needed and leave the rest of the network intact). However, reading dhcpd.conf(5) makes me pretty worried that the failover stuff is not well-tested or widely deployed.

I've read Paul Heinlein's Failover with ISC DHCP, which makes it look not unreasonable, but i was wondering if people have other preferred mechanisms for providing DHCP redundancy. Do you have failover DHCP set up for any LAN that you manage? If so, what do you use? Are there any gotchas to watch out for?

I'm also concerned about the security implications. On a network that's not using IPSEC, i don't see any mechanism for the two DHCP servers to properly mutually authenticate. Is it really just by IP address? Could someone spoofing the IP address of one host corrupt the state of the other DHCP server? (i'm less concerned about them keeping network traffic private, since most of what they communicate is likely to go out in the clear on the wire anyway). Am i missing some clever authentication technique?

From a security point of view, i understand that there are more severe security problems with DHCP itself, of course (the protocol requires that the client trust the (unauthenticated) server), but that doesn't seem likes a good reason to introduce an opportunity to compromise any given server directly.

Your thoughts on DHCP redundancy?

 

Posted by dkg on Sun 15 Feb 2009 at 17:20
Recently, several people noticed that GnuTLS behavior did not match its documentation with respect to two significant security concerns, both regarding X.509 certificate validation: GnuTLS has been fixed upstream, and a fix to at least the latter problem has already propagated into etch via a security upload. The lenny packages should already behave as documented (no MD5 digests accepted in cert validation, v1 certificates not explicitly acceptable as authorities).

However, this means that if you use GnuTLS-linked tools to connect to systems whose certificate chains rely on either MD5 digests (in anything but the root certificate) or on v1 certificates for any of the certificate authorities, your connections may fail due to this stricter validation.

There are already several bug reports about broken LDAP connections and broken mail connections due to these problems, and there have been reasonable concerns raised on debian-release about this.

So what can you do to make sure that the infrastructure you rely on or maintain does not depend on these outmoded and insecure features of X.509? Read on for concrete steps for administrators, developers/maintainers, and end users...

This entry has been truncated read the full entry.

 

Posted by dkg on Wed 4 Feb 2009 at 19:56
I'm supporting a class of high school students who are new to programming, and will be learning some python. Most of these students are comfortable with computers, but not hacker types, and few if any of them have written code before.

I'm looking for an editor or an Integrated Development Environment (IDE) that won't be too scary for them, and will help them get used to the novel idea of writing code without simultaneously having to get used to the novel idea of an unfamiliar user interface.

So i can't expect them to pick up my beloved emacs, for example. But on the other end of the spectrum, i'd hate for them to try to write python in an word processor (i've seen people do it!). Here's what i think i'm looking for:

  • comfortable graphical interface -- these students have not used the command line before, and while they'll be introduced to the python shell, they should be able to write code and browse for files, etc. in the "normal" (sigh) way. This means, for instance, that tk-based interfaces are less good because they don't integrate with the common GTK-based UI.
  • syntax highlighting -- the students will need to figure out what's a variable, what's a function name, what's an operator, what's a reserved word, etc. Visual indications like font-lock-mode from emacs would be really useful.
  • whitespace management -- since python has syntactic whitespace, it would be great if there were convenient/intuitive ways for students to adjust the whitespace in their programs. Of course, it's hard to say what's going to be intuitive for other people. I like tab-cycling whitespace myself; are there other approaches i should be proposing?
Do you have suggestions for tools that work well for the above needs? Favorites? Are there features other than the "top three" i listed above that you think i should pay attention to?

FWIW, they'll be working in a labful of machines running Ubuntu Hardy for the most part, but i'm willing to port and deploy programs (particularly ones that feel like a perfect fit) if they're not available in hardy.

 

Posted by dkg on Fri 23 Jan 2009 at 19:24
One very convenient feature of Apple's hardware is the ability for their workstations to enter target disk mode. This effectively transforms the machine into a glorified ieee1394 (firewire) block device, which can then be manipulated from outside the machine using the standard SBP-2 protocol.

Is there a way to provide this same functionality from a running GNU/Linux machine? For example, i have a GNU/Linux system with a block device attached to it. I would prefer if the block device was available to a neighboring machine, but (for whatever reason) i'm unable to physically move it. However, i'm able to link the two machines via a simple ieee1394 connection. A "virtual target disk mode" server (or would it be better to say "an SBP-2 mass storage target service over an ieee1394 link"?) would be really useful.

One thing that occurs to me is that i could do some sort of networking abstraction over the link (using eth1394?), and then use something like vblade (an ATA-over-Ethernet target service) to provide a virtual block device to the remote host. However, this requires the remote host to run an operating system capable of dealing with these (more obscure) protocols, and i'd like this to work for any remote machine that knows how to deal with generic SBP-2 ieee1394 mass storage.

I know that in general GNU/Linux is at least as powerful and capable as the firmware that Apple ships ;) But it's possible that our community just hasn't gotten around to implementing something like this. Is this the case? My attempts to search for it haven't turned up anything, but it's entirely possible that i'm reading the wrong docs (or reading the docs wrong). Any pointers?

 

Posted by dkg on Thu 22 Jan 2009 at 05:32
Tags: , , ,
Poking around the web site for Law in Contemporary Society, a class taught this semester by Eben Moglen, (who is counsel for the Free Software Foundation and founder of the Software Freedom Law Center), i found Felix Cohen's Trancendental Nonsense and the Functional Approach, which (according to wikipedia) is one of "the most-cited law review articles ever written".

I haven't read the whole thing yet (and i'm neither a lawyer nor a philosopher) but it's fascinating reading. And from what i've read so far, it's a strong push toward directly addressing the values that lie hidden beneath our technical or mechanical decisions, and to avoid mistaking technical success or skill with a worthwhile outcome and clear goals at a societal level. This is something we software developers and system administrators struggle with as well (or at least i think we should). It's neat to get my head around these concepts from a different intellectual sphere, and a different era (74 years ago!) when the technical and mechanical tools i work with didn't exist in anything like their present form.

This kind of reading makes me wonder what works from Computer Science or Systems Engineering or Information Technology will have this kind of exhortative power and social relevance so far into the future. Do you have a favorite (or abhorred?) text from your field that offers the kind of moral and technical challenges that Cohen's work does?

 

User Login

Username:

Password:

[ Advanced Login ]

Register Account

Quick Site Search