Submind YouTube summaries
Thumbnail for Real World Crypto conference 2020:  session 10

Real World Crypto conference 2020: session 10

Watch on YouTube

Video summary

The Real World Crypto conference session focused on critical vulnerabilities in current certificate revocation and identification systems, proposing innovative software-based solutions to replace fragile infrastructure. Tyler from Mozilla highlighted the inefficiencies of existing mechanisms like Certificate Revocation Lists (CRLs) and Online Certificate Status Protocol (OCSP), which suffer from latency, reliability issues where failures default to trusting bad certificates ("fail open"), and privacy concerns. To address these problems, he introduced CRLite, a system that utilizes cascaded Bloom filters derived from Certificate Transparency logs to push revocation data directly to clients, achieving significantly lower latency than traditional OCSP checks while maintaining high accuracy in identifying revoked certificates. Building on the theme of certificate uniqueness, Dan Shima presented research demonstrating that relying solely on thumbprints for identification is inherently risky due to cryptographic malleability and encoding variations that can allow an attacker to generate multiple valid certificates with identical signatures but different content. Although theoretical attacks using chosen-prefix collisions or key substitution exist, a scan of over 125 million real-world certificates found no evidence of these specific vectors being exploited in practice yet. Complementing this analysis, Gregg's findings on self-signed certificates revealed that insufficient entropy in hardware random number generators could produce identical ECDSA r-values across different keys, further complicating the assumption that thumbprints are unique identifiers without additional safeguards like migrating to stronger hash functions such as SHA-256 or implementing collision detection techniques. The discussion then shifted toward organizational strategies and architectural improvements for managing cryptographic assets at scale. Dan shared lessons from ABN AMRO's transition in 2016 away from slow, manual management processes toward a comprehensive approach that emphasizes rigorous inventories of autonomous assets and simplified developer experiences through network-attached HSMs or abstraction layers. This strategic shift also involved transforming operational teams into consulting roles to proactively plan for future challenges like post-quantum readiness and fostering innovation through multi-party computation for fraud detection without compromising customer data privacy. Finally, Gavin Watson introduced DiCE (Distributed Symmetric Encryption), a threshold cryptography scheme designed to eliminate single points of failure by distributing master keys across multiple nodes rather than relying on expensive Hardware Security Modules. This pure software solution offers high performance and ensures that the master key remains distributed during all operations, but its enterprise deployment required careful implementation of features for secure backups, robust authentication mechanisms, connection management via redundant brokers, and platform diversity to increase attack surface complexity. Together, these presentations underscored a collective move toward more resilient, scalable, and privacy-preserving cryptographic infrastructures capable of withstanding both theoretical attacks and practical operational demands.
Read the full video transcript
good afternoon everybody and welcome to our last two sessions of the day we're gonna start with two talks about certificates and our first speaker is going to be Tyler all right good afternoon everybody and I want to say thank you to the organizers for inviting me to speak it really is lovely to be here so who in this room uses the web on a daily basis and we use it for a number of different things don't we to conduct online sensitive transactions online banking online shopping to connect to our nearest and dearest but why do we trust the web I would argue that we trust the web for some definition of trust because we have TLS that works in combination with a public key infrastructure a PKI now I know a fair bit about TLS but I've always sort of taken this PKI component for granted and at Mozilla as a browser vendor we obviously care a lot about this component because problems in the web pk I mean problems for every single user on the web now most people should be fairly familiar with how the web PKI works we have these things called digital certificates and they map and identities identity towards public key and now issued by certificate authorities or CAS now at the top of this chain we have a root CA and it acts as a trust anchor and it's certificate is embedded in the root store of a browser now there might be a number of intermediate CAS along the way before an end entity certificate is issued and in each stage the appropriate digital signature is added and this is effectively how we create a chain that leads all the way back to the root and this is how we inject trust into the web but what if something goes wrong it's estimated that over five hundred thousand private keys were leaked because of the heartbleed vulnerability and estimates vary so it's probably a lot more than five hundred thousand keys and what does this mean well this means that an attacker could successfully man-in-the-middle war TLS connection and decrypt the current session or an attacker could impersonate a server or perhaps even decrypt past sessions so this is bad now what should happen when a private key gets compromised while the corresponding digital certificate that relates to the public key should be revoked so the owner of that certificate should request revocation and that issuing CA should produce a public cryptographically verifiable attestation that the certificate should no longer be trusted and the onus is on the client to check the revocation status of the certificates that it receives so revocation on the web is really really important verification in the wild is broken and what I want to do over the next 35 minutes or so is talk about current methods for a vacation checking on the web and why they don't really work in the browser ecosystem then I want to talk about the CR Lite which is a new way of doing things and this was an idea that was actually born in academia then I want to talk about how we're translating this idea for use in Firefox and specifically I want to talk about what it's taken to build this thing where we are now and we'll also consider whether or not we're done yet a questioning crypto engineering which often has the resounding answer of know if there's time I'd also like to talk about what it means for an academic idea to take root in the industry and whether or not initiatives like this are helping us to move towards a more robust web PKI so what methods currently exists for revocation checking on the web well they are certificate revocation lists CR ELLs and they are just lists of revoked certificates that are produced and signed by the relevant CA when a CA issues a certificate includes a URL to its CRL in the certificate and it's up to the client to download the CRL and check for revocation status of the certificate that it has just received but these things can go to multiple megabytes before a page can load so they slow down the connection ad latency so we don't really like CR ELLs and we don't make use of them in Firefox that means the online certificate status protocol or OCSP this allows a client to query the revocation status of a single certificate by sending an OCSP request to a ca's OCSP responder and received the response which is signed by the CA to a contrast of this response now in theory this should be better but these things fail often they're very unreliable they add latency to the connection and there are also privacy concerns because they legal information about the domains to which the client is connecting so what you may have noticed up until now is that the client is doing a lot of the hard work for revocation checking but what if we shift this work to the server and this is what happens in a CSP staple so the server is responsible for sending an OCSP request to a no CSP responder receiving the response and stapling it or attaching it to a certificate that it is going to serve now this is a bit better it addresses the latency it addresses privacy concerns but it's not quite perfect because an attacker can easily strip off an OCSP response and happily fail open their way to victory and what does this mean this means that of all the methods that I've just described if they don't work if the client cannot determine the revocation status a certificate it goes ahead with a connection anyway if it were to fail closed on the other hand it would terminate the connection as soon as it could not determine revocation status and that's why I be really like Oh CSP must staple this is a TLS extension which signifies to the client that it will be receiving in OCSP response if that OCSP response is not present it immediately terminates the connection the problem with OCSP must staple though is that it's not widely deployed on the web and many hosts don't actually support stapling so of all of the methods that I've just described that are deployed at scale there are problems there are delays they add latency to the connection they fail open and there are privacy concerns but what if we could push all revocation information to all clients we might not need to fail open and we would address the privacy concerns now there are some initiatives in the space google has crl sets and mozilla has one crl in which we push partial revocation information to clients we don't push all revocation information to clients why not I'll let you think about that for a minute there are also other methods that have been suggested for distributing revocation information and one of them includes using FM radio to do this I really don't think that all clients are going to install FM receivers but you know it's a cute idea in theory so why don't we send all revocation information to clients well the issue is science it matters and this is a lot of information and this is where Siara life comes in see our lights aims to compactly and efficiently get all revocation information to all clients and it does this by making very clever use of bloom filters now because of initiatives like certificate transparency and internet scanning we have a very good view of the certificate ecosystem so Cyril light takes this view and takes all of this information and puts it in a data structure that supports the queries to the finite set of unexpired certificates and this is how it gets all revocation information to all clients so as a reminder a bloom filter is a probabilistic data structure that allows for the insertion of arbitrary size to elements we need a bit array of size m and we need K hash functions for mapping to array indices now this is a very contrived example for the purposes of illustration so say now we want to put data item D into the filter or we do this we compute H 1 of D this gives us 4 so we set the brain index 4 to 1 we compute H 2 of D this gives us 11 so we set the between index 11 to 1 and we keep going saying the billion index two one and the bidding index two two one but what if I want to put another data item into the filter it might look something like this and you might be able to see that there's a purple bit up there and that's because both of these data items have collided on this index and that is very very possible so how do we check if an item is in this filter if any of the hid star values for an item D star is zero then it's definitely not in the filter if all of those hid star values is one then it might be in the filter so maybe it's a legitimate insertion but maybe it's not so we are going to have false positives and the false positive rate P is determined by M K and the occupancy of the filter now going forward we're going to think about the set R which is the set of revoked certificates and I said s which is a set of Unruh voke certificates and together they make up the finite set u of unexpired certificates so so now we want to store the set R into a bloom filter well we can do that but they are going to be false positives but what if we take those false positives and we store them in another bloom filter and this is the idea of cascading bloom filters and this is what the CR lights makes you self so we do something like this we start with the set R and we put it into bloom filter number one but they are going to be false positives these are the elements of s that should not be in bloom filter one but we can find those false positives and we put them into another bloom filter bloom filter number two again they are going to be false positives and these are the elements of R that shouldn't be in bloom filter number two we can find these false positives and put them in yet another bloom filter and we keep going until we can't find any more false positives and we don't need another bloom filter now because we've worked with the finite set u we're in a position to determine whether or not an element is in R whether or not a certificate has been revoked if a data item is not in the first bloom filter there is not in our if it is in the first bloom filter then we don't know so we move on to the next blue filter if it isn't the first bloom filter but not in the second bloom filter then it is in our because it means it's not a false positive so it's legitimate element of our if it's in both of them then we don't know and we move on to the next day if an item isn't roomful to one and bloom filter too but not in bloom for two three then it's not in our because we actually confirm it to be a false positive it's actually part of the set is if it is in all of the bloom filters for a three level cascade then it is an R so you can always think about these even now it filters as acting as strike lists for our they contain all of the elements that are not really in our but have made their way into the filter so there is a simple method for checking not whether a certificate is revoked so if we look at a certificate you we start with I is equal to one and we keep going until you is not in bloom filter I if eyes aren't then it's not an R it's not revoked if it's even then it is an R if you is in all of the bloom filters in all of the BFI then we look at the number of levels in our bloom filter and if the number of levels is art then it is an R if the number of levels is even then it's not in R now this does make sense and you might want to think about it for a minute but in case you need it I have created this diagram so you start with the questions of what bloom filter this is in so is it in bloom for two one is it in bloom fortitude is it in bloom for two three and you make decisions accordingly now we obviously want the minimum possible size of this cascaded bloom filter now a single bloom filter is minimized when K is this value and in is that value but for filter cascades the question becomes how do we choose piece that we have the minimum possible size now the authors of the C online paper did some analysis and they found that was optimal to choose p1 for the first layer of the bloom filter P for all of the other bloom filters and we said p1 to be this and P depends on the size of our the size of s and the false positive rate P and when P is equal to 1/2 we get close to a theoretical lower bound for the size of this bloom filter the authors did a few simulations in the paper and they confirm this and they also state that this cascaded bloom filter doesn't grow considerably with the size of s it actually grows with the size of R which is good so in terms of the CR light architecture there are two entities that you need to keep in mind this is the client that needs to get these bloom filters and check for revocation then there's the sierra light aggregator which is responsible for creating these bloom filters and getting this information to clients now I've shamelessly stolen this picture from the academic paper and this is the academic architecture and you can see on the left there using certificate scans or internet scans and certificate transparency to make to get a view of the certificate ecosystem then from that they construct a sets R and s and they make use of CR ELLs and OCSP responses then they put R into this filter cascade this multi-level filter and they produce a daily filter file which in the academic setting has the size of 10 megabytes and they also produce a delta update file which has a size block low point five nine point six megabytes and this Delta update file is the difference between yesterday's filter and today's filter so if a client downloaded a 40 yesterday it doesn't have to download the entire filter again and just downloads the update you might also notice that there are audit log files and these are present so that any external party can confirm that the bloom filter or the cascade has been constructed correctly and in the academic setting the client actually has to go and fetch these filter files the daily file as well as the Delta file now i Priscilla we realized that Sarah Light was going to help us do things the mizzen away we care a lot about privacy and the reduction in latency would also be great so this is a slide I took from one of the Sierra Lite engineer and it's from about 18 months ago when the team was deciding whether or not Cyril light would be good for Firefox and the reasons as to why it would be good is because it has CR align properties in a small data sizes which are fast to pass it allows for incremental updates it's going to scale well and it builds on the useful properties of certificate transparency so our architecture looks something like this and we actually only make use of certificate transparency to get a view of this to begin ecosystem because we think this gives us a pretty good view we then construct our set R and we only make use of Searles we don't use OCSP for this because o CSP is unreliable and it's slow we then construct our filter cascade and produce our daily filter file which at the moment is about 1.4 megawatts our Delta update files are north point 4 megabytes and we actually want to distribute these things four times a day and not only once a day we also have the architecture for signing and pushing these things to clients so that's already part of our system we didn't have to think about building that now the academic paper did have a prototype and they built it as a Firefox extension and in the academic paper they had to make use of TLS javascript api is for certificate checking and javascript can be slow and can be quite cumbersome in our situation we can make this native to the browser and we're using c++ rust and a little bit of javascript well the academic paper cites 10 milliseconds to take a certificate chain and for us to check one certificate against your alight on a local machine is about noir point naught for milliseconds but we're coming in at under 8 milliseconds if we take all of our Firefox calls into account so we only use Sarah light to check for end NTC certificate revocation we still make use of one crl for checking the revocation status of intermediate certificates so we haven't discarded that mechanism so up until now i've given you a very broad very high-level overview of our system architecture we actually had to go about and build these components for Firefox and that meant that we had to create our aggregator to produce photo files we had to write the client-side code for the checking of these filter files and we also had to link all of us up to our remote settings infrastructure to push these files to clients and trust me these are not simple steps if you just think about step one there are over two billion entries in the certificate transparency logs and all of those have to be processed at least once by our aggregator and we need to use this information to create this assets s and R and s if you remember is the set of unexpired and revoked certificates and ours the set of unexpired but revoked certificates and one of our engineers JC jones has been working on this and he recently said to me it's hard Tyler it's just plain hard so initially we did all of our testing in our experimentation on a single high performance server with a very large disk drive in some ways development in the setting is easier because you have only one environment to worry about but it required constant monitoring particularly when we're getting close to running out of space so our cloud op team in the infinite wisdom said well why don't you make use of external storage mechanisms for all of this data so we now take certificate transparency data and we use Google's fire stores in the cloud to store relevant certificate information and we make use of a Redis cache just all these certificate identifiers that are actually going to go into our bloom filters now getting something of this nature to work had a lot of teething problems from choosing Redis cache sizes and dealing with a slowdown as these sets grew to encountering golang timeouts with a firestorm so it really was a learning curve for us and we expected this but JC being the wonderful engineer that he is persisted and we now have a serve an aggregator architecture that looks like this we're making use of kubernetes that is running in the Google cloud platform and I'm not going to go into too much detail but we have components for processing our CTO we have jobs that can create these filters we can store these filters and then we have components that are responsible for publishing these filters for sending them out to our remote settings infrastructure which will eventually get it to our clients now JC is very kindly put together some performance graphs for our infrastructure and this is CPU usage of our kubernetes cluster for photo generation and each of these Peaks corresponds to a generation run and you can see that even at the top peak over there we're not even close to capacity we're at less than 25% of allocatable CPU now in terms of how long it takes to actually build these filter files on our infrastructure to create these sets are an S takes us on average about 35 minutes and to actually produce these photo files these cascaded filters then we're going to send to clients we're at about 20 minutes on our infrastructure now some of the other steps were easier to navigate but they did present a few bumps so writing our client-side code was delayed by waiting on elements in the teams to provide rest bindings for us so this slowed down our development there and linking up to our remote settings infrastructure didn't present too much of a problem but it has raised an interesting process question for us typically our mode settings infrastructure isn't used all that often once a day maybe less but now we want to make use of this thing four times a day and we wanted to do it in a highly automated fashion so we're going to have to work with our remote settings team to get this working to send our deltas four times a day so hopefully I've given you a small sense of what it's like to try and build this thing for use in a production environment so where are we now towards the end of last year we landed a very basic functional prototype of Sarah light in Firefox nightly and nightly is the highly experimental version of our browser and we landed it in telemetry only mode and what does this mean this means that we don't actually make use of Sarah light for revocation checking we still make use of our CSP but when OCSP runs we also do a check against they are lights to compare the difference in the results particularly in terms of speed now this chart were seeing some very basic telemetry on whether or not this thing is actually working so we have a big sample which we collected over a 12 day period in December the sample runs into the millions and you can see that about 10% of the time the filter was not available and this was actually very useful information to us because it pointed to a problem in our push infrastructure in getting these faults of files to clients so some clients will not receiving these photo files and this is something that we're investigating then for over 60% of the time the issuer was not enrolled and that's something that I'm going to talk about in a few minutes some of the time the certificate was - knew it wasn't captured by saronite and in this instance you really do have to rely on traditional methods like OCSP verification checking so for about 15 percent of the time Sterilite found valid and revoked certificates and although it's not graphically represented there were 289 revocation hits using sarah land where sarah light correctly identified revoked certificates now recall that I'd say we were running this thing in telemetry only mode and particularly we're looking at the difference between sarah light and OCSP and how much faster sierra light is than OCSP and this is that information and you can see some of the time it's not faster than OCSP some of the time the difference is around 0 milliseconds but we do have a median difference of about 125 milliseconds and we're seeing some very interesting behavior in the tail over here and this is the effect of the 1 second time out of our CSP so for over 10 percent of the time o CSP is timing out but Sarah light is very quickly getting to a result and then there's some more information here later on and maybe this is when o CSP isn't timing out or o CSP has a much longer time out so Sarah light is faster than no CSP this is what we expected but it has been nice to be able to confirm this and with our very functional project so there are a few technical caveats that I need to mention we don't currently catch the let's encrypt entries in our filter and this is because that's encrypt isn't making use of Searles this is likely to change or we hope it's going to change in the near future so all of the let's encrypt entries will be in our filter but for now they're not and because of that there's some extra computation time because the client actually needs to determine whether or not it can use here in life for a vacation checking sometimes it won't be able to and then it has to fall back to OCSP so we're not fully failed closed yet and I do want to stress that we are still in prototype mode so no we're not done yet now in terms of security there was a brief security analysis section in the academic paper but a lot of the paper was set aside to describe how the system functioned now I spoke briefly about this work at one of our Mozilla summits and afterwards Tom Shrimpton who's with us came up to me and engaged me in discussing some work that he and his students were doing on the use of probabilistic data structures in adversarial environments and we started talking about how this work might relate to the saronite setting at the same time can he Patterson informed me that he said a student to work on looking at attack scenarios and threat models for saralidze and we are fortunate to be in communication with both of these groups and I hope they're going to join forces and we're still also working with the Sarah light academic team particularly Christa Wilson and Dave lemon and my hope is that we're all going to be able to work together to make the airline as robust as possible before it hits a production-ready state so specifically we want to look at some deeper security questions and attack scenarios we want to stress test this thing what's going to happen when we size it with very big safes and what happens to the p-values at all of these levels and this is something Kenny has been thinking about we also need to make sure that we've got enough crypto rigidity what if we need to upgrade our hash functions very quickly will we be able to do that in our system we want to look at some architecture enhancements and currently the engineering team is looking at how to reduce smaller Delta files and what's the best method of compression and what's the business and of getting those data files so that they can be usable so we really do want to make sure light as safe as possible before it is going to be used in full-scale production so I think a project like this has a lot of nice collaboration between academia and industry and I think that both spheres have contributed equally the idea was born in academia it was designed as an academic idea we now have an industry team that's building this thing for use at scale and there are more academic teams that are going to help refine this thing further to make sure that it is gonna be as safe as possible for our users so what has it been like taking an idea like this with the intention of landing it in Firefox as I said earlier we thought that Sterilite was going to help us do things the Mozilla way so the idea tracked well and the fact that there was already a Firefox extension helped us but the paper couldn't and it didn't have taken to account our existing infrastructure and in our case the existing infrastructure helps because we have this mechanism for redesigning and pushing these photo files after clients and I also think that the timing for a solution like this is good I see our life can exist because of enhancements in other tools particularly certificate transparency so for us the process of taking this academic idea and trying to get it ready for production look something like this it started as an intern project and after the internship ended there was some further development and we now have a very basic functioning prototype and over the next couple of months however long it takes we're going to refine it and then after that we're going to decide our production plan for Sarah light and how much we'll actually be able to rely on it for revocation checking in our clients so when I asked one of the see online engineers what he thought about the system and the entire process he said it's an excellent solution to a problem we shouldn't have and this is interesting because we have mechanisms like must staple which work really well for avocation checking on the web but they are not deployed at scale and I think the reasons for that go beyond engineering so I don't particularly want to open that kind of worms right now but it does raise interesting questions for the web PKI the web PKI is undoubtedly fundamental in establishing trust on the web but it's very very fragile and our systems like this going to help us move towards a more robust web PKI I definitely think that it's going to help and I really do believe that the relationship between academia and Industry is important I think that by harnessing this relationship together we can build stronger and safer systems and to drive that point home I want to let you hear from some of the people who are doing the hard work on Sarah lights and I have a video so let's look at the video gods are with us we started working on CRLA there had been a long history of developing new techniques for transmitting replication data unfortunately the general consensus amongst everyone in the PKI was that there was no way to transmit replication data to all clients without consuming way too much bandwidth but we were determined we figured there has to be a better way because the PKI demands it the spec says that every client has to check for revocations really only with the advent of certificate transparency logs did it finally make a solution possible so in a funny way the same folks who had said it was impossible to check for replications were the ones who gave us the ingredients that finally made it possible after our paper was published mozilla reached out to us to include sierra light into firefox which as an academic has just been a crazy amazing opportunity i think the reason they ultimately decided to pick it up was because they had folks who were simultaneously writing the TLS 1 3 spec which says all clients have to check for replications while at the same time making a client that they knew wasn't always checking for replications so i think they realized that no browsers were faithful implementing protocol but that was Ciara alight it would finally give them the opportunity to do so the question we had was whether we could meet the necessary preconditions in the real world for see our lights guarantee stall true could we tell if a certificate was going to be in the filter could we tell if an issuing certificate authority was behaving properly and even with answers to those questions we still had to prove out that we could build a robust infrastructure for a notoriously not robust web PGI and that took most of 2019 so while we were implementing this we were discussing it of security summits that Mozilla runs and piqued the interest of other academic teams who could help us validate the security properties of the production system I think it's great to see a system that makes clever use of probabilistic data structures making its way into an industry product but it's really crucial to get the security aspects of such a system right before it hits full-scale production and I think there's still some more to do here but I'm really looking forward to working with Mozilla so as I've said we're very fortunate to be working with these academic teams to help get it robust before we deploy it and I really think that this guy is going to be a fruitful collaboration going forward so thank you to all of you for listening and I want to thank everybody who is involved in the cni project who has been involved who may be involved and do go and check out our CLI blog posts they should be live right now thank you very much I - two quick related questions the first one I'm just curious kind of from afar you chose to use this cascaded bloom filters which is not I mean it's related to bloom filter was not the most standard structure there is the cuckoo hashing and so on is a particular reason why you happen to choose this one we chose this one because the academic paper chose this one they do have a small footnote in the paper saying oh you could use other filters or other data structures and I think it's an interesting question to see if other data structures are actually going to be better for an application like this so I think this has been a question that has already been raised oh and I guess very quickly can you you I assume you support like addition and you know like new certificates and so on so it's all okay yes hi similar to the previous question on the data structure it sounds like with the cascading bloom filters the whole probabilistic nature of the filter is gone because you have to keep doing that till you have no false positives and there's wondering if things like a radix tree or other data structures have been considered for starting this yes there have been other data structures considered as I said previously we just went with what was in the paper but I think there might be other data structures that could be better supercooled talk I love blue filters the green approximately how big is your set of revoked certificates you're working with ah good question this isn't a blog post I think at the moment we only have about 700,000 in there because we don't have the whole the let's encrypt entries thanks hi so you mentioned that you expect the let's encrypt situation to change is that because you're going to start checking OCSP or require CAS to publish CRLs or something else I think we're hoping and that Nate's encrypt is gonna start using Searles we want to make use of serials because we find OCSP slow and unreliable to use for construction thanks and one other question what's the input to the what's stored in the bloom filters is a thumbprint right yes it's a hash a sha-256 hash value of a serial number and some other data and concatenated with again some certificate specific information it's iCarly the exact format right now but it is in our blog posts of what it is all right thanks so my question is do you see this as replacing as a sort of intermediate step before we have OCSP must staple or do you see this replacing OCSP my staple and I'd like to just say I'm a bigger fan of this correct thank you I think OCSP my staple the ideas been around for a while and it hasn't seen much uptake I don't know if that situation is going to change so we're sort of thinking about this as more of a replacement briefly to the big bar on the bar chart the 60% of request services where the issuer wasn't yes that's because we don't have let's encrypt data in our bloom filter and a lot of that data is that 60% yet we don't have it yet have you looked at the bandwidth requirements of OCSP must staple the size that that adds to each request by each client versus the size of the CRL light Delta updates and how it may actually more advantageous in terms of the of the demand on the network for CRO light versus OCSP must staple right I don't know what the the difference is there but it could be more advantageous with your own idea let's think Tyler again [Applause] our next speaker is Dan Shima who asked me to mispronounce his name so don shuma nadia offered to mispronounce my name so i'm here to ask the question of whether or not certificate thumb prints are unique and hopefully answer that as well this is a project done by Craig's Arusha and myself on the Microsoft Research security and cryptography team so before we get into it I've figured it'd be prudent to talk about what certificate thumb prints are you may not have come across them unless you're implementing something or analyzing certificates so certificate thumb prints are just simply a hash of the whole certificate asn.1 structure including the to be signed part as well as the signature and what's what's really important to note here is that the thumbprint hash does not necessarily it's not that it's necessarily the same as the signature hash and thumb prints still may use md5 or sha-1 so they're essentially just identifiers for certificates a more concise identifiers they're displayed and interfaces config files they can be used to refer to certificates in code and there's sometimes similar to a head the way a hash is used in a hash table so thumb prints are cryptographic hash but they're not really considered a core security feature in the same way that like the signature hash it is so if you're going to take anything from this the TLDR is that thumb prints are aliases for certificates this work answers the question of certificate uniqueness first by defining the properties we would want for this uniqueness and then using these definitions to determine that some thumb prints are not in fact unique this ain't CSI folks this is cryptography so we have to be a little more careful with their thumbprint we didn't find any way to exploit this or any evidence that it was being used in practice either so now if you want to tune out you can't so thumbprint uniqueness yeah like given that thumb prints are used as identifiers for certificates and implemented with cryptographic hashes it begs the question if they are unique especially given that they may be using md5 or sha-1 and furthermore because they're not really considered this core security feature function we've encountered devs pushing back on us when we've said hey you should migrate away from these weaker hash functions so that caused us to ask these questions so to the best of our knowledge this work is the the first place where any sort of properties about the certificate uniqueness have been introduced so informally the two there are two properties that we want from certificates that certificate thumb prints that identify both directions of uniqueness that we would have so property u1 is that no two different certificates should have the same thumbprint and then in the other direction that a thumbprint should uniquely identify a certificate so this property u1 that different certs shouldn't have the same thumbprint you know as this is a hash of the certificate collision resistance is going to be enough to guarantee this u1 uniqueness but in practice because md5 and sha-1 are used that may not be the case so we'll actually show how a certificate issuer can create two certificates with the same thumbprint however this is slightly more complex than a collision attack because the thumbprint is computed over the holes certificate including the signature so this property you - is that a certificate should have a unique thumbprint associated with it so if the certificate is held constant then changing the thumbprint means modifying the signature for a given syrup and as such this YouTube property is related to both strong unfortunate e of the CA signing algorithm and also encoding malleability and this property in particular has an implication for security in certificate revocation lists like the last talk that we saw so to demonstrate how we can break this you to property I have here the PEM for a certificate that has two different thumb prints this is because ECDSA is cryptographically malleable you just resize generating a new blinding value that will generate a new signature and then you'll have two different thumb prints RSA is not cryptographically malleable because of padding but the ASN 1dr encoding can be mangled in a way to modify to create different thumb prints so specifically the way this works is you have a certainty BS certificate a signature algorithm and then a signature value this signature algorithm is an algorithm identifier sequence the second field of which is optional so there are two different ways that this could be encoded with a null type or just without the field so the x.509 standard specifies that signature algorithm must match the signature field of the TBS certificate but this is not actually enforced in Windows we'd like to thank the anonymous reviewer who pointed out to us so in some cases you may find that you can exploit this so and we did in fact find certificates in the wild with this difference so now on to creating colliding thumb prints that's breaking that u1 property so certificate thumb prints still often use sha-1 and as i mentioned before it's not exactly clear whether a collision attack alone can be used to create colliding thumb prints because of the extra structure with the signature so what we did is we used an md5 chosen prefix collision attack because when we did this work sha-1 chosen prefix collisions were not feasible as that was just demonstrated earlier today for the first are presented earlier today for the first time so we actually additionally required a key substitution attack to create colliding thumb prints and I'm not going to go into the details of key substitution attacks you can see those in our paper if you would if you're interested but I'll just say that essentially every x.509 certificate in use today is signed with an algorithm that allows a key substitution attack on it and so what we demonstrate is how a CA or a certificate issuer can create two certificates with the same md5 thumbprint so what's going on here and why we need more than just a collision attack is because certificates are laid out with a pre signature part the TBS certificate and then the signature after that so if you did the collision in this p part of the cert the signature would change because the signature signs a cryptographically strong hash so what that means is that additionally the attacker is gonna have to control the signature as well so to sort of give the high level layout of how this attack would work the attacker one to create a certificate with the same thumbprint as a honest certificate c1 so the attacker first is going to execute a hash collision attack creating a colliding block and insert that into the SK I of their malicious cert c2 then the attacker is going to compute the signing hash of their modified cert and signature sorry they're modified cert and SK I and then they'll use a key substitution attack to sign this new hash and create a matching signature T then they'll go back and get a cert issued for their the key that they generated with the key substitution attack and they'll have a valid sir that will verify in the in the PK so after we demonstrated this we scanned for colliding thumb prints in the wild we did we did this by getting datasets from projects owner published at scans i/o this represented one hundred and twenty five point eight million unique certificates and what we did there was we computed thumb prints and looked for certificates that may have the same md5 sha-1 and sha-256 thumb prints we didn't find any we're an md5 and sha-1 collision detection did not detect anything there and we also additionally looked for key substitution attacks by looking for certificates with matching signatures and we did in fact find several certificates with matching signatures but on closer inspection none of these appeared to be created with key substitution attacks so in short we found no evidence of colliding thumb prints or any of these attacks so while checking for key substitution attacks we actually found something interesting Gregg found something interesting particularly so we found that 380 such there were 380 self-signed certificates that had the same ECDSA r-value and as it turned out this led to the discovery of an actual CVE specifically that certain Cisco hardware had insufficient entropy and the drbg and ended up generating the same ECDSA blinding value so in conclusion we introduced two properties to describe the uniqueness of certificates uniqueness of certificate thumb prints and in terms of these two properties we showed that with weak hash functions certificate thumb prints are not unique and we provided examples of this we looked for a way that this could be exploited in software such as tricking software to accept a new certificate when it had been presented an honest one previously with the same thumbprint but we did not find any examples of this and we also searched for certificates with colliding md5 or sha-1 thumb prints in internet scans and we did not find any there either so based on this work we have a few recommendations specifically that application should migrate their thumb prints to the stronger hash functions sha-256 512 if digest length is an issue truncating a stronger algorithm to a shorter digest length is preferable to using a weak algorithm in this case and if you can't change the hash algorithm used for thumb prints use collision detection and we would encourage projects monitoring PK eyes such as certificate transparency to check md5 and sha-1 thumb prints with collision detection as well so also to any devs who are working with certificates and certificate thumb prints you know look for ways in your software that non-unique thumb prints could be used to exploit security because we obviously don't have visibility into all the places that prints are used so thank you very much for your attention and you can check out the full version of the paper on any print in any hash collection situation though collisions may be on probable probabilistic ly they can't occur I mean the formula for that is well known and well documented that you have maximum population size deployed population size what's the probability of a collision and maybe probabilistically very low but it is real what happens us if a collision occurs naturally in the in the ring that you're doing probabilistically it's unlikely probabilistically it must be assumed that it will occur well so for the thumbprint case I mean the the more critical case of this would be in for the signing hash so you know so because the hash functions are defined in such a way that you know they would be you know at one time we're fine for signing it's not it wasn't not that's not really as much of a concern in this so if you get two certificates with the same thumbprint in terms of any collection yet so you would have to have it's the square root of the total size of the right probably that if you want to give you the formula offline there's a form for that that that that that is therefore population of M of n mm deployed what's it probably the collision and it's since not the squirt it's it's different for me so it's it's different than the birthday now it's much more realistic you know what what is chance of a 1% collision what's a chance of 100% collision okay for that well not not the were supposed to have evolved a guarantee collision well yeah we didn't cut we did not compute that probability but you know it's a bigger problem for the signing hash I would argue and also in that case we're more concerned about easy to compute collisions on these thumb prints so it's probably my fault for not being up to date with this area of the literature but you mentioned a couple of times checking for corrosion detection how do you do that what does it mean oh that's that was introduced by Mark Stevens when analyzing the flame attack in counter crypt analysis and basically what you can do is well computing an md5 or sha-1 hash you can check for differences in the message input blocks that would cause a collision so you can in fact filter out inputs to hash functions that are causing a collision well you're hashing just one of the objects cute thank you so those certificates you found with matching signatures what's the story behind those there is an extensive list if he is in the in the full version there were versions that looked like firewalls replacing certs without sort of replacing the signature there were bugs there were normal corruptions there there were many different reason reasons for this Greg did a pretty extensive analysis of those Thanks hi I wondered also to ask about the up here I want also to ask about the the colliding signatures I was wondering like was this only old hardware like in the case of mining teasing queues or this is also a newer hardware the Cisco one I mean the the Cisco CVE that Gregg found yeah because my episode there was a similar situation for mining your P's and Q's were like scanning RSA public key is I'm sure one prime and my understanding was big that caused by low entropy during boot yeah yeah yeah yeah the poor random number generation I wasn't that was also there cause it's yeah it's it's like a in an abstract sense it's like a similar cause yeah like root cause yes but is the hardware any newer than that did you look at ECDSA in the mining P's and Q's just because recently I read something like oh never have door doesn't have the problem of low entropy during boot so they're the actually we had a follow-up paper two P's and Q's and it was in 2016 Marcella who gave it one of the talks earlier was one of the co-authors and new vendors keep introducing the same flaws over and over again so it's never going away all right we are over time so let's thank Dan again [Applause] do we have slides okay so our next talk will be jointly presented by a Christian and Tiago okay hello everybody let me start with thanking the team at abran Emerald Bank for some of the inputs when we compiled this story and particularly I would like to thank Barbara and young Barbara is here today so feel free to seek her out and also ask for some questions before we dive into the case of ABN AMRO Bank I would like to put this into perspective and just give you a figure that is yearly surveys you know there's service on security on everything but there's also encryption and this there's a yearly survey which basically stated for the last one that forty five percent of all large enterprises have a encryption and key management strategy that is consistently applied throughout the enterprise so just to give you an idea forty five percent of large enterprises encryption and key management what we want to talked about is a crypto strategy that goes beyond encryption and key management it contains it and to show how we started from defining this strategy to the implementation and Thiago will start this off thank you so in 2016 which is when this story begins I was the head of the crypto services team within Navy and Amaral and when it came to cryptography this is a little bit the situation that we have first of all we have a two-factor authentication system based on PKI for our corporate laptops which makes us very proud we've had it for many many years and I think that's a good thing on not-so-good things we have a central certificate management server which is basically a mailbox so if you're a developer and you need a certificate you have to send an email to our mailbox and there's some ping pong going back and forth and eventually if you're if everything goes okay you get your certificate generally speaking this process would take about a week one week to get a certificate we also have a central key management service and the key management service is basically a very large and very secure three-factor authentication safe and we have very good written procedures to access the key material inside of it so I think this is actually quite secure quite good on security front it's not very scalable and it's also painfully slow every time you need it to insert the key into some system it's a process that would take at least half a day to a day and multiple people would have to be involved we also have a number of HSMs for our payment systems so our core systems where our banking is they we deal with HSN and our crypto services team is centrally managing those so we know HSN as well and also in 2016 Google and Microsoft were basically saying issuing a patch that was saying enough is enough no more sha-1 so this that we're seeing here back in 2016 I think we're just doing the bare minimum and we needed a strategy so in 2016 we gave IBM a call and said okay can you help us out here and we created a crypto strategy which in a nutshell was trying to create something like this so in 2016 we're saying three years from now this is what we're gonna have to do in a high-level and the application side of cryptography is mostly about central services that would be delivered to the whole bank while the innovation side is mostly about capabilities that the bank must have capabilities that might or might not be delivered from the central crypto services team and then this is high-level what we have back in 2016 and nowadays we have a more comprehensive set of kryptos services central crypto services as well as capabilities implemented within the bank now I don't want to bother you to death with all of these kind of stuff that we're currently doing but I think it would be really interesting to share some of the lessons learned that we had as we implement the descriptive strategy and to do that we're gonna share four stories the first story is about Shaolin migration so that patch was coming along if you have a certificate which I want it's no longer gonna work so what we have to do as a bank is just migrate away from all of these certificates so for that we set up a task force the first task force was looking for external facing certificates and this was a relatively simple process our we know very well our external facing website there are most important ones all were using sha-2 certificates now for years so that was a relatively simple thing we're talking about a few hundreds of systems the problem became with the internal facing certificate because the internal facing certificates we couldn't really rely on the inventory that we have and I was because to get an internal facing certificate you'd have to wait a week to get your certificate so generally speaking developers who try to bypass this process as much as humanly possible and it's created a huge amount of certificate which were really not knowledgeable to us in the central team so what we had to do is to scan the entire network for certificates trying to find what the certificates exist which ones are which ones have sha-1 on them we'd have to do multiple passes of the scanner because some acts some parts of the network you really couldn't access and some certificates would appear in some scans but disappear in the next some certificates will appear multiple times in one scan so how the hell did that happen and we eventually have to set up a whole team of six or seven people that have to work on these on this for well over a year and just to give you an idea this is one of the dashboards that we're sharing with one of our internal stakeholders this is the magnitude those systems that were talking about thousands of systems tens of thousands of certificates each each one would be its own special little snowflake so eventually we did it we migrated away at a very painful way in a very high cost so our lesson learned here was know where your crypto is and we can start with certificates because as you as organizations become more and more autonomous and we let teams became more and more autonomous it's extremely important that the central team still knows where all of the different instances of your cryptography are because when you want to move and migrate away from something whether death certificates or anything else then having the inventory makes a huge difference our second story is about HSN's so you remember that we had the HSN for our payment systems we know those well and in 2016 we decided to augment that because we really have the HSN for payment systems those are fine and up and running if they work fantastically so we can't get Network attached to HSN so the beauty about network attached systems is that they lie and they allow for an abstraction layer for the developer which they're generally speaking there's a new cryptography that well by providing that abstraction layer we simplify their experience when it comes to cryptography and we incentivize them to use central services where the cryptographic operations are done in a central you know in a protected environment as opposed to let them call the single aspect of any kind of cryptography which they're using our lesson learned here was as much as possible we have to try to make crypto easy to use and and and deploy especially for our developers the more the easier you make the experience for developers the more they all want come to you and to use your central services and nowadays what we have is a far more comprehensive set of it's just it's just some solutions for all the different platforms that we use and for that will enable also us to have a much better key management service which will feed from all of us now for the third story I'll hand over to Christian okay thank you so what you heard till now key management certificate management there was operational that was getting the basics right but there was also the ambition like next time they didn't want to call me or my colleagues but they were to say can we do this ourselves we need to have the knowledge in-house we want to do consulting we want to do in knowledge sharing and we need to build this up and that's kind of what we set out to do we define the skills we found the people and we you know went from a purely operational team to a team that can do consulting and advise the business and one of the topics you know because I like post quantum cryptography that's a topic I brought in there and then people were like whoa sha-1 was such a pain the step rotation we don't want to do this again should we start when should we start and the answer was I said we start now right so that's the answer and nowadays there's a team of crypto consultants that works with the business explains the issues to the business prepares them mentally right thing but they also talked to academic researchers industry researchers to find out feel the pulse and just find out what is coming and not just wait for NIST to finish the standardization process because what we learned crypto migrations take time and they're very costly so I've seen the topic only once you know famous in industry we talk a lot about this crypto agility at the moment so what I want to explain here is that there's a lot of people shout for crypto agility but for the bank actually means for the enterprise it means you need to do it end to end you need to look at the whole stack and what we learned from the migrations is maybe fairly simple to change something in a script more complicated to go to applications but if you go to s layer or all the way down to hardware it will be more costly will be more effort to do all this right so when we talk about we need some solutions we need to prepare for the next move it's not you know I don't think there's one solution that fits all so we need to look at the whole stack in the whole landscape and that's basically what the team is nowaday doing doing and they're starting with certificates inventories but they're also going further invent rising libraries and so forth last story is then you know ambitions were there already in 2016 and finally it was like we not only want to run our systems well we don't want to just do some consulting but the panning said do you want to do innovation I said ok I want to do innovation ok how do we set this up and what we we help them to come up with was that we talked to the innovation department and we said you know you guys in the bank has an innovation department you do you talk to the business you know what their problems are we have now people in-house who know photography you know maybe we can bring you guys together right so it doesn't make really sense to have the operational team in a SISO organization to do innovation themselves but it makes sense that they were together with the innovation department and try to look at what is actually needed and how can you bring cryptography to the user of the bank and what they also doing especially also the innovation department is they go out and they talk to researchers both in academia and in industry and try to find out solutions that then can be you know developed and then applied and run as part of the security organization and just something we do we can't get credit for this but you just want to show this as an example one of the what what came out of the strategy in this perception that finally you have to do something in crypto can do something for you is that the researchers in ABN AMRO they worked with with researcher with industry researcher that was IBM research back then and then later also with tno and and other banks together and what they did the use case is actually fraud detection the business they don't care about cryptography I'm very sorry but they care about fraud detection at bank and they came up with clever algorithms and they came in even with a way to share insights with other banks running the same fraud detection algorithms and they can do this with a magic of multi-party computation so they can change exchange information without revealing any confidential information about their own customers or operations so this is just an example from how you start with fixing your your basics to consulting to innovation and then what they did in research actually then implementing it and making it work for the bank and now we want to close off with what's next right there's still a couple of things going on so we mentioned post quantum cryptography crypto identities on everyone's mind but of course there's also big push to go to to public cloud to do DevOps and it's why we try to say not only dev sack ups but we want to have crypto properly used in from the start and the team is working hard and we're working with them together to get this right and prepare also how to use crypto securely in times of big data that's it thanks a lot thanks for it [Applause] you mention a sort of preparing for the post quantum crypto and I'm wondering what are specific steps you know are you guys taking and what will you recommend to other enterprises to do in regards to that issue so the first thing you have to do is is to have an inventory of of your to-do lists basically and when it comes to post quantum there are two aspects of it the symmetric cryptography which we you know we're still waiting for NIST to to standardize for everybody here at NIST we're rooting for you please and as for symmetric cryptography is something that we can start doing already today by doubling the key lengths or four stuff so the thing that I could recommend for for very large enterprises is the the hardest part is likely gonna be knowing that you having your to do list when it comes to to a symmetric cryptography which is not just specifically certificates so start doing that and as soon as NIST says gives us the thumbs-up then we as an industry can start migrating away okay we're short on time so let's think khristianne thank you so our final talk of this session and the second talk in the enterprise crypto section of this session is going to be given by Gavin Watson okay so um thanks yes I'm Gavin Watson I come from visa research and what I'm going to talk today is about threshold crypto scheme which was designed within visa research and we're in our ongoing effort to then take that to put it to the the wider visa and so that they can use it with an enterprise setting so I'll talk about is how we can take this kind of theoretic instruction and what we need to add to it to made it suitable to be used in such a setting so I don't need to tell anyone in this room the encryption is important and we all know that it's important it gives us all jobs and so what I will say is the one thing with encryption is what we're doing is we're taking data that will be having plain text and we're encrypting it so removing the risk from that data to the keys themselves so now we just need to protect the keys to make sure that the data is secure and but what that leaves us with is the problem of key management so we heard a little bit about key management in the last talk and in the financial industry it's important that sometimes we use HSMs and key management kind of equates to or we use an HSM for this but if we consider the context of data arrest encryption how is an HSM actually used well in practice we don't actually send all the data to this network to clients HSM because that's a lot of data when you send across a network and so what we employ is we have a key hierarchy so we have a key encryption key which is held inside the HSM the key encryption key is going to be used to encrypt data encryption keys so when I want to encrypt some data if I don't have a data encryption key am I'm going to generate one in software I'm going to use that to encrypt my data and I'm going to make a call to the HSM to encrypt the data encryption key with the key encryption key then what I store a longer term is the encrypted data along with this encrypted key so the benefits of this approach is is fast because the actual encryption of the large amount of data is happening and software the application and we get the benefit that we have Harper to Hardware protection and off the keys thanks to the HSM with the downside of this approach is that it still requires an expensive HSM and that the data encryption key is left unprotected in memory and when it's when it's not in use and there might not seem too bad because we're just encrypting a file and we immediately encrypt the key back under the CAC but in practice that's not the case it'll often be the case that I I unwrap my data encryption key and then I hold it in memory at my application for weeks at a time encrypting large amounts of data so during that can a two-week period it could possible that the data encryption key is going to be exposed and if we look at kind of the requirements for key management which come from the kind of financial setting and so this is a quote from the PCI DSS document so PCI is payments card industry so that's the body of all different major players within financial industry who define kind of what it means to be secure the DSS is a specific document which is the data security standards and requirement three five three there and highlighting here is what it tells us to do about key management and so what are the things we need to do we need to do some or all of these different things so the first point is about this cake I just mentioned second point is maybe about using HSM and the third point is well if we're not using these then we need to kind of distribute the keys so they're not held all together in one place so what we want with this threshold encryption scheme which we call dice as we want a pure software solution and but still with strong security we're not just going to be holding keys it to be exposed in an application we're using a threshold scheme so these keys are going to be distributed so dice is the solution we have for this weird I stands for distributed symmetric encryption okay so dice was originally published by some of my colleagues CCS and 2018 and so Peter and Payman are here today and it was also presented at the NIST workshop on threshold cryptography last year and so if you were either of those two previous talks you will go kind of the technical details about dice I don't have time to go into the field technical details I'll just give a high level and then move on to talk about kind of the deployment challenges when we're taking such a scheme to use it within an enterprise setting so here's the high-level overview of dice so as I mentioned threshold encryption scheme so means is we have a collection of nodes we distribute the key the master key across those nodes each each nodes getting a different share of that key when an application or user wants to encrypt some data what's going to happen so I want to encrypt some data D I'm gonna do a cryptographic commitment to that data that I want to encrypt I then send these commitments out to a threshold number of the nodes in the network those each of those nodes together with their key share calculate some new value and actually what's happening here is we're calculating we're performing a distribute PRF and you can even in fact do this as a distributed key derivation M and so dice itself has two different modes one which is based on using AES alone which is based on a lip ticker for coffee as I mentioned earlier if you want the few details at average of paper or come and talk to one of us after the talk and so yeah so once these nodes I've done this calculation we send these parts back to the the encrypter of the data they can then reform this into an ephemeral one-time data specific key so this key is going to be tied to the data that we are performing where we are encrypting we then use this to encrypt the data itself so the cipher texts are now going to be posed of this encrypted data along with that commitment we recalculate earlier because we're gonna need that commitment later when we want to do decryption because decryption will just be the same thing we do this distributed PRF to really recalculate the key so then do the decryption later so benefits this approach is that the master key always remains distributed it never needs to be recombined at any time as a threshold encryption scheme is secured against a t minus 1 so it's up to 1 less than the threshold number of parties as long as they are no more than that are compromised we're still going to be secure and as a very small network cost because again we're not sending the full data across these nodes we're just ending this very small - graphic commitment and on the other side of that because we're just ending the cryptographic command we get data privacy none of these nodes will ever learn what I'm encrypting because I only ever have that field data back at my application where I'm going to encrypt the data okay so in terms of performance if we look at the AES based version of dice we get really good figures in terms of the performance and there's a much more detailed kind of figures in the in the paper if you want more details but here's just one example of one of the set ups we did and here we get really good figures you can see through thought throughput of a million encryption per second and a latency of half a millisecond per encryption if we wanted to compare dice with other approaches so first of all going back to the hsm story and so because it's a pure software solution is cheaper and more scalable than HSMs if we compare it to secret sharing which we heard a little bit about earlier today and the benefit of dices we don't need to recombine that master key to do our encrypt operation the master key will always remain distributive and then comparing to MPC and because we're just doing this distributed key derivation and then actually encrypting our data locally we can get much better performance than you would with with MPC okay so that's a very high-level very quick and overview of dice so now I want to talk about well what are the things we've needed to add to our kind of academic code of dice to make it something which is usable in an enterprise setting so going back to the story of key management which again we heard in the previous talk so we can have some nice funky crypto which allows us to generate the master key and a distributed fashions no one ever learns the fuel key and but in practice we may need some other functions around that so we may need to be able to import and export master keys from the system consider we have a deployment of dice in North America and we have another deployment in Europe so they're both going to be encrypting take decrypting the same data but they're going to be doing that in different places they need the same master key so you're not going to be able need to be able to import the master key from one system to export it from one system to import and together so you're going to need extra functions that allow you to do that you may in some sense in severe if you very prudent you might want to export it so you can take a backup of that master key and some other secure location from an interoperability perspective because in any large enterprise we have many different systems we're going to need to be able to migrate from some system into the dice network using these different keys we might need to later migrate data out of being encrypted using dice to encryption under some other system so we're going to be able to have flows which allow us to do that in a in a nice easy fashion and then finally because it's the compliance because it's the financial industry we really compare about compliance I'm going back to that PCI standard sometimes we really need to tick that box that saying we have a Hardware of trust and my seem contradictory to what I've said already but maybe in some instance we need to talk tickler box for the auditor and it could be as simple as that the master key backup is held within some secure hardware the next deployment reality authentication and authorization so I saw in my high-level kind of depiction of dice we have this user calling in to the network to perform an encrypt or decrypt but really we have to check this is a person that's permitted to move in these making these calls and so the first thing we need to do is we need to authenticate them and we can just do that based on standard practices so give that person a client-side certificate and then you're authenticated based on the mutual TLS channel that they establish but then once you're authenticated for the committee to do so one thing we can do in terms of authorizing what we can do is that in that commitment we calculate M for dice when we commit to the data we're being we're encrypting we can also commit to an identity of a user which will be later permitted to perform the decryption and then that time of decryption the dice nodes can check that that user calling to do a decryption is the permitted user one of the other things we can do is sometimes in our enterprise setting we have many different applications and we need to separate them within different keys owns so different applications are permitted to use different keys they have different master keys for dice let's say so are the time of the making a call we need to check whether it authorized to use the master key that they're calling to the particular set of dice nodes calling for next point API and connection management so when designing any cryptographic API you have to bear in mind it's not going to be used by experts not going to be used by cryptographers necessarily so we want it to be really simple to use so we want a really minimal API so from this perspective to some extent all we really wanted to say is do you encrypt or or do decrypt we don't want it the developer to have to understand that you're making calls to these T different dice nodes to then we gather these together to calculate some ephemeral key which we're going to use I should all be hidden behind and in the library this is gonna be helping you with that but then the library itself because it's making calls to these many different dice nodes it needs to be able to manage all those connections it needs to know who is talking to and where it's reaching out to and so what we do with dice is we add this additional entity which we call a broker and so this connection broker you can think of like a phone directory or maybe even like a DNS server that's basically just going to help you you can reach out to it and it tells you where the dice nodes are you need to reach out to which dice nodes are currently live and my help in the future with some some load balancing and so then with the information back the library can reach out to the appropriate dice nodes to then perform the distribute key derivation but of course if we're adding in this broker we don't want it to be a single point of failure we don't want the dice nodes to be single points of failure so firstly in terms of dice itself we need to set the appropriate threshold so we need to set the right amount of dice nodes themselves and we need to set them up with an appropriate threshold it's going to give us a good level security we need some redundancy in the broker and we don't want the broker to go down and then the application doesn't know where any dice nodes are that needs to contact so we need some redundancy there and then the final point which is maybe a little bit funky so we want to create a varied attack surface so we have many different dice nodes if I'm an attacker and I want to break into the AI system I need to break more than a threshold number of these nodes so if I kind of make these dice these it's very different then he's going to need to perform different attacks on different notes to be able to break the whole system so I could have some notes which a Windows server some with your Linux servers and so it's going to be much harder for him to to break into it the kind of the practical issue with this is it makes it much harder for system administrators and I have a much more diverse landscape they need to manage so it might be a pain point for them to do that in practice ok so that's kind of some of the realities we faced when working with the actual teams that use these systems in practice so we're currently ongoing in terms of getting this up and running so we can get a look at and used really in an enterprise setting and we're also working internally through our processes to be able to open source this so hopefully in a month or so I should have some positive news and we can share it with you guy and you guys and you can also have a play at using our our threshold encryption scheme and so thanks and any questions [Applause] Thank You Gavin um is there any interest in this kind of context of adding key rotation functionality where you either change the data encryption keys or the key encrypting keys and what kind of techniques do you have in place for that yes there's obviously that would be very useful thing to have and it's not something we naturally have at the moment and as I mentioned we have kind of two types of dice there's the AES based one and there's elliptic curve based one so the elliptic curve based one maybe there is some scope for doing something there on the ASP based one it might be more complicated and have you done a risk analysis that says this kind of diversity of platforms reduces the risk compared to using an HSM and if not how do you kind of persuade the business that this is the right way to go for your architecture that's a good question we've not done any kind of concrete analysis of that but I think they see some some validity and in this approach it may be not going to do it for every single project and for some projects they see that as something which would be useful thanks for the talk you mentioned one of the things with deployment is if you can you know get into a threshold of servers then you can attack the system and you also mention using like different platforms like Windows Linux and such I suspect you probably using some sort of shared library for the cryptographic implementation so if you're shipping projects like that how do you ensure that that library itself is not compromised and then shipped alone where it could start you know sending off keys to other places and I don't I don't necessary have a good answer to that you could have different implementations afterlife different implementations off dice so your different versions of the library which then gives you the additional level of complexity again practically that's kind of an issue because then you're managing much more different versions of the library let's all thank Evan again and let's thank all those speakers of this wonderful session and that concludes our program for today [Applause]