SlideShare a Scribd company logo
1
Sophia Drossopoulou, Imperial College London
Worked on programming language models, design and implementation, ownership types,
session types, Pony.
Proposed type state (Fickle), gradual types, Javascript type inference
Robustness by Design
Robustness goes beyond traditional concerns
1
Sophia Drossopoulou, Imperial College London
Worked on programming language models, design and implementation, ownership types,
session types, Pony.
Proposed type state (Fickle), gradual types, Javascript type inference
Robustness by Design
• closed world
• sufficient conditions for some effect
• about individual functions;
Robustness goes beyond traditional concerns
1
Traditional Specs
Sophia Drossopoulou, Imperial College London
Worked on programming language models, design and implementation, ownership types,
session types, Pony.
Proposed type state (Fickle), gradual types, Javascript type inference
Robustness by Design
• closed world
• sufficient conditions for some effect
• about individual functions;
Robustness goes beyond traditional concerns
1
Traditional Specs Robustness considerations
• open world
• necessary conditions for some effect
• about emergent behaviour
Sophia Drossopoulou, Imperial College London
Worked on programming language models, design and implementation, ownership types,
session types, Pony.
Proposed type state (Fickle), gradual types, Javascript type inference
Robustness by Design
2
Robustness goes beyond traditional concerns
2
class SafeOne{
private fld secret;
private fld treasure;
mthd take(s){
if (s==secret)
{ t=treasure;
treasure = null;
return t; } }
constr SafeOne(s,t){
secret=s; treasure = t; }
}
Robustness goes beyond traditional concerns
2
class SafeOne{
private fld secret;
private fld treasure;
mthd take(s){
if (s==secret)
{ t=treasure;
treasure = null;
return t; } }
constr SafeOne(s,t){
secret=s; treasure = t; }
}
SpecA:
{ true }
sf.take(s)
{ s=sf.secret -> sf.treasurepost = null
∧
s≠sf.secret -> sf.treasurepost = sf.treasurepre }
Robustness goes beyond traditional concerns
2
class SafeOne{
private fld secret;
private fld treasure;
mthd take(s){
if (s==secret)
{ t=treasure;
treasure = null;
return t; } }
constr SafeOne(s,t){
secret=s; treasure = t; }
}
SpecA:
{ true }
sf.take(s)
{ s=sf.secret -> sf.treasurepost = null
∧
s≠sf.secret -> sf.treasurepost = sf.treasurepre }
SafeOne ⊨ SpecA
Robustness goes beyond traditional concerns
😀
2
class SafeOne{
private fld secret;
private fld treasure;
mthd take(s){
if (s==secret)
{ t=treasure;
treasure = null;
return t; } }
constr SafeOne(s,t){
secret=s; treasure = t; }
}
class SafeTwo{
private fld secret;
private fld treasure;
mthd take(s){
…. }
constr SafeTwo(s,t){
… }
mthd set(s)
{ this.secret=s;}
}
SpecA:
{ true }
sf.take(s)
{ s=sf.secret -> sf.treasurepost = null
∧
s≠sf.secret -> sf.treasurepost = sf.treasurepre }
SafeOne ⊨ SpecA
Robustness goes beyond traditional concerns
😀
2
class SafeOne{
private fld secret;
private fld treasure;
mthd take(s){
if (s==secret)
{ t=treasure;
treasure = null;
return t; } }
constr SafeOne(s,t){
secret=s; treasure = t; }
}
class SafeTwo{
private fld secret;
private fld treasure;
mthd take(s){
…. }
constr SafeTwo(s,t){
… }
mthd set(s)
{ this.secret=s;}
}
SpecA:
{ true }
sf.take(s)
{ s=sf.secret -> sf.treasurepost = null
∧
s≠sf.secret -> sf.treasurepost = sf.treasurepre }
SafeOne ⊨ SpecA
SafeTwo ⊨ SpecA
Robustness goes beyond traditional concerns
😱
😀
2
class SafeOne{
private fld secret;
private fld treasure;
mthd take(s){
if (s==secret)
{ t=treasure;
treasure = null;
return t; } }
constr SafeOne(s,t){
secret=s; treasure = t; }
}
class SafeTwo{
private fld secret;
private fld treasure;
mthd take(s){
…. }
constr SafeTwo(s,t){
… }
mthd set(s)
{ this.secret=s;}
}
SpecA:
{ true }
sf.take(s)
{ s=sf.secret -> sf.treasurepost = null
∧
s≠sf.secret -> sf.treasurepost = sf.treasurepre }
SafeOne ⊨ SpecA
SafeTwo ⊨ SpecA
SpecB: ∀sf:Safe.[ sf.secretpre = sf.secretpost ]
SafeTwo ⊭ SpecB
Robustness goes beyond traditional concerns
😱
😀
😀
2
class SafeOne{
private fld secret;
private fld treasure;
mthd take(s){
if (s==secret)
{ t=treasure;
treasure = null;
return t; } }
constr SafeOne(s,t){
secret=s; treasure = t; }
}
class SafeTwo{
private fld secret;
private fld treasure;
mthd take(s){
…. }
constr SafeTwo(s,t){
… }
mthd set(s)
{ this.secret=s;}
}
class SafeThree{
private fld secret;
private fld treasure;
mthd take(s){
…. }
constr SafeThree(s,t){
… }
mthd set(s,sOld)
{ if sOld==secret then
{ secret=s;}}
}
SpecA:
{ true }
sf.take(s)
{ s=sf.secret -> sf.treasurepost = null
∧
s≠sf.secret -> sf.treasurepost = sf.treasurepre }
SafeOne ⊨ SpecA
SafeTwo ⊨ SpecA
SpecB: ∀sf:Safe.[ sf.secretpre = sf.secretpost ]
SafeTwo ⊭ SpecB
SafeThree ⊭ SpecB
Robustness goes beyond traditional concerns
😱
😀
😀
😱
2
class SafeOne{
private fld secret;
private fld treasure;
mthd take(s){
if (s==secret)
{ t=treasure;
treasure = null;
return t; } }
constr SafeOne(s,t){
secret=s; treasure = t; }
}
class SafeTwo{
private fld secret;
private fld treasure;
mthd take(s){
…. }
constr SafeTwo(s,t){
… }
mthd set(s)
{ this.secret=s;}
}
class SafeThree{
private fld secret;
private fld treasure;
mthd take(s){
…. }
constr SafeThree(s,t){
… }
mthd set(s,sOld)
{ if sOld==secret then
{ secret=s;}}
}
SpecA:
{ true }
sf.take(s)
{ s=sf.secret -> sf.treasurepost = null
∧
s≠sf.secret -> sf.treasurepost = sf.treasurepre }
SafeOne ⊨ SpecA
SafeTwo ⊨ SpecA
SpecB: ∀sf:Safe.[ sf.secretpre = sf.secretpost ]
SafeTwo ⊭ SpecB
SpecC: ∀sf:Safe.[ Will(Changes(sf.treasure))
⟶
∃ o:External.Access(o,sf.secret) ]
SafeThree ⊭ SpecB
Robustness goes beyond traditional concerns
😱
😀
😀
😱
2
class SafeOne{
private fld secret;
private fld treasure;
mthd take(s){
if (s==secret)
{ t=treasure;
treasure = null;
return t; } }
constr SafeOne(s,t){
secret=s; treasure = t; }
}
class SafeTwo{
private fld secret;
private fld treasure;
mthd take(s){
…. }
constr SafeTwo(s,t){
… }
mthd set(s)
{ this.secret=s;}
}
class SafeThree{
private fld secret;
private fld treasure;
mthd take(s){
…. }
constr SafeThree(s,t){
… }
mthd set(s,sOld)
{ if sOld==secret then
{ secret=s;}}
}
SpecA:
{ true }
sf.take(s)
{ s=sf.secret -> sf.treasurepost = null
∧
s≠sf.secret -> sf.treasurepost = sf.treasurepre }
SafeOne ⊨ SpecA
SafeTwo ⊨ SpecA
SpecB: ∀sf:Safe.[ sf.secretpre = sf.secretpost ]
SafeTwo ⊭ SpecB
SpecC: ∀sf:Safe.[ Will(Changes(sf.treasure))
⟶
∃ o:External.Access(o,sf.secret) ]
SafeThree ⊭ SpecB
SafeTwo ⊭ SpecC
SafeThree ⊨ SpecC
Robustness goes beyond traditional concerns
😱
😀
😀
😀
😀
😱
Work so far
3
Work to do
Robustness by Design
Work so far
3
• designed specification languages
• semantics of the specification
language
• case studies from financial
cyptography and
object capabilities literature
• concepts of trust and risk
Work to do
Robustness by Design
Work so far
3
• designed specification languages
• semantics of the specification
language
• case studies from financial
cyptography and
object capabilities literature
• concepts of trust and risk
Work to do
• desk-reason about adherence to
Robustness Specs
• logic to reason adherence to
Robustness Specs
• testing for adherence to
Robustness Specs
• what if external code is executed
on untrusted machine
Robustness by Design

More Related Content

More from KTN

Building Talent for the Future 2 – Expression of Interest Briefing
Building Talent for the Future 2 – Expression of Interest BriefingBuilding Talent for the Future 2 – Expression of Interest Briefing
Building Talent for the Future 2 – Expression of Interest BriefingKTN
 
Connected and Autonomous Vehicles Cohort Workshop
Connected and Autonomous Vehicles Cohort WorkshopConnected and Autonomous Vehicles Cohort Workshop
Connected and Autonomous Vehicles Cohort WorkshopKTN
 
Biodiversity and Food Production: The Future of the British Landscape
Biodiversity and Food Production: The Future of the British LandscapeBiodiversity and Food Production: The Future of the British Landscape
Biodiversity and Food Production: The Future of the British LandscapeKTN
 
Engage with...Performance Projects
Engage with...Performance ProjectsEngage with...Performance Projects
Engage with...Performance ProjectsKTN
 
How to Create a Good Horizon Europe Proposal Webinar
How to Create a Good Horizon Europe Proposal WebinarHow to Create a Good Horizon Europe Proposal Webinar
How to Create a Good Horizon Europe Proposal WebinarKTN
 
Horizon Europe Tackling Diseases and Antimicrobial Resistance (AMR) Webinar a...
Horizon Europe Tackling Diseases and Antimicrobial Resistance (AMR) Webinar a...Horizon Europe Tackling Diseases and Antimicrobial Resistance (AMR) Webinar a...
Horizon Europe Tackling Diseases and Antimicrobial Resistance (AMR) Webinar a...KTN
 
Engage with...Custom Interconnect
Engage with...Custom InterconnectEngage with...Custom Interconnect
Engage with...Custom InterconnectKTN
 
Engage with...ZF
Engage with...ZFEngage with...ZF
Engage with...ZFKTN
 
Engage with...FluxSys
Engage with...FluxSysEngage with...FluxSys
Engage with...FluxSysKTN
 
Made Smarter Innovation: Sustainable Smart Factory Competition Briefing
Made Smarter Innovation: Sustainable Smart Factory Competition BriefingMade Smarter Innovation: Sustainable Smart Factory Competition Briefing
Made Smarter Innovation: Sustainable Smart Factory Competition BriefingKTN
 
Driving the Electric Revolution – PEMD Skills Hub
Driving the Electric Revolution – PEMD Skills HubDriving the Electric Revolution – PEMD Skills Hub
Driving the Electric Revolution – PEMD Skills HubKTN
 
Medicines Manufacturing Challenge EDI Survey Briefing Webinar
Medicines Manufacturing Challenge EDI Survey Briefing WebinarMedicines Manufacturing Challenge EDI Survey Briefing Webinar
Medicines Manufacturing Challenge EDI Survey Briefing WebinarKTN
 
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | Pitches
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | PitchesHorizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | Pitches
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | PitchesKTN
 
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | Slides
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | SlidesHorizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | Slides
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | SlidesKTN
 
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | Slides
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | SlidesHorizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | Slides
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | SlidesKTN
 
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | Pitches
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | PitchesHorizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | Pitches
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | PitchesKTN
 
Farming Innovation Programme - Small R&D Partnership Projects - Consortia Bui...
Farming Innovation Programme - Small R&D Partnership Projects - Consortia Bui...Farming Innovation Programme - Small R&D Partnership Projects - Consortia Bui...
Farming Innovation Programme - Small R&D Partnership Projects - Consortia Bui...KTN
 
Net Zero in Medicines Manufacturing: Measuring and Reporting Carbon Footprint
Net Zero in Medicines Manufacturing: Measuring and Reporting Carbon FootprintNet Zero in Medicines Manufacturing: Measuring and Reporting Carbon Footprint
Net Zero in Medicines Manufacturing: Measuring and Reporting Carbon FootprintKTN
 
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | Pitches
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | PitchesHorizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | Pitches
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | PitchesKTN
 
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | Slides
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | SlidesHorizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | Slides
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | SlidesKTN
 

More from KTN (20)

Building Talent for the Future 2 – Expression of Interest Briefing
Building Talent for the Future 2 – Expression of Interest BriefingBuilding Talent for the Future 2 – Expression of Interest Briefing
Building Talent for the Future 2 – Expression of Interest Briefing
 
Connected and Autonomous Vehicles Cohort Workshop
Connected and Autonomous Vehicles Cohort WorkshopConnected and Autonomous Vehicles Cohort Workshop
Connected and Autonomous Vehicles Cohort Workshop
 
Biodiversity and Food Production: The Future of the British Landscape
Biodiversity and Food Production: The Future of the British LandscapeBiodiversity and Food Production: The Future of the British Landscape
Biodiversity and Food Production: The Future of the British Landscape
 
Engage with...Performance Projects
Engage with...Performance ProjectsEngage with...Performance Projects
Engage with...Performance Projects
 
How to Create a Good Horizon Europe Proposal Webinar
How to Create a Good Horizon Europe Proposal WebinarHow to Create a Good Horizon Europe Proposal Webinar
How to Create a Good Horizon Europe Proposal Webinar
 
Horizon Europe Tackling Diseases and Antimicrobial Resistance (AMR) Webinar a...
Horizon Europe Tackling Diseases and Antimicrobial Resistance (AMR) Webinar a...Horizon Europe Tackling Diseases and Antimicrobial Resistance (AMR) Webinar a...
Horizon Europe Tackling Diseases and Antimicrobial Resistance (AMR) Webinar a...
 
Engage with...Custom Interconnect
Engage with...Custom InterconnectEngage with...Custom Interconnect
Engage with...Custom Interconnect
 
Engage with...ZF
Engage with...ZFEngage with...ZF
Engage with...ZF
 
Engage with...FluxSys
Engage with...FluxSysEngage with...FluxSys
Engage with...FluxSys
 
Made Smarter Innovation: Sustainable Smart Factory Competition Briefing
Made Smarter Innovation: Sustainable Smart Factory Competition BriefingMade Smarter Innovation: Sustainable Smart Factory Competition Briefing
Made Smarter Innovation: Sustainable Smart Factory Competition Briefing
 
Driving the Electric Revolution – PEMD Skills Hub
Driving the Electric Revolution – PEMD Skills HubDriving the Electric Revolution – PEMD Skills Hub
Driving the Electric Revolution – PEMD Skills Hub
 
Medicines Manufacturing Challenge EDI Survey Briefing Webinar
Medicines Manufacturing Challenge EDI Survey Briefing WebinarMedicines Manufacturing Challenge EDI Survey Briefing Webinar
Medicines Manufacturing Challenge EDI Survey Briefing Webinar
 
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | Pitches
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | PitchesHorizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | Pitches
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | Pitches
 
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | Slides
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | SlidesHorizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | Slides
Horizon Europe Clean Energy Webinar - Cluster 5 Destination 3 | Slides
 
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | Slides
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | SlidesHorizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | Slides
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | Slides
 
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | Pitches
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | PitchesHorizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | Pitches
Horizon Europe Quantum Webinar - Cluster 4 Destinations 4 and 5 | Pitches
 
Farming Innovation Programme - Small R&D Partnership Projects - Consortia Bui...
Farming Innovation Programme - Small R&D Partnership Projects - Consortia Bui...Farming Innovation Programme - Small R&D Partnership Projects - Consortia Bui...
Farming Innovation Programme - Small R&D Partnership Projects - Consortia Bui...
 
Net Zero in Medicines Manufacturing: Measuring and Reporting Carbon Footprint
Net Zero in Medicines Manufacturing: Measuring and Reporting Carbon FootprintNet Zero in Medicines Manufacturing: Measuring and Reporting Carbon Footprint
Net Zero in Medicines Manufacturing: Measuring and Reporting Carbon Footprint
 
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | Pitches
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | PitchesHorizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | Pitches
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | Pitches
 
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | Slides
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | SlidesHorizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | Slides
Horizon Europe Clean Transport Webinar - Cluster 5 Destination 5 | Slides
 

Recently uploaded

Transforming Brand Perception and Boosting Profitability
Transforming Brand Perception and Boosting ProfitabilityTransforming Brand Perception and Boosting Profitability
Transforming Brand Perception and Boosting Profitabilityaaryangarg12
 
PORTFOLIO FABIANA VILLANI ARCHITECTURE.pdf
PORTFOLIO FABIANA VILLANI ARCHITECTURE.pdfPORTFOLIO FABIANA VILLANI ARCHITECTURE.pdf
PORTFOLIO FABIANA VILLANI ARCHITECTURE.pdffabianavillanib
 
The Evolution of Fashion Trends: History to Fashion
The Evolution of Fashion Trends: History to FashionThe Evolution of Fashion Trends: History to Fashion
The Evolution of Fashion Trends: History to FashionPixel poets
 
CA OFFICE office office office _VIEWS.pdf
CA OFFICE office office office _VIEWS.pdfCA OFFICE office office office _VIEWS.pdf
CA OFFICE office office office _VIEWS.pdfSudhanshuMandlik
 
Common Designing Mistakes and How to avoid them
Common Designing Mistakes and How to avoid themCommon Designing Mistakes and How to avoid them
Common Designing Mistakes and How to avoid themmadhavlakhanpal29
 
Expert Accessory Dwelling Unit (ADU) Drafting Services
Expert Accessory Dwelling Unit (ADU) Drafting ServicesExpert Accessory Dwelling Unit (ADU) Drafting Services
Expert Accessory Dwelling Unit (ADU) Drafting ServicesResDraft
 
Top 5 Indian Style Modular Kitchen Designs
Top 5 Indian Style Modular Kitchen DesignsTop 5 Indian Style Modular Kitchen Designs
Top 5 Indian Style Modular Kitchen DesignsFinzo Kitchens
 
National-Learning-Camp 2024 deped....pptx
National-Learning-Camp 2024 deped....pptxNational-Learning-Camp 2024 deped....pptx
National-Learning-Camp 2024 deped....pptxAlecAnidul
 
Art Nouveau Movement Presentation for Art History.
Art Nouveau Movement Presentation for Art History.Art Nouveau Movement Presentation for Art History.
Art Nouveau Movement Presentation for Art History.rrimika1
 
Book Formatting: Quality Control Checks for Designers
Book Formatting: Quality Control Checks for DesignersBook Formatting: Quality Control Checks for Designers
Book Formatting: Quality Control Checks for DesignersConfidence Ago
 
The Design Code Google Developer Student Club.pptx
The Design Code Google Developer Student Club.pptxThe Design Code Google Developer Student Club.pptx
The Design Code Google Developer Student Club.pptxadityakushalsaha
 

Recently uploaded (11)

Transforming Brand Perception and Boosting Profitability
Transforming Brand Perception and Boosting ProfitabilityTransforming Brand Perception and Boosting Profitability
Transforming Brand Perception and Boosting Profitability
 
PORTFOLIO FABIANA VILLANI ARCHITECTURE.pdf
PORTFOLIO FABIANA VILLANI ARCHITECTURE.pdfPORTFOLIO FABIANA VILLANI ARCHITECTURE.pdf
PORTFOLIO FABIANA VILLANI ARCHITECTURE.pdf
 
The Evolution of Fashion Trends: History to Fashion
The Evolution of Fashion Trends: History to FashionThe Evolution of Fashion Trends: History to Fashion
The Evolution of Fashion Trends: History to Fashion
 
CA OFFICE office office office _VIEWS.pdf
CA OFFICE office office office _VIEWS.pdfCA OFFICE office office office _VIEWS.pdf
CA OFFICE office office office _VIEWS.pdf
 
Common Designing Mistakes and How to avoid them
Common Designing Mistakes and How to avoid themCommon Designing Mistakes and How to avoid them
Common Designing Mistakes and How to avoid them
 
Expert Accessory Dwelling Unit (ADU) Drafting Services
Expert Accessory Dwelling Unit (ADU) Drafting ServicesExpert Accessory Dwelling Unit (ADU) Drafting Services
Expert Accessory Dwelling Unit (ADU) Drafting Services
 
Top 5 Indian Style Modular Kitchen Designs
Top 5 Indian Style Modular Kitchen DesignsTop 5 Indian Style Modular Kitchen Designs
Top 5 Indian Style Modular Kitchen Designs
 
National-Learning-Camp 2024 deped....pptx
National-Learning-Camp 2024 deped....pptxNational-Learning-Camp 2024 deped....pptx
National-Learning-Camp 2024 deped....pptx
 
Art Nouveau Movement Presentation for Art History.
Art Nouveau Movement Presentation for Art History.Art Nouveau Movement Presentation for Art History.
Art Nouveau Movement Presentation for Art History.
 
Book Formatting: Quality Control Checks for Designers
Book Formatting: Quality Control Checks for DesignersBook Formatting: Quality Control Checks for Designers
Book Formatting: Quality Control Checks for Designers
 
The Design Code Google Developer Student Club.pptx
The Design Code Google Developer Student Club.pptxThe Design Code Google Developer Student Club.pptx
The Design Code Google Developer Student Club.pptx
 

Digital Security by Design: Robustness by Design - Sophia Drossopoulou, Imperial College London

  • 1. 1 Sophia Drossopoulou, Imperial College London Worked on programming language models, design and implementation, ownership types, session types, Pony. Proposed type state (Fickle), gradual types, Javascript type inference Robustness by Design
  • 2. Robustness goes beyond traditional concerns 1 Sophia Drossopoulou, Imperial College London Worked on programming language models, design and implementation, ownership types, session types, Pony. Proposed type state (Fickle), gradual types, Javascript type inference Robustness by Design
  • 3. • closed world • sufficient conditions for some effect • about individual functions; Robustness goes beyond traditional concerns 1 Traditional Specs Sophia Drossopoulou, Imperial College London Worked on programming language models, design and implementation, ownership types, session types, Pony. Proposed type state (Fickle), gradual types, Javascript type inference Robustness by Design
  • 4. • closed world • sufficient conditions for some effect • about individual functions; Robustness goes beyond traditional concerns 1 Traditional Specs Robustness considerations • open world • necessary conditions for some effect • about emergent behaviour Sophia Drossopoulou, Imperial College London Worked on programming language models, design and implementation, ownership types, session types, Pony. Proposed type state (Fickle), gradual types, Javascript type inference Robustness by Design
  • 5. 2 Robustness goes beyond traditional concerns
  • 6. 2 class SafeOne{ private fld secret; private fld treasure; mthd take(s){ if (s==secret) { t=treasure; treasure = null; return t; } } constr SafeOne(s,t){ secret=s; treasure = t; } } Robustness goes beyond traditional concerns
  • 7. 2 class SafeOne{ private fld secret; private fld treasure; mthd take(s){ if (s==secret) { t=treasure; treasure = null; return t; } } constr SafeOne(s,t){ secret=s; treasure = t; } } SpecA: { true } sf.take(s) { s=sf.secret -> sf.treasurepost = null ∧ s≠sf.secret -> sf.treasurepost = sf.treasurepre } Robustness goes beyond traditional concerns
  • 8. 2 class SafeOne{ private fld secret; private fld treasure; mthd take(s){ if (s==secret) { t=treasure; treasure = null; return t; } } constr SafeOne(s,t){ secret=s; treasure = t; } } SpecA: { true } sf.take(s) { s=sf.secret -> sf.treasurepost = null ∧ s≠sf.secret -> sf.treasurepost = sf.treasurepre } SafeOne ⊨ SpecA Robustness goes beyond traditional concerns 😀
  • 9. 2 class SafeOne{ private fld secret; private fld treasure; mthd take(s){ if (s==secret) { t=treasure; treasure = null; return t; } } constr SafeOne(s,t){ secret=s; treasure = t; } } class SafeTwo{ private fld secret; private fld treasure; mthd take(s){ …. } constr SafeTwo(s,t){ … } mthd set(s) { this.secret=s;} } SpecA: { true } sf.take(s) { s=sf.secret -> sf.treasurepost = null ∧ s≠sf.secret -> sf.treasurepost = sf.treasurepre } SafeOne ⊨ SpecA Robustness goes beyond traditional concerns 😀
  • 10. 2 class SafeOne{ private fld secret; private fld treasure; mthd take(s){ if (s==secret) { t=treasure; treasure = null; return t; } } constr SafeOne(s,t){ secret=s; treasure = t; } } class SafeTwo{ private fld secret; private fld treasure; mthd take(s){ …. } constr SafeTwo(s,t){ … } mthd set(s) { this.secret=s;} } SpecA: { true } sf.take(s) { s=sf.secret -> sf.treasurepost = null ∧ s≠sf.secret -> sf.treasurepost = sf.treasurepre } SafeOne ⊨ SpecA SafeTwo ⊨ SpecA Robustness goes beyond traditional concerns 😱 😀
  • 11. 2 class SafeOne{ private fld secret; private fld treasure; mthd take(s){ if (s==secret) { t=treasure; treasure = null; return t; } } constr SafeOne(s,t){ secret=s; treasure = t; } } class SafeTwo{ private fld secret; private fld treasure; mthd take(s){ …. } constr SafeTwo(s,t){ … } mthd set(s) { this.secret=s;} } SpecA: { true } sf.take(s) { s=sf.secret -> sf.treasurepost = null ∧ s≠sf.secret -> sf.treasurepost = sf.treasurepre } SafeOne ⊨ SpecA SafeTwo ⊨ SpecA SpecB: ∀sf:Safe.[ sf.secretpre = sf.secretpost ] SafeTwo ⊭ SpecB Robustness goes beyond traditional concerns 😱 😀 😀
  • 12. 2 class SafeOne{ private fld secret; private fld treasure; mthd take(s){ if (s==secret) { t=treasure; treasure = null; return t; } } constr SafeOne(s,t){ secret=s; treasure = t; } } class SafeTwo{ private fld secret; private fld treasure; mthd take(s){ …. } constr SafeTwo(s,t){ … } mthd set(s) { this.secret=s;} } class SafeThree{ private fld secret; private fld treasure; mthd take(s){ …. } constr SafeThree(s,t){ … } mthd set(s,sOld) { if sOld==secret then { secret=s;}} } SpecA: { true } sf.take(s) { s=sf.secret -> sf.treasurepost = null ∧ s≠sf.secret -> sf.treasurepost = sf.treasurepre } SafeOne ⊨ SpecA SafeTwo ⊨ SpecA SpecB: ∀sf:Safe.[ sf.secretpre = sf.secretpost ] SafeTwo ⊭ SpecB SafeThree ⊭ SpecB Robustness goes beyond traditional concerns 😱 😀 😀 😱
  • 13. 2 class SafeOne{ private fld secret; private fld treasure; mthd take(s){ if (s==secret) { t=treasure; treasure = null; return t; } } constr SafeOne(s,t){ secret=s; treasure = t; } } class SafeTwo{ private fld secret; private fld treasure; mthd take(s){ …. } constr SafeTwo(s,t){ … } mthd set(s) { this.secret=s;} } class SafeThree{ private fld secret; private fld treasure; mthd take(s){ …. } constr SafeThree(s,t){ … } mthd set(s,sOld) { if sOld==secret then { secret=s;}} } SpecA: { true } sf.take(s) { s=sf.secret -> sf.treasurepost = null ∧ s≠sf.secret -> sf.treasurepost = sf.treasurepre } SafeOne ⊨ SpecA SafeTwo ⊨ SpecA SpecB: ∀sf:Safe.[ sf.secretpre = sf.secretpost ] SafeTwo ⊭ SpecB SpecC: ∀sf:Safe.[ Will(Changes(sf.treasure)) ⟶ ∃ o:External.Access(o,sf.secret) ] SafeThree ⊭ SpecB Robustness goes beyond traditional concerns 😱 😀 😀 😱
  • 14. 2 class SafeOne{ private fld secret; private fld treasure; mthd take(s){ if (s==secret) { t=treasure; treasure = null; return t; } } constr SafeOne(s,t){ secret=s; treasure = t; } } class SafeTwo{ private fld secret; private fld treasure; mthd take(s){ …. } constr SafeTwo(s,t){ … } mthd set(s) { this.secret=s;} } class SafeThree{ private fld secret; private fld treasure; mthd take(s){ …. } constr SafeThree(s,t){ … } mthd set(s,sOld) { if sOld==secret then { secret=s;}} } SpecA: { true } sf.take(s) { s=sf.secret -> sf.treasurepost = null ∧ s≠sf.secret -> sf.treasurepost = sf.treasurepre } SafeOne ⊨ SpecA SafeTwo ⊨ SpecA SpecB: ∀sf:Safe.[ sf.secretpre = sf.secretpost ] SafeTwo ⊭ SpecB SpecC: ∀sf:Safe.[ Will(Changes(sf.treasure)) ⟶ ∃ o:External.Access(o,sf.secret) ] SafeThree ⊭ SpecB SafeTwo ⊭ SpecC SafeThree ⊨ SpecC Robustness goes beyond traditional concerns 😱 😀 😀 😀 😀 😱
  • 15. Work so far 3 Work to do Robustness by Design
  • 16. Work so far 3 • designed specification languages • semantics of the specification language • case studies from financial cyptography and object capabilities literature • concepts of trust and risk Work to do Robustness by Design
  • 17. Work so far 3 • designed specification languages • semantics of the specification language • case studies from financial cyptography and object capabilities literature • concepts of trust and risk Work to do • desk-reason about adherence to Robustness Specs • logic to reason adherence to Robustness Specs • testing for adherence to Robustness Specs • what if external code is executed on untrusted machine Robustness by Design