WEBVTT - Automatic transcript; recognition may contain errors. Reviewed for technical wording and speaker labels. Times match the published episode.

00:00:09.010 --> 00:00:14.670
<v Aaron van Wirdum>Live from Mexico, this is the Van Wirdum Sjorsnado. I'm doing another episode

00:00:14.670 --> 00:00:20.430
<v Aaron van Wirdum>without Sjors. Sjors will be back soon. But today I am joined by Lawrence Nahum

00:00:20.430 --> 00:00:25.810
<v Aaron van Wirdum>and Ben Kaufman. We ran into each other here. And Lawrence told me, Lawrence is

00:00:25.810 --> 00:00:30.590
<v Aaron van Wirdum>working on a new, well, you're working on a hardware wallet. And I figured, you

00:00:30.590 --> 00:00:34.290
<v Aaron van Wirdum>know what, I've actually never... Sjors and I have never done an episode on

00:00:34.290 --> 00:00:38.410
<v Aaron van Wirdum>hardware wallets, so maybe this is a good opportunity to just keep it going. And

00:00:38.410 --> 00:00:43.190
<v Aaron van Wirdum>the other reason it's... Well, first, okay, let's... Lawrence, introduce

00:00:43.190 --> 00:00:44.870
<v Aaron van Wirdum>yourself, please. Let's start there.

00:00:45.250 --> 00:00:50.960
<v Lawrence Nahum>All right, Lawrence Nahum, [unclear] Blockstream. I worked

00:00:50.960 --> 00:00:55.420
<v Lawrence Nahum>on various software wallets and now Jade hardware wallet.

00:00:55.560 --> 00:00:59.500
<v Aaron van Wirdum>Yeah, the Blockstream Green wallet. That was your main project before this.

00:00:59.780 --> 00:00:59.860
<v Lawrence Nahum>Yeah.

00:01:00.100 --> 00:01:03.700
<v Aaron van Wirdum>And now you're working on the Jade hardware wallet, also a Blockstream product.

00:01:04.240 --> 00:01:04.740
<v Lawrence Nahum>Yeah.

00:01:05.950 --> 00:01:06.270
<v Aaron van Wirdum>Ben?

00:01:06.850 --> 00:01:09.990
<v Ben Kaufman>Yeah, I'm Ben Kaufman. I'm working on Spectre wallet.

00:01:11.270 --> 00:01:17.010
<v Ben Kaufman>Yeah, it's a way to use your Bitcoin Core node with hardware wallets,

00:01:17.190 --> 00:01:18.050
<v Ben Kaufman>basically all of them.

00:01:19.930 --> 00:01:24.910
<v Aaron van Wirdum>Yeah, so I wanted to do an episode on hardware wallets and I've never really,

00:01:25.070 --> 00:01:29.150
<v Aaron van Wirdum>personally, I've never really written extensively about hardware wallets, like

00:01:29.150 --> 00:01:32.330
<v Aaron van Wirdum>the trade-offs there are. And there is some, you know, debate and discussion on

00:01:32.330 --> 00:01:36.270
<v Aaron van Wirdum>what are, you know, the best hardware wallets or what are the best trade-offs to

00:01:36.270 --> 00:01:41.450
<v Aaron van Wirdum>make. And so I figured if I'm going to do this episode with a developer of one

00:01:41.450 --> 00:01:46.090
<v Aaron van Wirdum>hardware wallet, I kind of want to have a neutral expert sitting next to me to

00:01:46.090 --> 00:01:50.110
<v Aaron van Wirdum>kind of tell me, if Lawrence, if you're overselling everything like you always

00:01:50.110 --> 00:01:51.270
<v Aaron van Wirdum>do. Everyone knows that you…

00:01:52.510 --> 00:01:58.240
<v Aaron van Wirdum>so yeah, Ben is going to be my sort of sidekick expert today. So, yeah, I'll have

00:01:58.240 --> 00:02:02.180
<v Aaron van Wirdum>questions for you here and there. If I don't understand something or if Lawrence

00:02:02.180 --> 00:02:04.060
<v Aaron van Wirdum>is, you know, overselling it.

00:02:04.060 --> 00:02:06.240
<v Ben Kaufman>I'll be watching him.

00:02:06.380 --> 00:02:11.360
<v Aaron van Wirdum>And it's really cool to have you on as well, Lawrence, because when Sjors and I

00:02:11.360 --> 00:02:15.200
<v Aaron van Wirdum>started our podcast, so you also do the Reckless Review podcast, right?

00:02:15.380 --> 00:02:15.800
<v Lawrence Nahum>Yes, we do.

00:02:15.980 --> 00:02:20.640
<v Aaron van Wirdum>So when Sjors and I, when we started our podcast, we were sort of making

00:02:20.640 --> 00:02:25.540
<v Aaron van Wirdum>benchmarks for ourselves, but we didn't want to disappoint ourselves. So we

00:02:25.540 --> 00:02:31.160
<v Aaron van Wirdum>figured, Alright, our podcast needs to be at least as good as Reckless Review. So

00:02:31.160 --> 00:02:35.280
<v Aaron van Wirdum>we set it like the lowest bar possible. So there's no way we could fail.

00:02:37.000 --> 00:02:42.580
<v Aaron van Wirdum>So it's great you're on as well. Alright, let's start with a very

00:02:42.580 --> 00:02:48.250
<v Aaron van Wirdum>basic question. Because what is a hardware wallet? Why do people use

00:02:48.250 --> 00:02:50.390
<v Aaron van Wirdum>hardware wallets or what are they for?

00:02:51.500 --> 00:02:52.220
<v Lawrence Nahum>I'll start.

00:02:54.220 --> 00:02:58.280
<v Lawrence Nahum>And maybe before I say what a hardware wallet is, I'll say what a wallet is. A

00:02:58.280 --> 00:03:04.110
<v Lawrence Nahum>wallet is just some piece of software that holds your private keys

00:03:04.110 --> 00:03:09.310
<v Lawrence Nahum>and together with those, it signs your transactions and maybe generates addresses

00:03:09.310 --> 00:03:14.870
<v Lawrence Nahum>and so on. So a hardware wallet, it's just like a software wallet, but it has a

00:03:14.870 --> 00:03:18.970
<v Lawrence Nahum>much smaller surface of attack. So it's a device that is dedicated to one thing.

00:03:19.110 --> 00:03:22.550
<v Lawrence Nahum>So unlike your mobile, where you can, you know, read the news, download video

00:03:22.550 --> 00:03:28.130
<v Lawrence Nahum>games, watch movies and so on, a hardware wallet does just one thing. And that's,

00:03:28.130 --> 00:03:33.910
<v Lawrence Nahum>you know, signing transactions, showing addresses and so on. And yeah.

00:03:34.480 --> 00:03:38.980
<v Aaron van Wirdum>I think one big benefit, but correct me if I'm wrong, that goes for both of you,

00:03:39.500 --> 00:03:43.780
<v Aaron van Wirdum>is that a hardware wallet isn't connected to the internet and therefore it can be

00:03:43.780 --> 00:03:47.880
<v Aaron van Wirdum>hacked by outside parties in that way at least. Would you agree that's a main

00:03:47.880 --> 00:03:48.560
<v Aaron van Wirdum>benefit or no?

00:03:48.860 --> 00:03:52.420
<v Lawrence Nahum>I don't agree in the sense that ultimately your laptop is connected to the

00:03:52.420 --> 00:03:54.820
<v Lawrence Nahum>internet and your hardware wallet is connected to your laptop.

00:03:55.130 --> 00:03:59.630
<v Aaron van Wirdum>Right, at some point your hardware will just hit the internet indirectly.

00:04:00.070 --> 00:04:03.710
<v Lawrence Nahum>At least that's the most common case. I mean, some people use offline laptops and

00:04:03.710 --> 00:04:09.250
<v Lawrence Nahum>so on, and you can definitely do that, but there's some work involved. And, well,

00:04:09.570 --> 00:04:13.390
<v Lawrence Nahum>sometimes, you know, some devices use cable, some devices support cable as well

00:04:13.390 --> 00:04:19.330
<v Lawrence Nahum>as Bluetooth. Some devices support SD cards, and some devices maybe use

00:04:19.330 --> 00:04:24.720
<v Lawrence Nahum>QR code. But even those are still, like, a way to... To get, say,

00:04:25.260 --> 00:04:28.760
<v Lawrence Nahum>potentially code on those devices and maybe attack them.

00:04:29.260 --> 00:04:34.840
<v Aaron van Wirdum>So if the main benefit is that it's a single-purpose computer, that's how you

00:04:34.840 --> 00:04:38.260
<v Aaron van Wirdum>explain it, I think, right? If I summarize it in like one sentence, it's a

00:04:38.260 --> 00:04:42.360
<v Aaron van Wirdum>one-purpose computer, why is that actually a good thing? Then why is that a

00:04:42.360 --> 00:04:44.420
<v Aaron van Wirdum>benefit? Why is that something people want?

00:04:44.620 --> 00:04:49.980
<v Lawrence Nahum>It's because it's not just a single-purpose computer. It's a small

00:04:49.980 --> 00:04:54.880
<v Lawrence Nahum>single-purpose computer that has been hardened to

00:04:54.880 --> 00:04:56.040
<v Lawrence Nahum>minimize...

00:04:57.260 --> 00:05:02.160
<v Lawrence Nahum>You know, what you can do with it, and thus there's less surface of attack. So

00:05:02.160 --> 00:05:05.100
<v Lawrence Nahum>the more software, the more bugs, the more bugs, the more security issues.

00:05:05.860 --> 00:05:10.440
<v Lawrence Nahum>Because it's single purpose, it has less code, less software, and so less...

00:05:11.880 --> 00:05:16.780
<v Lawrence Nahum>There's bugs, but also depending on the manufacturer it may have some different

00:05:16.780 --> 00:05:20.760
<v Lawrence Nahum>kind of hardening. So maybe we'll get into that a little bit later.

00:05:20.860 --> 00:05:25.020
<v Aaron van Wirdum>Yeah, we'll get into that in a bit first. Ben, do you agree with this? Is this

00:05:25.020 --> 00:05:26.200
<v Aaron van Wirdum>the main benefit of hardware wallets?

00:05:26.540 --> 00:05:32.000
<v Ben Kaufman>I would say so. I think not being connected to the internet is just one part of

00:05:32.000 --> 00:05:37.360
<v Ben Kaufman>this, reducing the attack surface. So it's a very important one.

00:05:37.690 --> 00:05:42.530
<v Ben Kaufman>But there is a lot more into it so it's not just not connected to the internet.

00:05:42.530 --> 00:05:48.370
<v Ben Kaufman>It's also that it's very much minimized, like everything that

00:05:48.370 --> 00:05:51.950
<v Ben Kaufman>you don't really need, it's just not there anymore.

00:05:51.950 --> 00:05:53.070
<v Lawrence Nahum>Yeah.

00:05:53.520 --> 00:05:59.510
<v Aaron van Wirdum>So there's just less risk if there's less stuff, right?

00:05:59.990 --> 00:06:05.870
<v Aaron van Wirdum>So let's get into some hardware wallets. We'll get into the Jade wallet in a

00:06:05.870 --> 00:06:11.110
<v Aaron van Wirdum>bit, but let's discuss some of the trade-offs that hardware wallets have made

00:06:11.110 --> 00:06:15.130
<v Aaron van Wirdum>over the years, because there are different designs of hardware wallets. The

00:06:15.130 --> 00:06:16.910
<v Aaron van Wirdum>first hardware wallet was Trezor.

00:06:18.780 --> 00:06:23.560
<v Aaron van Wirdum>So how does Trezor, for example, work? Why is that secure or why is that not

00:06:23.560 --> 00:06:24.800
<v Aaron van Wirdum>secure? Maybe that's your opinion.

00:06:26.890 --> 00:06:32.670
<v Lawrence Nahum>Yeah, so Trezor is a USB device. There's two, I think, now.

00:06:33.470 --> 00:06:39.310
<v Lawrence Nahum>Trezor-T and Trezor-1. But basically, it's a small computer, a small device. I

00:06:39.310 --> 00:06:45.130
<v Lawrence Nahum>think it has a chip called the ST32 from ST Electronics. I think it's a French company.

00:06:46.980 --> 00:06:50.980
<v Lawrence Nahum>And yeah, they designed some firmware in C.

00:06:53.320 --> 00:06:57.200
<v Lawrence Nahum>You know, that drives the display and listens to button events.

00:06:57.420 --> 00:07:00.360
<v Aaron van Wirdum>Maybe in case someone doesn't know, what is firmware?

00:07:00.800 --> 00:07:02.360
<v Lawrence Nahum>Firmware is software for hardware.

00:07:02.680 --> 00:07:05.880
<v Aaron van Wirdum>Yeah, it's software specifically designed for a piece of hardware.

00:07:06.220 --> 00:07:11.840
<v Lawrence Nahum>Yes, and usually, maybe I'm wrong, but I think usually it goes without operating

00:07:11.840 --> 00:07:17.640
<v Lawrence Nahum>system and it's like bare bone to the iron, to the hardware, to the metal.

00:07:18.220 --> 00:07:18.620
<v Aaron van Wirdum>Right.

00:07:18.880 --> 00:07:19.300
<v Ben Kaufman>Yes.

00:07:21.470 --> 00:07:24.330
<v Ben Kaufman>Not in all other wallets, but yes, most of them.

00:07:26.110 --> 00:07:30.530
<v Aaron van Wirdum>Right, so Trezor is a piece of hardware, which is a piece of firmware, and that

00:07:30.530 --> 00:07:34.990
<v Aaron van Wirdum>firmware secures your private keys and can be used to sign transactions.

00:07:36.180 --> 00:07:38.520
<v Aaron van Wirdum>Usually through another wallet, like Spectre for example.

00:07:39.100 --> 00:07:40.600
<v Lawrence Nahum>Green supports Trezor too.

00:07:40.740 --> 00:07:44.640
<v Aaron van Wirdum>Right, and then you broadcast that to the Bitcoin network. That's how it works.

00:07:44.760 --> 00:07:50.360
<v Aaron van Wirdum>So the main purpose is that it secures your keys in that sense. Now I think one

00:07:50.360 --> 00:07:56.360
<v Aaron van Wirdum>of the... trade-offs of Trezor. So it's usually secure

00:07:56.360 --> 00:08:01.760
<v Aaron van Wirdum>in that sense until someone gets a hold of your actual Trezor.

00:08:03.120 --> 00:08:07.100
<v Aaron van Wirdum>Is that sort of one of the trade-offs or one of the problems there?

00:08:07.240 --> 00:08:12.280
<v Lawrence Nahum>Not necessarily. So Trezor is open source, the firmware is open source. I think

00:08:12.280 --> 00:08:15.440
<v Lawrence Nahum>the hardware is also open source or at least used to be.

00:08:15.520 --> 00:08:16.940
<v Ben Kaufman>From what I know it's open source.

00:08:20.530 --> 00:08:26.190
<v Lawrence Nahum>And yeah, it has some, it tries to, you know, prevent extraction of keys

00:08:26.190 --> 00:08:31.510
<v Lawrence Nahum>and, you know, unless you know the PIN or the passphrase, it prevents you from

00:08:31.510 --> 00:08:32.050
<v Lawrence Nahum>using it.

00:08:33.590 --> 00:08:37.490
<v Lawrence Nahum>But basically unless you use a passphrase, it doesn't have physical security.

00:08:38.710 --> 00:08:44.370
<v Lawrence Nahum>Because a number of independent companies or people manage to extract

00:08:44.370 --> 00:08:47.250
<v Lawrence Nahum>the secret, the private keys, the seed, the mnemonic.

00:08:47.450 --> 00:08:51.630
<v Aaron van Wirdum>Yeah, physical security is what I refer to, like if you actually get the device

00:08:51.630 --> 00:08:52.430
<v Aaron van Wirdum>in your hands.

00:08:52.710 --> 00:08:57.870
<v Lawrence Nahum>Unless it has a strong passphrase, in which case you can't. You can extract the

00:08:57.870 --> 00:09:01.990
<v Lawrence Nahum>mnemonic, but then without the passphrase, you cannot get the keys.

00:09:02.210 --> 00:09:07.900
<v Aaron van Wirdum>Yeah, let's separate that out real quick. So there's PIN. Every hardware wallet

00:09:07.900 --> 00:09:12.180
<v Aaron van Wirdum>usually has a PIN code. You just need to put the PIN in. Yeah, um…

00:09:13.460 --> 00:09:17.760
<v Aaron van Wirdum>but, and then there's the private keys to you know, so you need a PIN to unlock

00:09:17.760 --> 00:09:22.520
<v Aaron van Wirdum>the private keys basically, but if you get it back Sorry, and then there's the

00:09:22.520 --> 00:09:27.180
<v Aaron van Wirdum>passphrase which you mentioned. Yeah, so if you use a passphrase which is just a

00:09:27.180 --> 00:09:29.620
<v Aaron van Wirdum>password or just a long version of a password.

00:09:29.620 --> 00:09:33.080
<v Lawrence Nahum>It needs to be strong; if it's like in a dictionary, then it's trivial to brute force.

00:09:33.080 --> 00:09:38.480
<v Aaron van Wirdum>Yeah, so if, if you have a Trezor and someone uses it with a passphrase then it's

00:09:39.000 --> 00:09:44.020
<v Aaron van Wirdum>as secure as the passphrase at least. The problem is sort of that the PIN doesn't

00:09:44.020 --> 00:09:48.020
<v Aaron van Wirdum>provide the security in case of a physical attack. Am I saying this right?

00:09:48.240 --> 00:09:48.580
<v Ben Kaufman>Yes.

00:09:48.900 --> 00:09:53.790
<v Aaron van Wirdum>Yeah. And so how would this physical attack, like, how does it work? Or is that

00:09:53.790 --> 00:09:54.250
<v Aaron van Wirdum>even known?

00:09:55.550 --> 00:10:01.360
<v Lawrence Nahum>Basically, you open the case of the Trezor and you,

00:10:01.780 --> 00:10:05.600
<v Lawrence Nahum>in [unclear], it's called the glitch. You glitch it. There's various kind of

00:10:05.600 --> 00:10:07.700
<v Lawrence Nahum>glitches. Power glitches is one.

00:10:09.320 --> 00:10:14.200
<v Lawrence Nahum>I'm not, you know, an expert in the sense that I've never glitched hardware or

00:10:14.200 --> 00:10:19.300
<v Lawrence Nahum>never done this. But basically, yeah, you... I also heard that sometimes they use

00:10:19.300 --> 00:10:22.120
<v Lawrence Nahum>laser to glitch Trezor.

00:10:23.780 --> 00:10:29.540
<v Lawrence Nahum>And by glitching it, you basically change the instructions.

00:10:30.700 --> 00:10:36.420
<v Lawrence Nahum>And if you time it right, it works really well and you can

00:10:36.420 --> 00:10:38.100
<v Lawrence Nahum>bypass the PIN protection, for example.

00:10:38.320 --> 00:10:38.700
<v Aaron van Wirdum>Right.

00:10:38.920 --> 00:10:40.380
<v Lawrence Nahum>And you can extract the [unclear].

00:10:40.560 --> 00:10:45.960
<v Aaron van Wirdum>Right. So that's the main downside of Trezor. The main upside, I think, and you

00:10:45.960 --> 00:10:49.920
<v Aaron van Wirdum>did mention this, but I want to make this more clear, is that it's completely

00:10:49.920 --> 00:10:54.360
<v Aaron van Wirdum>open source. So we know exactly what the device is doing, what the firmware is

00:10:54.360 --> 00:10:56.260
<v Aaron van Wirdum>doing, how it all works. Is that right?

00:10:56.500 --> 00:10:56.780
<v Lawrence Nahum>Yes.

00:10:57.520 --> 00:11:02.680
<v Aaron van Wirdum>Right. And then, okay, so that's Trezor. And that's sort of, I think, and that's

00:11:02.680 --> 00:11:06.540
<v Aaron van Wirdum>why, that's one of the reasons I mentioned Trezor as first. I think that's sort

00:11:06.540 --> 00:11:11.600
<v Aaron van Wirdum>of on one end of that spectrum, of the sort of security trade-off spectrum, is

00:11:11.600 --> 00:11:15.660
<v Aaron van Wirdum>that it's all open source, you know exactly what it's doing, but if someone gets

00:11:15.660 --> 00:11:20.840
<v Aaron van Wirdum>their hand on the actual device and didn't use a strong passphrase, then it can

00:11:20.840 --> 00:11:24.960
<v Aaron van Wirdum>be extracted in the way you just explained. So that's sort of one end of the

00:11:24.960 --> 00:11:29.140
<v Aaron van Wirdum>spectrum. As I understand it, on the other end of the spectrum, there's something

00:11:29.140 --> 00:11:32.500
<v Aaron van Wirdum>like Ledger, which uses a secure chip, I believe.

00:11:32.660 --> 00:11:33.260
<v Lawrence Nahum>A secure element.

00:11:33.620 --> 00:11:35.140
<v Aaron van Wirdum>Yeah, so how does this work?

00:11:35.600 --> 00:11:41.100
<v Lawrence Nahum>Well, it's a chip that has extra protection both in terms of glitching

00:11:41.100 --> 00:11:44.960
<v Lawrence Nahum>and in terms of...

00:11:48.090 --> 00:11:53.890
<v Ben Kaufman>All sorts of known attacks, basically. Whatever it's decapping the

00:11:53.890 --> 00:11:58.770
<v Ben Kaufman>chip, whatever it's glitching it, whatever it's tampering it with temperature or

00:11:58.770 --> 00:11:59.910
<v Ben Kaufman>whatever you can do.

00:12:00.210 --> 00:12:04.090
<v Aaron van Wirdum>Maybe I should first ask, and maybe you were answering that question, but just to

00:12:04.090 --> 00:12:08.410
<v Aaron van Wirdum>make the question very clear then, what is a secure element? Why is it secure?

00:12:08.510 --> 00:12:09.870
<v Aaron van Wirdum>Why is it even called that? What is it?

00:12:10.050 --> 00:12:15.820
<v Lawrence Nahum>It's a chip, like the same that Trezor uses, but it has extra protection. So Ben

00:12:15.820 --> 00:12:20.360
<v Lawrence Nahum>was talking about decapping or uncapping. That's the process of removing layer by

00:12:20.360 --> 00:12:25.180
<v Lawrence Nahum>layer the material until you can actually see the

00:12:25.630 --> 00:12:31.530
<v Lawrence Nahum>secrets of the of the chip and secure elements tend to

00:12:31.530 --> 00:12:37.110
<v Lawrence Nahum>have extra protection against that so that basically it's very hard to use like

00:12:37.110 --> 00:12:42.880
<v Lawrence Nahum>an electronic microscope to read into the chip. say the flash to extract the key

00:12:42.880 --> 00:12:46.920
<v Lawrence Nahum>or whatever. I think I'm not, you know, again, an expert on this, but I believe

00:12:46.920 --> 00:12:52.300
<v Lawrence Nahum>it has like a little, like an electrical net that will destroy as soon as you, it

00:12:52.300 --> 00:12:55.000
<v Lawrence Nahum>will prevent you from reading. And if you try to move it, it will destroy the

00:12:55.000 --> 00:12:56.460
<v Lawrence Nahum>circuit, something like that.

00:12:56.520 --> 00:12:58.600
<v Aaron van Wirdum>Right. It's essentially a tamper-proof chip.

00:12:58.960 --> 00:13:03.480
<v Lawrence Nahum>But then, but then, but then it comes; usually those chips come with NDAs or in

00:13:03.480 --> 00:13:08.640
<v Lawrence Nahum>any in any capacity it's um like the tool chain often it's not uh available to

00:13:08.640 --> 00:13:12.580
<v Lawrence Nahum>third parties unless they sign the NDA or it's not open source and so on. That's

00:13:12.580 --> 00:13:13.640
<v Lawrence Nahum>usually the downside.

00:13:13.640 --> 00:13:18.600
<v Aaron van Wirdum>Yeah, so that's it. That's a trade-off there. So the benefit is because of this

00:13:18.600 --> 00:13:23.320
<v Aaron van Wirdum>secure element this physical physical attack cannot be done.

00:13:23.320 --> 00:13:29.300
<v Lawrence Nahum>They can. It's a matter of price. So, maybe with Trezor, I heard that

00:13:29.300 --> 00:13:33.060
<v Lawrence Nahum>you can get equipment for, say, $200 to extract the key.

00:13:34.260 --> 00:13:36.160
<v Aaron van Wirdum>And is that software?

00:13:36.840 --> 00:13:37.400
<v Lawrence Nahum>It's hardware.

00:13:37.540 --> 00:13:41.140
<v Ben Kaufman>Some hardware tools, yes, but it's very cheap.

00:13:42.100 --> 00:13:45.260
<v Lawrence Nahum>It used to be more expensive, but basically it's some hardware that allows you to

00:13:45.260 --> 00:13:50.320
<v Lawrence Nahum>glitch it at the right time so that some instructions get executed or don't get executed.

00:13:50.380 --> 00:13:54.260
<v Aaron van Wirdum>And that kind of hardware does not exist for the secure elements or it exists,

00:13:54.440 --> 00:13:55.840
<v Aaron van Wirdum>but it's just way more expensive.

00:13:56.020 --> 00:14:01.860
<v Lawrence Nahum>Basically, I don't, I mean, it exists. It's way more expensive to extract

00:14:01.860 --> 00:14:03.440
<v Lawrence Nahum>because you're going to have far more failures.

00:14:04.960 --> 00:14:09.380
<v Lawrence Nahum>And, you know, maybe we're talking about $200 for Trezor, maybe we're talking

00:14:09.380 --> 00:14:12.860
<v Lawrence Nahum>about $200,000 for Ledger, or maybe even $2 million for Ledger.

00:14:13.320 --> 00:14:17.760
<v Ben Kaufman>And even then, it's much less guaranteed that you will manage to do that. It's

00:14:17.760 --> 00:14:19.980
<v Ben Kaufman>way more risky because it's temper-proof.

00:14:20.200 --> 00:14:23.380
<v Lawrence Nahum>Yeah, because the thing is, you don't care about, like, sometimes you care about

00:14:23.380 --> 00:14:27.260
<v Lawrence Nahum>extracting something from... these secured element chips and if you burn one you

00:14:27.260 --> 00:14:31.560
<v Lawrence Nahum>don't care because you can you know buy more and try until you succeed um but in

00:14:31.560 --> 00:14:35.520
<v Lawrence Nahum>case of a Bitcoin wallet you do care about succeeding on that specific wallet

00:14:35.520 --> 00:14:38.540
<v Lawrence Nahum>that has the coins; otherwise you know you don't really care about breaking an

00:14:38.540 --> 00:14:39.020
<v Lawrence Nahum>empty wallet.

00:14:39.020 --> 00:14:44.710
<v Aaron van Wirdum>Right. So, because of the secure element it's much more expensive

00:14:44.710 --> 00:14:46.310
<v Aaron van Wirdum>to extract the mnemonic.

00:14:47.550 --> 00:14:49.290
<v Aaron van Wirdum>That's always the word I'm struggling with.

00:14:49.470 --> 00:14:49.710
<v Lawrence Nahum>Mnemonic.

00:14:49.870 --> 00:14:55.150
<v Aaron van Wirdum>Thank you, Lawrence. That's much, yeah, or the private keys, basically. So that's

00:14:55.150 --> 00:15:01.130
<v Aaron van Wirdum>much harder to extract. The trade-off is that you don't know

00:15:01.130 --> 00:15:04.050
<v Aaron van Wirdum>exactly what the chip is doing. Is that it?

00:15:04.910 --> 00:15:06.270
<v Ben Kaufman>That's part of it, I would say.

00:15:06.690 --> 00:15:08.970
<v Lawrence Nahum>But even with the other chip, like ST32.

00:15:10.230 --> 00:15:12.130
<v Aaron van Wirdum>I mean, it's not open source.

00:15:12.270 --> 00:15:16.490
<v Lawrence Nahum>The chip itself, I mean, the chip of all the hardware wallets out there [unclear]

00:15:16.490 --> 00:15:21.050
<v Lawrence Nahum>open source. I think Trezor is working on an open source chip. In fact, maybe an

00:15:21.050 --> 00:15:26.200
<v Lawrence Nahum>open source secure element. But basically all the chips out there are currently

00:15:26.200 --> 00:15:30.820
<v Lawrence Nahum>not open source. The spec may be open and the toolchain may be open, but not

00:15:30.820 --> 00:15:34.840
<v Lawrence Nahum>always. Like for secure element, it tends to be closed and it tends to be covered

00:15:34.840 --> 00:15:35.280
<v Lawrence Nahum>by NDA.

00:15:36.500 --> 00:15:39.700
<v Aaron van Wirdum>Okay, so what is the problem with that then exactly, in your own words?

00:15:41.770 --> 00:15:43.550
<v Aaron van Wirdum>If there is a problem with it.

00:15:44.030 --> 00:15:48.670
<v Lawrence Nahum>For example, with Trezor, there's a few clones and if someone has

00:15:48.670 --> 00:15:54.550
<v Lawrence Nahum>somewhat basic electronic skills, they can build one

00:15:54.550 --> 00:15:58.820
<v Lawrence Nahum>themselves and flash the firmware themselves and whatnot.

00:15:59.240 --> 00:16:04.880
<v Aaron van Wirdum>You mean if someone else wants to sell hardware wallets, it's very easy for them

00:16:04.880 --> 00:16:10.660
<v Aaron van Wirdum>to take Trezor's firmware, their work, and sell hardware walls themselves? Is

00:16:10.660 --> 00:16:11.240
<v Aaron van Wirdum>that what you're saying?

00:16:11.520 --> 00:16:16.560
<v Lawrence Nahum>Yeah, there's plenty of Trezor clones, and even COLDCARD uses a

00:16:16.560 --> 00:16:21.800
<v Lawrence Nahum>firmware that originates from Trezor in terms of... You know they

00:16:21.800 --> 00:16:24.160
<v Lawrence Nahum>forked it from Trezor early on and then they moved on.

00:16:24.160 --> 00:16:28.640
<v Aaron van Wirdum>Right, but I'm interested in what are the problems for users? Why is it for a

00:16:28.640 --> 00:16:33.020
<v Aaron van Wirdum>user for me if I want to secure my private keys why is it the problem for me to

00:16:33.020 --> 00:16:35.940
<v Aaron van Wirdum>use a secure element or is it not a problem for me to use that?

00:16:36.750 --> 00:16:41.810
<v Ben Kaufman>I would say it's mostly that they are covered by NDAs usually and they're closed

00:16:41.810 --> 00:16:47.690
<v Ben Kaufman>source mostly which adds to you know it adds to the obscurity and risk

00:16:47.690 --> 00:16:53.530
<v Ben Kaufman>in terms of you are not necessarily knows what the stuff is doing so sometimes

00:16:53.530 --> 00:16:59.030
<v Ben Kaufman>it can be with the chips too and like normal but this basically just adds another

00:16:59.030 --> 00:17:03.230
<v Ben Kaufman>layer where you don't know what things are what's going on.

00:17:03.230 --> 00:17:06.820
<v Aaron van Wirdum>So what's the worst that's could be going on then, too?

00:17:07.200 --> 00:17:11.040
<v Lawrence Nahum>Well, so, for example, each other wallet has a random number generator, and

00:17:11.040 --> 00:17:16.500
<v Lawrence Nahum>maybe the keys generated are all known by Ledger. Now,

00:17:16.740 --> 00:17:21.380
<v Lawrence Nahum>it's also possible with Trezor, to be honest, because the chip used by...

00:17:22.460 --> 00:17:26.660
<v Lawrence Nahum>But Trezor could do that. So it could be hidden in hardware. But my point

00:17:26.660 --> 00:17:30.860
<v Lawrence Nahum>previously was like, if I wanted to, and forget about commercializing, I could

00:17:30.860 --> 00:17:35.740
<v Lawrence Nahum>build a Trezor from scratch and flash it and use it. At Ledger, I simply couldn't.

00:17:37.230 --> 00:17:40.590
<v Aaron van Wirdum>Yeah, right, but that's the commercial argument. I'm still interested in it.

00:17:40.830 --> 00:17:42.910
<v Ben Kaufman>No, it's even for build it like a DIY.

00:17:44.510 --> 00:17:47.610
<v Aaron van Wirdum>Oh, just as a matter of better understanding what it's doing.

00:17:48.110 --> 00:17:53.910
<v Ben Kaufman>Also extra security in both terms of supply chain attacks. So if you're building

00:17:53.910 --> 00:17:59.830
<v Ben Kaufman>it your own, there is much less risk in that. And also in terms of the

00:17:59.830 --> 00:18:01.590
<v Ben Kaufman>hardware security.

00:18:03.870 --> 00:18:09.850
<v Ben Kaufman>Trezor would want to execute some retirement attack and hide something

00:18:09.850 --> 00:18:14.070
<v Ben Kaufman>in the chip. And if you're building it yourself, you cannot really do that.

00:18:14.950 --> 00:18:19.510
<v Aaron van Wirdum>Right, got it. Is it going to be summarized into saying the secure elements

00:18:19.510 --> 00:18:22.970
<v Aaron van Wirdum>require more trust? To some extent,

00:18:23.050 --> 00:18:23.770
<v Ben Kaufman>I would say, yes.

00:18:24.170 --> 00:18:29.350
<v Aaron van Wirdum>So it requires some more trust in the wallet developer to an extent.

00:18:30.290 --> 00:18:34.450
<v Lawrence Nahum>And the manufacturer of the chips themselves.

00:18:35.050 --> 00:18:41.050
<v Aaron van Wirdum>Right. So these are sort of the two polar opposites or the

00:18:41.050 --> 00:18:46.110
<v Aaron van Wirdum>two extremes within the hardware wallet space a little bit. On the one hand, you

00:18:46.110 --> 00:18:52.070
<v Aaron van Wirdum>have Trezor that is completely open source in all its ways, but that comes

00:18:52.070 --> 00:18:57.570
<v Aaron van Wirdum>with a trade-off that a physical attack is possible, or at least affordable, I

00:18:57.570 --> 00:19:01.730
<v Aaron van Wirdum>guess. And then on the other end, you have Ledger, which has a secure element,

00:19:02.230 --> 00:19:07.310
<v Aaron van Wirdum>which is therefore not as expensive or it's much more expensive to perform a

00:19:07.310 --> 00:19:12.130
<v Aaron van Wirdum>physical attack on, but it requires some level of trust on the wallet

00:19:13.040 --> 00:19:14.200
<v Aaron van Wirdum>provider and the developer.

00:19:14.540 --> 00:19:19.800
<v Lawrence Nahum>And it's only partially open source. Ledger has some open source parts, but it's

00:19:19.800 --> 00:19:20.640
<v Lawrence Nahum>only partially open source.

00:19:21.220 --> 00:19:25.200
<v Aaron van Wirdum>Yeah. Ben, you agree this was sort of fair enough?

00:19:25.600 --> 00:19:28.560
<v Ben Kaufman>In that sense, yes. At least from that aspect, yes.

00:19:28.880 --> 00:19:32.960
<v Aaron van Wirdum>Okay, so then there are other hardware wallets.

00:19:34.970 --> 00:19:39.190
<v Aaron van Wirdum>Before we get to Jade, let's discuss one other hardware wallets. It's the

00:19:39.190 --> 00:19:44.770
<v Aaron van Wirdum>COLDCARD. COLDCARD. Yeah, they have a security model that sits in between of

00:19:44.770 --> 00:19:45.290
<v Aaron van Wirdum>these two.

00:19:45.510 --> 00:19:51.240
<v Lawrence Nahum>Kind of, yes. So it has two chips. And so

00:19:51.760 --> 00:19:56.840
<v Lawrence Nahum>Trezor and Ledger use a chip, I said, called ST. I mean, from a company called

00:19:56.840 --> 00:20:02.800
<v Lawrence Nahum>ST. I believe that COLDCARD has one chip from ST and one chip from Atmel.

00:20:03.490 --> 00:20:07.870
<v Lawrence Nahum>The ST is almost the same as Trezor, if not the same as Trezor. It's an ST32 or

00:20:07.870 --> 00:20:08.590
<v Lawrence Nahum>something like that.

00:20:10.390 --> 00:20:16.370
<v Lawrence Nahum>While the Atmel is a secure chip. I mean, some people call

00:20:16.370 --> 00:20:20.890
<v Lawrence Nahum>it a secure element, some people call it a secure chip. But it's not used, unlike

00:20:20.890 --> 00:20:25.830
<v Lawrence Nahum>Ledger, it's not used to sign transactions. It's only used almost as a black box

00:20:25.830 --> 00:20:31.060
<v Lawrence Nahum>to hold the keys against your PIN. And if you get the PIN wrong,

00:20:31.300 --> 00:20:35.960
<v Lawrence Nahum>I don't know how many times it will delete the secret. So when you get the PIN

00:20:35.960 --> 00:20:39.720
<v Lawrence Nahum>right, it will provide the key to the other chip. The chip will do whatever it

00:20:39.720 --> 00:20:45.260
<v Lawrence Nahum>needs to do while Trezor-style until it's powered or until you log out, say,

00:20:45.660 --> 00:20:51.360
<v Lawrence Nahum>of the wallet. And then it will disappear from memory and

00:20:51.360 --> 00:20:53.120
<v Lawrence Nahum>will be protected by this Atmel.

00:20:53.510 --> 00:20:59.230
<v Aaron van Wirdum>Right. So two chips. One of them is pretty regular, same as what something like

00:20:59.230 --> 00:21:04.860
<v Aaron van Wirdum>Trezor uses. And the other is more like what Ledger uses. Not quite.

00:21:05.020 --> 00:21:05.560
<v Lawrence Nahum>Not quite.

00:21:05.990 --> 00:21:11.650
<v Ben Kaufman>But the important thing is that in Ledger model, all the operations for signing

00:21:11.650 --> 00:21:16.650
<v Ben Kaufman>transactions happening on the secure element itself. On the COLDCARD, it's not

00:21:16.650 --> 00:21:21.270
<v Ben Kaufman>happening on the secure chip, it's happening on the normal chip. The only thing

00:21:21.270 --> 00:21:25.610
<v Ben Kaufman>the secure chip is used for is storing the keys themselves, but they are getting

00:21:25.610 --> 00:21:29.430
<v Ben Kaufman>loaded into the other chip while the COLDCARD is actually in use.

00:21:29.730 --> 00:21:34.710
<v Aaron van Wirdum>Yeah, that I got. But you also mentioned the secure element isn't quite as

00:21:34.710 --> 00:21:39.890
<v Aaron van Wirdum>secure, or how do I think about that then? Or is it just a secure element that

00:21:39.890 --> 00:21:40.370
<v Aaron van Wirdum>does less?

00:21:41.750 --> 00:21:45.950
<v Lawrence Nahum>I mean, in principle, you could say it's a secure element that does less. I heard

00:21:45.950 --> 00:21:51.410
<v Lawrence Nahum>of it as a secure chip, but not exactly a secure element. And so

00:21:51.410 --> 00:21:56.430
<v Lawrence Nahum>another thing that secure elements tend to do, and the code that you run on it is

00:21:56.430 --> 00:22:02.090
<v Lawrence Nahum>very important as well, is that it makes it harder to extract the key

00:22:02.090 --> 00:22:07.780
<v Lawrence Nahum>by means of listening. So at some point… someone was trying

00:22:07.780 --> 00:22:12.780
<v Lawrence Nahum>to extract the private key from a Trezor by signing lots of times and trying to

00:22:12.780 --> 00:22:18.640
<v Lawrence Nahum>capture because it wasn't a constant time code, so signing different

00:22:18.640 --> 00:22:23.340
<v Lawrence Nahum>things meant that it would take you know different lengths and of time, and and

00:22:23.340 --> 00:22:28.200
<v Lawrence Nahum>that is enough information to eventually extract the private key and secure

00:22:28.200 --> 00:22:33.180
<v Lawrence Nahum>element tend to have not only hardware accelerators for crypto but also

00:22:34.510 --> 00:22:39.230
<v Lawrence Nahum>you know, tend to leak less in terms of, you know, electromagnetical

00:22:39.230 --> 00:22:40.990
<v Lawrence Nahum>information.

00:22:41.330 --> 00:22:41.710
<v Aaron van Wirdum>Right.

00:22:43.070 --> 00:22:49.010
<v Aaron van Wirdum>So in any case, in the COLDCARD, there are two chips and one of the

00:22:49.010 --> 00:22:54.950
<v Aaron van Wirdum>chip, which is sort of the secure elements, in this case, in the

00:22:54.950 --> 00:22:58.250
<v Aaron van Wirdum>sense that we just discussed, and that just holds the private keys. Does it

00:22:58.250 --> 00:22:59.310
<v Aaron van Wirdum>generate the private keys?

00:23:00.330 --> 00:23:03.270
<v Lawrence Nahum>I think with COLDCARD you have various ways you can generate the private keys

00:23:03.270 --> 00:23:08.110
<v Lawrence Nahum>even with coins or dice or like externally. I'm not sure which chip they use

00:23:08.110 --> 00:23:12.150
<v Lawrence Nahum>between the two to create the private keys.

00:23:12.490 --> 00:23:18.250
<v Ben Kaufman>I'm not sure about the initial randomness but they also offer you to use

00:23:18.250 --> 00:23:19.850
<v Ben Kaufman>dice rolls I think.

00:23:20.350 --> 00:23:25.070
<v Aaron van Wirdum>So is there, what kind of trust is there, if any, is there still trust involved

00:23:25.070 --> 00:23:29.910
<v Aaron van Wirdum>there? Like what would be the worst case scenario there then if the secure

00:23:29.910 --> 00:23:35.270
<v Aaron van Wirdum>element turns out to not be secure or turns out to be backdoored or there?

00:23:37.310 --> 00:23:43.150
<v Ben Kaufman>There can always be a bad… even if the mnemonic is completely random and it's not

00:23:43.150 --> 00:23:47.810
<v Ben Kaufman>like backdoor, like the generation of the mnemonic itself. It is still possible,

00:23:47.970 --> 00:23:52.230
<v Ben Kaufman>for example, to leak some of the private key information while signing Bitcoin

00:23:52.230 --> 00:23:58.130
<v Ben Kaufman>transactions. And for people it will look like noise, only for the guy who put

00:23:58.130 --> 00:24:03.030
<v Ben Kaufman>the backdoor, he will be able to actually read that. So there's always some risk,

00:24:03.050 --> 00:24:08.790
<v Ben Kaufman>I would say. But usually it's not, I would not say it's a very high

00:24:08.790 --> 00:24:09.470
<v Ben Kaufman>risk usually.

00:24:09.690 --> 00:24:15.470
<v Aaron van Wirdum>You think the risk compared to, for example, the Ledger, you know, polar, that

00:24:15.470 --> 00:24:20.270
<v Aaron van Wirdum>side, you think the risk is in fact diminished by using two separate chips?

00:24:20.490 --> 00:24:25.530
<v Ben Kaufman>No, I think it's more or less the same in that sense, I would say. From that

00:24:25.530 --> 00:24:27.950
<v Ben Kaufman>aspect, I think it's more or less the same.

00:24:28.350 --> 00:24:34.280
<v Lawrence Nahum>I would say it sits in the middle between... Trezor and Ledger. I think Ledger

00:24:34.280 --> 00:24:38.840
<v Lawrence Nahum>is a little bit more secure. But it's a nice design because you can keep the rest

00:24:38.840 --> 00:24:43.000
<v Lawrence Nahum>of the source and this chip is not used for almost anything other than securing

00:24:43.000 --> 00:24:48.100
<v Lawrence Nahum>the money. Obviously, the chip could have some error or some bugs or some other

00:24:48.100 --> 00:24:53.060
<v Lawrence Nahum>problem that allows to bypass the PIN or to extract the key somehow.

00:24:53.780 --> 00:24:57.390
<v Lawrence Nahum>But at the moment, there's no known… issues with that.

00:24:57.670 --> 00:25:03.290
<v Aaron van Wirdum>So at least there you can sort of inspect or understand more parts of you know

00:25:03.290 --> 00:25:07.570
<v Aaron van Wirdum>how the wallet works compared to a Ledger where in a Ledger sort of everything

00:25:07.570 --> 00:25:12.150
<v Aaron van Wirdum>happens in the dark to call that. Well, I don't know, is that is that a good way

00:25:12.150 --> 00:25:16.710
<v Aaron van Wirdum>to put it? So, well with the OpenDime more parts of it are open and therefore…

00:25:16.710 --> 00:25:21.300
<v Aaron van Wirdum>Oh, sorry what did I say? OpenDime? Yeah, COLDCARD yeah, COLDCARD with the

00:25:21.300 --> 00:25:24.960
<v Aaron van Wirdum>COLDCARD, more stuff is happening in the open then. And therefore, you can sort

00:25:24.960 --> 00:25:29.440
<v Aaron van Wirdum>of verify more of it and see what's, you know, there's less room for attack again.

00:25:29.740 --> 00:25:30.440
<v Lawrence Nahum>Yeah, right.

00:25:31.040 --> 00:25:36.060
<v Aaron van Wirdum>Okay, so the COLDCARD uses two chips. One of them is a secure chip, secure

00:25:36.060 --> 00:25:39.400
<v Aaron van Wirdum>element, whatever you want to call it. The other is a regular chip. The secure

00:25:39.400 --> 00:25:45.340
<v Aaron van Wirdum>chip only stores the private keys and the rest is open source. Therefore, there's

00:25:45.340 --> 00:25:49.910
<v Aaron van Wirdum>less, you know, you have a better idea of what's actually happening and what's

00:25:49.910 --> 00:25:53.810
<v Aaron van Wirdum>going on so that's why it sort of sits in between the Trezor where everything is

00:25:54.660 --> 00:26:00.280
<v Aaron van Wirdum>open source but it has this downside that you can extract the keys if you have

00:26:00.280 --> 00:26:05.080
<v Aaron van Wirdum>physical access to the device and you don't use that extra passphrase; and then

00:26:05.080 --> 00:26:10.600
<v Aaron van Wirdum>on the other end Ledger where it's all sort of in a secure element so you can't

00:26:10.600 --> 00:26:14.720
<v Aaron van Wirdum>extract the keys but there's the trade-off that you don't really have the same

00:26:14.720 --> 00:26:17.960
<v Aaron van Wirdum>level of knowledge or control of what's actually happening.

00:26:17.960 --> 00:26:23.080
<v Lawrence Nahum>Yeah, to give you an idea, um once you put the PIN and the the

00:26:23.080 --> 00:26:28.680
<v Lawrence Nahum>private keys are loaded on the non-secure chip in the COLDCARD technically at

00:26:28.680 --> 00:26:33.970
<v Lawrence Nahum>that point you could try to extract the keys. But, you know, if someone takes

00:26:33.970 --> 00:26:38.950
<v Lawrence Nahum>your COLDCARD from, you know, your desk or something, usually

00:26:38.950 --> 00:26:40.650
<v Lawrence Nahum>it's not, you know.

00:26:40.810 --> 00:26:44.450
<v Aaron van Wirdum>They can't get the private key because these are still locked in the secure chip.

00:26:44.570 --> 00:26:44.750
<v Lawrence Nahum>Exactly.

00:26:45.170 --> 00:26:50.350
<v Aaron van Wirdum>Right. So, yeah, that's sort of the main, I think, yeah, sort of the, or at least

00:26:50.350 --> 00:26:54.330
<v Aaron van Wirdum>to give an idea of what hardware wallets are and what the different trade-offs

00:26:54.330 --> 00:26:59.180
<v Aaron van Wirdum>are that they make. So now let's get to your hardware wallet, Jade wallet.

00:26:59.500 --> 00:26:59.640
<v Lawrence Nahum>Yeah.

00:27:00.020 --> 00:27:05.920
<v Aaron van Wirdum>So what trade-offs does the Jade wallet make? Why is there a new hardware

00:27:05.920 --> 00:27:06.500
<v Aaron van Wirdum>wallet needed?

00:27:07.430 --> 00:27:12.530
<v Lawrence Nahum>Well, so let me start from the chip because it's

00:27:12.530 --> 00:27:14.830
<v Lawrence Nahum>continuing the conversation we just had.

00:27:15.050 --> 00:27:15.250
<v Aaron van Wirdum>Yes.

00:27:15.950 --> 00:27:20.710
<v Lawrence Nahum>It doesn't have a secure element. It has a chip with some security features such

00:27:20.710 --> 00:27:23.610
<v Lawrence Nahum>as a secure boot and flash encryption.

00:27:28.060 --> 00:27:33.760
<v Lawrence Nahum>Basically, the secure boot part means that you cannot flash any firmware on it

00:27:33.760 --> 00:27:38.980
<v Lawrence Nahum>that is not signed by Blockstream unless you get a DIY version.

00:27:39.260 --> 00:27:41.540
<v Aaron van Wirdum>Flashing it basically means copying it.

00:27:41.780 --> 00:27:44.960
<v Lawrence Nahum>No, no, no. Flashing as in upgrading the firmware, upgrading the software on the

00:27:44.960 --> 00:27:50.260
<v Lawrence Nahum>device requires a signature that is checked during flashing and bootloader.

00:27:53.770 --> 00:27:59.490
<v Lawrence Nahum>And the flash encryption works by some eFuses. eFuses are

00:27:59.490 --> 00:28:05.370
<v Lawrence Nahum>basically a part of memory of the chip that, once written, cannot

00:28:05.370 --> 00:28:11.250
<v Lawrence Nahum>be rewritten. And specifically, these eFuses are only readable by

00:28:11.250 --> 00:28:17.080
<v Lawrence Nahum>hardware, which means you cannot read the key that is then used

00:28:17.080 --> 00:28:21.420
<v Lawrence Nahum>to encrypt the flash, which, in the case of Jade, is using AES.

00:28:23.600 --> 00:28:29.500
<v Aaron van Wirdum>This sounds very complicated to me right now. So let's break this down. First of

00:28:29.500 --> 00:28:33.500
<v Aaron van Wirdum>all, there's one chip in the Jade or two? Well,

00:28:34.180 --> 00:28:40.000
<v Lawrence Nahum>there's only one chip when it comes to running the firmware or touching your

00:28:40.000 --> 00:28:45.880
<v Lawrence Nahum>private keys and so on. There's actually a couple more chips. One, it's used to

00:28:45.880 --> 00:28:52.040
<v Lawrence Nahum>control power to the display or power to the camera and so on.

00:28:54.490 --> 00:28:56.690
<v Aaron van Wirdum>There's one main chip for security.

00:28:56.790 --> 00:28:58.930
<v Ben Kaufman>It doesn't have a secure element.

00:28:59.830 --> 00:29:04.250
<v Lawrence Nahum>Even Ledger Nano S, for example, has two chip, but the second chip is only used

00:29:04.250 --> 00:29:05.630
<v Lawrence Nahum>to drive the display or the buttons.

00:29:06.390 --> 00:29:11.450
<v Aaron van Wirdum>When I say one chip or two, in this context, I guess I'm talking about the

00:29:11.450 --> 00:29:17.110
<v Aaron van Wirdum>security sensitive stuff. Only one chip. One chip and is this chip

00:29:17.110 --> 00:29:18.430
<v Aaron van Wirdum>open source or no?

00:29:18.870 --> 00:29:22.850
<v Lawrence Nahum>Well, no chips are open source at the moment for all hardware wallets. So there

00:29:22.850 --> 00:29:28.540
<v Lawrence Nahum>is no open chip. The PCB or the board schematics and everything are open source.

00:29:30.480 --> 00:29:33.640
<v Lawrence Nahum>I would say it's like a Trezor in this sense.

00:29:33.660 --> 00:29:38.580
<v Aaron van Wirdum>It's more like Trezor in that sense. Okay. But you mentioned there's also

00:29:38.580 --> 00:29:40.220
<v Aaron van Wirdum>something secure.

00:29:41.060 --> 00:29:44.900
<v Lawrence Nahum>It has some more security features than the ST32 that the Trezor uses.

00:29:46.700 --> 00:29:52.020
<v Lawrence Nahum>It's a chip called ESP32. It's produced

00:29:52.020 --> 00:29:56.750
<v Lawrence Nahum>by a company called Espressif in Shanghai.

00:29:57.290 --> 00:30:02.770
<v Lawrence Nahum>And they use a technology stack created by an American company called

00:30:02.770 --> 00:30:06.980
<v Lawrence Nahum>Cadence. The architecture is called Xtensa.

00:30:08.760 --> 00:30:12.980
<v Lawrence Nahum>While, say, COLDCARD and Trezor use an ARM chip.

00:30:14.090 --> 00:30:20.050
<v Aaron van Wirdum>Am I understanding correct that this chip, it's a bit like a secure

00:30:20.050 --> 00:30:23.330
<v Aaron van Wirdum>element, but it uses a different technique in that sense?

00:30:23.690 --> 00:30:29.590
<v Lawrence Nahum>Well, it has some secure element features, but not as many,

00:30:29.890 --> 00:30:35.870
<v Lawrence Nahum>especially hardware measures, as the secure element used by

00:30:35.870 --> 00:30:41.150
<v Lawrence Nahum>Ledger. It also doesn't have as many, say, government or military

00:30:41.150 --> 00:30:46.190
<v Lawrence Nahum>certification as secure elements do, but it does have some, you know, relatively

00:30:46.190 --> 00:30:49.190
<v Lawrence Nahum>strong security feature.

00:30:49.430 --> 00:30:54.450
<v Aaron van Wirdum>Right, so in a way, this chip on its own sort of sits in between the security

00:30:54.450 --> 00:30:57.330
<v Aaron van Wirdum>models of Trezor on the one hand and Ledger on the other.

00:30:57.450 --> 00:30:59.530
<v Lawrence Nahum>Is that the right way to look at it?

00:31:00.410 --> 00:31:01.490
<v Aaron van Wirdum>That's just the chip.

00:31:01.690 --> 00:31:05.350
<v Lawrence Nahum>Yes, and I would argue it's a little bit closer to Ledger than Trezor. I don't

00:31:05.350 --> 00:31:10.770
<v Lawrence Nahum>know to what extent, but that's… that's, you know, where I think it's right.

00:31:10.770 --> 00:31:15.950
<v Aaron van Wirdum>And then I think there is another like, there's, there's more to this wallet.

00:31:15.950 --> 00:31:20.590
<v Aaron van Wirdum>There's another sort of layer of security to sort of cover up for the fact that

00:31:20.590 --> 00:31:24.930
<v Aaron van Wirdum>it's not as secure as Ledger in this way, but by the way before we continue, do

00:31:24.930 --> 00:31:26.010
<v Aaron van Wirdum>you agree with the summary, Ben?

00:31:26.060 --> 00:31:28.600
<v Ben Kaufman>More or less, yeah. I pretty much agree with it, yes.

00:31:28.760 --> 00:31:33.490
<v Aaron van Wirdum>Okay, so yeah, so that so to sort of compensate for the fact that this chip alone

00:31:33.490 --> 00:31:38.330
<v Aaron van Wirdum>is not as secure as the Ledger secure element, at least for these physical

00:31:38.330 --> 00:31:42.270
<v Aaron van Wirdum>attacks, there's another layer of security with the Jade wallet, is that right?

00:31:42.410 --> 00:31:48.250
<v Lawrence Nahum>Yeah, basically, we use all the security features that the chip has, but we kind

00:31:48.250 --> 00:31:52.350
<v Lawrence Nahum>of assume that someone will manage to break them or that maybe there's a bug or

00:31:52.350 --> 00:31:57.920
<v Lawrence Nahum>maybe, you know, we assume that that wasn't enough. And so we created something

00:31:57.920 --> 00:32:01.780
<v Lawrence Nahum>that is kind of novel in the hardware wallet space.

00:32:03.440 --> 00:32:06.480
<v Lawrence Nahum>It's basically an improvement over a protocol that we designed for Green many

00:32:06.480 --> 00:32:12.400
<v Lawrence Nahum>years ago. Because you cannot really encrypt private keys with a PIN because it's

00:32:12.400 --> 00:32:16.000
<v Lawrence Nahum>trivial to brute force. Let's say you have a four-digit PIN, that's 10,000

00:32:16.000 --> 00:32:21.760
<v Lawrence Nahum>tentatives, right? From zero to 9999, right? And so that's

00:32:21.760 --> 00:32:24.600
<v Lawrence Nahum>terrible as encryption, right? It's trivial to brute force.

00:32:26.020 --> 00:32:27.600
<v Aaron van Wirdum>PIN is not enough is what you're saying.

00:32:27.820 --> 00:32:30.640
<v Lawrence Nahum>Yeah, yeah, yeah. A passphrase would work if it's a good passphrase with good

00:32:30.640 --> 00:32:36.160
<v Lawrence Nahum>entropy and not easy to find in a dictionary or something. Or even a phrase in a

00:32:36.160 --> 00:32:39.460
<v Lawrence Nahum>book would be bad because people are brute forcing all sorts of things nowadays.

00:32:40.960 --> 00:32:44.720
<v Lawrence Nahum>And yeah, so we created a protocol where

00:32:44.720 --> 00:32:50.570
<v Lawrence Nahum>you... We can actually enforce three tentatives of the PIN, and

00:32:50.570 --> 00:32:55.610
<v Lawrence Nahum>we use strong encryption for the private keys for the mnemonic. We use

00:32:55.610 --> 00:32:57.530
<v Lawrence Nahum>AES-256.

00:32:59.450 --> 00:33:03.550
<v Lawrence Nahum>And there's basically a blind PIN server. By blind, I mean it doesn't know

00:33:03.550 --> 00:33:06.670
<v Lawrence Nahum>anything about you, it doesn't know anything about your public keys, or even the

00:33:06.670 --> 00:33:11.910
<v Lawrence Nahum>private keys, or IPs, or anything like that, or email, or nothing.

00:33:12.550 --> 00:33:14.090
<v Lawrence Nahum>And basically…

00:33:15.600 --> 00:33:20.740
<v Lawrence Nahum>There's a… the firmware of Jade has the public key of the server embedded like,

00:33:20.740 --> 00:33:24.760
<v Lawrence Nahum>it's, it's written in the in the in the firmware, and there's a…

00:33:24.760 --> 00:33:30.520
<v Aaron van Wirdum>There is a server somewhere and the server has a public key and that is embedded

00:33:30.520 --> 00:33:32.640
<v Aaron van Wirdum>in the firmware of the hardware wallet.

00:33:32.640 --> 00:33:37.500
<v Lawrence Nahum>Yes, and the server is open source; you can run your own if you want. We recently

00:33:37.500 --> 00:33:40.380
<v Lawrence Nahum>added the functionality so that you can run your own if you don't want to use

00:33:40.380 --> 00:33:45.280
<v Lawrence Nahum>ours. And we're also currently working on a design where we have multiple servers

00:33:45.280 --> 00:33:47.180
<v Lawrence Nahum>with redundancies and whatnot.

00:33:48.720 --> 00:33:53.920
<v Lawrence Nahum>But basically, yeah, there's a protocol where there's a negotiation, there's an

00:33:53.920 --> 00:33:58.200
<v Lawrence Nahum>encryption key that's generated.

00:34:00.240 --> 00:34:06.050
<v Lawrence Nahum>And you provide the... a PIN to the

00:34:06.050 --> 00:34:10.590
<v Lawrence Nahum>server. The server doesn't actually see your PIN. They see a hash of the PIN plus

00:34:10.590 --> 00:34:16.150
<v Lawrence Nahum>some nonce that is kept on Jade, on the hardware. And if you provide the right

00:34:16.150 --> 00:34:20.450
<v Lawrence Nahum>one, it will give you this key that it's used to encrypt the private key or the

00:34:20.450 --> 00:34:20.870
<v Lawrence Nahum>mnemonic.

00:34:21.490 --> 00:34:26.790
<v Aaron van Wirdum>Okay, hang on. Normally, the private keys on a hardware wallet are encrypted, if

00:34:26.790 --> 00:34:28.730
<v Aaron van Wirdum>we even can call it that, with a PIN.

00:34:29.100 --> 00:34:31.300
<v Lawrence Nahum>No, they're not encrypted. Usually they're not encrypted.

00:34:31.680 --> 00:34:33.200
<v Aaron van Wirdum>Wait, so what does the PIN do then?

00:34:33.100 --> 00:34:33.550
<v Ben Kaufman>[unclear]

00:34:33.540 --> 00:34:36.200
<v Aaron van Wirdum>They're protected by PIN. Oh, but that's not encryption.

00:34:36.200 --> 00:34:39.480
<v Lawrence Nahum>No, it just checks if the PIN is correct, then it will use the private key or if

00:34:39.480 --> 00:34:43.760
<v Lawrence Nahum>it's not correct. Basically, there's no point ever encrypting something with four digits.

00:34:44.700 --> 00:34:45.100
<v Aaron van Wirdum>Right.

00:34:46.610 --> 00:34:49.970
<v Aaron van Wirdum>But on your wallet, the keys... are encrypted.

00:34:50.150 --> 00:34:53.030
<v Lawrence Nahum>Not only are they encrypted because we use flash encryption, but then on top of

00:34:53.030 --> 00:34:57.970
<v Lawrence Nahum>that, we encrypt it again with a key that is kept on a remote server, which you

00:34:57.970 --> 00:35:03.190
<v Lawrence Nahum>can run on your own and works with Tor and whatnot. And the idea is that instead

00:35:03.190 --> 00:35:09.190
<v Lawrence Nahum>of using a passphrase or just a non-encrypted access

00:35:09.190 --> 00:35:15.040
<v Lawrence Nahum>by PIN, we encrypt with strong encryption, 256 AES. And the key is not

00:35:15.040 --> 00:35:17.700
<v Lawrence Nahum>on Jade, the key is on a remote server, and the server will [unclear] give it to

00:35:17.700 --> 00:35:21.240
<v Lawrence Nahum>you if you get the PIN right. If you get the PIN wrong three times, both Jade and

00:35:21.240 --> 00:35:23.580
<v Lawrence Nahum>the server will delete [unclear].

00:35:23.580 --> 00:35:29.500
<v Aaron van Wirdum>Right, so there's an external connection. You need the PIN to get

00:35:29.500 --> 00:35:34.880
<v Aaron van Wirdum>the key from the server, which in turn decrypts the keys on your device.

00:35:35.020 --> 00:35:35.220
<v Lawrence Nahum>Yes.

00:35:35.360 --> 00:35:36.620
<v Aaron van Wirdum>Did I explain it? Yes.

00:35:37.020 --> 00:35:42.080
<v Lawrence Nahum>But there is no actual connection from Jade to the server. It's just that when

00:35:42.080 --> 00:35:47.920
<v Lawrence Nahum>you connect it to say your Android or iOS or desktop or laptop or whatever, your

00:35:47.920 --> 00:35:51.580
<v Lawrence Nahum>software wallet will communicate with the hardware wallet. And there's this bit

00:35:51.580 --> 00:35:57.440
<v Lawrence Nahum>where, you know, if you want to enter the PIN, there's

00:35:57.440 --> 00:36:00.700
<v Lawrence Nahum>going to be a message that gets passed to the companion app and the companion app

00:36:00.700 --> 00:36:03.960
<v Lawrence Nahum>passes it to the server. Now, the companion app is completely blind to this. So

00:36:03.960 --> 00:36:07.840
<v Lawrence Nahum>it doesn't know whether you're requesting or setting a PIN. It doesn't know the

00:36:07.840 --> 00:36:12.580
<v Lawrence Nahum>contents of these messages because all the communication between the device and

00:36:12.580 --> 00:36:14.320
<v Lawrence Nahum>the remote endpoint are encrypted.

00:36:14.920 --> 00:36:20.630
<v Aaron van Wirdum>So in that sense, the extra layer of security, I guess, if I'm... If I'm getting

00:36:20.630 --> 00:36:26.050
<v Aaron van Wirdum>it right, is that normally with a physical attack, you get the device in your

00:36:26.050 --> 00:36:30.990
<v Aaron van Wirdum>hand and you can sort of keep spoofing the keys, the PIN, I mean, you can keep

00:36:30.990 --> 00:36:33.690
<v Aaron van Wirdum>spoofing the PIN or in some way extract it.

00:36:33.730 --> 00:36:36.030
<v Ben Kaufman>If you manage to glitch it in some way, then yes.

00:36:36.210 --> 00:36:40.630
<v Aaron van Wirdum>Yeah, especially with the open source types then, right? That was sort of the

00:36:40.630 --> 00:36:46.450
<v Aaron van Wirdum>problem there. In this case, because you're not 100… Well, you're adding an

00:36:46.450 --> 00:36:51.650
<v Aaron van Wirdum>extra layer of security. So that… in this case there's definitely a server that's

00:36:51.650 --> 00:36:57.250
<v Aaron van Wirdum>also required to decrypt it and if the server sees a PIN three times that's not

00:36:57.250 --> 00:36:59.470
<v Aaron van Wirdum>correct, then the keys are deleted.

00:36:59.470 --> 00:37:00.310
<v Lawrence Nahum>Yeah.

00:37:00.310 --> 00:37:02.770
<v Aaron van Wirdum>No, the decryption key is deleted.

00:37:02.770 --> 00:37:07.470
<v Lawrence Nahum>Yeah, encryption, decryption, uh, it's deleted but also Jade will will notice

00:37:07.470 --> 00:37:11.110
<v Lawrence Nahum>that you got it wrong three times and will also delete everything, just like the

00:37:11.110 --> 00:37:15.770
<v Lawrence Nahum>other hardware. You could almost see it as a COLDCARD but instead of an ST32 the

00:37:15.770 --> 00:37:21.550
<v Lawrence Nahum>chip has some higher security features like encryption and secure boot.

00:37:21.710 --> 00:37:25.110
<v Lawrence Nahum>And then the other chip instead of being on the device is kind of remote.

00:37:26.930 --> 00:37:32.820
<v Ben Kaufman>Yeah, pretty much. I think that also COLDCARD has a secure [unclear], but I'm

00:37:32.820 --> 00:37:38.720
<v Ben Kaufman>not 100% sure about that. But anyway, yes, I would say that instead

00:37:38.720 --> 00:37:43.880
<v Ben Kaufman>of having the main difference is that instead of having the chip, everything on

00:37:43.880 --> 00:37:49.160
<v Ben Kaufman>the device, then there is another protection layer, which is from a remote

00:37:49.160 --> 00:37:50.040
<v Ben Kaufman>place.

00:37:51.310 --> 00:37:57.310
<v Aaron van Wirdum>So the most obvious question that comes to my mind is what happens if the server

00:37:57.310 --> 00:38:02.230
<v Aaron van Wirdum>goes offline? In that case, it means your coins are locked, gone.

00:38:03.070 --> 00:38:07.470
<v Lawrence Nahum>Yeah, so that's one of the reasons we have the server being open source and you

00:38:07.470 --> 00:38:11.010
<v Lawrence Nahum>can run your own. And also the redundancy of the new design that we're having for

00:38:11.010 --> 00:38:16.110
<v Lawrence Nahum>the blind PIN server. But ultimately, the device could break, just like all

00:38:16.110 --> 00:38:18.970
<v Lawrence Nahum>hardware wallets can break or you know maybe you forget them in the washing

00:38:18.970 --> 00:38:22.870
<v Lawrence Nahum>machine or something in your clothes or whatever. The point is you need to have a

00:38:22.870 --> 00:38:27.130
<v Lawrence Nahum>mnemonic backup or you know private key backup and if the server is down you can

00:38:27.130 --> 00:38:27.790
<v Lawrence Nahum>just use the backup.

00:38:28.990 --> 00:38:33.490
<v Ben Kaufman>So as long as you have the backup, you're safe, even if the server goes down. The

00:38:33.490 --> 00:38:37.850
<v Ben Kaufman>only difference compared to other hardware wallets is that if the server goes

00:38:37.850 --> 00:38:41.490
<v Ben Kaufman>down and you don't have a backup, then just the PIN will not be enough compared

00:38:41.490 --> 00:38:45.150
<v Ben Kaufman>to other hardware wallets where it will be. That's the main difference, I'd say.

00:38:45.410 --> 00:38:48.910
<v Aaron van Wirdum>Right. Yeah, that's important to mention because you basically always need a

00:38:48.910 --> 00:38:53.390
<v Aaron van Wirdum>backup for a wallet anyways, for a hardware wallet. And in this case, you would

00:38:53.390 --> 00:38:56.590
<v Aaron van Wirdum>still have the backup even if the server goes offline. You still have that.

00:38:56.780 --> 00:38:57.120
<v Lawrence Nahum>Yeah.

00:38:57.300 --> 00:38:57.600
<v Aaron van Wirdum>Right.

00:38:58.780 --> 00:39:03.040
<v Lawrence Nahum>By the way, Jade has a modality, a mode that works without the PIN, without the

00:39:03.040 --> 00:39:08.940
<v Lawrence Nahum>PIN server. And the mnemonic is remembered as long as the device is powered. As

00:39:08.940 --> 00:39:12.040
<v Lawrence Nahum>soon as you power it off, it's all gone. So you could have, you know…

00:39:13.330 --> 00:39:18.710
<v Lawrence Nahum>a situation where you just even if the server is done you just enter the keys

00:39:18.710 --> 00:39:22.350
<v Lawrence Nahum>again, sorry, the the mnemonics again on the device and you can use it without

00:39:22.350 --> 00:39:22.790
<v Lawrence Nahum>the PIN server,

00:39:22.790 --> 00:39:23.670
<v Aaron van Wirdum>Right.

00:39:23.670 --> 00:39:24.810
<v Lawrence Nahum>As an emergency situation.

00:39:24.810 --> 00:39:30.790
<v Aaron van Wirdum>Okay, so we've now covered four hardware wallets so let

00:39:30.790 --> 00:39:36.460
<v Aaron van Wirdum>me see if I can sort of explain the trade-offs here in a decent way.

00:39:36.980 --> 00:39:41.400
<v Aaron van Wirdum>And Ben, please correct me if I'm making a big mistake here somewhere. All right.

00:39:41.580 --> 00:39:46.730
<v Aaron van Wirdum>So on the one end of the spectrum, we sort of have Trezor, which is the most open

00:39:46.730 --> 00:39:52.730
<v Aaron van Wirdum>source, I would summarize. But it has the problem that the

00:39:52.730 --> 00:39:57.860
<v Aaron van Wirdum>keys can be extracted in case of a physical attack, unless you add... uh

00:39:57.860 --> 00:40:03.020
<v Aaron van Wirdum>a passphrase. Then on the other end you the other end of the spectrum there's

00:40:03.020 --> 00:40:07.900
<v Aaron van Wirdum>Ledger. It has a secure element so the keys cannot be extracted but there's some

00:40:07.900 --> 00:40:12.900
<v Aaron van Wirdum>trust involved in a way in what's actually going on on that secure element. Then

00:40:12.900 --> 00:40:17.620
<v Aaron van Wirdum>we discussed the COLDCARD which has two chips so it sort of minimizes the secure

00:40:17.620 --> 00:40:22.380
<v Aaron van Wirdum>element thing; it still has some secure elements but it does the absolute minimum

00:40:22.380 --> 00:40:26.800
<v Aaron van Wirdum>possible, and the rest is used in an open source way. And then we have the Jade

00:40:26.800 --> 00:40:30.820
<v Aaron van Wirdum>Wallet, which you just explained, which has sort of one chip that, you know,

00:40:30.920 --> 00:40:36.700
<v Aaron van Wirdum>instead of two, it's one, which sort of sits between completely open source and

00:40:36.700 --> 00:40:41.000
<v Aaron van Wirdum>completely secure elements. You think it's closer to secure elements, but then

00:40:41.000 --> 00:40:46.600
<v Aaron van Wirdum>there's an extra layer of security involved with the signature

00:40:46.600 --> 00:40:52.160
<v Aaron van Wirdum>needed from a server in order to actually be able to spend the coins. Did I

00:40:52.160 --> 00:40:52.920
<v Aaron van Wirdum>summarize it okay?

00:40:53.000 --> 00:40:56.600
<v Ben Kaufman>Not a signature or like a decryption key, but yeah, more or less.

00:40:56.780 --> 00:41:01.280
<v Aaron van Wirdum>Right. Okay, so these are sort of the main security trade-offs of these four

00:41:01.280 --> 00:41:07.280
<v Aaron van Wirdum>wallets. And there are more wallets, but... Yeah, we kind

00:41:07.280 --> 00:41:10.260
<v Aaron van Wirdum>of cover the spectrum. And then there are more wallets that have their own

00:41:10.260 --> 00:41:13.840
<v Aaron van Wirdum>trade-offs that sit somewhere in between or their own designs in other ways.

00:41:14.120 --> 00:41:18.740
<v Aaron van Wirdum>Actually, that is a good point to bring up. There are other differences between

00:41:18.740 --> 00:41:23.800
<v Aaron van Wirdum>the hardware wallets, of course. We've now discussed the security trade-offs, but

00:41:23.800 --> 00:41:29.290
<v Aaron van Wirdum>let's very briefly maybe mention some of the other... design choices that could

00:41:29.290 --> 00:41:32.530
<v Aaron van Wirdum>be interesting for people to know about? Like, how does it connect to your

00:41:32.530 --> 00:41:36.660
<v Aaron van Wirdum>computer? There are these kind of differences as well, right, Lawrence?

00:41:37.160 --> 00:41:41.980
<v Lawrence Nahum>Yeah, so USB is the first thing that came out with Trezor, right?

00:41:42.160 --> 00:41:44.700
<v Aaron van Wirdum>That's how you connect it to your computer—

00:41:44.700 --> 00:41:47.920
<v Lawrence Nahum>or to your phone even, if you have the right cable or adapter.

00:41:49.580 --> 00:41:55.140
<v Lawrence Nahum>Then Ledger came out with the Nano X, which has Bluetooth support.

00:41:57.310 --> 00:42:03.010
<v Lawrence Nahum>COLDCARD came out with SD card support as well as cable, USB cable.

00:42:03.990 --> 00:42:09.670
<v Lawrence Nahum>There's some that use QR code. Jade is kind of using

00:42:09.960 --> 00:42:15.780
<v Lawrence Nahum>USB as well as Bluetooth as well as QR codes. QR codes are not enabled yet in the firmware.

00:42:17.220 --> 00:42:19.820
<v Aaron van Wirdum>Yeah, it actually has like a camera thing, right?

00:42:19.920 --> 00:42:21.020
<v Lawrence Nahum>Yeah, it has a camera,

00:42:22.720 --> 00:42:27.740
<v Lawrence Nahum>which we do use internally for debugging and testing, like loading the mnemonics

00:42:27.740 --> 00:42:30.020
<v Lawrence Nahum>faster than having to type them in, for example.

00:42:31.760 --> 00:42:37.730
<v Lawrence Nahum>But that's only for development at the moment. And actually, this affects also

00:42:37.730 --> 00:42:41.270
<v Lawrence Nahum>trade-offs in terms of security, because everything with radio, it's easier to

00:42:41.270 --> 00:42:46.630
<v Lawrence Nahum>attack remotely, which is why we have two firmware variants, one with BLE support

00:42:46.630 --> 00:42:49.650
<v Lawrence Nahum>and one without, and it's not even compiled in and it's completely disabled.

00:42:51.760 --> 00:42:53.160
<v Lawrence Nahum>Yes, there's various ways.

00:42:54.280 --> 00:42:58.880
<v Aaron van Wirdum>You mentioned that there's some security trade-off maybe involved, but this is

00:42:58.880 --> 00:43:00.960
<v Aaron van Wirdum>mostly about usability, this kind of stuff.

00:43:03.730 --> 00:43:08.590
<v Lawrence Nahum>I mean, yes. For example, on iOS, there's no way other than Bluetooth or maybe QR

00:43:08.590 --> 00:43:13.460
<v Lawrence Nahum>codes to use iOS. And so if you want to use iOS, Bluetooth is kind of like... The

00:43:13.460 --> 00:43:13.960
<v Lawrence Nahum>way forward.

00:43:14.260 --> 00:43:19.980
<v Aaron van Wirdum>Right. Okay, then I want to ask one last question because the podcast has been

00:43:19.980 --> 00:43:22.920
<v Aaron van Wirdum>getting pretty long and also pretty heavy, I think.

00:43:24.430 --> 00:43:28.870
<v Aaron van Wirdum>You have an intense stare, Lawrence. You're zoned in.

00:43:30.560 --> 00:43:34.500
<v Aaron van Wirdum>One last question. Okay, the concept of hardware wallets itself.

00:43:36.120 --> 00:43:41.140
<v Aaron van Wirdum>There is the argument that the whole concept of hardware wallets itself... It's

00:43:41.140 --> 00:43:46.540
<v Aaron van Wirdum>not a really good idea. Exactly because now you have a device that's

00:43:46.540 --> 00:43:52.460
<v Aaron van Wirdum>explicitly intended to store your private keys and that everyone knows

00:43:52.460 --> 00:43:58.280
<v Aaron van Wirdum>is explicitly intended to store your private keys. So that makes it sort of a

00:43:58.280 --> 00:44:03.300
<v Aaron van Wirdum>target. So that can be a supply chain attack kind of thing or maybe other types

00:44:03.300 --> 00:44:07.730
<v Aaron van Wirdum>of... Even the physical attack, it's, you know, if you see... a Trezor laying

00:44:07.730 --> 00:44:12.150
<v Aaron van Wirdum>around, you know what it is, and so you know that that that's something that's

00:44:12.150 --> 00:44:17.590
<v Aaron van Wirdum>probably storing private keys; well if you just use a wallet sorry a phone

00:44:17.590 --> 00:44:22.430
<v Aaron van Wirdum>that you you know you buy a cheap phone you do nothing else with it you just use

00:44:22.430 --> 00:44:28.260
<v Aaron van Wirdum>it as uh as a hardware wallet then no one will know that there's

00:44:28.260 --> 00:44:33.080
<v Aaron van Wirdum>Bitcoins on it, presumably, and there's also much smaller risk for supply chain

00:44:33.080 --> 00:44:37.140
<v Aaron van Wirdum>attacks. What do you think about this argument sort of against hardware wallets

00:44:37.140 --> 00:44:37.620
<v Aaron van Wirdum>in general?

00:44:37.860 --> 00:44:41.980
<v Lawrence Nahum>Well, you're right. I mean, there was also that Ledger leak.

00:44:42.460 --> 00:44:44.460
<v Aaron van Wirdum>That's also a good example, yeah.

00:44:45.860 --> 00:44:51.280
<v Lawrence Nahum>So I agree in principle that you avoid the entire supply chain attack with a

00:44:51.280 --> 00:44:55.250
<v Lawrence Nahum>laptop or a phone. It's never going to be as secure as a hardware wallet. Even,

00:44:55.470 --> 00:44:59.710
<v Lawrence Nahum>you know, the worst hardware wallet is much better than a phone or laptop in

00:44:59.710 --> 00:45:00.370
<v Lawrence Nahum>terms of security.

00:45:00.710 --> 00:45:02.010
<v Aaron van Wirdum>Do you agree with this, Ben?

00:45:02.230 --> 00:45:08.150
<v Ben Kaufman>Yes, so it's different trade-offs in terms of security. So in this sense, it's

00:45:08.150 --> 00:45:12.950
<v Ben Kaufman>a supply chain risk versus physical risks and etc.

00:45:13.910 --> 00:45:18.190
<v Ben Kaufman>But also, there is the option of DIY hardware wallets.

00:45:22.250 --> 00:45:25.430
<v Lawrence Nahum>You can basically flash the same firmware that runs on Jade on at least three or

00:45:25.430 --> 00:45:31.430
<v Lawrence Nahum>four different off-the-shelf boards that you can buy on Amazon or AliExpress

00:45:31.430 --> 00:45:37.110
<v Lawrence Nahum>like M5Stack or the T-Display and there's a couple more.

00:45:37.740 --> 00:45:40.120
<v Lawrence Nahum>And also there's a DIY Spectre.

00:45:40.120 --> 00:45:46.080
<v Ben Kaufman>Yeah, there is the Spectre DIY which is a more expensive one but is also

00:45:46.080 --> 00:45:51.280
<v Ben Kaufman>supporting QR codes, communication and is completely off the shelf. So there are

00:45:51.280 --> 00:45:57.220
<v Ben Kaufman>very different trade-offs and you could use a hardware wallet which is DIY

00:45:57.220 --> 00:46:03.060
<v Ben Kaufman>in order to avoid supply chain risk but then you have to do a bit more work,

00:46:03.530 --> 00:46:08.710
<v Ben Kaufman>in like assembling and flashing firmware and stuff like that; so

00:46:08.710 --> 00:46:14.390
<v Ben Kaufman>it's always trade-off between some things either convenience and usability

00:46:14.390 --> 00:46:20.310
<v Ben Kaufman>and security physical security supply chain risks, all

00:46:20.310 --> 00:46:25.690
<v Ben Kaufman>of that needs to be taken into account. I think for most

00:46:25.690 --> 00:46:30.790
<v Ben Kaufman>users using a hardware wallet still makes it the best trade-off

00:46:30.790 --> 00:46:36.470
<v Ben Kaufman>but it can very much depend personally on your personal skills etc.

00:46:36.770 --> 00:46:40.690
<v Lawrence Nahum>Yeah, and just to finish, I would say that the most secure thing I believe out

00:46:40.690 --> 00:46:43.990
<v Lawrence Nahum>there right now would be to use all of these hardware wallets in multisig

00:46:43.990 --> 00:46:48.450
<v Lawrence Nahum>together, because then even if one of these manufacturers is bad or even if you

00:46:48.450 --> 00:46:52.150
<v Lawrence Nahum>get a supply chain attack on you know receiving one of those, the fact that you

00:46:52.150 --> 00:46:56.450
<v Lawrence Nahum>have so many different hardware wallets from different brands and different teams

00:46:56.450 --> 00:47:02.060
<v Lawrence Nahum>and so on means that one single one cannot compromise you. Whatever is your K of

00:47:02.060 --> 00:47:03.760
<v Lawrence Nahum>N, multisig, you know.

00:47:03.980 --> 00:47:07.720
<v Aaron van Wirdum>Yeah, you can buy like five hardware wallets from different manufacturers and

00:47:07.720 --> 00:47:10.200
<v Aaron van Wirdum>make a three out of five set up or something like that.

00:47:10.200 --> 00:47:12.540
<v Lawrence Nahum>And then someone will need to compromise three hardware wallets before they can

00:47:12.540 --> 00:47:13.040
<v Lawrence Nahum>get your funds.

00:47:13.200 --> 00:47:13.500
<v Ben Kaufman>Exactly.

00:47:13.800 --> 00:47:15.640
<v Aaron van Wirdum>And this is possible in Spectre, right?

00:47:15.640 --> 00:47:20.400
<v Ben Kaufman>Yes, so Spectre is used for that. Yes, it allows you both single-sig but also

00:47:20.400 --> 00:47:25.870
<v Ben Kaufman>multisig with all of these hardware wallets. In any combination you would like.

00:47:26.130 --> 00:47:32.130
<v Ben Kaufman>So it's a very different security model compared to just trusting

00:47:32.130 --> 00:47:33.430
<v Ben Kaufman>a single hardware wallet.

00:47:34.450 --> 00:47:39.190
<v Aaron van Wirdum>Right. Well, interesting. I actually learned something during the recording of

00:47:39.190 --> 00:47:43.750
<v Aaron van Wirdum>this podcast. I always pretend to ask questions that I already know, but this

00:47:43.750 --> 00:47:47.890
<v Aaron van Wirdum>time I actually learned something. So thanks, guys. Thanks, Lawrence. Ben, thanks

00:47:47.890 --> 00:47:49.110
<v Aaron van Wirdum>a lot for helping me out here.

00:47:49.270 --> 00:47:49.610
<v Lawrence Nahum>For sure.

00:47:50.030 --> 00:47:52.650
<v Aaron van Wirdum>For keeping Lawrence honest.

00:47:54.730 --> 00:47:57.950
<v Aaron van Wirdum>This was the Van Wirdum Sjorsnado. Thank you for listening.

