Disk encryption, backups, and your threat model

In response to my two entries on some of the problems with full diskencryption, several people have suggested that the answer is backups.At this point I want to note that the EFF's suggestion is specificallynot just disk encryption on laptops, but disk encryption on everycomputer you own . Given this, we now get to talk about the threat modelyou want to assume, which is computer security terminology for 'what areyou worried about and want to prevent?'

One fundamental security constant about backups is that


How to lose your data with full disk encryption the easy way

In the last entry I wrote that some full diskencryption schemes could cause total data loss on occasions other thanyou forgetting your keys (or having the entire disk die). A commentatorthen suggested dealing with the key loss problem this way:

Many systems support multiple keys (e.g. dm-crypt). Just keep onesealed in a safe.

Unfortunately, this is a great way to increase your chance of total dataloss (in one of the ways that I was thinking of). In fact


The drawback of full disk encryption

Via Hacker News I saw that theEFF's suggested New Year's resolution is full disk encryption onevery computer you own .When I saw this I did something halfway between wincing and grindingmy teeth. The issue is that full disk encryption has a significantdownside, and because of this downside choosing full disk encryptionis making a much deeper choice than you might think.

The downside is simple: the failure mode for meaningful full diskencryption is catastrophic data loss . If you forget your passwordit is game over


An example sort that needs a comparison function

In reaction to my entry on Python 3 dropping the comparison functionfor sorting , some people may feel that asorting order that is neither simple field-based nor based on a computed'distance' (the two cases easily handled by a key function) isunrealistic. As it happens I can give you a great example of a sortorder that cannot be handled in any other way: software package versionson Linux systems.

For simplicity (and because I know RPM best), I'm going to talk about


My thoughts on the mockist versus classicalist testing approaches

To summarize aggressively, one of the quiet long-running disputesin the OO test driven community is between classical TDD, where youuse real or stub support classes, and mockist TDD, where you usebehavior-based mock objects. My guide on this is primarily MartinFowler (via Jake Goulding ).Jake Goulding summarizes the difference as stubs assert state whilemocks assert messages (or method calls). I'm mostly a classicalistas far as testing goes for no greater reason than I generally findit easier,


Why CA-based SSL is not likely to be replaced any time soon

A whole lot of things have been written this year about better versionsof SSL designed to get away from the many practical weaknesses of thecurrent CA-based SSL model (you know, the one where CAs have terriblebusiness practices, get compromised, and get leaned on by governments).Unfortunately, I don't think that any of them are likely to catch onany time soon, because of what is essentially the inverse of the falsepositives problem .

The reality is that forged SSL certificates are in general a


Why I don't like Python 3 dropping the comparison function for sorting

One of the changes that Python 3 has made is that, to quote the documentation :

builtin.sorted() and list.sort() no longer accept the cmp argument providing a comparison function. Use the key argumentinstead. [...]

I feel unreasonably annoyed about this change. At least on the surfacethere's no obvious reason why; basically all of the uses of a comparisonfunction I've ever used are to pick a specific field out, and that'shandled much better


An empirical exploration of whether spammers take Christmas off

There's a vague mythology that spammers take holidays off, or at leastsome spammers do. I decided I was curious enough to see if this wastrue, at least as far as our own data goes, so I looked at our filteringsystems's statistics. This actually gets into interesting issues,because Christmas fell on a weekend this year plus you'd expect somedegree of day to day fluctuation.

(For bonus complication, a month ago includes American Thanksgiving,which spammers might also partially take off


Blog entries should have visible dates (usually)

There are any number of blog packages (and blog design templates)that don't make the date of entries very obvious; it's not in theURL, it's not at the top of the page, and perhaps it's hiding insmall type down at the bottom of the page. I've come to feel thatthis is a significant mistake, because of a combination of realblog usability and how blogs are written .

How blogs are written means that you probably never go back to


Python 3 from the perspective of someone writing new Python code

I've talked about Python 3 from the perspective of a Unix sysadmin and Python 3 from the perspective of someone withexisting Python 3 code ; now it's time for thefinal viewpoint, that of someone writing new code.

There are a bunch of practical difficulties with this, things likehaving Python 3 installed on machines and third party modules beingported to Python 3, but they're either gone or going away (and most ofwhat I write doesn't depend on third party modules). Ignoring