« Vous êtes passionné par le développement de logiciels sécurisés et performants au niveau des systèmes ? Nous développons et déployons des logiciels qui constituent la base de certains des services les plus importants d'Apple, notamment iCloud, Maps, iTunes, etc. Notre logiciel garantit que les services d'Apple sont fiables, évolutifs, rapides et sécurisés. Dans ce rôle, vous aurez une occasion unique de participer à la fourniture de certains des services cloud les plus importants au monde ».
- 3-5 ans d'expérience avec C.
- Expérience avec Rust souhaitable et un énorme plus
- Expérience de travail avec les réseaux de bas niveau.
- Expertise avec les systèmes d'exploitation de type Unix.
- Compétences de communication claires.
« Nous recherchons un ingénieur logiciel expérimenté avec une passion pour les réseaux informatiques et la sécurité. Faites partie d'une petite équipe hautement qualifiée de services d'infrastructure réseau chez Apple.
« L'équipe Apple Cloud Traffic fournit une couche réseau sécurisée pour étayer les applications destinées aux consommateurs. Basée sur une implémentation personnalisée d'IPsec, elle doit gérer le chiffrement de chaque paquet passant entre les serveurs au sein et entre les vastes centres de données, avec une surcharge minimale. Les protocoles RPC sécurisés personnalisés gèrent la saisie, l'authentification et l'autorisation de tous les flux de trafic.
« Les performances et la sécurité des systèmes que nous construisons sont essentielles. Nous nous connectons directement aux interfaces du noyau Linux de bas niveau, en utilisant des E / S asynchrones et des threads pour distribuer la charge de travail. Après une première incursion très réussie dans Rust, nous migrons une base de code établie de C vers Rust et créons de nouvelles fonctionnalités principalement dans Rust ».
Rust de plus en plus évoqué pour la programmation système
Le développement du système UNIX a débuté en 1969 et son code a fait l’objet de réécriture en langage C en 1972. En 1985, c’était la sortie de Windows 1.0. Même si le code source du système d’exploitation de la firme de Redmond est fermé, l’entreprise elle-même a indiqué que le noyau du système d’exploitation est principalement écrit en C. C’est pareil pour Linux dont la plus grosse part de la base de code est écrite en C. En matière de programmation système, le langage C peut désormais être considéré comme l’actuelle norme. « Le langage C est le nouvel assembleur », déclarait alors Josh Triplett d’Intel.
Le C s’est imposé aux travailleurs de la filière programmation système pour plusieurs raisons. À l'occasion de l'édition 2019 de l'Open Source Technology Summit, Josh Triplett est revenu sur certaines d'entre elles. Tout d'abord, en tant que langage évolué, le C permet aux développeurs de gagner en matière d’utilisabilité et de productivité ; c’est moins de lignes du code pour accomplir les mêmes tâches en comparaison à l’assembleur. C’est aussi un niveau de performance qui proche de celui de l’assembleur. Ensuite, le passage au C n’induit pas de pertes en termes de possibilités que l’assembleur offre.
Pourtant, lors de l'édition 2019 du Linux Security Summit, des chercheurs en sécurité ont mis le doigt sur l’une des plus grosses tares que le langage C traîne : les problèmes liés à la gestion de la mémoire – dépassements de mémoire tampon, allocations non libérées, accès à des zones mémoire invalides ou libérées, etc. D’après les chiffres du dictionnaire Common Vulnerabilities and Exposure (CVE), 15,9 % des 2288 vulnérabilités qui ont affecté le noyau Linux en 20 ans sont liées à des dépassements de mémoire tampon. Lors de sa sortie à l’Open Source Technology Summit, l’ingénieur d’Intel est revenu sur ce détail en ajoutant que « les développeurs ont besoin d’un langage évolué qui apporte réponse aux problèmes qui ne peuvent être résolus en C et qui introduit des fonctionnalités intéressantes. »
C'est dans ce contexte que Rust a été évoqué et l'ingénieur a estimé que « Rust est le futur de la programmation système et C le nouvel assembleur », prenant la peine d'expliquer en quoi.
La communauté Linux est elle-même lancée sur des réflexions en lien à la façon d’intégrer la prise en charge de Rust. « Nous devons adopter une approche de prise en charge identique à celle des compilateurs et procéder à la vérification de la disponibilité de divers drapeau de compilation à l’étape de configuration », a précisé Linus Torvalds. La sortie du créateur du célèbre noyau open source marque en principe son accord avec le principe de la prise en charge de plus en plus importante du langage Rust au sein de Linux.
De façon graduelle, Microsoft migre vers Rust au détriment du C/C++ que l’entreprise ne juge plus acceptable pour la mise sur pied d’applications dites système. Motif : Rust offre de meilleures garanties en matière de sécurisation des logiciels que le couple C/C++. Les initiatives allant dans le sens de faire un usage plus extensif du langage se multiplient donc chez l'éditeur. Cette année par exemple, Microsoft a annoncé l’arrivée d’un nouveau membre dans la famille des outils de projection de langage dont fait partie C++/WinRT : Rust/WinRT. C’est une projection du langage Rust entièrement standard pour les API Windows Runtime, implémentée comme une bibliothèque basée sur des fichiers d'en-tête, et conçue pour vous fournir un accès de première classe à l'API Windows moderne.
Windows Runtime (WinRT) est le Runtime de Windows. Il constitue la base des applications de la Plateforme universelle de Windows (UWP). Il se base sur les API COM (Component Object Model) sous le capot et il est conçu pour être accessible par des projections de langage. WinRT peut également être utilisé pour des choses comme les pilotes, ce qui se prête à un code natif très performant. Microsoft soutient principalement ce cas d'utilisation avec C++/WinRT. Mais depuis ce jeudi, Rust a rejoint C++ avec Rust/WinRT. Une bonne nouvelle pour les développeurs Rust.
En effet, ces projections de langage prennent les métadonnées décrivant les différentes API et fournissent des liaisons naturelles pour le langage de programmation cible. Comme vous pouvez l'imaginer, cela permet aux développeurs de créer plus facilement des applications et des composants pour Windows en utilisant le langage de leur choix. Vous pouvez alors utiliser ces API Windows pour créer des applications de bureau, des applications de stockage ou quelque chose de plus unique comme un composant, un service NT ou un pilote de périphérique.
Source : Apple
Et vous ?
Que pensez-vous de Rust ?
Est-il, selon vous, un bon candidat pour pallier les lacunes du C/C++ décriées par les chercheurs en sécurité ?
Voir aussi :
Le langage Rust est la meilleure chance offerte à l'industrie informatique pour la mise sur pied d'applications système sécurisées, d'après Microsoft
L'année 2020 est-elle celle de Rust au sein du noyau Linux ? C'est ce que suggère une sortie de Linus Torvalds qui donne des instructions sur l'introduction de son support au système de build
« Rust est le futur de la programmation système et C le nouvel assembleur », d'après un ingénieur d'Intel, qui explique pourquoi il est pertinent de passer à Rust