Hey! I'm David, cofounder of zkSecurity and the author of the Real-World Cryptography book. I was previously a crypto architect at O(1) Labs (working on the Mina cryptocurrency), before that I was the security lead for Diem (formerly Libra) at Novi (Facebook), and a security consultant for the Cryptography Services of NCC Group. This is my blog about cryptography and security and other related topics that I find interesting.
I bought my Defcon badge through Blackhat to avoid having to move out of the Mandalay and miss some of the talks. Avoiding the long-and-early-in-the-morning lines of Defcon and still getting a "real" badge is also part of the benefits. So after lining up for 30 seconds at a small stand between two talks, I received a plastic bag with a program printed as a newspaper and several CDs containing music (I assume, but who owns a CD player nowadays?). The Defcon badge was an old and white record, apparently every other year the badge is non-electronic.
Defcon was taking place in Bally's and Paris this year. The talks were in Paris, the rest was in Bally's. If you wanted to mix them up you had to change casino over and over. The two are connected but it's still a pain.
I missed the first two days of Defcon. Well the first day isn't actually an official one as it takes place outside in a public park. The "toxic barbecue" is a gathering where people bring booze and meat. The second day, the official Defcon first day, is a single track of introductory talks that takes place in their Conference Center.
So I arrived in what I thought was something that already started, but all of blackhat and others that wanted to get the real deal were now rushing to the Defcon's talks, all at the same time. It was packed, the lines were not moving and the staff was screaming. I was starting to miss the organization of Blackhat.
After leaving my first talk, I figured I would never go to another talk again. But they finally moved the 101 track (talks that are more for begginers) and things got better.
And then I went to visit the other side of Defcon, and that's where everything made sense
The Villages
My favorite part of Defcon was the Villages, small sized rooms (compared to the ones hosting the talks) where people of common interests gather and spend their whole Defcon together.
The crypto Village was great, apparently Diffie was there. Other renown cryptographers hung out there too and I met a bunch of people I had always wanted to meet :) (although most conversations were short, I guess others were more at ease in this kind of environment than me).
There were a bunch of posters everywhere on the walls. Here's my favorite one from Tony Arcieri:
Every hour, or 30 minutes, there was a talk. I left Defcon thinking that I should get more involved in this crypto village and that I should submit a talk for the next one.
There were maybe a dozen of other Villages. There was a lock picking one, but you had to buy your own gear so I passed (although I really wanted to do it).
After Defcon, sitting in the plane I read their "newspaper" and realized there was much more. There was a huge number of things that I didn't even know were going on. I could even have went and met some of them somewhere in the desert to shoot range.
I felt like I did nothing. I was a lurker and I took part in none of the cool things. Next time I will come prepared.
The Parties
The parties were definitely better than the Blackhat ones. The Facebook student party was the best I got to do, few people, no loud music and a "bingo" game where you were handed a card with a bunch of "can do X" or "is X at facebook" and you had to find a facebook employee/intern that could sign it for you. If you got a full row plus a column signed you won. This was awesome as it gave you an excuse to go talk to them.
There was also a party in a suite of the hotel were I got to meet a lot of really cool people in the field as well. The funny thing is that everywhere I went, even at these parties, a huge amount of the people present were from my company (NCC Group) which made things super easy to meet people, we also were all wearing the company Tshirt.
The Rest
There was a main room full of tables, people hacking, people playing, weird people handing me papers and tokens and telling me cryptic passphrase. Other weird people holding huge antennas and pointing them at everyone obviously looking for something/someone.
There was an OpenCTF space, and a CTF space as well with korean, french, american and chinese teams just sitting there on their computers and cracking stuff. I was not allowed to take a picture there :() Hacking contests are everywhere. The ambiance is nothing like Blackhat (Which is way more corporate). Between weird things happening on my wifi, the femtocell found in between the two casinos and the non-stop protocol downgrades on our phones, we felt like everyone was trying something on you.
A stand to cut your hair and make you a mohawk. A spaceX stand giving out posters.
A tesla hacking stand, someone on the floor looking at it. I heard they dismantled the whole car at one point.
and Finally... Hacker Jeopardy
This post makes no sense, but Defcon made no sense. It was awesome.
I'm writing a paper, which temporary (but maybe final) title is Timing and Lattice Attacks on a Remote ECDSA OpenSSL Server: How Practical Are They Really?
I'm explaining a few things about Lattices, taking some of the old material I already wrote for my last paper Survey: Lattice Reduction Attacks on RSA. But this time I wanted to be more pedagogical, with more graphics and illustrated examples. For reasons that I ignore lattices are seldom well explained on the internet thing. Here's a little preview, I guess you can re-use the images however you want, just don't copyright them against me :|
What are Lattices?
The Shortest Vector Problem:
The Closest Vector Problem:
How do we solve (approximate) the SVP? LLL:
and Babai's first procedure that approximates a solution to the CVP:
Blackhat is famously known for its vendor's room. A huge space where vendors knock themselves over to hand you their free goodies. There is also a "career fair" with a few tables where people are mostly interrested in hiring you contrarily to the other booths were people try to sell you something.
It was an excellent opportunity for me — coming from France and knowing close to 0 company names — to learn a lot about the field and who was a big actor there. I rapidly started recolting company names. Fireeye, Rapid7, Mandiant, Trustwave, Splunk... no I'm not paid to write that.
I also spent a few hours just recolting swag, just because I have an addictive personality. The number of stands giving away Tshirts was... impressive to say the least.
The RSA booth had an Oculus Rift demo, but it was disapointing and I wasted my time there staring at the emptiness of RSA's soul. I should have taken the clue seeing people taking off their headset making faces. I felt like with a better demo and controllers the execution would have been better, but after having tried the HTC Vive (see my blogpost), the competitor from valve and HTC, it's hard to be impressed by the Rift.
I saw people wining fitbit smartwatches, 50$ amazon coupon (damn you Jason!) and bluetooth speakers...
The whole thing is just entertainment if you're not trying to buy anything. There are raffles, games, and also after a certain hour... you get free beers (and even hard liquor at the Microsoft bar, but shhhh). And I didn't tell you about the cheese buffet, the baked-in-front-of-you cookies, the cupcakes everywhere, the... oh my!
Arsenal
I feel like I should mention Arsenal, although I didn't take part in it at all. From what I understood it's like briefings but for presenting a tool. Some people only swear by that but I felt like I would waste time trying to understand a tool I might have no use for.
Networking and Parties
The best thing I did while there was to attend the different parties. It's usualy short, like 2 hours, and you get free booze and sometimes free food. You get to meet a lot of cool people too.
If I had to re-do it I would avoid these loud parties though, they were nice as I got to see what big clubs in Vegas look like. But the music is often too loud and the bars so crowded that you end up doing nothing and talking to no one.
The trainer's party was the nicest I attended (but you need to be a trainer, speaker, etc...), Rapid7's was the most impressive.
Protip: always take the card that is inside your badge with you, you might get bounced if you don't show up with it since they always want to scan your badge.
inb4 people start complaining that this blogpost is not about crypto. It's not.
Diving in
That's it, I'm leaving Chicago for the arid desert of Nevada. Las Vegas, we meet again.
First let me say that I love Vegas, and I think anyone should go see what it looks like at least once in their life. Imagine a bunch of billionaire wandering in the desert, high on cocain, lost in their train of thoughts, laughing their ass off and suddenly coming up with the idea of bringing dozens of architects in the same desert and throw loads of money at them with no directions what-so-ever. Just for the lulz.
And that's how Vegas happened.
But I'm not here to eyeball at buildings and visit their guts. This time I'm here to mingle with nerds, geeks and other SAPs (Socially Awkward Penguins). I'm here to learn about the latest security vulnerabilities, the craziest discoveries of the best of the best. I'm here to meet with my tribe. I'm here to attend BlackHat and Defcon, the two biggest hacker conventions. And I'm seldom going to see the natural lights of our sun for a good long week.
But weird things started on the way, in the plane, when one of the hotess handed me a napkin. To me, only me. A white and clean napkin, nothing else. Did I have a booger? Nope. Was it something on my face then? Nein. The United Airline skeequing chairs, crying babies and eye-vessels blowing/nose congesting air conditionner were already killing me when we began to dive toward the unfamous LV.
Training
A couple of hours after I was in the Mandalay arpenting the corridors of its enormous conference center. Two huge floors filled by multiple rooms of different sizes. Not a living soul. I checked-in to get my badge and got a blackhat bag with a few goodies. The four first days of blackhat are reserved for trainings.
I waited in the hallways, enjoying the complimentary coffee & cookies while sitting in these huge sofas that were decorating the place. At 6pm I met with my coworkers and we went to play Craps
The next morning I woke up early, dressed and went to eat the blackhat breakfast in a huge room filled with empty tables, some of them had people sat across each other not saying a word. I ate, drank my coffee and went to the class room.
I spent two days as a trainer helping Tom Ritter, Sean Devlin and Alex Balducci giving the course Beyond the BEAST: Deep dives into crypto vulnerabilities. A mix of general culture in crypto, reknown attacks as exercises, cool crypto stuff we are excited about and some hours spent in the mathematics of cryptography. Every break we would go in the hallway, get some of the free pastries and coffee and chat a bit. Then we would go back to the class and teach. It went pretty well and I thought the convention would continue like that. I had no idea of the storm that was going to happen.
Briefings
I woke up and headed to the Conference, passing by the swimming pool that I had still not visited and that I would not visit for the rest of my stay. Attending Blackhat and the Defcon was pretty much staying indoors for a week. It was working, drinking, getting free stuff and meeting people without producing any natural vitamins.
The briefings are the talks. A bunch of people apply for Blackhat CFP (Call For Papers) and if they get accepted by a jury they are allowed to give a talk at the convention. People then have to choose between 8 talks happening at the same time (more or less), and then regroup in these gigantesc rooms to hear someone talking about something.
This is not training time anymore, we don't receive complimentary breakfast and lunch, hallways are now crowded and you can even see camera crews. Thing that you will never see at Defcon.
I started by going mostly to crypto talks or other subject I understood better. Crypto talks were rare. Not that it mattered since I was expecting this but I felt like the quality of most talks were meh and I rarely went out of a room with the feeling that I actually got something from it.
Jeff Jarmoc told me that a good way of taking something out of these was to not look at the schedule and to wander and go sit at random talks. This is an excellent idea that I'll try to apply next time.
Most of the time I felt like it could have been better explained, or I could have read about that/watched a video on youtube and understood it way better. Maybe it's just me and the format of attending a talk is not working in my case, but besides a few talks I left unimpressed most of the time.
One talk stood out from the others, Remote Exploitation of an Unaltered Passenger Vehicle by Charlie Miller & Chris Valasek. First it was entertaining, second it was telling a story. That's what a good talk should do no? Be easy to follow, and by that I don't mean easy, but pedagogical. The "conversation" format where Charlie and Chris talked like they were just talking to one another retelling a story to their friends was just awesome. I left out, read that they were giving the same talk again at Defcon and planned to go see their talk one more time. That's how good it was.
Joseph Birr-Pixton gave a talk last week at Passwords15 in Vegas. He talks about it in his blog and there is a video of his presentation. And it's really good! He says "my slides were 100% algebra before someone told me to put diagrams instead". And the diagrams are very well made, really comprehensible. I felt like I learned a bunch of stuff in a few minutes, which I rarely feel after watching a talk. So spare a few minutes will you!
As I'm doing some research on Homomorphic Encryption, and trying to watch everything from Gentry (lots of videos available and he has a soothing voice), and possibly read everything from him (which I didn't do so don't take my word). Here's a vocab list I did for reference:
HE: Homomorphic Encryption
leveled: no bootstrapping, only compute circuits up to a degree (public key grows with the depth of the circuit for f )
modulus switching: (some messy operation that they got rid of in bra12)
bootstrapping: to make a bootstrappable somwehat homomorphic encryption scheme into a fully homomorphic encryption scheme (Gentry recommends not to use this, although it was the original way of building FHE)
IBE: Identity Based Encryption scheme (introduced by the famous Boneh paper)
IBFHE: Identity Based Fully Homomoprhic Encryption scheme (introduced by GSW)
Alex asked me if I knew a way of comparing two sets of data: two players want to compare their guesses on some game, without giving away their guesses. You could think of Zero-Knowledge protocols, but this is usually a one-way proof. This is actually the Socialist Millionaire Problem and it is solved by doing a multi-party computation of a function (a comparison function in our case) on two inputs (the two guesses in our case).
In cryptography, the socialist millionaire problem is one in which two millionaires want to determine if their wealth is equal without disclosing any information about their riches to each other. It is a variant of the Millionaire's Problem whereby two millionaires wish to compare their riches to determine who has the most wealth without disclosing any information about their riches to each other.
But how to make it fair? What if one party stops the protocol at one point, for example when he knows if the guesses are the same or not, so that the other party doesn't learn anything.
This seems like a difficult problem to solve, but an interesting problem that crypto should be able to solve.
Alex found this paper: A fair and efficient solution to the socialist millionaires’ problem, where they explain what they call a "fair" protocol. And the solution is quite elegant! I haven't read the whole thing but the idea is basically to compare bit by bit (I guess under the surface they must use garbled circuits) so that if one party stops the protocol early, he only has one bit of advantage over the other one.
Finally, the fairness of the fair version of our protocol is straightforward. Both Alice and Bob are unable to compute the result of the comparison before the beginning of step 4. Moreover, during the fourth step, Bob's advantage over Alice is at most one bit. So, if Bob decides to abort the protocol and tries to search the remaining bits by exhaustive research, Alice needs no more than twice as much time compared to Bob to compute the same result.
I'm reading stuff about HE (Homomorphic Encryption) and so why not share what I find? Hopefuly there will be more than one post on the subject, and they won't be too long, and they will make others learn something new
So what is Homomorphic Encryption?
Well let's start at the beginning shall we? It all began in 1977 when RSA was invented. If you recall, to encrypt with RSA you take your message/number \(m\) and raise it to the power of the public exponent \(e\) modulo a product of primes \(N\) like so:
\[ c = m^e \pmod{N} \]
An incredible property of textbook RSA is the fact that the scheme is malleable. If you have a ciphertext \(c\) but don't know what number \(m\) it's decrypting to, you can modify that ciphertext \(c\) so that it would decrypt to \(3m\) or \(9999m\) or more generally \(x \cdot m\). Just take your number \(x < N \) and encrypt it, then multiply that to your ciphertext like so:
\[ x^e \cdot c \pmod{N} \]
And notice that beneath the encryption, this is equal to
\[ x^e \cdot m^e \pmod{N} \]
That is the same as
\[ (x \cdot m)^e \pmod{N} \]
and will obviously decrypt as \( x \cdot m \). Tell me if I'm going too slow =)
This is called Homomorphic Encryption, which you might not want as a property when using RSA and that's why you should never use RSA without a padding system. The state of the art being OAEP.
This made Rivest and his friends raise the question, a year later in 1978, can this property be extended so that any kind of circuit could be computed on encrypted data? (R. Rivest, L. Adleman, and M. Dertouzos. On data banks and privacy homomorphisms. In Foundations of Secure Computation)
Fully Homomorphic Encryption
The applications thought were mostly "data manipulation" where you would want someone to manage/operate on your data without seeing it. Think banks, search engines, the cloud.
A bunch of other cryptosystem that provided homomorphic properties came to life after that. For example in 1999 the Paillier cryptosystem, which unlike RSA provides additive homomorphic encryption (RSA provides multiplicative homomorphic encryption).
The open problem was still out there. Could you create a cryptosystem that would provide enough homomorphic properties, that combined could compute any kind of circuits. A Fully Homomorphic Cryptosystem.
Any circuit can be simplified to these simple instructions: AND, OR and NOT, which would only need a cryptosystem to have addition, subtraction and multiplication to be able to emulate these instructions.
Modulo 2 would be enough, look, if \( x \in \mathbb{Z}_2 \) (the set of 0 and 1) then:
\( \text{AND}(x,y) = xy \)
\( \text{OR}(x,y) = 1 - (1-x)(1-y) \)
\( \text{NOT}(x) = 1 - x \)
With these properties combined you could then compute any circuit on encrypted data (think of a function, like AES() or select all my data that starts with the letter A, etc...).
So, just a recap so that we're on the same page. With a FHE Alice could send \( c = E(m) \) the encryption of her message \( m \) to Bob, and bob could compute the function \( f \) on the encrypted data so that it would decrypt to a function \(f\) on the plaintext:
\[ D(f(c)) = f(m) \]
Note that in reality, we can't really compute \( f \) on the ciphertext directly, what we do is that typically a Homomorphic Encryption scheme is defined with a function called Eval (for Evaluate) which we would use like that:
\[ D(\text{Eval}(f, c)) = f(m) \]
In 2009, Dan Boneh's doctorate student Craig Gentry finished his thesis, unveilling the first FHE (Fully Homomorphic Encryption):
In a presentation to my fellow Ph.D. admits four years ago, Dan highlighted fully homo- morphic encryption as an interesting open problem and guaranteed an immediate diploma to anyone who solved it. Perhaps I took him too literally.
A bit later Gentry et al simplified that scheme using only hard problems on integers instead of lattices, this was explained as well in another article for CACM here: Computing Arbitrary Functions of Encrypted Data