start	end	text
8870	14230	Thank you very much. I guess that's a pretty good reason not to go to TorCon, but...
26200	32140	Okay, so quite a lot of people were over in the other room for my other presentation, right?
32140	39460	Yeah? Okay, cool. So yeah, this is my presentation. A little background about everything that
39460	45820	happened with other thing was I checked on the DEF CON website like last week to see when I was speaking.
46040	51920	And as you can see on the slide over there, like going along the left-hand side, it says July 30th.
52500	58320	And that's when I thought that I was going to speak, but I guess they moved me to July 29th or something like that.
58740	63580	And so I thought I was speaking tomorrow and I thought that I had an extra 24 hours to prepare everything,
63580	69900	but I didn't. And so in the middle of coding all this stuff together, I got a call from one of our friends
69900	75380	saying that I was supposed to be speaking right then, earlier today. And we were over at Caesars Palace,
75380	79780	kind of far away, and I don't know if you saw this big box over here, but it weighs about 100 pounds
79780	85300	and it carries all this crap. So it was a little difficult to get over here, and then once we got over here,
85300	90820	they just decided to put some other people on and move me somewhere else. But this is my talk.
90820	94840	I'm sorry that I didn't show up for the other one, if you guys waited in line or anything like that.
95800	99920	If you did wait in line and you're angry at me, go and have some more beer. I think we have some more left here.
103020	105220	You have to fight George first, I think.
111560	117200	Okay, so if you want to fight George, feel free to. The winner gets free beer.
119620	124400	Okay, so this is my talk. I'm going to be talking about basically cracking crypto on FPGAs
125240	127320	and some different things that people are doing.
131560	136640	And just if you don't know anything about me, I started this thing called DocBodenLabs.
136640	139740	We made BSDR tools. I did some smart card hacking stuff a while back.
140540	145400	I run TorCon. George helps out with TorCon. There's a bunch of other people here that help out with TorCon, too.
145400	147660	But it's in San Diego. He already told you the info.
149880	154660	I'm starting this company called Pico Computing. We've got our huge logo on the side of this thing.
154660	157580	We make FPGA cards that are really expensive.
160520	164840	If you have a lot of money, please buy our cards. If you don't, then buy somebody else's.
166660	171500	Our disclaimer. Educational purposes only. All that crap.
173220	176880	I'm going to be covering an introduction to FPGAs.
176880	179400	First of all, who here knows what an FPGA is?
180140	184480	Oh, wow. Awesome. I can just fast-forward through that, then.
184680	188080	Some GateLogic crap. Cracking with hardware.
188220	194060	I'm just going to cover some of the stuff that other people have done in regards to cracking stuff on FPGAs.
194320	199200	Cover some optimizations that you can use to speed up your code and hardware.
199200	205440	And introduce this program called Chipper, which we just named a couple days ago and just started coding a couple days ago.
205920	212060	It does Landman and NTLM cracking for Windows. It does it about 100 times faster than a PC.
212060	215940	On one of our tiny little cards that's a compact flash card size.
217180	227640	I have to safely remove this thing. Otherwise, our driver stops working.
227640	228980	There's some bugs in it.
238610	242750	PCMCIA card. This is our card that we make.
242750	247030	It's got a FPGA on it that cracks stuff 100 times faster than a PC.
248170	250410	It's just a compact flash card.
250830	252850	I'll cover more of the details later.
253590	259270	I'll give a demo of what this box does and give you some performance information.
260470	264090	First of all, an FPGA lets you prototype integrated circuits.
264870	270770	Basically, you write code. It translates directly into gate logic and stuff that runs on the FPGA.
273290	280950	There's the basic logic, boolean sort of stuff that you can do with gates and stuff.
283350	289550	You can implement adders and all sorts of other more complex gates using just really simple basic components.
290970	293450	You can chain them together and do all sorts of crazy stuff.
293450	301690	That's basically what electronics is based off of, just using small little bitwise operations and chaining them together to do more complex stuff.
302750	307290	You can also use gates to store values if you want to make memory.
307290	311290	Most flash memory is based off of a bunch of gates that just store values.
315070	318190	They can be implemented with electronics pretty simply.
321730	325350	Let's see here. Gates can be configured arbitrarily.
325390	329890	You just have a bunch of different gates on there. You can say, I want to connect this one with this one.
329890	332950	I want to connect this to this other component that I have.
333430	340030	Instead of designing your whole thing and burning it to a chip or having a bunch of small little gates that you connect together with wires,
340030	343990	it basically connects all the wires for you and has some basic components that you can use.
344590	350530	With an FPGA, you can create almost any type of logic. You're just bound by the size of the device.
352130	354170	An FPGA just looks kind of like this.
354170	359030	You have a bunch of CLBs that have registers and basic logic routing stuff.
359390	366530	Those are those little... I'm not sure if you can see it, but the red areas are composed of a bunch of little small cells.
367110	371970	Then there's input-output blocks, block RAM, digital clock managers.
371970	379210	You can also get FPGAs with built-in power PCs or built-in processors if you want to actually have a real processor.
380750	384090	There's a programmable routing matrix that allows you to connect everything together.
385770	390630	The pros of using hardware is you can do massively parallel stuff.
390630	393530	You have a bunch of gates that are pretty much active all the time.
393530	397250	You don't have to worry about just running one instruction at a time.
397250	399130	You can have a bunch of things running at the same time.
399130	402990	And you can pipeline stuff, which is basically kind of the same thing as parallelizing.
406290	412470	The other nice thing about FPGAs is that with an ASIC, you just burn all the gates to a chip and you're done with it.
412470	415190	With an FPGA, you can reconfigure it a bunch of times.
415510	417030	It makes it easy to prototype stuff.
417030	420030	You can also have them reconfigure themselves and things like that.
420910	424710	The cons are that you have size constraints and limitations.
425250	428710	It's a little more difficult to code and debug than with software.
431670	434910	There's some common applications for FPGAs.
435670	438690	I'm just going to be focusing on encryption and decryption.
440390	442290	Different types of FPGAs.
442310	448730	There's anti-fuse ones where you just tell it how the gates should be configured and it just stays that way forever.
448730	450210	You can't reprogram them.
450210	455370	There's flash ones, which you can program and they'll keep their state even when you power them off and stuff.
455690	459270	And then there's SRAM ones where you have to configure them every time they start up.
459270	464650	So you basically have a port and you feed a bunch of configuration stuff into it and it configures itself that way.
465590	469350	SRAM is the most common technology. It scales better for the larger FPGAs.
469430	471410	The only problem is that it requires a loader.
475010	477790	There's a few different FPGA manufacturers.
477970	479570	We use Xilinx FPGAs.
479570	483190	There's also Altera, which I think is a lot bigger with academic places.
483190	485530	Does anybody here use Xilinx or Altera?
485530	486930	Xilinx? Anybody?
487070	487990	Xilinx?
488330	489730	Altera? Anybody?
490250	491030	One?
491690	492690	Two?
492690	493410	Okay.
493610	497310	The main difference is they kind of have the same sort of chips.
497310	501810	Xilinx is a lot bigger company and a lot more commercial.
501810	506590	And you can also get them with an optional power PC that will actually run up to like 300-400 MHz
506590	511930	as opposed to like a soft core which only goes to like 1 or 150 or something like that.
514450	516310	So how do you program these things?
516310	518710	There's a programming language called Verilog.
518710	522210	You can also use VHDL, but most of my stuff is in Verilog.
522310	526270	And it has a simple C-like syntax and it's really simple.
527390	529710	It's really easy to learn but difficult to master.
532330	535870	So a basic code comparison between the two.
535870	541030	This is kind of stupid, but if you want to do an OR with C, then you just kind of...
541030	542490	or an AND, sorry.
542690	547270	And then with Verilog, it's kind of the same thing where you assign and...
547270	547810	I don't know.
548630	549790	Hey, stop laughing.
552620	555440	And so if you want to do like an 8-bit AND, then it's kind of the same thing.
555440	559360	You can have data buses in Verilog where you can specify how many bits you want the variable to be
559360	561260	and then just do operations on them.
562620	566880	And you aren't limited by like 8 bits or 16 bits or 32 bits or whatever.
567980	569260	And then you can...
569820	573260	then you basically just have flip-flops for storage if you want to save state or...
574120	578440	or basically have something that gets configured a certain way and then...
578440	582300	you know, in every sort of trigger, you can create a flip-flop.
583440	588600	And that's really all you have is wires and flip-flops and other sorts of components that are actually on the device.
588600	590480	And you can do a lot with just that.
592260	596520	So I'm going to cover the history of FPGAs and cryptography.
596640	601460	Just to start this out, there are a bunch of these guys that wrote this paper a while back
601460	603940	on minimal key lengths and symmetric ciphers.
603940	608120	There's Shimomura on there, there's Rivest, Schneier, all those people.
608300	615320	And they did some research to try and figure out like the best key lengths that people should be using
615320	624340	that would protect you against the common attacker, like a kid in his basement, major corporations, or NSA.
625180	629220	And so this is basically what they came to the conclusion of.
630060	640240	Basically, a kid in his basement could take a tiny FPGA, $400, and crack 40 bits in about 5 hours,
640240	643020	or 56 bits in 38 years.
643020	648140	And then at the very bottom you have an intelligence agency with a budget of about $300 million.
648460	653320	And they can crack 40 bits in pretty much real time, and 56 bits in 12 seconds.
653580	656600	And this is what they found with their research.
658020	660120	And this was published in 1996.
662240	669640	So it's kind of scary that most likely the government can crack 56-bit encryption, blah blah blah.
669640	675420	But everybody's using 128, you know, 256, and that's like way much more difficult than this.
675460	678460	So it's not saying much, but it's still a little bit scary.
680860	687140	So the EFF in 1998 built a desk cracker that could crack, well it ended up cracking desks in 3 days,
687140	691580	and it ended up winning like the RC4 challenge or whatever.
691580	694400	Or the, sorry, the Desk Distributed On-Net Challenge.
694400	698280	And they claimed that they did about 9 billion keys per second.
698280	699480	They could search.
700040	704740	And it cost them a little less than $250,000, including engineering and all that stuff.
705720	708440	Has anybody heard of that? EFF Desk Cracker?
712320	715800	There's these other guys that hacked ATM machines using an FPGA,
715800	717880	just because they needed to crack it a little bit faster.
719800	721800	These guys are really interesting.
721800	726720	They actually implemented a linear cryptanalysis attack on desks using FPGAs.
726720	731120	Basically you need to compute a big dictionary and then do lookups.
732800	736780	It's a chosen plain text attack, so it isn't really that crazy.
736780	740540	I mean, if you had some sort of device and you were trying to figure out the key in it,
740540	742140	then you could do this sort of attack.
742140	746520	But if you're just trying to decrypt a document, it's not going to help you that much.
748620	752640	They were able to recover a key in 10 seconds with a 72% success rate,
752640	757060	as opposed to about 5 months, I think, or 5 years, a really long time.
759500	764580	There's a bunch of other people implementing stuff and cracking RC4 and all sorts of crazy stuff.
765220	768020	There's quite a few people out there that are doing this stuff.
770540	776780	Basically, the way that you can exploit FPGAs to get really crazy performance out of them
776780	781340	is on a PC, you do a simple for loop or something like that.
781340	784360	It takes a certain amount of time. You have to do it sequentially.
788180	790580	Basically, in hardware, you can do it all in parallel.
791100	795340	Instead of having a for loop where you have to go through each iteration and compute whatever,
795340	796720	you can do it all in parallel.
801260	803420	Okay, just use your imaginations.
808980	810400	Then there's a pipeline example.
810400	812920	There is a pipeline there, you just can't see it.
813420	814840	It's down there.
816220	820860	Basically, if you're trying to perform a bunch of different operations, you can have...
822360	823960	Okay, that kind of sucks.
825820	829160	Basically, you have information that flows in on one end,
829160	835740	and you have a register that stores a value for that state where it's some value plus one.
835740	840060	If you need to subtract another number from it,
840060	842660	then you do the subtraction stage in the next stage.
843240	846560	Then this has that value plus one minus whatever.
846680	849340	Then over here, you have the next value that's fed in.
849340	855400	You can basically have all these parallel operations going while you're performing elements sequentially.
857460	866500	Essentially, the speed of the whole pipeline is equivalent to the fastest or slowest operation in the pipeline.
867340	871980	If your addition somewhere is the slowest thing, that's as slow as the pipeline is going to be,
871980	874700	plus how many clock cycles it takes to go through the whole thing.
877720	880040	That's a really common way of optimizing things.
880040	881940	It's basically just parallelizing things.
883740	889580	Another nice thing is with self-reconfiguration, you get an advantage over ASICs.
894340	900900	Essentially, if you need to multiply some arrays, you can load on a core that multiplies arrays.
901040	908280	Then you can switch it out with your RC4 core and RC4 it, and then switch it out with MD5 and MD5 it.
908540	911620	You don't have to have three different chips or one huge chip.
911620	915420	You can just reconfigure it with specific parts of whatever you need to do.
918400	921820	There are some special components that you can use with Vertex 4s.
921820	924320	Anybody heard of the DSP48 slice?
925860	928300	It's a new thing with the Vertex 4s.
931460	936980	You can do 18x18 multipliers, 48x48 bit adders.
937920	941600	It does 18x18 multipliers at 500 MHz, which is pretty decent.
942160	951880	It's not that great compared to a PC, but you have 48 of them, so you can do 48 18x18 multipliers in parallel at 500 MHz.
951880	952980	That's pretty decent.
954180	956600	There's also block RAM that you can use for storage.
956700	958740	They're pretty fast. They have FIFO support.
958740	961260	If you just need a FIFO, it's all built in.
961440	964300	They have these sort of components that people commonly use.
964300	966540	They commonly use FIFOs, adders, and multipliers.
966540	973180	They just build them in as hard components, so you can utilize them and they're extremely optimized for whatever they need to do.
974660	980560	Another really interesting thing is that if you get a Vertex 4 with a PowerPC, they have this new thing called the APU.
981200	990600	Basically, you can create your own instructions on the PowerPC and have it execute your Verilog code or your hardware code.
990600	994280	You can essentially make a DES instruction.
994420	997660	You just run this instruction and it runs DES on whatever it needs.
999340	1001620	There's lots of really cool things you can do with it.
1001740	1012880	Basically, your code has access to all the registers, so it can just read from whatever it needs, write to whatever registers, and then it's done in however many clock cycles it takes to compute it.
1013000	1017860	It just makes it a lot faster than having to deal with drivers and a bus and stuff like that.
1020600	1022420	Okay, now onto the fun stuff.
1023340	1025740	Chipper is what we call this thing.
1025740	1032980	It was originally PicoCrack, but our boss didn't like PicoCrack because it had a drug name in it or something.
1034700	1041560	We thought that we'd try and start a new term for cracking on FPGAs called Chipping.
1043280	1049400	This thing is called Chipper and currently supports Unix DES, Windows Landman, Windows NTLM,
1049400	1051460	and multiple FPGAs and cards.
1052980	1053620	Chipper?
1056120	1057960	Yeah, yeah, yeah, there you go.
1058320	1059660	It kind of has a ring to it.
1059920	1063880	If you're going to make a project like this, use our terminology so we can get popular, okay?
1066300	1072320	By the way, with the multiple cards and FPGAs thing, this thing was supposed to have 10 of our cards in it.
1072320	1074120	You can kind of see them down here at the bottom.
1075360	1080740	But three of them didn't work. They gave me 12 of them, and three of them didn't work, so I only have nine in there.
1084820	1088320	Yeah, Landman hashes. Everybody knows what Landman is?
1088340	1090020	Yeah, kind of, basically.
1090080	1092260	It's really shitty crypto for passwords.
1092720	1096340	So, you have a password that's like 14 characters long.
1096340	1100300	It splits it in half, encrypts them separately, and then appends the two hashes together.
1100300	1106180	So, you can basically crack them separately, and then only have to search seven characters instead of 14.
1109060	1114540	And hardware design is basically... the whole cracking engine is done on the card.
1114680	1119440	There's a key generator that generates passwords and then feeds them to the DES operation.
1120480	1124940	That's basically what it does. It generates a bunch of keys, encrypts them, and compares them.
1127640	1130200	And you can specify how many bits you want to search.
1130300	1136020	So, if you want to split it up into four different cards, you can crack it four times faster by just splitting up the key space.
1136560	1144860	And you can specify if you want to search typable or just printable characters, or alphanumeric, and basic stuff like that.
1147340	1150280	And we threw together this software interface.
1150300	1151860	I'm going to demo the Windows version.
1151940	1155300	If we had an extra day, we would have it running on Linux with all the cards.
1155300	1159900	But yeah, if you guys want to see it some other time, I can show you.
1160760	1167760	And, by the way, thanks to Rakhni. She built most of the GUI code and a lot of the architecture of the software for this.
1169980	1171260	Round of applause.
1179850	1182010	Somebody needs to beat him up later.
1188490	1192730	So, we use WXWidgets, which supports Windows, Linux, everything.
1192910	1197550	Once we get this all built, it will run on pretty much every platform. It will have a nice GUI for it.
1197850	1203510	Runout supports cracking 128 keys in parallel on each card, or 128 hashes.
1203790	1208450	And supports a faster mode. If you just want to crack one password, you can do it four times faster.
1208450	1212690	Because we just do one compare and then put on four cores.
1213710	1216770	And it can automatically load required FPGA image.
1216770	1221450	So, depending on what you're doing, it will automatically load the right card image and stuff.
1222210	1225690	And supports multiple card clusters, which I'll be demoing.
1227230	1231210	So, here's some speed information.
1231410	1236890	Right now on a PC, this is probably pretty low compared to some people that write optimized stuff.
1236890	1242190	But, has anybody used any sort of desk cracking, or, you know, like, NTLM cracking?
1242390	1248670	What sort of performance do you get? Like, 3 million cribs per second?
1250150	1252750	Rainbow crack? Oh, so you use a rainbow table?
1253350	1258910	Okay, yeah, I was running rainbow crack, and it was generating my hash table at about 2 million keys per second.
1258910	1263170	I think that you can probably do maybe up to, like, 6 or 8 or something like that.
1263170	1265250	If you have something really optimized, maybe 10.
1265570	1270550	And that's on, like, you know, modern P4 or AMD64 or whatever.
1271450	1275890	In hardware, right now, each card will do 125 million per second.
1275890	1280370	And if you just want to crack one password, it'll do 500 million.
1280770	1284890	And the main problem is that we can clock it a lot faster,
1284890	1287710	but we're running into heat issues and power issues.
1287870	1291470	And so, we're going to be experimenting with, like, liquid nitrogen cooling
1291470	1294990	and other sorts of cooling to just cool it down.
1294990	1299050	Because, in theory, we should be able to get it up to, like, 1 million keys per second.
1299590	1300910	I mean, 1 billion.
1301570	1304870	So, it should be a lot faster whenever we get that running.
1306910	1308510	There's some basic information.
1308530	1312910	On a P4, you can crack, if you just have a 64-character table,
1312910	1317070	because that'd be, like, alphanumeric and then, like, 32 symbols or something like that.
1317250	1319890	You can do it in about 25 days on a P4.
1320090	1322350	On one of our cards, it'll do it in about 2 hours.
1322890	1326730	And if you have 8 of them, in about 18 minutes or so.
1327930	1329690	And, let's see, 48 characters.
1329690	1331230	Yeah, you can just read that.
1331470	1334990	But basically, if you're just doing alphanumeric, you can get it down to about 9 seconds
1335890	1336550	on one of our cards.
1336790	1340130	And I'm just going to show, like, the baseline sort of attack.
1340130	1347270	It'll take about 4 minutes for going through, let's see, 128 times 9,
1347270	1349910	about 1,000 passwords it'll be cracking in parallel.
1361770	1363870	So, yeah, this is our card.
1364450	1366550	It has a Vertex 4 on it.
1366570	1368330	You can get it with a PowerPC processor.
1368330	1371490	It has RAM, ROM, gigabit Ethernet,
1371490	1374070	and all that on a little thing like this.
1374410	1377030	It's basically a full-on computer if you get it with a processor.
1378130	1379830	Okay, here's the cool part.
1384170	1384970	This is...
1385850	1404430	It's going to load the bling bling image here.
1408040	1409520	So now it's running that image.
1418940	1420260	So this is our little program.
1420260	1422140	It's still called PicoCraft, we'll end up being Chipper.
1427590	1430950	So I just loaded in this PWDump file,
1430950	1432890	and it's already starting to crack them.
1433790	1436030	I'll show you what this file looks like.
1444670	1447010	So this is just a standard PWDump file.
1447650	1450010	And it's got some fake accounts in there.
1452290	1456870	But, yeah, it's cracking, let's see, 64 in parallel right now
1456870	1459190	on just this card in my laptop,
1459190	1461810	and it's going at 125 million keys per second,
1461810	1465210	so it's a little bit faster than if I just used my laptop.
1467210	1467890	And then...
1467890	1470970	So we can just let this run, and I'll fire up the next demo.
1471290	1473070	Wow, we've got plenty of time here, wow.
1474950	1475930	Just a sec.
1530090	1531010	There we go.
1535950	1538790	So all I can demo here is just our command line version,
1538790	1542910	but the graphical version will be pretty close to being done.
1542910	1543370	So...
1546580	1548560	Oh, you've got to hear this, this is funny.
1562190	1565610	I'm guessing that people use PCMCACS on their laptops,
1565610	1567850	and they hear that dinging thing.
1572160	1576280	I've got nine PCMCACS, or ten PCMCACS lockets in here.
1581900	1582820	Alright.
1582820	1582920	So...
1607570	1612030	So that's a PWM file of like 4,000 passwords,
1612770	1619050	and this will just start scrolling a ton of stuff, so...
1620570	1621990	There we go.
1622550	1626430	Over on the right is a count of how many passwords it's cracked so far.
1636450	1639250	And this is like the slow mode,
1639250	1643290	it's just doing 125 million per second on each card,
1643290	1647130	and it's cracking 128 in parallel for each card.
1647210	1652730	There's a faster mode where I can do basically like 500 million times 10.
1653150	1656670	So what's that, like 5 billion keys per second or something like that for just one?
1656990	1659310	But this looks a lot cooler.
1661250	1663810	So yeah, this will be running for a little bit.
1665530	1666490	Whoa.
1677840	1678720	Yeah, um...
1681820	1683200	Well, I'll...
1686120	1686600	Well...
1687320	1691640	Well no, with Landman, it splits it up into two seven-character chunks,
1691640	1693860	and so this is actually...
1693860	1695320	Oh wow, that's crazy.
1696400	1699720	Yeah, yeah, they're 14 characters, and...
1699720	1703440	No special characters, it's just alphanumeric with 64 characters,
1703440	1706920	and it would take like a couple hours or something like that.
1709200	1711540	But this will take about three minutes.
1712220	1715800	It's basically taking all the hashes from this file,
1715800	1718180	and then slowly filling them in, and then as they're getting cracked,
1718180	1720520	it's replacing them and continuing on.
1720520	1724280	So this thing will run forever until 4,000 are cracked.
1724280	1728100	It'll go through the whole keyspace in about three or four minutes for this,
1728100	1731960	and if you're doing 64-bit, then it would be a bit longer.
1732520	1734700	Or the 64-character search thing.
1734700	1739800	So yeah, you don't have the crazy stuff, but it would just take a little longer.
1758010	1760430	Yeah, I know I don't have support for this,
1760430	1762430	because we're still in the middle of building everything,
1762430	1765750	and we just kind of hacked this thing together in the last hour,
1765750	1768670	but I might be able to...
1768670	1771010	I'm not sure if I have the right image on my laptop,
1771010	1772830	but I might be able to show you something.
1776760	1778500	Oh, each of our cards?
1779440	1782500	With all the software, they're $2,800 each.
1783260	1787520	And if you are a developer, or you don't need all the software,
1787520	1790620	then probably about $1,500 to $1,000, something like that.
1790640	1793240	You can buy development boards that have the same chip on them
1793240	1796100	for about $400, maybe.
1796800	1799100	And they don't really come with any extra stuff,
1799100	1802180	but they're cheap, and you can build a huge array of them if you want to.
1802180	1803660	They're about this big.
1804160	1805320	A lot bigger.
1817900	1819780	Yeah, yeah, something like that.
1820020	1823300	And if you buy more than one, then the price usually drops, I don't know.
1823300	1824960	It really depends on the sales we need.
1826660	1829240	Oh yeah, so here, all of these are cracked, I think.
1829560	1830320	There we go.
1830800	1833020	So yeah, you see, they're all 14 characters long.
1833020	1837120	They aren't really that extraordinary as far as the actual characters,
1837120	1838720	but it's also upper and lowercase,
1838720	1842300	because Landman makes everything uppercase when you type in your password,
1842300	1843580	so it's case insensitive.
1844100	1845280	What should you change?
1852740	1855060	Well, Linux is a lot more difficult,
1855060	1859500	because with DES, they run it through like 25 rounds at least,
1859500	1861520	and so you have to run DES 25 times.
1861520	1863140	Most of the time, they'll run it even more.
1863240	1866020	If you're doing like MD5, MD5 runs pretty slow.
1866880	1869800	So it's a lot slower to crack the Linux stuff.
1870160	1872700	I just went on this stuff because it's a lot easier.
1873900	1876630	What should you throw together?
1876870	1879410	On that, I've thrown together some.
1879410	1880650	I don't have it with me, though.
1881150	1883870	If you email me, I can get you some more information about that.
1883870	1886690	With NTLM, it's pretty comparable to this.
1886710	1890390	The only difference is that the passwords are a lot bigger,
1890390	1893630	so if you want to crack a 16-character password, it'll take a long time.
1893990	1896590	And then it's also case sensitive,
1896590	1899510	so you've got the uppercase and the lowercase you have to worry about.
1900850	1903570	Let me see if I have this right image here.
1918310	1919450	What's that?
1922390	1923350	DES?
1929910	1933730	Yeah, well, for just cracking straight DES.
1934590	1935950	No, I don't have any of that,
1935950	1937990	but the landmine is pretty much just straight DES.
1938210	1940670	So the performance will be the same.
1944490	1945350	What's that?
1947150	1948710	It's about the same as this.
1949190	1950710	It takes up a little more space,
1950710	1954330	so in the fast mode, I can only fit three cores on there instead of four,
1954330	1955990	but it's pretty much the same specs.
1959980	1960860	What's that?
1969760	1972620	Yeah, right now it's mainly the bus.
1973020	1975080	That's the limitation for generating rainbow tables,
1975080	1979120	because if you're generating 500 million hashes per second,
1979120	1981380	just getting that off the card is pretty difficult.
1982700	1986600	We've been talking with the Shmoo guys with the rainbow cracking stuff they've been doing,
1986600	1990900	and we've been exploring different possibilities with that,
1990900	1994280	but they're really interested in trying to use something like this to generate it faster.
1994760	1998980	It seems like our best bet would be using the Gigabit Ethernet to get it off the card,
1998980	2004060	but still, then you have to worry about finding hard drives or RAM that can cache it that fast.
2004220	2007780	I don't know. It's one thing that we're working on.
2010120	2012660	What's that? Yeah, yeah. There you go.
2017230	2018110	Hard cards?
2018550	2022250	They're all PCMCA compact flash, basically.
2022430	2024970	But then there's also an Ethernet dongle at the back.
2028170	2031170	No, no, no. I've got ten PCMCA slots in here.
2033750	2037430	Yeah, I've got five of the two card adapter things.
2039750	2041330	Yeah, yeah. They're all PCI.
2045360	2047960	We're going to be making a PCI Express board.
2048160	2050040	That's going to be a few months down the road.
2051220	2059090	Oh, yeah, yeah. That would definitely work for doing that.
2059510	2064890	Yeah, so we'll probably work on that once we get a card that can talk fast enough for it.
2066690	2069530	Let me try and see if this works.
2077780	2078800	A secret service?
2080000	2081040	What's that?
2082700	2083740	Oh!
2091130	2096030	Yeah, yeah. The CIA is using that on all their PCs, too, right?
2096310	2097890	I remember reading about that.
2098310	2099570	Oh, okay.
2113890	2114970	Yeah.
2128420	2129400	Missing stuff?
2133440	2137220	Oh, yeah, yeah, yeah. The graphics and stuff. Yeah, I'll post that up there.
2137440	2138840	I don't know why those got lost.
2145770	2148250	You know, these probably won't work.
2167050	2167770	Whoa.
2169610	2172070	Yeah, I think this is a totally incompatible version.
2172070	2181040	But, yeah, if you look at the performance here, you can do basically all the printable characters,
2181040	2186400	like one of them in two hours, or eight of them in 18 minutes.
2186780	2192260	So it's like two hours versus 20 minutes, or two hours versus one minute right now.
2192560	2196520	So it'd just take a little bit longer if you wanted to do a lot more characters.
2199060	2200080	What was that?
2203970	2205410	Oh, for the full length?
2206110	2207750	Yeah, yeah, that's for the full length.
2208670	2211050	So, like, up to 14 characters, we plan that.
2212750	2215870	There's just a few more slides here, and then I can let you guys go.
2220120	2223160	So, I just started this opencyphers.org.
2223520	2225560	I've got all the source for this stuff.
2226340	2231320	It isn't posted up there right now, there's just some details on it, but it'll be posted fairly shortly.
2231320	2239500	I also wrote a ModX core, if you guys want to do any RSA or Diffie-Hellman, or any sort of stuff like that.
2239580	2244720	I did an A5 implementation for some GSM stuff I'm working on.
2247280	2253300	Basically, the technology trends, it seems like right now there's always small devices that use really weak crypto,
2253300	2256740	just because they're limited by cost and speed and stuff.
2256740	2264220	And then, basically, I don't see simple brute force attacks really living that long,
2264220	2266520	just because the key sizes are getting really large,
2266520	2273300	but I definitely think that there's lots of potential for doing really more elegant attacks with cryptanalysis on FPGAs,
2273300	2275420	and just doing it a lot faster.
2275780	2279740	And I really think that's going to be the next generation of everything, and people are starting to do it,
2279740	2283140	and so that's really the future.
2283140	2284840	Hardware trends.
2285920	2290180	It seems like FPGAs are increasing according to Moore's Law,
2290180	2295960	just because they use the same sort of processes that processors use for manufacturing and stuff.
2297560	2303240	And really, the factors are pretty similar, but you just end up with a lot more density,
2303240	2307620	which you're kind of getting in the newer processors, like dual-core and stuff like that.
2307900	2313120	But it seems like there's definitely some algorithms out there that you can exploit with FPGAs.
2313780	2318600	Some future applications we'll be working on are neural network stuff,
2318600	2324340	attacks on web, WPA, PSM, and analysis and correlation.
2324520	2326620	There's some interesting stuff you can do with that.
2328100	2330900	Any feedback, any other questions, or anything like that?
2337040	2341240	Yeah, I remember somebody told me about it. I haven't looked at it too much, though.
2341240	2346360	But yeah, I remember they used some FPGAs to speed up cracking the hashes and stuff.
2348160	2352180	Oh, cool. Yeah, I'll definitely take a look at that.
2352680	2354340	Anybody else have any suggestions?
2357060	2359840	Any other suggestions or comments or anything like that?
2362600	2364360	Yeah, that's a very good suggestion.
2364580	2368940	If you really want to get into this stuff, just come up and we can work something out.
2368940	2372060	But anything else?
2373920	2376940	Okay, a couple of shameful plugs here.
2376940	2382500	There's TorCon and ShmooCon. ShmooCon's an awesome conference, if you guys want to go to that.
2382500	2384380	Everybody know what ShmooCon is?
2385220	2386180	No? Yeah?
2389420	2393640	Oh, shoot. San Diego. I probably just copied and pasted that.
2393640	2397200	But it's in February, it's in DC, I'll have to fix that also.
2397200	2401440	I threw together most of this presentation in an hour before this thing.
2403980	2408000	OpenCyphers.org, OpenCores.org has a bunch of open source cores that you can use.
2408000	2409380	Lots of crypto stuff.
2410600	2417520	You can go to Xilinx, download their eval software, set your clock ahead ten years and get it for free.
2417900	2422320	And Pico Computing is the company that I'm a part of.
2422480	2425280	And actually, here, you've got to check this out. This is hilarious.
2432560	2438900	So, our hardware developer decided to put these stickers on this thing, and I'm not sure what they mean.
2441500	2445180	I don't know. He's kind of weird.
2446120	2450860	But, yeah, that's our box, and it cracks stuff.
2451520	2456580	It's basically half as fast as the EFF's desk cracker, I think.
2457280	2462200	And theirs took up, I think, a few cabinets and cost $250,000.
2463340	2467020	That's one of our products. And any other questions? That's it.
2467840	2469140	Okay, thanks a lot for coming.
