La vérification formelle des logiciels et des compilateurs a été utilisée pour exclure d'importantes
classes de problèmes critiques pour la sécurité, mais risque d'information involontaire
les fuites ont reçu beaucoup moins d’attention. Il s'agit d'une exigence essentielle pour
spécifications formelles pour laisser certains détails du comportement d'un système non spécifiés
afin que les futurs changements de mise en œuvre puissent être pris en compte, et pourtant c'est
on s'attend néanmoins à ce que ces choix ne soient pas faits sur la base de données confidentielles.
informations que le système gère. Cet article formalise cette notion en utilisant
omnisémantique et assertions simples en un seul exemplaire, donner pour la première fois un
spécification de ce que signifie pour un programme non déterministe d'être
temps constant ou plus généralement pour éviter les fuites (une partie de) ses entrées. Nous utilisons
cette théorie pour prouver l'exécution sans fuite de données des routines cryptographiques de base
compilé à partir du code machine Bedrock2 C vers RISC-V, montrant que la douceur
spécification et preuve L'omnisémantique de l'expérience permet le non-déterminisme
s'étend aux propriétés à temps constant dans le même paramètre. Nous étudions également des variantes
du contrat clé programme-compilateur, mettre en évidence les pièges de la tentation
simplifications et conséquences subtiles de la façon dont les entrées dans les systèmes non déterministes
les choix sont limités. Nos résultats sont soutenus par une logique de programme modulaire et
théorèmes d'exactitude du compilateur, et ils s'intègrent dans un système soigné de bout en bout
théorème dans l'assistant de preuve Coq.
Cet article explore les excursions dans le temps et leurs implications.
Télécharger PDF:



