As a computer programmer I can tell you that it's not difficult at all to write polling software that would be error free. It's also not that difficult to create a paper trail, atm machines have been doing it for ages.
Making sure that the systems do not have malicious code would require a checksum and code review. Again, this is not breaking new ground. Every time I download unix software I have to option of using a checksum to ensure that it's the right code.
The real problem behind reliable electronic voting has to be political because the technical challenges are more worthy of a college project than a professional programmer. (Ok, you'll want real pros on something this important but it's still not hard.)
The problem isn't with accurate software. Diebold and others are creating hardware and software that is vulnerable to attack. At one point NC was going to decertify a number of machines, but I don't know what happened to that (it dropped out of the news).
Search this on freedom-to-tinker.com and eff.org to see some of the work computer scientists have done to reverse engineer and test the security of these machines. Any yahoo with 5 minutes alone with a voting machine, a USB thumb drive, a hotel bar key and the right software could make a major difference. Some systems could even be infected back to the main county office and the back out to the regional boxes.
Also, checksums are nice, but they don't tell you shit if these things update themselves AFTER the election. As long as they are allowing physical access and are working towards a situation where there is NO paper trail there is a major vulnerability.
Check this (worst case):
1. Machine is loaded with new software for election.
2. Joe Rabid (rabid member of party X) joins his county election commision to help out at the booth.
3. Joe builds or is provided a USB drive with the software.
4. Joe helps move the voting machines.
5. Joe gets some "alone time" with a machine.
6. The machine joins the voting system network as voting day begins.
7. The machine transmits a piece of software that backs up the voting machine images (so we have our good checksums for later)
8. The software then backs up and modifies the root server to send the modified code to all other voting machines.
9. End of the day, timer goes off. Backups are restored, checksums are restored, votes have been changed.
I REALLY simplified that user story, and in most cases someone would have to break each voting machine. BUT, if there is enough storage in the voting machine, it could concieveably restore the software at the end of the day and the only thing left is the timer. OR the "hacker" could have another USB with the original image.
Imagine how much easier this would be if someone in charge wanted to change the results. No checksums, a more subtle victory, etc.
J