Output-sensitive Information flow analysis

Constant-time programming is a countermeasure to prevent cache based attacks where programs should not perform memory accesses that depend on secrets. In some cases this policy can be safely relaxed if one can prove that the program does not leak more information than the public outputs of the compu...

Full description

Bibliographic Details
Main Authors: Cristian Ene, Laurent Mounier, Marie-Laure Potet
Format: Article
Language:English
Published: Logical Methods in Computer Science e.V. 2021-02-01
Series:Logical Methods in Computer Science
Subjects:
Online Access:https://lmcs.episciences.org/5779/pdf
_version_ 1797268592492806144
author Cristian Ene
Laurent Mounier
Marie-Laure Potet
author_facet Cristian Ene
Laurent Mounier
Marie-Laure Potet
author_sort Cristian Ene
collection DOAJ
description Constant-time programming is a countermeasure to prevent cache based attacks where programs should not perform memory accesses that depend on secrets. In some cases this policy can be safely relaxed if one can prove that the program does not leak more information than the public outputs of the computation. We propose a novel approach for verifying constant-time programming based on a new information flow property, called output-sensitive noninterference. Noninterference states that a public observer cannot learn anything about the private data. Since real systems need to intentionally declassify some information, this property is too strong in practice. In order to take into account public outputs we proceed as follows: instead of using complex explicit declassification policies, we partition variables in three sets: input, output and leakage variables. Then, we propose a typing system to statically check that leakage variables do not leak more information about the secret inputs than the public normal output. The novelty of our approach is that we track the dependence of leakage variables with respect not only to the initial values of input variables (as in classical approaches for noninterference), but taking also into account the final values of output variables. We adapted this approach to LLVM IR and we developed a prototype to verify LLVM implementations.
first_indexed 2024-04-25T01:34:56Z
format Article
id doaj.art-d8bc2e39d78640979b9416c6cbfb4170
institution Directory Open Access Journal
issn 1860-5974
language English
last_indexed 2024-04-25T01:34:56Z
publishDate 2021-02-01
publisher Logical Methods in Computer Science e.V.
record_format Article
series Logical Methods in Computer Science
spelling doaj.art-d8bc2e39d78640979b9416c6cbfb41702024-03-08T10:33:16ZengLogical Methods in Computer Science e.V.Logical Methods in Computer Science1860-59742021-02-01Volume 17, Issue 110.23638/LMCS-17(1:15)20215779Output-sensitive Information flow analysisCristian Enehttps://orcid.org/0000-0002-1357-9504Laurent MounierMarie-Laure PotetConstant-time programming is a countermeasure to prevent cache based attacks where programs should not perform memory accesses that depend on secrets. In some cases this policy can be safely relaxed if one can prove that the program does not leak more information than the public outputs of the computation. We propose a novel approach for verifying constant-time programming based on a new information flow property, called output-sensitive noninterference. Noninterference states that a public observer cannot learn anything about the private data. Since real systems need to intentionally declassify some information, this property is too strong in practice. In order to take into account public outputs we proceed as follows: instead of using complex explicit declassification policies, we partition variables in three sets: input, output and leakage variables. Then, we propose a typing system to statically check that leakage variables do not leak more information about the secret inputs than the public normal output. The novelty of our approach is that we track the dependence of leakage variables with respect not only to the initial values of input variables (as in classical approaches for noninterference), but taking also into account the final values of output variables. We adapted this approach to LLVM IR and we developed a prototype to verify LLVM implementations.https://lmcs.episciences.org/5779/pdfcomputer science - cryptography and securitycomputer science - programming languages
spellingShingle Cristian Ene
Laurent Mounier
Marie-Laure Potet
Output-sensitive Information flow analysis
Logical Methods in Computer Science
computer science - cryptography and security
computer science - programming languages
title Output-sensitive Information flow analysis
title_full Output-sensitive Information flow analysis
title_fullStr Output-sensitive Information flow analysis
title_full_unstemmed Output-sensitive Information flow analysis
title_short Output-sensitive Information flow analysis
title_sort output sensitive information flow analysis
topic computer science - cryptography and security
computer science - programming languages
url https://lmcs.episciences.org/5779/pdf
work_keys_str_mv AT cristianene outputsensitiveinformationflowanalysis
AT laurentmounier outputsensitiveinformationflowanalysis
AT marielaurepotet outputsensitiveinformationflowanalysis