Thursday, January 27, 2022

Open Source Voting Machines: 2022-01

A year ago I posted a teaser of some work I'm doing on Open Source Voting Machines.

The ballots are looking a lot better now. There's a proper header and 'how to vote' instructions. The big feature I've been working for the last month is ballot recognition. Given a scan of any known ballot page, identify which precinct it is and scan the appropriate bubbles. With that I think this is now much closer to being a practical system where a central scanning operation could receive absentee ballots and precinct ballots and scan them all. All this with no barcodes, it's 100% human readable. This can be important psychologically to voters because there are no mysterious markings for people to get suspicious of. Most places I've voted still have a plain serial number on each ballot to prevent duplication, that can be addded if desired.

The test ballot I'm generating is based on random words from the Linux dictionary, so just look at it visually and don't read too much into the nonsense ;-)



Thursday, January 20, 2022

Best Wordle Start Word: raise

 I'd seen a couple other posts and decided to do the analysis myself.

There are two word lists of 5 letter words; one with 2315 words and one with 10657 words. Others have noted that the shorter list is probably words that could ever be a solution to wordle, and the longer list is things that will also be accepted as guesses. Linux /usr/share/dict/words contains only 6112 words that match ^[a-zA-Z]{5}$ .

Doing letter frequency analysis on the union of these lists leads to the impression that the best word (with the most frequent letters) is "soare" (an obsolete word for a young hawk). Doing this just on the solution list yields "later" "alter" or "alert".

But we can do better. wordlehack.go does the following:

for each guess word:

  for each target word:

    for some {target} and {guess}, how many possible words remain?

  get the sum of remaning words for all targets

So, what word has on average the fewest remaining words after it has been guessed, across all possible targets? "raise"

This takes into account letter position, not just letter frequency. "arise" is not quite as good.

And if "raise" gets you nothing, the best next word is "clout".

So, there you go, go forth and be more reputable among your peers. raise your clout.

---

Source code (jupyter notebook python and Go)

https://github.com/brianolson/wordlehack

Go play the game

https://www.powerlanguage.co.uk/wordle/


Tuesday, January 4, 2022

Aerial Survey with Open Drone Map

Open Drone Map promises to be an open source tool chain that takes a set of aerial photos and turns them into a map with 3d reconstruction. Last summer I took a bunch of aerial videos hoping to feed them into a process like this. I hadn't researched the details of the tools I'd use to do it, but I vaguely knew they were out there.

I wish I'd known two rules for working better with ODM:

  • Fly high, look down (no horizon in the shot)
  • Take stills, not video (no motion blur, my drone adds GPS tags to stills). It looks like the system will work better with 20-40 stills than all those frames of video.
But still, I was able to get some mediocre results out of ODM with what I had.

I forked ODM and made a branch with setup and run that doesn't use Docker. (branch "no_docker")

I used ffmpeg to get jpeg frames out of my video. Here grabing a section from 3 minutes 24 seconds to 4 minutes 48 seconds, at 2 frames per second, to a directory of images:
ffmpeg -i 'source.MP4' -ss 3:24 -to 4:48 -filter:v fps=2 /path/to/odm/data/images/%05d.jpg

Then from the ODM source dir, I activated the python venv and ran the ODM wrapper script:

(source odmve/bin/activate && ./run.sh --project-path /path/to/odm data)

I'm hoping when I go back and scan the area with what I know of technique I'll get better output. The system is tantalizing enough that I want to do more.

Tuesday, August 10, 2021

Defcon 29 (2021) Voting Village notes

I watched all the talks, some cought my interest and I took notes.

Defcon 29 (2021) Voting Village speaker abstracts and bios


Defcon 2021, welcome to Voting Village (NO CONTENT)

https://www.youtube.com/watch?v=YIua4a_Jj-U


Hacking to Save Democracy: What Technologists Need to Know About Election Administration

Eddie Perez (OpenSourceElectionTechnology/TrustTheVote)

https://www.youtube.com/watch?v=2cmGTuepFBQ

onsite machines often use removable media for data transfer (and software update)

80% of the market is two vendors, 95% in top 3 vendors

15-year unpatched windows 2000. LOLSOB!

separate Federal and State certifications

Federal "US Election Assistance Comission" certifier & standards org

9 vendors are certified

(~40 State rules)

Certification may be on one strict version - No updates! Not even security patches!

trustthevote.org/EA-resources

A Deep Dive on Vulnerability Disclosure for Election Systems

Tod Beardsley (Rapid7, Texas)

https://www.youtube.com/watch?v=BsLgWinw3Fs

security.txt tells people how to contact you for security disclosure

SEO: vulnerability disclosure security $ORGNAME

Federal "US Election Assistance Comission" certifier org

9 vendors are certified

5/9 have a 'vulnerability disclosure program'

Wireless Odyssey or why is the federal government permitting devices with wireless networking capability in federally certified voting machines?

Susan Greenhalgh

https://www.youtube.com/watch?v=0MyyW9Q3nQk

she's on a huge rant against having any wireless connectivity possibility in election devices ... and that's going to get harder as more and more things have it by default. e.g. Couldn't build with a Rasberry Pi or any common tablet. This will increase expenses!

I disagree. Software disabling of radios is enough. Nothing can turn them on from the outside. If you can get in and turn them on to enable a hack, you have already hacked the device.

A Journalist’s Perspective on Fake News

Bob Sullivan (NYT/Duke)

https://www.youtube.com/watch?v=GplLmG6JHm8

'psuedo event' news

boring.

Are Barcodes on Ballots Bad?

Kevin Skoglund

https://www.youtube.com/watch?v=jqgr488aKj4

[my hot take before listening: YES]

ES&S 2011-2014 introduction of assistive voting machine

ES&S, Dominion, Unisyn

ES&S Code128-C - 6 digit candidate identifier which maps to timing mark grid bubble coordinate

vote in barcode and vote in text

Dominion QR-code (or multiple QR codes)

QR-code binary mode, densely packed

vote bubbles are a bit stream, bit per bubble

HMAC signature

Unisyn

receipt tape

custom barcode ('compressed' vote bubble grid)

also some Code128

barcodes ARE FUD PRONE!

and unneccessary

Dominion switched from barcode to marking bubbles at Colorado request

Hack the Conspiracies

Barb Byrum (County Clerk of Ingham County Michigan)

https://www.youtube.com/watch?v=M2nKLZu8_R8

~1500 local election regimes in Michigan

rundown of bogus election FUD

Kickoff Remarks (recorded in-person in Las Vegas)

Harri Hursti

https://www.youtube.com/watch?v=CzTko6PzI64

Inventory of hardware they had on hand to take apart and hack

Keynote Remarks

Commissioner Thomas Hicks

https://www.youtube.com/watch?v=LJ2Z--ONVDk

EAC

Secrets of Social Media PsyOps

BiaSciLab

https://www.youtube.com/watch?v=6pse_lOyT14

How to Weaponize RLAs to Discredit an Election

Carsten Schürmann

https://www.youtube.com/watch?v=z8yUes4Uyg4

a surprisingly small number of ballots can be sampled to validate an election. This could be a source of FUD.

High Turnout, Wide Margins

Brianna Lennon, Eric Fey

https://www.youtube.com/watch?v=JB0eDqriQMk

elections officials run a podcast about how elections work

https://anchor.fm/highturnoutwidemargins

Keeping Your Information Security Policy Up to Date

Sang-Oun Lee (Chicago election official)

https://www.youtube.com/watch?v=nIW-HHIumVk

Social Media Security = Election Security

Sebastian Bay (Swedish Defense cybersecurity)

https://www.youtube.com/watch?v=6Xl9lopy_Uo

For only 300 euros they were able to buy fake engagement on social media platforms and drive up their message.

fb getting better

twitter best at anti-abuse

instagram much easier to manipulate than fb

tiktok is the newb, easiest to manipulate, might be getting better

New Hampshire SB43 Forensic Audit

Harri Hursti

https://www.youtube.com/watch?v=YSHQK2zZxwk

Windham, NH election Audit May-June 2020

Many systems with published vulnerabilities from 2007 are still in use in 2020.

Many NH elections are hand counted! (smaller towns)

300 vote discrepancy between machine and hand recount (out of ~10,000 total votes). Weird partisan pattern in that gap. Race was 8 candidates, pick 4.

AccuVote optical scan (very old). Totally weird 80186 embedded system. ~143 kB for kernel and app. (security through obsolescence?)

two hand counts agree, 4 different machines get varying results.

In a few races, machines consistently under-recognize votes

(Some scanners have bulit in 'features' like punch-hole-removal that can screw with ballot scanning!)

mailing out vote-by-mail ballots through a paper folding machine

folds across bubbles cause misread

ballots re-counted 6 months later counted better because they had been flat in stacks

'offset printing powder' fouled a ballot scanning machine

extensive check of tech hacking found none; just physical oops screwups.

Why Hacking Voters Is Easier Than Hacking Ballots

Maurice Turner

https://www.youtube.com/watch?v=4F5noztGSFw


Sunday, June 20, 2021

Datas for Dadas

I got curious and started digging through the Social Security Administration's baby name database.

They registered 3,305,259 baby names during 2020. E.g. there were 17,547 babies named Olivia and 19,690 babies named Liam. They also record these babies as F or M so we know that Olivia was 17,535 F to 12 M and Liam was 19,659 M to 31 F.

Wednesday, February 24, 2021

Energy Policy Geekery and Cutting CO2 Emissions

2018 US CO2 emissions:

1.2 trillion tons CO2 from transportation fuel (gasoline/diesel)

1.2 trillion tons CO2 from coal for electricity

0.6 trillion tons CO2 from natural gas for electricity

(And more, but those are the biggest identifiable chunks that stand out, the biggest usage sectors of oil, coal, and gas.)


So, electrifying cars and trucks would be cool and we should do that too, but making the power grid sustainable is something we can do with big policy hammers.


sources:

https://www.eia.gov/totalenergy/data/monthly/pdf/flow/petroleum.pdf

https://www.eia.gov/totalenergy/data/monthly/pdf/flow/natural_gas.pdf

https://www.eia.gov/totalenergy/data/monthly/pdf/flow/coal.pdf

https://www.epa.gov/energy/greenhouse-gases-equivalencies-calculator-calculations-and-references


Wednesday, January 13, 2021

Open Source Voting Machines

Below is an automatically laid out ballot, a ballot that was printed, marked, scanned, and then realigned to match the original, and the bubbles found in the image. This is all possible through open source software I've written in 2020.

The source is up on github in a couple chunks:

https://github.com/brianolson/ballotstudio

https://github.com/brianolson/ballotscan

It's mostly Go code with some Python for PDF rendering because I found a handy library for that. There's a TODO list with things like:

  • Put a proper header on each sheet
  • Include how-to-vote graphics
  • Full unicode font support (CJK, etc)
  • Scan a whole stack of paper and emit well formed cast-vote records
  • Support judge-retention issue types (yes/no should a judge stay on)
  • Support Ranked Choice Vote bubbles
So, there's a ways to go before it can be deployed to actually count votes, but I think there's a good core of functionality there. If someone wanted to run a no-frills vote of one ballot type that fit on one sheet of paper I could probably finish that amount of infrastructure in under a month. Otherwise I think my goal is to get this ready for a real election for fall 2022. There should be a long timeline of demos and tests before we trust a real election to this, but also the trust doesn't have to be 100% because the ballots are still just marks on paper and we can always hand-count them, and that's a good thing.