Loeschdiskussion.
This commit is contained in:
parent
fb7e820e4d
commit
ebc2dff0b6
1 changed files with 3 additions and 72 deletions
75
Technology
75
Technology
|
@ -104,7 +104,7 @@ to a virtual machine using Linux and OpenSSL, measured in thousands of lines of
|
||||||
|
|
||||||
### Secure updates
|
### Secure updates
|
||||||
|
|
||||||
If a security flaw is discovered in a library, and the library gets a security update,
|
If a security flaw is discovered in a library, and there is a security update,
|
||||||
all unikernels depending on this library need to be updated as well.
|
all unikernels depending on this library need to be updated as well.
|
||||||
This can be done with the OCaml package manager.
|
This can be done with the OCaml package manager.
|
||||||
It resolves dependencies and lets authors sign their releases,
|
It resolves dependencies and lets authors sign their releases,
|
||||||
|
@ -154,7 +154,7 @@ direction is also possible: OCaml code can be translated into Coq definitions
|
||||||
The National Cybersecurity Agency of France reviewed the implementation of the
|
The National Cybersecurity Agency of France reviewed the implementation of the
|
||||||
OCaml runtime system, [their
|
OCaml runtime system, [their
|
||||||
report](http://www.ssi.gouv.fr/agence/publication/lafosec-securite-et-langages-fonctionnels/)
|
report](http://www.ssi.gouv.fr/agence/publication/lafosec-securite-et-langages-fonctionnels/)
|
||||||
altered some language modifications, such as that strings are no longer mutable.
|
prompted some language modifications, such as that strings are no longer mutable.
|
||||||
|
|
||||||
### Modern dialects and compile targets
|
### Modern dialects and compile targets
|
||||||
|
|
||||||
|
@ -167,74 +167,5 @@ OCaml which syntax is closer to JavaScript, and easier to comprehend for
|
||||||
beginners. Reason and OCaml code can be easily combined in a single
|
beginners. Reason and OCaml code can be easily combined in a single
|
||||||
application, since the same compiler is used.
|
application, since the same compiler is used.
|
||||||
|
|
||||||
More literature on why OCaml is a good choice in the modern world has been
|
More literature on why OCaml is a good choice has been
|
||||||
written by Yaron Minsky (Jane Street) in the article [OCaml for the masses](http://queue.acm.org/detail.cfm?id=2038036), and more recently by the crypto-ledger [tezos](https://www.tezos.com/static/papers/position_paper.pdf).
|
written by Yaron Minsky (Jane Street) in the article [OCaml for the masses](http://queue.acm.org/detail.cfm?id=2038036), and more recently by the crypto-ledger [tezos](https://www.tezos.com/static/papers/position_paper.pdf).
|
||||||
|
|
||||||
## Current state and future directions
|
|
||||||
|
|
||||||
Many libraries developed in the MirageOS project are deployed by Docker for Mac
|
|
||||||
and Docker for Windows, which have more than 100000 active users.
|
|
||||||
|
|
||||||
Available libraries include an IPv4 stack (TCP, UDP, ARP), DHCP client and
|
|
||||||
server, DNS server and resolver (both recursive and forwarding), HTTP (including
|
|
||||||
webmachine for request routing, and sessions), syslog, git (both client and
|
|
||||||
server, with mutliple storage backends: block device, in-memory), prometheus
|
|
||||||
integration. A TLS library, including random number generator (Fortuna),
|
|
||||||
cryptographic primitives (RSA, DSA, DH, AES), X.509 (using ASN.1), was developed
|
|
||||||
3 years ago and is in production serving websites, plus some applications using
|
|
||||||
the client side. A prototype implementation for managing unikernels on the host
|
|
||||||
system is already deployed and actively used, similar to libvirt, but with a
|
|
||||||
minimised code base, and written in OCaml. Monitoring is done with
|
|
||||||
prometheus. <- TODO: das bedeutet structured data und cloud ready / scalable /
|
|
||||||
funktioniert in distributed system?
|
|
||||||
|
|
||||||
More libraries are under active development, this includes an OpenPGP
|
|
||||||
implementation, an ssh implementation, structured syslog, Cap'n proto (RPC with
|
|
||||||
support for capabilities).
|
|
||||||
|
|
||||||
OCaml can be compiled to JavaScript, which means projects can developed in a
|
|
||||||
single language to ensure consistency and avoid errors, but code can be executed
|
|
||||||
on the client or on the server.
|
|
||||||
|
|
||||||
The idea of unikernels is not limited to MirageOS, other projects apply the same
|
|
||||||
concept in different programming languages. HalVM - the Haskell ligthweight
|
|
||||||
virtual machine - was developed by Galois Inc., and is based on Haskell. It is
|
|
||||||
used for network services such as honeypots and secure IPSec gateways.
|
|
||||||
|
|
||||||
IncludeOS is a C++ based unikernel which was initially developed at University
|
|
||||||
of Oslo, and now further developed in a startup.
|
|
||||||
|
|
||||||
Other unikernels are listed on
|
|
||||||
[Wikipedia](https://en.wikipedia.org/wiki/Unikernel) and there is an exchange of
|
|
||||||
ideas between different approaches. Among all unikernels, MirageOS has been
|
|
||||||
around the longest, has the most libraries available and deployed to production,
|
|
||||||
has an active developer community, and the safe programming language makes it
|
|
||||||
suitable for secure systems.
|
|
||||||
|
|
||||||
MirageOS has a small trusted code base compared to other operating systems.
|
|
||||||
Apart from the CPU (and its virtualisation extensions, VT-x, VT-d, EPT), and the
|
|
||||||
hypervisor implementation.Dieser satzkein verb On top of the hypervisor in the
|
|
||||||
host system a tiny virtual machine monitor (solo5) is executed. It does not rely
|
|
||||||
on qemu or other emulation code, but only contains drivers needed for the actual
|
|
||||||
unikernel (block and network devices). The unikernel itself consists of roughly
|
|
||||||
2000 lines of C code with basic functions such as malloc, memcopy, memcmp, on
|
|
||||||
which the vanilla OCaml runtime is executed. On top of that, only OCaml code is
|
|
||||||
executed, which includes an asynchronous task engine, the mentioned TCP/IP
|
|
||||||
stack, and the concrete services.
|
|
||||||
|
|
||||||
TODO: vllt bullet points rausnehmen, eher das formal verification argument detailliert erklaeren?
|
|
||||||
|
|
||||||
The security of MirageOS unikernels is planned to be improved even more in
|
|
||||||
several areas:
|
|
||||||
- data segments will be be mapped read/write, code segments execute-only
|
|
||||||
- private key material will be zeroed before destruction
|
|
||||||
- the address space layout will be randomised to make exploitation harder
|
|
||||||
- MirageOS will be ported to (se)L4 as hypervisor to minimize the trusted code
|
|
||||||
running on the host system
|
|
||||||
- once open hardware (RISC-V) is widely available, MirageOS will use this as
|
|
||||||
target. There is already a RISC-V backend for OCaml
|
|
||||||
- OCaml will be compilable to Coq (an interactive theorem prover) definitions,
|
|
||||||
within which theorems about the code can be proven
|
|
||||||
- Coq code will also be extractable to OCaml.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue