This commit is contained in:
linse 2017-09-16 18:08:57 -04:00
parent afd52350b9
commit 823c7c9967

View file

@ -36,7 +36,7 @@ the interface on which OCaml runs.
OCaml is a functional programming language that minimizes side effects and mutable state. OCaml is a functional programming language that minimizes side effects and mutable state.
Its functional programming concepts give us a list of security advantages for MirageOS. Its functional programming concepts give us a list of security advantages for MirageOS.
## Running a unikernel & system security ## Running unikernel, system security
Aside from automated memory management to avoid memory corruption, and type checking to avoid many common Aside from automated memory management to avoid memory corruption, and type checking to avoid many common
programming errors, the major advantage of functional programming is localized reasoning about program code. programming errors, the major advantage of functional programming is localized reasoning about program code.
@ -90,8 +90,8 @@ A MirageOS unikernel is much smaller than a comparable UNIX
virtual machine. By avoiding superfluous code we decrease the attack surface virtual machine. By avoiding superfluous code we decrease the attack surface
immensly. immensly.
As example, the lines of code of the [Bitcoin Piñata](/Projects/Pinata) compared Consider the breakdown of the code of the example system [Bitcoin Piñata](/Projects/Pinata) compared
to a virtual machine using Linux and OpenSSL, in thousands of lines of code: to a virtual machine using Linux and OpenSSL, measured in thousands of lines of code:
<table> <table>
<tr><th></th><th>Linux</th><th>MirageOS</th></tr> <tr><th></th><th>Linux</th><th>MirageOS</th></tr>
@ -102,10 +102,7 @@ to a virtual machine using Linux and OpenSSL, in thousands of lines of code:
<tr><td>Total</td><td>2560</td><td>102</td></tr> <tr><td>Total</td><td>2560</td><td>102</td></tr>
</table> </table>
By minimising each unikernel to its minimal footprint,
The choice of programming language avoids several attack vectors. Immutable data
structures, type checking and the OCaml runtime memory manager ensure memory
safety in OCaml. By minimising each unikernel to its minimal footprint,
security breaches are contained to the information the unikernel contains. security breaches are contained to the information the unikernel contains.
### Secure updates ### Secure updates