fbpx
Wikipedia

Information flow (information theory)

Information flow in an information theoretical context is the transfer of information from a variable to a variable in a given process. Not all flows may be desirable; for example, a system should not leak any confidential information (partially or not) to public observers—as it is a violation of privacy on an individual level, or might cause major loss on a corporate level.

Introduction edit

Securing the data manipulated by computing systems has been a challenge in the past years. Several methods to limit the information disclosure exist today, such as access control lists, firewalls, and cryptography. However, although these methods do impose limits on the information that is released by a system, they provide no guarantees about information propagation.[1] For example, access control lists of file systems prevent unauthorized file access, but they do not control how the data is used afterwards. Similarly, cryptography provides a means to exchange information privately across a non-secure channel, but no guarantees about the confidentiality of the data are given once it is decrypted.

In low level information flow analysis, each variable is usually assigned a security level. The basic model comprises two distinct levels: low and high, meaning, respectively, publicly observable information, and secret information. To ensure confidentiality, flowing information from high to low variables should not be allowed. On the other hand, to ensure integrity, flows to high variables should be restricted.[1]

More generally, the security levels can be viewed as a lattice with information flowing only upwards in the lattice.[2]

For example, considering two security levels   and   (low and high), if  , flows from   to  , from   to  , and   to   would be allowed, while flows from   to   would not.[3]

Throughout this article, the following notation is used:

  • variable   (low) shall denote a publicly observable variable
  • variable   (high) shall denote a secret variable

Where   and   are the only two security levels in the lattice being considered.

Explicit flows and side channels edit

Information flows can be divided in two major categories. The simplest one is explicit flow, where some secret is explicitly leaked to a publicly observable variable. In the following example, the secret in the variable h flows into the publicly observable variable l.

var l, h l := h 

The other flows fall into the side channel category. For example, in the timing attack or in the power analysis attack, the system leaks information through, respectively, the time or power it takes to perform an action depending on a secret value.

In the following example, the attacker can deduce if the value of h is one or not by the time the program takes to finish:

var l, h if h = 1 then (* do some time-consuming work *) l := 0 

Another side channel flow is the implicit information flow, which consists in leakage of information through the program control flow. The following program (implicitly) discloses the value of the secret variable h to the variable l. In this case, since the h variable is boolean, all the bits of the variable of h is disclosed (at the end of the program, l will be 3 if h is true, and 42 otherwise).

var l, h if h = true then l := 3 else l := 42 

Non-interference edit

Non-interference is a policy that enforces that an attacker should not be able to distinguish two computations from their outputs if they only vary in their secret inputs. However, this policy is too strict to be usable in realistic programs.[4] The classic example is a password checker program that, in order to be useful, needs to disclose some secret information: whether the input password is correct or not (note that the information that an attacker learns in case the program rejects the password is that the attempted password is not the valid one).

Information flow control edit

A mechanism for information flow control is one that enforces information flow policies. Several methods to enforce information flow policies have been proposed. Run-time mechanisms that tag data with information flow labels have been employed at the operating system level and at the programming language level. Static program analyses have also been developed that ensure information flows within programs are in accordance with policies.

Both static and dynamic analysis for current programming languages have been developed. However, dynamic analysis techniques cannot observe all execution paths, and therefore cannot be both sound and precise. In order to guarantee noninterference, they either terminate executions that might release sensitive information[5] or they ignore updates that might leak information.[6]

A prominent way to enforce information flow policies in a program is through a security type system: that is, a type system that enforces security properties. In such a sound type system, if a program type-checks, it meets the flow policy and therefore contains no improper information flows.

Security type system edit

In a programming language augmented with a security type system every expression carries both a type (such as boolean, or integer) and a security label.

Following is a simple security type system from [1] that enforces non-interference. The notation   means that the expression   has type  . Similarly,   means that the command   is typable in the security context  .

 

 

 

 

Well-typed commands include, for example,

 .

Conversely, the program

 

is ill-typed, as it will disclose the value of variable   into  .

Note that the rule   is a subsumption rule, which means that any command that is of security type   can also be  . For example,   can be both   and  . This is called polymorphism in type theory. Similarly, the type of an expression   that satisfies   can be both   and   according to   and   respectively.

Declassification edit

As shown previously, non-interference policy is too strict for use in most real-world applications.[7] Therefore, several approaches to allow controlled releases of information have been devised. Such approaches are called information declassification.

Robust declassification requires that an active attacker may not manipulate the system in order to learn more secrets than what passive attackers already know.[4]

Information declassification constructs can be classified in four orthogonal dimensions: what information is released, who is authorized to access the information, where the information is released, and when the information is released.[4]

What edit

A what declassification policy controls which information (partial or not) may be released to a publicly observable variable.

The following code example shows a declassify construct from.[8] In this code, the value of the variable h is explicitly allowed by the programmer to flow into the publicly observable variable l.

var l, h if l = 1 then l := declassify(h) 

Who edit

A who declassification policy controls which principals (i.e., who) can access a given piece of information. This kind of policy has been implemented in the Jif compiler.[9]

The following example allows Bob to share its secret contained in the variable b with Alice through the commonly accessible variable ab.

var ab   (* {Alice, Bob} *) var b   (* {Bob} *) if ab = 1 then ab := declassify(b, {Alice, Bob}) (* {Alice, Bob} *) 

Where edit

A where declassification policy regulates where the information can be released, for example, by controlling in which lines of the source code information can be released.

The following example makes use of the flow construct proposed in.[10] This construct takes a flow policy (in this case, variables in H are allowed to flow to variables in L) and a command, which is run under the given flow policy.

var l, h flow H   L in l := h 

When edit

A when declassification policy regulates when the information can be released. Policies of this kind can be used to verify programs that implement, for example, controlled release of secret information after payment, or encrypted secrets which should not be released in a certain time given polynomial computational power.

Declassification approaches for implicit flows edit

An implicit flow occurs when code whose conditional execution is based on private information updates a public variable. This is especially problematic when multiple executions are considered since an attacker could leverage the public variable to infer private information by observing how its value changes over time or with the input.

The naïve approach edit

The naïve approach consists on enforcing the confidentiality property on all variables whose value is affected by other variables. This method leads to partially leaked information due to on some instances of the application a variable is Low and in others High.[clarify]

No sensitive upgrade edit

"No sensitive upgrade" halts the program whenever a High variable affects the value of a Low variable. Since it simply looks for expressions where an information leakage might happen, without looking at the context, it may halt a program that, despite having potential information leakage, never actually leaks information.

In the following example x is High and y is Low.

var x, y y := false if x = true then y := true return true 

In this case the program would be halted since—syntactically speaking—it uses the value of a High variable to change a Low variable, despite the program never leaking information.

Permissive upgrade edit

Permissive-upgrade introduces an extra security class P which will identify information leaking variables. When a High variable affects the value of a Low variable, the latter is labeled P. If a P labeled variable affects a Low variable the program would be halted. To prevent the halting the Low and P variables should be converted to High using a privatization function to ensure no information leakage can occur. On subsequent instances the program will run without interruption.

Privatization inference edit

Privatization inference extends permissive upgrade to automatically apply the privatization function to any variable that might leak information. This method should be used during testing where it will convert most variables. Once the program moves into production the permissive-upgrade should be used to halt the program in case of an information leakage and the privatization functions can be updated to prevent subsequent leaks.

Application in computer systems edit

Beyond applications to programming language, information flow control theories have been applied to operating systems,[11] distributed systems,[12] and cloud computing.[13][14]

References edit

  1. ^ a b c Andrei Sabelfeld and Andrew C. Myers. Language-Based Information-Flow Security. IEEE Journal on Selected Areas in Communications, 21(1), Jan. 2003.
  2. ^ Dorothy Denning. A lattice model of secure information flow. Communications of the ACM, 19(5):236-242, 1976.
  3. ^ Smith, Geoffrey (2007). "Principles of Secure Information Flow Analysis". Advances in Information Security. Vol. 27. Springer US. pp. 291–307.
  4. ^ a b c Andrei Sabelfeld and David Sands. Dimensions and Principles of Declassification. In Proc. of the IEEE Computer Security Foundations Workshop, 2005.
  5. ^ Thomas H. Austin and Cormac Flanagan. Efficient purely-dynamic information flow analysis, Proc. of the ACM SIGPLAN Fourth Workshop on Programming Languages and Analysis for Security, ACM, 2009.
  6. ^ J. S. Fenton. Memoryless Subsystems, Comput. J. 17(2): 143-147 (1974)
  7. ^ S. Zdancewic. Challenges for information-flow security. In Workshop on the Programming Language Interference and Dependence (PLID’04) 2004.
  8. ^ A. Sabelfeld and A. C. Myers. A model for delimited information release. In Proc. of International Symposium on Software Security (ISSS) 2003.
  9. ^ Jif: Java information flow
  10. ^ A. Almeida Matos and G. Boudol. On declassification and the non-disclosure policy. In Proc. IEEE Computer Security Foundations Workshop 2005.
  11. ^ M. Krohn, A. Yip, M. Brodsky, N. Cliffer, M. Kaashoek, E. Kohler and R. Morris. Information flow control for standard OS abstractions. In ACM Special Interest Group on Operating Systems (SIGOPS) Symposium on Operating systems principles 2007.
  12. ^ N. Zeldovich, S. Boyd-Wickizer and D. Mazieres. Securing Distributed Systems with Information Flow Control. In USENIX Symposium on Networked Systems Design and Implementation 2008.
  13. ^ J. Bacon, D. Eyers, T. Pasquier, J. Singh, I. Papagiannis and P. Pietzuch. Information Flow Control for secure cloud computing. In IEEE Transactions on Network and Service Management 2014.
  14. ^ Pasquier, Thomas; Singh, Jatinder; Eyers, David; Bacon, Jean (2015). "CamFlow: Managed Data-sharing for Cloud Services". IEEE Transactions on Cloud Computing. 5 (3): 472–484. arXiv:1506.04391. Bibcode:2015arXiv150604391P. doi:10.1109/TCC.2015.2489211. S2CID 11537746.

information, flow, information, theory, this, article, lead, section, short, adequately, summarize, points, please, consider, expanding, lead, provide, accessible, overview, important, aspects, article, february, 2018, information, flow, information, theoretic. This article s lead section may be too short to adequately summarize the key points Please consider expanding the lead to provide an accessible overview of all important aspects of the article February 2018 Information flow in an information theoretical context is the transfer of information from a variable x displaystyle x to a variable y displaystyle y in a given process Not all flows may be desirable for example a system should not leak any confidential information partially or not to public observers as it is a violation of privacy on an individual level or might cause major loss on a corporate level Contents 1 Introduction 2 Explicit flows and side channels 3 Non interference 4 Information flow control 4 1 Security type system 5 Declassification 5 1 What 5 2 Who 5 3 Where 5 4 When 5 5 Declassification approaches for implicit flows 5 5 1 The naive approach 5 5 2 No sensitive upgrade 5 5 3 Permissive upgrade 5 5 4 Privatization inference 6 Application in computer systems 7 ReferencesIntroduction editSecuring the data manipulated by computing systems has been a challenge in the past years Several methods to limit the information disclosure exist today such as access control lists firewalls and cryptography However although these methods do impose limits on the information that is released by a system they provide no guarantees about information propagation 1 For example access control lists of file systems prevent unauthorized file access but they do not control how the data is used afterwards Similarly cryptography provides a means to exchange information privately across a non secure channel but no guarantees about the confidentiality of the data are given once it is decrypted In low level information flow analysis each variable is usually assigned a security level The basic model comprises two distinct levels low and high meaning respectively publicly observable information and secret information To ensure confidentiality flowing information from high to low variables should not be allowed On the other hand to ensure integrity flows to high variables should be restricted 1 More generally the security levels can be viewed as a lattice with information flowing only upwards in the lattice 2 For example considering two security levels L displaystyle L nbsp and H displaystyle H nbsp low and high if L H displaystyle L leq H nbsp flows from L displaystyle L nbsp to L displaystyle L nbsp from H displaystyle H nbsp to H displaystyle H nbsp and L displaystyle L nbsp to H displaystyle H nbsp would be allowed while flows from H displaystyle H nbsp to L displaystyle L nbsp would not 3 Throughout this article the following notation is used variable l L displaystyle l in L nbsp low shall denote a publicly observable variable variable h H displaystyle h in H nbsp high shall denote a secret variable Where L displaystyle L nbsp and H displaystyle H nbsp are the only two security levels in the lattice being considered Explicit flows and side channels editInformation flows can be divided in two major categories The simplest one is explicit flow where some secret is explicitly leaked to a publicly observable variable In the following example the secret in the variable h flows into the publicly observable variable l var l h l h The other flows fall into the side channel category For example in the timing attack or in the power analysis attack the system leaks information through respectively the time or power it takes to perform an action depending on a secret value In the following example the attacker can deduce if the value of h is one or not by the time the program takes to finish var l h if h 1 then do some time consuming work l 0 Another side channel flow is the implicit information flow which consists in leakage of information through the program control flow The following program implicitly discloses the value of the secret variable h to the variable l In this case since the h variable is boolean all the bits of the variable of h is disclosed at the end of the program l will be 3 if h is true and 42 otherwise var l h if h true then l 3 else l 42Non interference editMain article Non interference security Non interference is a policy that enforces that an attacker should not be able to distinguish two computations from their outputs if they only vary in their secret inputs However this policy is too strict to be usable in realistic programs 4 The classic example is a password checker program that in order to be useful needs to disclose some secret information whether the input password is correct or not note that the information that an attacker learns in case the program rejects the password is that the attempted password is not the valid one Information flow control editA mechanism for information flow control is one that enforces information flow policies Several methods to enforce information flow policies have been proposed Run time mechanisms that tag data with information flow labels have been employed at the operating system level and at the programming language level Static program analyses have also been developed that ensure information flows within programs are in accordance with policies Both static and dynamic analysis for current programming languages have been developed However dynamic analysis techniques cannot observe all execution paths and therefore cannot be both sound and precise In order to guarantee noninterference they either terminate executions that might release sensitive information 5 or they ignore updates that might leak information 6 A prominent way to enforce information flow policies in a program is through a security type system that is a type system that enforces security properties In such a sound type system if a program type checks it meets the flow policy and therefore contains no improper information flows Security type system edit In a programming language augmented with a security type system every expression carries both a type such as boolean or integer and a security label Following is a simple security type system from 1 that enforces non interference The notation e x p t displaystyle vdash exp tau nbsp means that the expression e x p displaystyle exp nbsp has type t displaystyle tau nbsp Similarly s c C displaystyle sc vdash C nbsp means that the command C displaystyle C nbsp is typable in the security context s c displaystyle sc nbsp E 1 2 e x p h i g h h V a r s e x p e x p l o w displaystyle E1 2 quad vdash exp high qquad frac h notin Vars exp vdash exp low nbsp C 1 3 s c skip s c h e x p e x p l o w l o w l e x p displaystyle C1 3 quad sc vdash textbf skip qquad sc vdash h exp qquad frac vdash exp low low vdash l exp nbsp C 4 5 s c C 1 s c C 2 s c C 1 C 2 e x p s c s c C s c while e x p do C displaystyle C4 5 quad frac sc vdash C 1 quad sc vdash C 2 sc vdash C 1 C 2 qquad frac vdash exp sc quad sc vdash C sc vdash textbf while exp textbf do C nbsp C 6 7 e x p s c s c C 1 s c C 2 s c if e x p then C 1 else C 2 h i g h C l o w C displaystyle C6 7 quad frac vdash exp sc quad sc vdash C 1 quad sc vdash C 2 sc vdash textbf if exp textbf then C 1 textbf else C 2 qquad frac high vdash C low vdash C nbsp Well typed commands include for example l o w if l 42 then h 3 else l 0 displaystyle low vdash textbf if l 42 textbf then h 3 textbf else l 0 nbsp Conversely the program l 0 while l lt h do l l 1 displaystyle l 0 textbf while l lt h textbf do l l 1 nbsp is ill typed as it will disclose the value of variable h displaystyle h nbsp into l displaystyle l nbsp Note that the rule C 7 displaystyle C7 nbsp is a subsumption rule which means that any command that is of security type h i g h displaystyle high nbsp can also be l o w displaystyle low nbsp For example h 1 displaystyle h 1 nbsp can be both h i g h displaystyle high nbsp and l o w displaystyle low nbsp This is called polymorphism in type theory Similarly the type of an expression e x p displaystyle exp nbsp that satisfies h V a r s e x p displaystyle h notin Vars exp nbsp can be both h i g h displaystyle high nbsp and l o w displaystyle low nbsp according to E 1 displaystyle E1 nbsp and E 2 displaystyle E2 nbsp respectively Declassification editAs shown previously non interference policy is too strict for use in most real world applications 7 Therefore several approaches to allow controlled releases of information have been devised Such approaches are called information declassification Robust declassification requires that an active attacker may not manipulate the system in order to learn more secrets than what passive attackers already know 4 Information declassification constructs can be classified in four orthogonal dimensions what information is released who is authorized to access the information where the information is released and when the information is released 4 What edit A what declassification policy controls which information partial or not may be released to a publicly observable variable The following code example shows a declassify construct from 8 In this code the value of the variable h is explicitly allowed by the programmer to flow into the publicly observable variable l var l h if l 1 then l declassify h Who edit A who declassification policy controls which principals i e who can access a given piece of information This kind of policy has been implemented in the Jif compiler 9 The following example allows Bob to share its secret contained in the variable b with Alice through the commonly accessible variable ab var ab Alice Bob var b Bob if ab 1 then ab declassify b Alice Bob Alice Bob Where edit A where declassification policy regulates where the information can be released for example by controlling in which lines of the source code information can be released The following example makes use of the flow construct proposed in 10 This construct takes a flow policy in this case variables in H are allowed to flow to variables in L and a command which is run under the given flow policy var l h flow H displaystyle prec nbsp L in l h When edit A when declassification policy regulates when the information can be released Policies of this kind can be used to verify programs that implement for example controlled release of secret information after payment or encrypted secrets which should not be released in a certain time given polynomial computational power Declassification approaches for implicit flows edit An implicit flow occurs when code whose conditional execution is based on private information updates a public variable This is especially problematic when multiple executions are considered since an attacker could leverage the public variable to infer private information by observing how its value changes over time or with the input The naive approach edit The naive approach consists on enforcing the confidentiality property on all variables whose value is affected by other variables This method leads to partially leaked information due to on some instances of the application a variable is Low and in others High clarify No sensitive upgrade edit No sensitive upgrade halts the program whenever a High variable affects the value of a Low variable Since it simply looks for expressions where an information leakage might happen without looking at the context it may halt a program that despite having potential information leakage never actually leaks information In the following example x is High and y is Low var x y y false if x true then y true return true In this case the program would be halted since syntactically speaking it uses the value of a High variable to change a Low variable despite the program never leaking information Permissive upgrade edit Permissive upgrade introduces an extra security class P which will identify information leaking variables When a High variable affects the value of a Low variable the latter is labeled P If a P labeled variable affects a Low variable the program would be halted To prevent the halting the Low and P variables should be converted to High using a privatization function to ensure no information leakage can occur On subsequent instances the program will run without interruption Privatization inference edit Privatization inference extends permissive upgrade to automatically apply the privatization function to any variable that might leak information This method should be used during testing where it will convert most variables Once the program moves into production the permissive upgrade should be used to halt the program in case of an information leakage and the privatization functions can be updated to prevent subsequent leaks Application in computer systems editBeyond applications to programming language information flow control theories have been applied to operating systems 11 distributed systems 12 and cloud computing 13 14 References edit a b c Andrei Sabelfeld and Andrew C Myers Language Based Information Flow Security IEEE Journal on Selected Areas in Communications 21 1 Jan 2003 Dorothy Denning A lattice model of secure information flow Communications of the ACM 19 5 236 242 1976 Smith Geoffrey 2007 Principles of Secure Information Flow Analysis Advances in Information Security Vol 27 Springer US pp 291 307 a b c Andrei Sabelfeld and David Sands Dimensions and Principles of Declassification In Proc of the IEEE Computer Security Foundations Workshop 2005 Thomas H Austin and Cormac Flanagan Efficient purely dynamic information flow analysis Proc of the ACM SIGPLAN Fourth Workshop on Programming Languages and Analysis for Security ACM 2009 J S Fenton Memoryless Subsystems Comput J 17 2 143 147 1974 S Zdancewic Challenges for information flow security In Workshop on the Programming Language Interference and Dependence PLID 04 2004 A Sabelfeld and A C Myers A model for delimited information release In Proc of International Symposium on Software Security ISSS 2003 Jif Java information flow A Almeida Matos and G Boudol On declassification and the non disclosure policy In Proc IEEE Computer Security Foundations Workshop 2005 M Krohn A Yip M Brodsky N Cliffer M Kaashoek E Kohler and R Morris Information flow control for standard OS abstractions In ACM Special Interest Group on Operating Systems SIGOPS Symposium on Operating systems principles 2007 N Zeldovich S Boyd Wickizer and D Mazieres Securing Distributed Systems with Information Flow Control In USENIX Symposium on Networked Systems Design and Implementation 2008 J Bacon D Eyers T Pasquier J Singh I Papagiannis and P Pietzuch Information Flow Control for secure cloud computing In IEEE Transactions on Network and Service Management 2014 Pasquier Thomas Singh Jatinder Eyers David Bacon Jean 2015 CamFlow Managed Data sharing for Cloud Services IEEE Transactions on Cloud Computing 5 3 472 484 arXiv 1506 04391 Bibcode 2015arXiv150604391P doi 10 1109 TCC 2015 2489211 S2CID 11537746 Retrieved from https en wikipedia org w index php title Information flow information theory amp oldid 1219689014, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.