foreign
[Music]
thank you for starting the morning with
us I'm here to introduce Andrew millik
he's the co-founder and CEO of skiff
which is an end-to-end encrypted privacy
first wallet native communication and
collaboration platform Andrew previously
worked on spacecraft at eight SpaceX
operating systems and spend time working
all over Asia and Eastern Europe before
that Andrew graduated as the Henry Ford
the second scholar from Stanford welcome
Ender thank you so much and hi everyone
nice to meet you I've got a
great group
so yeah we're going to start by talking
about basically the stack of how you'd
build consumer applications in web3 and
so what does that mean not just for
applications in defy and finance and
trading and exchanges but how can we
actually build applications that we use
every single day and ideally every
single hour so you wake up you check
your email you check your messages how
can we rebuild the stack of the way
consumers live and work on the internet
to be more private and use our own so
we'll start with just some of the
attributes of what we look for in our
application and also in all applications
in this sector we'll start with privacy
first and this actually for us at skiff
is probably the most important
fundamental layer of how we build things
so what that means is all of your data
is owned by you and it's private to you
so no one else not some technology
provider or platform will have access to
it and so it's really only something
that you should have access to which is
just also a lot more intuitive for the
way we use these really sensitive
applications whether it's file storage
or messaging or communication all the
the things that we store on those
products should really only be known to
us and that's not an expectation that
people certainly have today
beyond that and we'll talk more about
this later we think it should be
decentralized and what that means isn't
always that you know compute is taking
place all across the world on chain or
um always on a decentralized network but
it should be architected in a way where
your data and your compute isn't always
entrusted to a platform and that
translates into the data structures that
you might use into the way
authentication and identity might work
and also into so much more from an
ideological side of how might your data
be de-platformed if you're removed from
it how would you think about censorship
resistance how do you think about access
to it that's always permanent and always
accessible and then also how would you
think about just incorporating privacy
into every single piece of your data
storage and identity
finally this one's a little interesting
we think that application should be
interoperable so when you're no longer
asking an oauth application like Google
for your identity we want you to be able
to use that information in other parts
of the web so whether it's logging into
another product uh storing your data
elsewhere or building really cool API
and programmatic Integrations to all the
files and things that you create
and lastly we'll just say this very
briefly we think it should be open
source which is something we've
committed to at skiff but also I think
something that uh in the entire
community of just ethereum and the
crypto ecosystem is really important to
make sure people trust what you can do
and also can replicate it
so we'll start with privacy first with a
pretty intuitive saying which is if you
own the keys you also own the data
um and so basically everything on the
plot the product should be n10 encrypted
from the ground up so you're sending a
message keep that message private only
to you and the recipient if you're
uploading a file or piece of information
make sure that's also private only to
you we've basically just seen countless
examples in the last two years with
people storing things on the cloud and
being de-platformed targeted for the
things that they store in a cloud
provider or just not really able to
understand and Trust where their data is
being used is it being dropped into some
massive machine learning model is it
being used in some massive search
indexing algorithm that's also just used
across 500 million other users your data
should be private to you and n10
encrypted
I skipped over this but we also want to
make sure there's no personally
identifying information inside these
products this is slightly controversial
uh depending on the application but uh
in the encrypted messaging space and
antenna encrypted Communications it's
really kind of this Ground Zero
expectation that people have where you
want to be able to use a messaging
product you want to be able to use a
communication product without giving out
a phone number or a real name Etc and so
many places in the world now make it
harder and harder to do that whether you
need to submit an ID to buy a SIM card
or you need to go through an internet
provider or an email provider and
provide another address or some sort of
accountability chain so that first one
is also really important to us and
finally a lot of this these bullet
points actually rest on the idea of
non-custodial wallets or non-custodial
public keys where if you're doing n10
encryption you kind of have to own your
own key pair and so that poses a bunch
of interesting consumer product
challenges that we'll get to shortly
so on that next point of decentralized
we talked a bit about how decentralized
can lead to censorship resistance where
there isn't a single kind of point of
de-platforming where you can get kicked
out of your identity or kicked out of
your product and also with n10
encryption it's really unclear even who
is using that data or how it's going to
be processed Beyond just the things that
you do with it
this also translates into client-side
data storage data structures sharing
search collaboration and more so once
you've gone down the path of n10
encryption any product that you build
will not have access to user data and
what that means is you've kind of set up
an entire sequence of challenges and
Hoops that you have to jump through
whether it's rebuilding how search works
you know searching on someone's device
or rebuilding how you share that data
with other people so if I want to share
a file or a document with another
collaborator how can you know I as a
user do that but the platform never be
able to do something like that
finally one super important point is
also how you trust the platform in the
product as well and so that comes from
how you might actually look up other
users public keys and we'll get to this
later but this is one of the biggest you
know age-old questions in communication
how do I send a secure email to someone
how do I look up someone's public key if
I'm using you know signal or a telegram
secret chat or pgp email back in the 90s
and then on that interoperable point a
lot of similar things about basically
giving people ownership of their
identity through self-custody of their
keys or wallets and then also just using
a much more local first on device model
where data can still be synced or
synchronized across the devices and
things that you use but because it's n10
encrypted a lot of that actual computing
power and Computing Authority is no
longer with the technology provider
uh and then we'll cover some of that
last point about command line access or
programmatic access for your content
so I guess let's get into some of the
actual technical parts of the stack
uh how is actually intent encryption
communication been done in the past
we'll start with pgp I don't know Has
anyone used pgp or uses it regularly
okay so a little bit so pgp is uh I
think a little over 30 years old now uh
it was invented or published in the
1990s I think 91 and unfortunately it's
become pretty clunky pretty clunky very
complex and pretty inefficient where
there were proprietary formats owned by
corporations open source formats owned
by you know open source standards and
now just other basically open source
Publications compliance standards Etc
that try and take this age-old 30 year
old standard and updated for modern
cryptography and secretly it seems like
we have a few pgp users here but I'm
just going to say that almost no one
actually uses it it's estimated that
literally 50 000 people worldwide still
maintain pgp key Pairs and if we look at
the other option for n10 encrypted
private communication we're literally
looking at many three four orders of
magnitude of different scale and so you
can understand why maintaining your own
pgp care or key pair is probably a thing
of the past
so if we look at signal and telegram as
examples where signal is default antenna
encrypted using the signal protocol and
telegram is n10 encrypted using secret
chats
we get so much more privacy built in
right out of the box so the protocols
handle all the stuff around key exchange
key downloading and actual encryption of
messages and then that leads to you know
700 million monthly active users on
Telegram and over 100 million on Signal
finally one piece of this that you know
is somewhat of an advantage but also can
bite you in the back in the end is a
complex story around key ownership sign
up and metadata where if you look at a
product like telegram they're often
criticized for not being fully open
source even if some of the protocol is
and Signal often is criticized for
requiring a phone number on sign up
which for some of us may not matter
because we'll you know happily share a
phone number with friends but for others
it can really defeat the purpose of a
privacy first messaging product
now we'll look at one last piece of the
current uh authentication framework so
the last is oauth which I think is one
of the most painful uh forms of doing
authentication today because it's
basically putting your identity in the
hands of one single server and provider
and so whether it's you know your Gmail
account or another product you've
basically made that to you know become
your identity around the web Without
Really knowing that you really own it
and so the way oauth works is just for a
quick overview you know you'll plug
oauth into your app in five minutes you
know developers have made that so easy
you can query for a scoped token so ask
for my birthday or my favorite color or
my email address and get back
credentials that can be refreshed
possibly indefinitely for access to an
application
so a lot of these standards have
developed as we you know the identity
story gets more and more complicated
around the web as centralized providers
store more information about us and also
just keep enlarging these scopes of data
that you could access
now we'll just flip the Paradigm
completely on its head
we at skip think wallets are just a
natural successor to this problem across
encryption across identity and across
data ownership
so we've actually seen wallets start to
be used as the basis for generating
end-to-encrypted key Pairs and so if
you're familiar with the method eth get
encryption public key this is actually
an Innovative thing published by the
metamask community and then later
adopted into Brave wallet where you'll
turn an ethereum public key or ethereum
key pair into a curve 25519 encryption
key pair which can be used to just
encrypt and decrypt data with your
metamask or Brave wallet
uh there's a bit of complication around
that as some of the cryptography is
ironed out but it's this much more
simple and intuitive way of going from a
key that you own to an entire framework
for end-10 encryption
instead of access grants we'll where
we'll ask Google or a provider for more
data all of this will be super
transparent to users where you sign a
token giving access or authenticating
exactly what you want or exactly who you
are
and then finally on the distribute
distributed public key directory I think
no one here wants to put up one of those
you know HTML only personal pages with
your pgp key and then just expect people
to go to that if they want to
communicate securely with you with
wallets and things like naming Services
we get a much simpler way of going from
a human readable name like skip.eth to a
public key and we have some people from
the dm3 team here who are working on
that exact problem
uh we'll talk about this more later but
it does introduce some problems on the
consumer side with recovery and
basically account reset as we all know
and using a wallet
so just to recap what's this new model
for authentication we'll start with a
human readable name like you know an
email address or even simpler we'll take
that and transform it to a wallet
address which is done using a
transparent on-chain lookup and then
finally we'll recover a public key from
that and so in certain cases we'll get
back an ethereum key pair or in others
like that uh kind of experimental method
I talked about we could actually figure
out a way to get a really well suited
encryption key pair to send data to
people end-to-end encrypted so now we'll
go we'll kind of completely erase the
pgp stack We'll erase oauth and we'll go
from this you know human readable name
all the way to n10 encryption much
easier than signal much easier than
Telegram and so much easier than pgp
which is why people don't use it
um so then we'll just cover some about
storage and interoperability a little
more on the technical side
so this is a point that I've made a lot
but I think is pretty intuitive as well
if we're moving to a world where
decentralized storage actually works for
products we also need n10 encryption if
you're storing data on a decentralized
network you wouldn't want to store it
all in plain text you know I write a
note I write my PhD thesis I don't
always want every single draft of that
to just be stored you know sharded
around the internet in plain text so
instead I want that to be encrypted and
I don't want that to be encrypted with
some random person's key I want it to be
encrypted with my key and that's exactly
what n10 encryption means so to get
basically this value alignment across
end-to-end encryption and decentralized
storage wallets are an excellent
solution for that
and then once you've actually published
things to a decentralized network you
can use that Network to query for it
maintain a list of identifiers and have
permanent access to that outside of any
sort of platform which gets back to that
importance of censorship resistance
then we'll also just talk about the data
structures let's say you're now using an
n10 encrypted product that has no access
to the things that you're writing you're
typing your notes your documents all of
a sudden you can't use a single server
like the Google model or you know the
centralized model of collaborating you
have to use a new set of data structures
and so we'll cover this briefly because
it's probably a little bit of a tangent
but there are actually really good data
structures that are now coming into
modern production use like crdts which
are conflict-free replicated data types
that actually allow for composable
operations to be done on these data
structures from around the world so I
increment some number and someone else
across the world decrements it you can
see how that operation is composable and
so even if we there's some latency or
someone gets disconnected we can arrive
at a really consensus based version of a
final product without having a server
the last point about interoperability is
that it makes account transfer sales and
auctions so much simpler so when an
account or identity is transferred on
chain we'll just do that same lookup and
the new owner gets access to that
username or will just automatically have
access to that's gift.heath it'll also
mean that users can choose their own
history and path around things like 2fa
you know account uh signatures and login
and all that sort of stuff so if you
want to use a multi-sig wallet for
skip.eth or you want to set some sort of
2fa mechanism or use a hardware wallet
you'll get to choose your own security
posture and so that has a lot of Pros
for more advanced users it means that
people can choose their own way of
securing their their private keys but it
also means that platforms no longer have
to deal with some of that risk of
accidentally de-platforming people
having 2fa and complicated reset
mechanisms and you can make sure that
the right identity is going to the right
person
it does however introduce complications
around account reset so we'll just be
transparent about that you know how
difficult it is to remember a seed
phrase maybe you wrote it down or put it
in a safety deposit box or you split up
pieces and gave them to your friend but
that makes building consumer apps a
little more challenging too like if I
want to reset my email address or my
messaging app it's a little weird to ask
my friend to click a button or three of
them to click a button and give me their
you know secret out of a few different
secret shares or to use a multi-sig
wallet to log into a single
collaborative product so
it gives users a lot more freedom and
empowerment over how they can use these
products and lets you choose your own
security Journey but it also means that
there's more complexity around account
reset identity and all those areas that
frankly a lot of the regular consumers
will get to and so that's something we
spend a lot of time on at skip how can
you make products really simple really
easy to use and really easy to sign up
and so once you get to users who you
know don't want to remember a seed
phrase or write it down on their desk
you actually get people who you know
have access to all these amazing
benefits of end-to-end encryption and
you know easy to use collaboration but
then if they lose their seed phrase it's
harder to reset your account
so to recap on the stack we talked first
about the auth layer where wallets
basically enable this entirely new
user-owned flow for authenticating and
logging into products they also give us
a much simpler mechanism for
Distributing public keys so don't run
your own personal site with a pgp key
pair run your wallet and just basically
add that data on chain so we can go from
your human readable name to your wallet
address to a public key to end 10
encryption
from there the storage layer of using
decentralization and n10 encryption give
us so much more flexibility you can
basically store data in more places or
in a decentralized network if that data
is encrypted with your key pair it also
means that data is portable so you want
to access it via program or via some
sort of command line tool and change it
or edit it or download it you can do
that all from the decentralized network
then finally on the app layer there's
still a lot of progress that has to be
made so this is basically a whole new
paradigm for building a product like
Gmail or Dropbox or drive or OneDrive
I've tested you know or our team has
tested every single email product out
there every single storage product out
there and it's radically different to
build one that's n10 encrypted from the
ground up and works with people's
wallets so it gives us a lot of benefits
of basically this you know natural path
from Identity to key pair but it also
means that we have to rebuild a new
stack of consumer apps that do this all
behind the scenes you know simply
naturally and also really performantly
so that lookup process gets complicated
um
so I think from there yeah I just wanted
to add a couple notes about basically
how we think this benefits the entire
community and ecosystem and then we'll
do questions so my background is I've
been a software Engineers my whole life
since I was probably five or six years
old although I was not a professional
engineer at that point and now actually
doing this for real you can see that
this model of Building Products is just
so much more intuitive and better for
people and their identity so if you have
a you know a wallet or a keeper that you
really trust and you want to keep track
of you get to choose your own security
mechanisms and safety mechanisms for
owning that private key if you want to
communicate with people around the girl
the world with end-to-end encryption you
can now get that an entirely new kind of
more user-owned stack of products I've
been a big fan and so is our team of
decentralized storage and n10 encryption
is one of the biggest enablers for
actually building consumer apps on top
of it so there's still so much work to
be done on the product side but we think
that basically going from you know this
distributed consensus around public keys
to end time encryption to a lot more
flexibility on storage and
interoperability it's just a much more
intuitive better and simpler future that
the end of the day is giving people
access to what we see as a fundamental
right which is private communication
private writing private collaboration
and owning your own key pairs so I think
we've got five six minutes for questions
thank you all for coming I know it's uh
early
go ahead
ah so this is a great question the
question was what are the nuances of
going from uh I think it's just
basically a wallet address to a actual
public key that you might use to encrypt
data so the nuances are like a wallet
address is derived from a public key so
it might be a hash Republic Key or you
know a hash and a truncation of a public
key and that's how you get the you know
the hex 0x whatever you can't use that
hex to encrypt data it's just basically
the hash Republic Key and not a public
key so that gives us I'll just go back
to the
the diagram so because we can't actually
do that there's now two options to go to
a public key we can use for encryption
one is we generate a new key pair that's
derived from your wallet address so
derived from your wallet private key for
encryption so you can use whatever
elliptic curve you want so one that's
really well suited for that and generate
a new key pair or in the ethereum
context you could use an ethereum public
key so a curve
scp-256k public key which is not really
quite as well suited for encryption it's
a little slower and generally not
preferred over you know like a curve
25519 public key but yeah I think
there's still a lot of lack of consensus
on how to go from a wallet address to a
public key or how to use you know do
encryption and decryption via wallets is
that uh the data can be stored in a
decentralized way into showed ipfs how
is this real estate in practice on crdts
when that user presses the keys that the
new ipfs hash every time or how does it
work yeah this is a good question so
right now basically the way way our
products work is when a user presses a
key it's applied locally to your editor
State your editor state is some data
structure that's like editors are
actually super complicated you know we
should all go to a conference on text
editing but basically editors store some
array of values like headers body text
Etc so that gets mapped to a crdt state
which is just a data structure which
basically like a set of operations on an
empty State and so that operation you
know I typed a key at position 500 is
then sent or it's n10 encrypted sent
across the network to other people who
are collaborating and they also apply
that operation and so you do both do
that composibly and end up at a final
state from there every so often and
there's another I guess like a few
little kinks to iron out here from there
your document is intent encrypted so
encrypted with a key that you have
access to in your collaborators do but
no one else does and then from there it
can be uploaded to ipfs and so there's a
few nuances of not everything in real
time on our products is uploaded to ipfs
but things that are immutable or static
or published can be so so that's how
that's done today but
um yeah the whole decentralized storage
kind of network choosing is another
whole area go ahead
sorry can I just ask then are your
servers
they're providing the ipfs services
that's not decentralized as of yet do
you have any plans around that or yeah
so I don't think we I've been a big fan
of ipfs for like five years and what you
know tried running my own notes all that
I don't think it's totally feasible for
everyone to be running their own kind of
nodes in a decentralized network so
they're a really great ipfs gateways you
know for upload and even cloudflare runs
a really fast kind of caching layer on
top of the download part of ipfs so I
think basically yes there's some you
know antenna encryption which is done
client-side then it gets passed through
some sort of Gateway which is generally
centralized and then it gets put on a
network and like the user at the end of
the day can get access to those
identifiers so at the end of the day you
still get the benefit of you know your
data's on 10 encrypted it's put on a
network you can get access to the
identifier in the key but it's not you
know every single part of that process
isn't uh totally distributed uh well if
any last quick things either come grab
me thank you all for coming and yeah I
guess we had that whole uh Power scare
so someone you know did some sort of
search
[Applause]