maraninx

Une petite expérience de vulgarisation sur le bug Meltdown

 Presentations  Comments Off on Une petite expérience de vulgarisation sur le bug Meltdown
Jan 052018
 

 

Une petite expérience de vulgarisation sur le bug Meltdown, d’après l’excellent résumé et le bout de code publiés là :
blog.cyberus-technology.de/posts/2018-01-03-meltdown.html.

Extrait de la page ci-dessus, pour les informaticiens :

; rcx = a protected kernel memory address
; rbx = address of a large array in user space
mov al, byte [rcx]                                 ; read from forbidden kernel address
shl rax, 0xc                                       ; multiply the result from the read  operation with 4096
mov rbx, qword [rbx + rax]                         ; touch the user space array at the offset that we just calculated

Pour les non informaticiens :

Imaginez que vous êtes dans un grand bâtiment, vous avez quelques pièces à vous, et quelqu’un de puissant occupe les autres pièces. Chaque pièce est remplie de grandes étagères, chaque étagère est remplie de cartons, qui contiennent chacun un petit bout de papier où est noté un numéro secret dans l’intervalle [0, 42]. Tous les cartons du bâtiment sont numérotés. Vous avez le droit de jouer avec les cartons qui sont dans vos pièces du bâtiment, de déplacer et regarder les petits bouts de papier, voire de les montrer à la fenêtre si ça vous amuse. Mais comme les étagères sont hautes, et que vous risquez de vous coincer les doigts en déplaçant les échelles, il y a un petit robot qui permet d’attraper les cartons et de déplacer leur contenu, il suffit de lui indiquer précisément ce que vous voulez faire, par exemple : recopier le bout de papier du carton X et le mettre dans le carton Y.

Vous jouez tranquillement avec vos cartons et vos petits bouts de papier, et puis un jour vous demandez au robot un numéro de carton qui n’est pas à vous. Comme il est parfaitement interdit que vous regardiez le contenu des cartons de l’autre occupant puissant du bâtiment, le petit robot qui vous apporte les cartons consulte toujours un gardien pour savoir si vous avez le droit de demander ce carton. Le gardien a une grande écritoire où sont notés les numéros des cartons et leur propriétaire. Il peut donc donner ou non l’autorisation. S’il dit non, le petit robot revient vous faire une remontée de bretelles. Mais il y a eu des compressions de personnel, et le gardien est très occupé. Pour ne pas tout ralentir, il s’est mis d’accord avec le robot : le robot commence le boulot sans savoir si vous avez le droit à ce carton ou pas, va chercher le carton de toute façon, et commence à faire ce que vous lui avez demandé avec son contenu. Pendant ce temps, et avant que vous puissiez faire quoi que soit d’autre, si jamais vous n’aviez pas le droit de regarder ce carton, le gardien a finalement eu le temps de consulter son écritoire, il prévient le robot, qui remet tout en place comme si de rien n’était… et vous fait une remontée de bretelles. Ça a l’air un peu bête (bien que “faire et défaire, c’est toujours travailler !”, comme disait ma grand-mère), mais la plupart du temps vous ne demandez que des cartons qui sont bien à vous, alors en général ça fait gagner du temps à tout le monde de commencer le boulot avant d’avoir l’autorisation.

Mais vous avez vraiment envie de connaître un des secrets de l’autre occupant puissant, et vous êtes très malin. Vous avez aussi un petit nombre de cartons tout neufs un peu difficiles à ouvrir, ils sont encore très raides. Dès qu’ils auront été ouverts une fois, vous savez que ce sera plus facile. Vous les numérotez avec un gros marqueur, de 0 à 42. Vous imaginez l’expérience suivante : considérons un carton de numéro X qui n’est pas à vous. Vous demandez au robot d’aller chercher le petit bout de papier de ce carton X, de regarder le numéro secret qui y est inscrit (disons Y), et de mettre un bout de papier quelconque dans le carton tout neuf numéroté Y. Comme vous n’avez pas le droit de demander le carton X, à la fin le gardien ne donne pas l’autorisation, le petit robot remet tout en ordre et vous avez droit à une remontée de bretelles. Tant pis pour vous, raté ! Sauf que maintenant vous allez demander au robot de vous rapporter le contenu de chaque carton neuf, et vous le chronométrez soigneusement. Il y a un carton, disons celui de numéro Y, qui sera plus facile à ouvrir que les autres, parce que le robot y aura déjà eu accès. Et donc le robot mettra moins de temps à rapporter ce contenu que pour les autres cartons. En regardant le numéro de ce carton (Y), vous aurez le secret qui était écrit sur le petit bout de papier du carton X qui n’était pas à vous ! Gagné !

Mise à jour pour continuer à filer la métaphore…

Quand je disais “vous” ci-dessus, c’était une manière d’incarner un logiciel de bas niveau, qui parle directement au matériel (le robot, le gardien…). Maintenant il faut imaginer que l’utilisateur le plus commun du grand-bâtiment-rempli-d’étagères-remplies-de-cartons-qui-contiennent-des-petits-papiers n’est pas du tout cet individu qui doit penser à tout et donner des ordres au robot.

Imaginons donc une autre personne A confortablement installée dans une de vos pièces, et qui vous donne des ordres plus abstraits. Par exemple : s’il vous plait, faites-moi la somme de tous les nombres écrits sur les papiers des cartons de l’étagère en haut à gauche. C’est à vous de donner tous les ordres de base nécessaires au robot (soit vous les inventez tout seul, soit vous les confiez à un autre bâtiment où les gens s’occupent de traduire ça en ordres de base, vous récupérez un bout de papier que vous exécutez fidèlement).

On peut même imaginer une autre personne, B, encore plus confortablement installée, et qui donne des ordres encore plus abstraits à A. Par exemple : apportez-moi le budget réalisé de cette année. A se débrouille pour traduire ça en calculs de sommes, et vous demande de faire ces sommes. Et ainsi de suite…

On peut aussi imaginer que le travail à réaliser arrive sous forme d’un livre que la personne Z se fait livrer. Z ouvre le livre, lit le contenu et donne des ordres à Y, qui donne des ordres à X, …., qui donne des ordres à A, qui vous en donne. Quand il récupère des résultats, il les envoie au livreur initial. Il faut être très très très malin pour arriver à provoquer l’expérience décrite plus haut, et à récupérer les résultats, grâce à un travail décrit dans un tel livre livré à Z qui ne se doute de rien. Mais il existe des gens comme ça.

On peut essayer de se protéger en demandant à Z de faire bien attention à ce qu’il lit et transmet à Y et indirectement à X, …, A, vous et le robot. On peut espérer qu’en faisant bien attention, il ne renverra jamais au livreur le fameux secret Y dont on parlait plus haut et qu’il ne devrait pas connaître. Mais tout le monde, de A jusqu’à Z, plus vous, a toujours considéré que le gardien ferait son boulot, tout au bout.  Pour le moment, on peut envisager de confisquer la montre de Z.

Oct 102016
 

The Open Workshop on Synchronous Languages and Systems

SYNCHRON, the International Open Workshop on Synchronous Programming, is devoted to all aspects of synchronous programming: languages, compiling techniques, formal methods, programming environments, execution platforms, semantics issues, code generation. This traditional workshop has become the annual rendez-vous hotpot of the synchronous community and a ’must’ event for anyone interested in keeping up with the latest developments, in front and behind the scenes, in academic and industrial synchronous research. The workshop is renowned for its informal and open character.

 

2017 Edition Rennes, France
2016 Edition  Bamberg, Germany
2015 Edition
Kiel, Germany
2014 Edition Aussois, France
2013 Edition back to Dagstuhl for the 20th anniversary!
2012 Edition Le Croisic, France
2011 Edition Paris, France
2010 Edition Fréjus, France
2009 Edition Dagstuhl, Germany
2008 Edition Aussois, France
2007 Edition Bamberg, Germany
2006 Edition L’alpe d’Huez, France
2005 Edition Qwara, Malta
2004 Edition Dagstuhl, Germany
2003 Edition Luminy, France
2002 Edition La Londe les Maures, France
2001 Edition Dagstuhl, Germany
2000 Edition St Nazaire, France
1999 Edition Hyères, France
1998 Edition Gandía, Spain
1997 Edition Roscoff, France
1996 Edition Dagstuhl, Germany
1995 Edition Luminy, France
1994 Edition Dagstuhl, Germany

Embedded Tutorial, EMSOFT’16

 Presentations, Research  Comments Off on Embedded Tutorial, EMSOFT’16
Oct 032016
 

 

Title: Energy consumption in embedded systems; abstractions for software models, programming languages and verification methods

Author: Florence Maraninchi

(thanks to: M. Moy, L. Mounier, L. Maillet-Contoz, D. Barthel, J.
Cornet, C. Helmstetter, T. Bouhadiba, N. Berthier, L. Samper, …)

Slides

Jul 012016
 

Some Recent Papers:

Real-time on-Board Manycore Implementation of a Health Monitoring System: Lessons Learnt
Moustapha Lo, Nicolas Valot, Florence Maraninchi, Pascal Raymond
9th European Congress — EMBEDDED REAL TIME SOFTWARE AND SYSTEMS (ERTS2’18)
Toulouse, France, January 2018
pdf available

Implementing a Real-Time Avionic Application on a Many-Core Processor
Moustapha Lo, Nicolas Valot, Florence Maraninchi, Pascal Raymond
42nd European Rotorcraft Forum (ERF’16)
pdf available

 

DATE’16: Efficient Monitoring of Loose-Ordering Properties for SystemC/TLM. 
Yuliia Romenska and Florence Maraninchi  — Full Text (HAL)

Control-oriented Models for a shared IoT Infrastructure in Smart Cities
Laurent Lemke, Florence Maraninchi, Didier Donsez, Gilles Privat

Modeling power consumption and temperature in TLM models
Matthieu Moy, Claude Helmstetter, Tayeb Bouhadiba, Florence Maraninchi
LITES – Leibniz Transactions on Embedded Systems, Vol 3, No 1 (2016)


Full List:

For a clean list, see the publication repository of Univ. Grenoble Alpes, or my Google scholar page.

I’ve just decided to delete my ResearchGate account. There might be dangling pointers here and there… will be corrected soon.

For full the text of my publications, just ask me.

Workshop: The Future of Nanosatellites

 Events, Presentations, Research  Comments Off on Workshop: The Future of Nanosatellites
Feb 022016
 

http://nanocsug2.sciencesconf.org/

 

Wednesday March 23, 9h30.
Resource-constrained real-time embedded software and systems
Florence Maraninchi

Abstract:

Embedded software and systems are already everywhere (in nuclear power plants, smart grids, pacemakers, cars, trains and subways, planes, rockets and satellites, etc.). Most of these contexts are said to be safety-critical: a failure can cause human injuries or death, or severe environment damage. Others might be “only” business-critical: a failure costs a lot of money. To guarantee a very low probability of failure, the most critical systems are based on costly hardware redundancy, dedicated software development methods, and costly validation methods.

Nanosatellites are not safety-critical, and probably not as business-critical as big commercial satellites. Moreover, they are highly resource-constrained (energy consumption, memory, computing power). These observations could lead to choose cheap solutions. However, given the development time and the cost of the launch procedure, failures should be avoided.

We advocate the idea that the development of embedded software and systems for nanosatellites should try and benefit from the accumulated experience on the development of more critical systems; a key problem is to understand which constraints can be relaxed, and which level of quality can be obtained at a reasonable cost.

Oct 022015
 

Argos is a  pure synchronous language inspired by Statecharts. It is a synchronous language in which basic programs are explicit Mealy machines, and the compositions operators are the parallel composition and the hierarchic composition. Automata in the Family of Synchronous Languages is a presentation that contains a good summary of Argos.

Students and Main Collaborations:

  • PhD Students: Muriel Vachon, Yann Rémond, Lionel Morel
  • Collaborations: Airbus, EsterelTechnologies, Schneider Electric, …

Main Publications:

External References to this Work:

Sep 302015
 

  • Amaury Graillat, Master II R, 2014-2015  (with Matthieu Moy)
  • Hanan Kanso, Master II R, 2013-2014 (with Matthieu Moy)
  • Abdelhaq Beladjine, master II R 2009-2010
  • Sofiane Kara Mostefa, master II R 2009-2010
  • Laurie Lugrin, Master II R, 2008-2009 (with Laurent Mounier)
  • Nicolas Berthier, Master II R, 2007-2008 (with Christophe Rippert)
  • Quentin Meunier, Master II R, 2006-2007 (with Karine Altisen)
  • Giovanni Funchal, Master IIR, 2006-2007 (with Matthieu Moy)
  • Tayeb Sofiane Bouhadiba, Master IIR, 2005-2006
  • Muhammad Muzammil Shahbaz, Master IIR, 2004-2005 (with Matthieu Moy)
  • David Stauch, Master IIR 2003-2004 (with Karine Altisen)
  • Jacques Ndjeng Ndjeng, DEA 2002-2003
  • Aurélie Clodic , DEA 2001-2002
  • Lionel Morel, DEA 2000-2001
  • Fabien Gaucher, DEA 1999-2000
  • Yann Rémond, DEA 1997-1998
  • Traian Popovici, Master Diploma, Rumania, 1995-1996
  • Muriel Vachon, DEA 1990-1991