Last year in May, a technical report we published online on the security analysis of the so-called “Citizen Card” in Austria received some press coverage. I noticed that some sites (e.g., the Wikipedia entry for the Citizen Card and a site that advocates paper-based elections) are now referencing that study. The digital signature discussions in Austria seem to reappear every couple of years so here is the story of that technical report, and a brief account of my take on things.
Back in 2005, when Chris and I were junior faculty at the TU Vienna in Austria, we decided to look at the security of the Citizen Card . There was a lot of fuss going on at the time about digital signatures, and there was a major effort to encourage people to use smart-cards and electronic signature systems for e-government services, health, and online banking.
The smart card systems that were being sold to the public did not have a digital display. Rather, there was a software application called the “secure viewer” that was supposed to show an authentic document before it was digitally signed. Hence, the user would know exactly what she was signing.
Clearly, anyone working in the security field does not need to be told that a software-based “secure viewer” cannot be guaranteed to be secure. Conceptually, this is not possible. One cannot build a “secure” viewer on top of untrusted software components (e.g., the operating system). Naturally, we were intrigued to see how much effort one (i.e., the attacker) would need to bypass the “secure” viewer, and sign arbitrary documents on behalf of a victim — without the victim’s knowledge.
Florian, one of our intern students at the time, accepted the challenge, and we started investigating the security of the Austrian Citizen Card. Florian went and bought a standard device that was being sold to the public (I think it cost something like 10 Euros back then), installed the software in a virtual machine, and started hacking away.
In short, our analysis effort of a couple of weeks resulted in an initially non-public paper. In the paper, we looked at the practical security aspects and possible weaknesses of smart-card-based solutions. More precisely, we described the security analysis of the path between the application that creates a document to be signed and the chip on the smart card where the signature is actually generated. After a general security analysis, we presented the case study of three concrete attacks against applications that make use of the Austrian Citizen Card framework (which provides support for digital signatures). The ﬁrst attack showed how an attacker can hijack an authenticated session that is established with an e-government web application. The second attack demonstrated how the content of a digitally signed mail can be manipulated. The third attack showed how a secure viewer application can be tricked into signing a different document than what is displayed to the user. Finally, we discussed possibilities to improve the practical security of current digital signature generation systems.
After we had written the paper, we sent it around to people who were involved in the certification, design, and promotion of the Citizen Card. The reaction we received was interesting. Basically, we were told that the system was certified to be secure if the system was not compromised and the user was not running code with admin rights. Our attack, I think, was thought to be unfair because we were attacking the system using a Trojan horse that we had developed. You might be thinking right now that this is not logical. Well, that’s what we thought too.
We sent the paper to ACSAC and attempted to publish it. We knew the topic was not novel, and we also knew that any security-aware person would understand that one cannot create a “secure” viewer on top of an untrusted platform. However, seeing that the public was, apparently, not aware of these issues, we thought that it might be good to raise awareness with a scientific publication. Unfortunately, the reviewers (probably rightly so) did not think that the paper was novel enough to be published. So we packed up the paper and put it in a drawer. However, whenever someone was interested and contacted us, we provided them with information, and we also actively worked with the Austrian RTR (i.e., regulation institution) to make the digital systems more resistant against analysis. Note that I write “resistant” and not “secure”. Whatever mechanisms were built in can always be reversed and disabled by a determined attacker as the defense mechanisms are implemented as software and rely on untrusted components.
In 2009, there was a major promotion effort, once again, for the Citizen Card and its use in the university student representation elections in Austria. A former student remembered that we had demoed the exploits we had created in our security course, and asked us if we had a paper. Hence, we decided to put the paper online as a technical report in case more people were interested in reading and understanding the findings. As a result, the report received some press attention in Austria and Germany.
Since we did our analysis in 2005, quite a number of similar reports and publications have been published on other supposedly secure e-voting systems. For example, our iSecLab friends at UCSB have published their experiences analyzing and breaking the California e-voting systems in this journal paper. As a result of this state-sponsored analysis and the wide media coverage the results received, e-voting systems in California were decertified. Also, there was a recent paper at ACM CCS by some folks in the US and India on the security of Indian e-voting systems.
In comparison, in Austria, the risks of the Citizen Card seem to be generally unknown, or simply ignored. Politics, I guess.
To wrap up, as Abe Lincoln said:
“You may fool all the people some of the time, you can even fool some of the people all of the time, but you cannot fool all of the people all the time.”