 Dit is een joint-work met Thomas Schrimpton over daar en Bogdan Rarinski, die op de conference is, maar ik kan het niet meteen zien. Dus laten we beginnen met een paar simpele applicaties van cryptologie. Dus e-mail-verkrijptie, je hebt het gezien van dit, ik hoop, en secure webbrowsering. Dus je hebt het zeker gezien van dit, want Björn heeft het gewoon gezegd. Dus een aantal examples, openBGP voor e-mail-verkrijptie en TLS voor secure webbrowsering. Dus dan kun je jezelf vragen hoe het werkt. Dus dit is een heel hoge niveau en ik denk dat je, omdat je hier in de audience weet van deze dingen, dus e-mail-verkrijptie, gebruikers-hybrid-verkrijptie, je zet een ephemeral-symmetraal-key en kapt het onder de publieke key, en dan gebruik je deze ephemeral-symmetraal-key voor symmetraal-verkrijptie. Voor secure webbrowsering, je hebt een ephemeral-symmetraal-key, gebruik je een handshake protocol en dan gebruik je het voor een symmetraal-key. Dus dat is heel makkelijk. De andere vraag is, waarom werkt dit? Dus voor e-mail-verkrijptie, er is de cam-dem-framer door Victor, zitten hier in de front row en Ronald. Dus in encapsulatie lijkt het als een random ephemeral-key, lijkt het als als een random ephemeral-key, en de dem is secure en de constructie is secure. Dus er is een mooie compositor hier. Er is één ding dat is secure, en de volgende ding is secure, en de hele ding is secure. En dan is er secure webbrowsering, en er is een simpel argument om te worden gemaakt, dat als de handshake protocol is secure en ook de recordleer is secure, dan is de hele ding secure. Maar het is veel harder om te argue. Dus als je kijkt naar het nummer van papieren die er na de originele papieren op de cam-dem-framer overvijzingen en het meer nodig maken, dan zijn er heelveel, als welke. Waarschijnlijk, als je kijkt naar het nummer van papieren die over de key-aangevingen en de TLS-secure, dan... Nou, ik weet niet de exacte account. Misschien heeft Kenny een indicatie op een gegeven moment, maar het is... Het is niet, ja. Dus, heel veel. Dus, op de periode van je situatie, deze compositoren kunnen worden compliceerd of kunnen worden gelijk makkelijk. Nu, de volgende vraag is waar je de key-aangeving hebt. Dus, voor e-mail-encryptie, je kunt het op jouw PC storen in memorie. Nou, dit is problematisch, want dan, iemand, zoals Nadia, zou met een koude bootattack komen en je private key-materiaal bekijken en dat is slecht. Voor de secure webbrowser, zou je op jouw PC of in de cloud zijn. Maar er zouden liggen, dus er zouden site-channels zijn, er zouden hardblijven zijn. Dus, de keys worden gecompromiseerd. Dus, je wilt jouw key storen veilig. Dus wat je wilt doen, je wilt je keys sturen op wat het heet Hardware Security Module. Je hebt nog steeds het probleem dat betere security-policies de keys kunnen revealen, maar de idee is dat, als je een Hardware Security Module hebt, dat dit een dede stuk van equipment is en de key in staat en de equipment op de key zal opereren. Dus dit is bijvoorbeeld, dit is geen reale Hardware Security Module, dat dit de plek van een Hardware Security Module voor de purposes van dit talk. Dus er is een key in staat en dan kun je het met het opereren, maar je zal niet meer de key zien. Om het te ontdekken, moet je het command zeggen zodat het weet wat te doen is. Dus dit is wat de applicatie en programma interfaces als de API. En pkcs nummer 11 is een cryptografisch API ontdekend om te gebruiken met ACSMS. Ja? Dus hoe werkt dit? Nou, je gebruikt dit ding, je gebruikt key management om een rol te ontdekken, om een store te ontdekken, om een export te ontdekken, om transport te ontdekken, om een tire te ontdekken, symmetraal keys, of in sommige cases ook publieke keys, maar we concentreren op symmetraal keys en dan ook gebruiken ze. Want als je keys hebt, wil je ze ook gebruiken voor encryptie of authenticatie. Dus er zijn verschillende dingen die Björn heeft op zijn vorige afspraak. Dus waarom werkt dit? Nou, dat is wat we gaan praten over vandaag. Dus onze contributie is dat we een heel besproken systeem, of subset, based on a subset of pkcs 11 gebruiken een situatie waar we symmetraal keys kunnen creëren. We kunnen ook rap en unwrap gebruiken deze keys en ik zal een verder informatie hebben over rap en unwrapping later, als je het niet bekijkt. En dan kun je ze gebruiken voor avontuurlijk cryptografische operaties, omdat wat je wilt is dat je kunt laten zien dat keys die de key management gehouden kunnen gebruiken, secuurlijk. En je wilt deze eens zien en vooral. Je wilt niet laten zien dit voor authenticatie, dan voor encryptie, dan voor authenticatie, authenticatie en encryptie, dan voor iemand die wil doen, ik weet niet wat de symmetraal keys zijn. Dus er is een niveau van abstractie die hier nodig is. Dus de technische challenge die je gaat hebben hier is dat je eerst moet komen met suitabel definities. Dus wat is de secuurlijk cryptografische primitie? Dus dit is werk dat is gedaan voordat in het context van TLS, omdat daar ook ze willen kunnen verbinden de handshake protocol of de key agreement met as many primitives as possible. Wat is de secuure cryptographic API? Dus wat is dat in tail? En wanneer is het key management secure? Dus wat zijn de requirements die je nodig van het key management systeem om te kunnen argue dat als je een secuure cryptographic primitie bent, dan krijg je een secuure cryptographic API. Nu, een van de problemen is dat er nog wel een situatie is dat keys gelegd zijn. Ik weet niet de idee is dat je gebruikt hardware security module, dus keys niet uitgaan, maar misschien keys uitgaan. En wat je wil is dat de verandering is als mogelijk limited. Je wil niet een situatie dat in een key gelegd dat dan al je secuurtie zelfs voor ongelaten keys gaat door de window. Dus dit is waarom er ook deze notion van corruptie en in sommige cases corruptie zal eigenlijk compromiseren, meer keys, want je wilt kunnen argue precies als mogelijk met keys zijn nog zeker te gebruiken en met keys zijn niet. Dus hier is een beetje historie op pkcs 11 ook om je te geven een idee van de complexiteit van het probleem van de volledige standaard te delen. Dus het begint in 95 en 20 jaar met de eerste versie door RSA en 20 jaar later de ownership van de standaard had moved tot Oasis en ze ontdekten versie 2.40. Dus als je naar de Oasis website zal zijn er een mooie YouTube video waarin ze beschrijven wat de volledige zijn dus het is vendor-neutral cross-platform er is het gevolg van design dus dat is de hoop en het supportt een wide range van devices dus simpel toekomst en ook complexen dus een van de goede dingen een van de dingen te oremember is dat het supportt multiple devices dus je moet hebben veel toekomst waar is in mijn nu er is ook een heel mooie subverie door Graham Steele op versie 2.20 die ik quote hier het is 407 pages dus dat is heel lang er zijn 54 commandoen 224 mekanismen 147 table 2 en 3 security-critical footnames dus dit is de reden waarom we moeten selecten een subset om start werk want als je wilt proeven iets over 407 pages of standard je gaat om wel misschien niet fit binnen de call for papers of crypto ja dus de andere 2 dingen dat Graham zei is dat er er is geen klikker complicitie criteria en zelfs uh dingen zijn complicitie je hebt geen security-guarantie want er zijn veel mogelijk configuraties binnen de standard en sommige configuraties zijn veilig en andere configuraties zijn niet veilig dus om een beetje te limpen de scopie we gaan kijken aan de few core componenten van de standard en de eerste component is iets called een secret key object dus een secret key object van de secret key dus dit is wat gebruikt voor de key en ze zijn gevoel te buy handels dus je moet imaginen dat de key is in hier en dan de handel poing te het dus ik kan proberen te doen dat is de handel poing tot de key tot de object en het visieel token moet hebben veel objecten omdat er er kan zijn beeldbaar keys in hier nu remember we hebben veel tokens dus een van de probleem is dat er een key hier en dezelfde key en hier en die dingen mogen over en dan willen we maken zeker dat gebruik van deze keys is consistente dus dus dit token dingen dat het kan doen operations A maar niet operation B met een particular key dat dit ook iets het kan doen operation A en niet operation B met het het het niet sudden start doen iets dat dit kan doen de andere ding dat je wilt kunnen doen is te move keys across van een token tot de andere token dus om dingen te doen om te gebruiken wrapping en onwrapping en te ensuren dat key usage is consistente er is iets called een attribute dus de attribute zal eigenlijk zeggen je wat de usage is geluid met de keys dus ze vertellen wat soort van de key het is hoe en wanneer het was gecreëte wat het may beused voor en wat may be done te het ja dus wat examples in crypt decrypt wrap unwrap trusted dus deze zijn van de pkcs 11 standard en deze zijn de de ones die we gaan te dat we hebben modelen in onze paper er is ook attribute dat je wat je kunt doen tot de key dus voor instance een extractable key betekent dat de key may be wrapped waarschijnlijk is de key is niet extractable dan je shouldn't wrap het ja en problemen de curve wrapping keys kan beused te decrypt dus we moeten make sure dat je zet deze attributes in een consistent way toe avoid bad interactions dus key wrapping erg quickly is de idee is dat je heb een twee keys je poing hem te elkaar twee keys en een handel poing te deze key de wrapping key de andere handel raps tot de key dat je wilt transporten en dan de traditionele way is dat je encrypt een key of de andere en dan je je wrap en dan je move dit wrap je voet dit in toe token en dan dit token je hoop dat de wrapping key is al daar en dan je geeft het de wrap en dan kan het creëren de kt dus dan kt is hier dus traditionele de mekanismen voor key wrap verschillen van ordinary motie operatie dus voor de mensen die naar de morning seks er waren verschillende op op zoals boten operatie voor een geïncryptie en dit is slecht verschillend omdat je niet wil hebben ja de verschillende standards zijn gevolgd dus een slecht meer moderne treatment van de key wrap je aan de geïncryptie data dus dit is door te Schrimten en Rogaway en deze geïncryptie data zijn excelende mekanismen te helpen je te authenticatie attribute wanne je transport kies en we ook laten dat in in fact dit werkt de de way je zou het te werken ja dus wat guidance op hoe je deze attribute moet gebruiken bijvoorbeeld als je rap dan de extractable attribute moet gezet tot true want als het niet je bent niet te doen dus in wat cases als je op de token doet dit het zal eigenlijk vervies te doen het de andere ding te weten is te dragen iese secret key met iese secret key consideration moet worden gegegeven tot kies met de token of de token moet niet laten de operatie dus als je denkt over hoe de veiligheid normaal bedoeld mensen gebruiken misschien asymptotisch veiligheid of concreet veiligheid maar zelfs in concreet veiligheid mensen typisch verkeken op een particular kielink en express alles in dat kielink maar waars het is klopt dat in dit wereld je eigenlijk moet kunnen te dealen met verschillende kies op dezelfde tijd dus dit creëert een abstractie dificultie dat we moeten te dealen met ook en dan er zijn dingen dat als je verkeken dus eerst we verkeken en dan dan je verkeken er wat dat ook moet worden gezet of moet worden gezet ja dus de conclusie is dat er kan de klas dus een non-sensitive kie kan worden sensitief we kunnen proberen te veranderen de kie of een kie kan worden een kie wat is ook slecht omdat dan daar een tek dus een van de dingen te verkeken dit is dat je wil maken dat deze de kie ze blijven de de of de de kan de in de de dus de background van wat pk cs 11 is wat zijn onze gole dus de eerste ding is we zetten oké we willen doen alles voor alles voor eindrijving eindrijving eindrijving eindrijving dan dan weer eindrijving allemaal op dezelf tijd dus we moeten een abstract correctus notion voor de primitief en based op dit we moeten zeggen wel als de primitief is correct we we moeten ook ook kunnen zeggen wat dat dat dat overal system te be correct zo porting dit correctus notion tot dat correctus notion similarly voor security zo ultimely wanneer je een cryptographic api je wilt te kunnen te niet alleen sleutels rond je wilt te gebruiken en dan wat secuur encryptie betekent en tills dat implies something voor wat secuur cryptographic api en tills en dan daar er er management api zo wat dat het betekent voor de key management te worden secuur en dan de main theorem in onze papier is dat correct en secuur implementatie voor primitief correct en suitably secuur key management api implies correct en secuur cryptographic api zo de theorem zelf als je staat het zoals dit is natuurlijk commonsens dit is wat we willen te maar eigenlijk proeven het en en reis het al het is extrem zo ik ga niet te gaan te de details eerst ik heb niet de tijd en de tweede ik wel ik ben niet zeker waar de de screen heeft de juist resolutie te te eigenlijk krijgen de gamen allemaal daar in een go dus ik zal je de simpelste game we hebben en dan ik denk je zal verstand waar ik niet ga ik ga ga ik ga ik ga ga ik ga ik ga ik ga ik ga ik ga we zijn zeker niet de eerste eerst te kijken op de veiligheid van cryptografische API's dus koussen en of koussen als iemand soms soms het schrijven en Schendren ze hebben al al op een heel particular cryptografische api maar er is een een paar van dus dus de de voortdaging dat is de eerst kompetenties op veiligheid is de gamebase en multiple users zijn supporten maar de probleem is dat je kan alleen hebben een single token ook de veiligheid is een beetje specifiek voor de constructie het is een beetje mingel dus je moet werken eigenlijk heel hard om een veiligheid van dat dat meer generaal en kies kan niet worden corrupt er is een ander werk door Kramer, Stiel en Wurinski waarin ze bevrijden drie modellen dus die zijn drie modellen zeker ze moeten alles doen bij dan maar alleen een van ze is een gamebase computatie en vermoordelijk dat model is eigenlijk illefijd dus dat is niet echt doen wat we willen ijder er is ook een univerlijk kompositieve een maar maar ik zal de paper voor een verder deel van dat ja nu onze werk ook heeft een limitatie dus omdat ik ik ik geef limitatie van vorige werk ik denk het is fair te op dit punt ook wat de limitaties van onze werk zijn dus voor�ens omdat we kijken aan een selectie van pkcs 11 er is veel dingen we niet modelen voor�en we niet modelen de derivatie of de structuur we niet deel met de identiteit of de zonen of met publieke method die eigenlijk zijn gebruikt wel een beetje en we hebben een concept of sessions of authenticated users dus een van deze dingen ze zijn blow-up jouw game jouw notatie jouw games ze zullen blow-up het ze zullen blow-up het op kwijt considerably de andere proloem is misschien meer signifiek want zoals ik zei we deel met abstract primitiefs dus dan de vraag is wat soort primitiefs kan je eigenlijk deel met in wat zijn limitaties voor�ens we kunnen alleen deel met stateless primitiefs dus non-based is fine maar als je een statevol ingevuld kan we ook alleen deel met een single deel deel deel dus voor de deel deel dat deel dat deel waar waar je een verschillende waar je een verschillende mensingsdeel based op verschillende deel op de deel deel deel ze zijn niet ondersteund op de moment deel deel en zoals ik zei deel deel maar er zijn niet ondersteund omdat omdat al deel deel deel symmetisch dus dus je kan niet deel deel deel dus ik zondig ik zal je een van de games te dus te weten waarom waarom ik niet niet deel op hier dus een cryptografisch primitief dus dit is de syntax voor een cryptografisch cryptografisch primitief hoe hoe je model abstract cryptografisch primitief dus je hebt de generatie en dan dan dan je hebt een algorithm die gebruikt de de key en op op soms soms input en dan dan de game er security game en initialisers je hebt twee verschillende challenge oracles want we spelen een indistinguishability game dus dus de de de de de challenge oracle en de reis challenge oracle en dan er might be oracles dat zijn in beide werelds dus dus deze zijn de auxiliary oracles excuse-moi dus dan je speelt een indistinguishing game en we add ook de habiliteit te corrupt games corrupt keys ja dus de code voor dit dus dit is de simplest game we hebben looks like this ja dus het is niet echt heel belangrijk dat je begrijpt was written here dus ik klik klik klik klikking tot de volgende slide ja dus als je dan port deze notion over cryptographic primitive tot de API setting je moet hebben wat notation dat deals met cryptographic API's dus zoals we gezegd we hebben deze tokens dus dit is de physical token dat dat plaatst de physical token en dan wil je het abstracten ja dus ze hebben een state deze tokens hebben een state ze hebben een unieke identiteit dus dit is token pink en dit is token jalo en groen en ze hebben een nummer van de associële handels want er zou moeten zijn verschillende tokens verschillende key objecten hier en er zijn handels op te zetten en verschillende handels mogen ook op te zetten en deze handels worden een unieke token dus als je de handel weet je weet welke token ze moeten en de link is associële met de attributes dus dat is waar we hebben voor deze notation ja en dan je komt naar de syntax dus we kunnen linken de syntax van de pkcsl commands met de commands in de API syntax en dan er is ook een correspondent oracle in de API game dus ik zal gewoon les ze allemaal heel snel zodat je kunt creëren rap en rap en je kunt eigenlijk run de primitive dat je wilt willen run plus je kunt corrupt keys in de game maar natuurlijk niet voor reale er is niet een pkcsl command please corrupt the key dat zou zijn simp ja dus met deze commands je zal zien dat er een notion van equivalente dus dit notion van equivalente eigenlijk terug naar de eerlijke papers door kassier chandran en ook creme stil rinsky dus je creëert een key en dan je krijgt een handel als een versie dan transferen deze key naar een ander token dus dan dan krijg je een andere handel en dan idealisch deze twee handels pointen als een key cryptografische object dezelfde ding dus je wil dat dus dit is waar we de equivalente klas gebruiken in de cs en dan als je je een ander key krijgt en dan start je rappen dus je rappen deze nieuwe key onder h1 en dan dan rappen het onder deze key wat was dezelfde dan dat je krijgt h4 dus nu h4 en h3 zou ook dezelfde zijn dus dit is vergeten dus er is dit notion van equivalente en dan wat je kunt ook zien dat als je encrypt of als je rappen zoals dit en ik geef je w en ik corrupt kw dan wat je ook leert kt ja dus als als ik je dit in dit dan kan je gewoon rappen een decryptie zelf dus dit is waar een singel decryptie kan te veel compromis dus de solution en dit is de revijment van een eerder mechanisme van krascher en sondral en ksw is te gebruiken graaf beschrijven de rappen en dependies tussen al deze equivalente klas klas zal al skip dat dat ja dus de security is dat elke onkormise keek kan de challenge in de primitive security game security van de key management api is dat elke key dat niet compromise ziet random dus dit is wat je verwacht dit is dezelfde als de kem notion en dan stikken is dat deze attributen ze dezelfde dus in pkcs ze kunnen veranderen omdat we hebben monitor in stie dus het is slecht verschill en dan onze compositie result is de opvies de namelijk dat p is de primitive dus als je een set van kees gebruikt alleen voor rapen en een set van kees je alleen gebruikt voor de primitive dan de compositie is secuur dus je hebt een laering om het te delen ja dus dat is de ronde oké ja dus we hebben dit een suitabel niveau van de opvies secuure cryptic primitive final deze dingen die we kunnen delen met dit oké dus challenges zijn deze deze ja dus dus challenges ja leave it there alright can we thank the speaker please