Ce rapport formalise mon stage ingénieur de fin d'étude, réalisé de février 2018
à août 2018. Il retrace une grande partie de mon travail au sein de l'entreprise
VideoLabs, sponsorisant le développement d'un lecteur multimédia libre et bien
connu: VLC.  Le sujet principal de ce rapport sera la transformation de VLC pour
introduire un modèle multi-processus à travers un fil rouge dédié au sandboxing.
Le sandboxing consiste à isoler les parties de l'application en limitant leurs
accès et permissions, et l'ajout de cette architecture multi-processus est
nécessaire pour en réaliser une implémentation satisfaisante.

En premier lieu, j'introduirai le fil principal de ce document, le sandboxing,
en soulignant des concepts, des exemples d'attaques et de raisons d'appliquer
ce type de mesure et en rajoutant un état de l'art du sandboxing dans les
applications d'aujourd'hui.

En second lieu, je ferai une présentation technique simple du fonctionnement
interne de VLC pour couvrir les besoins des autres parties tout en mentionnant
des points d'intérets pour l'implémentation de la sandbox.

En troisème partie, je mettrai en avant mes recherches et les mécanismes que
j'ai mis en place pour intégrer incrémentalement une architecture
multi-processus au sein de VLC. La finalité de l'intégration de cette
architecture est d'apporter du \og{}sandboxing\fg{} dans libvlc. Il s'agissait de la
mission centrale de mon stage donc une grande attention sera portée à détailler
le contexte, les problématiques à résoudre lors de son intégration, les
difficultés rencontrées et les points à améliorer, de façon à offrir une trace
réutilisable pour la compréhension du travail.

En quatrième partie, je détaillerai tout particulièrement l'implémentation Linux
et les solutions techniques pratiques liées aux points évoqués dans la partie
précédente. S'agissant du modèle de référence et s'appuyant sur les travaux du
précédent stagiaire Guillaume Fournier, la partie permettra de montrer
réellement l'architecture multi-processus fonctionnelle et en place.

En cinquième partie, j'ajouterai les missions supplémentaires auxquelles j'ai
participé en détaillant leurs spécificités. Trois gros projets indépendants se
détachent en particulier: l'écriture d'un encodeur matériel pour Android et la
finalisation d'un projet de cinéma virtuel ainsi que d'un client BitTorrent
pour VLC comprenant des travaux liés à ses dépendences. À cela s'ajoutent en
outre des résolutions de bogues et des rajouts de fonctionnalités.
