The secrets your keys hold
ETHCC 3 · March 2020 · 26:01
Frankie Pangilinan and Kyra GauthierDickey discuss what cryptographic keys can reveal.
Speakers
Topics
From ETHCC 3, hosted by Ethereum France.
Transcript
I think my voice is louder than the speaker okay there you go okay identity 1a the distinguishing character or personality of an individual be the relation established by psychological identification to the condition of being the same with something described or asserted 3 a sameness of essential or generic character in different instances be sameness and all that constitutes the objective reality of a thing for an equation that is satisfied for all values of the symbols : so how many of you have any people earning here there's
like a lot of people in here looking at me right now this is great how many of you in here understood this definition how many in here like this definition I only see one hand so for both those questions I actually really appreciate reading definitions the definition comes from the Oxford English Dictionary because it is a good way to understand what it is we are talking about when we try to attempt to communicate with each other the reason why I'm gonna go on this tangent is going to be clear in a minute I'm gonna let you continue thanks ah yes why this we think a lot about how the tools we create affect how we
interact with the world in fact I would dare to say the tools we use define us so we came here all the way from Hawaii and we've been asked a lot about our daily lives mostly about living in the tropics fruit surfing she spear fishes her breath record is what like three minutes no no two minutes two minutes oh that's pretty long and but the thing that I like to bring up is nothing very exciting it's what I like to call the flyer phenomenon and
so in our community poster boards are a really big deal around town if there is a poster board anyway people stop and read the Flyers this is how everybody gets informed about the events going around town so we wanted to create something that will remain ambiguous and feel Frankie comes back on stage that we can implement in a events app for our island because right now people either use
poster boards or face book events so we're we first off we want to get people off Facebook secondly we want to secure communication and we want to reflect human traits in the software that we create thirdly or fourthly we wanted to represent who we are as people in our local community okay that's where I come in and I start to talk about seat so obviously we're in the developer tools tracks there's a reason why were in the developer tools track I you're currently working on a library called seed which is a key manager and it a lot of it is like I
would love to have a key miniature library that it's easy to use that is very lightweight that does not prioritize theorem that allows me to have multiple keys under different curves so that I can sign and broadcast messages on different protocols I started off by writing some pseudo code it's like some example code of how I want it to look like and I'm currently writing it out so that it matches this example because I wanted it to be simple and a lot harder to write your things to match your Docs than it is to write your Docs after you've read the library it's also hard to read dogs this is like a
basic overview of what the API is going to look like and I'm gonna go through this really quickly because I actually don't particularly care for the speaker your audience style I would really much more appreciate if you're interested to ask questions help me understand or that I can answer to help you understand what I'm working on the seed class will take this is written in JavaScript for those of you who maybe didn't catch that in the beginning or I didn't make that clear the C class will take a key type in the interface for the key type is signing cryptic new and if available recover I got a lot of the the
style in which I like to write my code from reading other people's code I really liked this example this is a spot which is the SSB server which is a lot of the API is based around depth checked if anyone is familiar with what that is my guess is not given the looks on your guys's faces depth ejected I think if you ask Dominic will say today will pay he thinks it was like a failed experiment that you shouldn't but if you ever have to it's like modules are like drugs if you have to inject your drugs you're doing something wrong so but this pattern made a lot of sense to me and
there these were built to better represent plugins style architectures where it was fluid and easily repurposed and lightweight and not heavily opinionated I also really want to emphasize that it hasn't like it should have a pretty it's going it has a very simple API for choosing the storage I wanted to make it start agnostic so that you could use it in the browser if you start decided you could use it in a server but it is definitely created more for client-side browser applications at least that's why I'm writing it oops that was not I wanted to go back a
little bit about us I'm Frankie I like to leave that for last I really enjoy the concept of key management as a part of an identity or representation of a person because what more do we really need to be and I would like the point of this for me is that like yes we are trying to build an advanced application at some point in my life that is what I would like to do because this is what everybody keeps telling me the reason why they're staying on Facebook I really just want to get my like cousin who's like it has a band who's the only reason why he uses Facebook is because his band post events on there but to me is incredibly
disturbing that that is like the most common thing people keep telling me and so this is the first piece that I need to build and it's the piece that had very well no and I'd like to open up the floor to like first of I didn't cover anything in this description and I'm hoping you guys like have questions and want to know more about this the IDR thank you cuz I don't talk about that the idea is that you actually are not importing and exporting private keys that you use a this is the word you can generate a mnemonic inside seed you can
get the mnemonic out but you if anyone ever looks at the word mnemonic and how it's spelled you will appreciate while I am laughing at myself right now I like to say Menominee oh yeah now that you've heard it you'll never unhear it so you it will generate a mnemonic or you can provide a mnemonic and then we will like if optionally you can store the seeds are the the price is generated from the seed in disk but you can always just only store them ephemerally if you never want to go to disk directly does that make sense I don't think the USB stuff is garbage
I think it has a place so what I'm trying to emphasize here is actually more one not if you notice like I can emphasize the theorem keys in my example I emphasized SSB keys and part of that is is because I really hope that like you do have that eight that hardware wallet but I also would like to see proxy accounts become more popularized and so my goal for this and like the reason why I want it is because I want to be able to generate use in multiple curves and send one message with all those keys and the that will help me do my interpretation stage
what we call what I would call a state channel and so my best example is if I was gonna go see a band like go go to a show then I would want to reserve the ticket pay for the ticket and tell the theater or the venue that I'm going and I would like to do this all with one particular key and so that transaction is should all be done with one particular index of the scene and then that index should be discarded once the transaction is complete at least this is what I would like to attempt so granted
this is the first step to that so I'm not sure how well that's going to go in the end so far am I making sense I am I going on it sir I think I'm getting yes it's good yes Joel oh yeah no in in the actual repository itself I do just have the
names of the curves but obviously in an application that I would write I would probably call those Ethan sp oh yeah part of the reason for doing that is that at some point the idea is to not just have this key manager I would like to also build libraries that help manage your endpoints or the way you communicate to those networks and then I would like to collect a some form of figuring out like what the messages themselves are composed of so for example in etherium theorem transactions as we all know have like a nonce and
gasps and so on and so forth but on another example like an SSB message contains a form of something like nonce and it would be nice to have all of this collected in one space so that you can iterate between them like choose which standard you're going to or like which protocol you're going to use and formulate the messages that way I want to make it really easy for myself to just like have a template for building applications using different protocols personally because I don't necessarily want to do everything on aetherium I think SSB has done a really great job of making connections to similar like things that have a relationship it also
has like a very interesting and intelligent user base which is always a good sign and a large community of open-source developers and they've figured they're like figuring out how did you use social identities I guess in a way very well and they have thought about how to do like group communications and things like that that being said they're not very good for like if I could build my own SSB client I would probably not store content in those messages and they would just be pointers to something on that or I give us yeah so far obviously because I have like a
bias of what particular protocols I want to work with these are the methods that I've come up with so far do you know of another protocol that would have a different need outside of or like inside its key management that I can take a look at just farm sorry I'm making a note of that in my
head thank you by the way does anyone else have questions or want to hear more things yeah please that is a great question ideally what I will do and I have created all of the libraries that my heart so desires I would like to create a scaffold of some sort that will allow people to easily create things like meta
masks along with creating applications that do their own key management that is my intended use for this library it could go and it could go in a plug-in or a snap-in meta mask however I don't would be yeah it could do that yeah I want to create I want to create this
under the intention that this should not be taken as seriously as madam asked that you're accused like sometimes you don't need serious keys sometimes you need like ephemeral keys that are loosely treated as tokens for those applications and some applications can share that and my intent is to create a scaffold that uses a service worker but if you were to like store like it and I would do not recommend it as something that you would store a large amount of funds in or anything more than just to pay a little bit of gas sometimes I think that it would be useful as like a way for applications to share a sense of login but UI is not going to be my priority right now I really just want to
get like interacting with the network and the key management very solid and even if it's that even if it just means that for a while it's only like playing around with like storing a username that all applications can share then that in it of itself has makes me think I've achieved something and then we can go into like how do we deal with now storing like a global key shared by applications that stores a lot of ether or died or something like that does that answer that question maybe hopefully some
I can get on these like little bit tangents where I get like stuck on a specific words so if I do that you feel free to react the question yeah as I go down this path yes it will be you I for it up until that point like I really would find it more interesting to start with the little things and getting those little things down before going into something where we go into like real like offing applications i i think that ux is a hard problem to solve and I will
say that link meta mask has done a really good job at solving this hard problem but I think that it's also at the same time as we like asked for all these permissions and meta mask is getting used as you as like as a login it is overcomplicating a very simple step and I'm like a lot of the times like some a lot of these applications are getting a meta Mouse pop-up right at the start because it's just literally trying to do a simple login which I I do see as a problem because at some level like that amount of verification is necessary but is that amount of verification necessary for each particular problem
that every developer is using it for I have a hard time understanding sometimes like why we use like why is I have a hard time understanding why meta mask is being used as a login and because I got okay let me back up I don't have a hard time understanding it I just think that there are better ways of which we can do it smaller ways that aren't conflated also with a very public bank account some anyways other any other No
cool great um I guess I'll finish with thank you very much I very much appreciated that you guys participated in my favorite social experiment of me doing talks and yeah just go all the way to around you