Cigital was a software security consulting firm whose blog covered application security, agile security and vulnerability analysis before Synopsys bought it.
HN links its classic paper on cheating at online poker as a cautionary tale about poor random number generator seeding.
Cigital is hiring software security folks!
What we do: We're a software security consulting firm that helps build security into the SDLC. We work on a wide variety of projects involving static analysis, penetration testing, architecture review, threat modeling, red teaming, network pen testing, etc. We deal mostly with the private sector and the types of applications we work with are varied from mobile to webapps to video games.
We're all consultants so we tend to travel a fair amount. As I said, the work is varied and you can really focus the type of work you do based on your interests and skills. It's definitely a fun place to work. The people here are really smart and there's lots of room to grow your skills. We're looking for everything from interns to principal consultants and we have positions open all over the place including:
• Northern Virginia
• Boston, MA
• Santa Clara, CA
• New York, NY
• Bloomington, IN
• Seattle, WA
• London
You can read more about the jobs here: http://www.cigital.com/careers/jobs/
DO NOT apply directly to our website. Email your resume to cigitalrecruiting[at]gmail.com, along with a desired position and location. I have tons of tips to help you nail the interviews. (sorry for the personal email, but the amount of spam emails I have gotten after posting here is ridiculous, and unfortunately there is not a PM system).
Take a look here: http://www.cigital.com/papers/download/developer_gambling.php
They found a flaw in a REAL poker site because they were using a pseudo random number generator (and a stupid algorithm) and were able to know the order of the cards being used in the game!
>The RST exploit itself requires five cards from the deck to be known. Based on the five known cards, our program searches through the few hundred thousand possible shuffles and deduces which one is a perfect match. In the case of Texas Hold'em poker, this means our program takes as input the two cards that the cheating player is dealt, plus the first three community cards that are dealt face up (the flop). These five cards are known after the first of four rounds of betting and are enough for us to determine (in real time, during play) the exact shuffle. Figure 5 shows the GUI we slapped on our exploit. The "Site Parameters" box in the upper left is used to synchronize the clocks. The "Game Parameters" box in the upper right is used to enter the five cards and initiate the search. Figure 5 is a screen shot taken after all cards have been determined by our program. We know who holds what cards, what the rest of the flop looks, and who is going to win in advance.
Cigital - Hiring software security folks, product evangelists, product support engineers, sales reps, and a few marketing people!
INTERN, FULL TIME
What we do: We're a software security consulting firm that prevents e-bay incidents from happening. Static analysis, penetration testing, architecture review, threat modeling, you name it. We work with a wide variety of clients and products ranging from big banks to mobile apps to video games.
Almost all of our security people are consultants - so there can be a fair amount of travel involved. The work is varied so you can really focus the type of work you do based on your interests and skill. It's an amazing place to work - there's rarely a dull moment.
We have locations all over the place, including:
• Northern Virginia
• Boston, MA
• Santa Clara, CA
• New York, NY
• Bloomington, IN
• London
You can read more about our open positions here: http://www.cigital.com/careers/jobs/
If you're looking to challenge yourself or try something new, email me your resume at contact@bsamuels.net
Besides the performance difference, the main issue is the ideal of a perfect shuffle: each of the N! sorts ought to be equally likely.
(N.b.: this post ended up being mostly the same point as fhars, only phrased differently.)
However, this is tricky to achieve. It requires either:
- an infinite source of random numbers
- a psuedo random number generator whose pool size (the # of random numbers it can generate) is an even multiple of N! (If not, then it have bias towards certain shuffles almost by definition.)
Here's what happens when someone does it all wrong -- the wrong shuffle algorithm and, far more devastatingly, a poor PRNG choice:
http://www.cigital.com/papers/download/developer_gambling.php
(Consider that if your PRNG takes a 32-bit seed, there will be at most be 2^32 possible shuffles, even with a correctly perfect shuffling algorithm --- few enough for an attacker to pre-calculate every possible shuffle to use against you.)
Using a physical process is generally going to be harder to exploit than a software one. There's going to be the possibility of uneven distribution (customer order timestamps may cluster at certain parts of the day, rather than being evenly distributed), as well as the (granted, small) possibility that on some small site without Amazon scale, the attacker can generate enough entries that it can reasonably assume one of them will be picked by the random index.
One interesting story about exploiting a poor RNG in Online Poker: http://www.cigital.com/papers/download/developer_gambling.php
https://webcache.googleusercontent.com/search?q=cache:AdC18Y8C6UkJ:taeb-blog.sartak.org/2009/03/predicting-and-controlling-nethacks.html
is another one, where the PRNG seed for a shared Nethack server wasn't random enough, and could be discovered and synchronised for fun and cheaty profit.
Recently I listened to an episode of the Silver Bullet security podcast that had Steve Bellovin and Matt Green as guests, discussing this then recently released report. It's pretty sobering to hear how government decision makers just blow off tech warnings. Bellovin has a story from his stint as FTC CTO, and how easy it is for people to convince themselves that doing something technical isn't really that hard. They never come right out and say it, but Dunning-Kruger must be in the back of their minds.
https://www.cigital.com/podcasts/show-112/