My undergraduate thesis on a capability based security system for a data-centric operating system.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat/poster: example diagrams

+162 -5
+1 -2
poster/main.typ
··· 23 23 ), 24 24 logo2: image( 25 25 "../assets/twizzler_logo.png", 26 - height: 75%, 26 + height: 100%, 27 27 ), 28 28 base_colors: base_colors, 29 29 ) ··· 102 102 ][ 103 103 #include "./sections/6_cited.typ" 104 104 ] 105 - 106 105 107 106 ], 108 107 ),
+126 -2
poster/sections/1_twizzler.typ
··· 1 + #import "@preview/circuiteria:0.2.0" 1 2 #let title = "What is Twizzler?" 2 - 3 3 4 4 // the big idea is movign into a data centric operating system 5 5 // ··· 12 12 // 13 13 // lead into capabilities... 14 14 15 - #lorem(200) 15 + #lorem(150) 16 + 16 17 17 18 19 + #let teal = rgb(37, 155, 166) 20 + #let orange = rgb(254, 160, 93) 21 + #let brown = rgb(97, 54, 60) 18 22 19 23 24 + // could also use this to show the different steps to read / write to a file... 25 + // https://github.com/Jollywatt/typst-fletcher 26 + // 27 + // but what is the main reason we need capabilities? 28 + // 29 + // decentralization, what is it, why do we need decentralized security? 30 + // 31 + // we dont want the kernel to be the sole authority, why? 32 + // 33 + // look into why that is... 34 + // 35 + // why does the kernel only want to enforce security policy... 36 + 37 + #align(center)[ 38 + #figure(caption: "Perry being the platypus")[ 39 + 40 + #set text(font: "Noto Sans") 41 + #circuiteria.circuit({ 42 + import circuiteria: * 43 + 44 + element.group(id: "platypus", name: "A platypus", { 45 + element.block( 46 + x: 0, 47 + y: 0, 48 + w: 2, 49 + h: 3, 50 + id: "body", 51 + fill: teal, 52 + ports: ( 53 + east: ( 54 + (id: "out"), 55 + ), 56 + ), 57 + ports-margins: ( 58 + east: (50%, 10%), 59 + ), 60 + ) 61 + 62 + element.block( 63 + x: 2.5, 64 + y: 1.5, 65 + w: 1.5, 66 + h: 1, 67 + id: "beak", 68 + fill: orange, 69 + ports: ( 70 + south: ( 71 + (id: "in"), 72 + ), 73 + ), 74 + ) 75 + 76 + wire.wire( 77 + "w1", 78 + ("body-port-out", "beak-port-in"), 79 + style: "zigzag", 80 + zigzag-ratio: 100%, 81 + ) 82 + }) 83 + 84 + let O = (rel: (2, 0), to: "platypus.south-east") 85 + 86 + element.group(id: "perry", name: "Perry the platypus", { 87 + element.block( 88 + x: (rel: 0, to: O), 89 + y: 0, 90 + w: 2, 91 + h: 3, 92 + id: "body", 93 + fill: teal, 94 + ports: ( 95 + east: ( 96 + (id: "out"), 97 + ), 98 + ), 99 + ports-margins: ( 100 + east: (50%, 10%), 101 + ), 102 + ) 103 + 104 + element.block( 105 + x: (rel: 2.5, to: O), 106 + y: 1.5, 107 + w: 1.5, 108 + h: 1, 109 + id: "beak", 110 + fill: orange, 111 + ports: ( 112 + south: ( 113 + (id: "in"), 114 + ), 115 + ), 116 + ) 117 + 118 + element.block( 119 + x: (rel: 0.25, to: O), 120 + y: 3.2, 121 + w: 1.5, 122 + h: 0.5, 123 + id: "hat", 124 + fill: brown, 125 + ) 126 + 127 + wire.wire( 128 + "w2", 129 + ("body-port-out", "beak-port-in"), 130 + style: "zigzag", 131 + zigzag-ratio: 100%, 132 + ) 133 + }) 134 + 135 + wire.wire( 136 + "w3", 137 + ("platypus.east", (horizontal: "perry.west", vertical: ())), 138 + directed: true, 139 + bus: true, 140 + ) 141 + }) 142 + ] 143 + ]
+35 -1
poster/sections/4_execution.typ
··· 1 + #import "@preview/chronos:0.3.0" 1 2 #let title = "System At Work" 2 3 3 4 // ok show an example of the system at work, what exactly is done ··· 10 11 // THE main point is that there is no kernel involvement in the datapath, 11 12 // but we still uphold security!! 12 13 13 - #lorem(200) 14 + #lorem(150) 15 + #align(center)[ 16 + #figure(caption: "how alice wants to slime out bob")[ 17 + 18 + #chronos.diagram({ 19 + import chronos: * 20 + _par("A", display-name: "Alice") 21 + _par("B", display-name: "Bob") 22 + _par("C", display-name: "Charlie") 23 + _par("D", display-name: "Derek") 24 + 25 + _seq("A", "B", comment: "hello", enable-dst: true) 26 + _seq("B", "B", comment: "self call", enable-dst: true) 27 + _seq( 28 + "C", 29 + "B", 30 + comment: "hello from thread 2", 31 + enable-dst: true, 32 + lifeline-style: (fill: rgb("#005500")), 33 + ) 34 + _seq("B", "D", comment: "create", create-dst: true) 35 + _seq( 36 + "B", 37 + "C", 38 + comment: "done in thread 2", 39 + disable-src: true, 40 + dashed: true, 41 + ) 42 + _seq("B", "B", comment: "rc", disable-src: true, dashed: true) 43 + _seq("B", "D", comment: "delete", destroy-dst: true) 44 + _seq("B", "A", comment: "success", disable-src: true, dashed: true) 45 + }) 46 + ] 47 + ]