From 931bda5ffbc6721423c524d845ecbc8e449e1ba5 Mon Sep 17 00:00:00 2001 From: Yuri Tatishchev Date: Thu, 12 Feb 2026 20:24:33 -0800 Subject: [PATCH] semantics-1: impl cleanup --- semantics-1/semantics-typst.pdf | Bin 86186 -> 34552 bytes semantics-1/semantics.typ | 154 +------------------------------- 2 files changed, 2 insertions(+), 152 deletions(-) diff --git a/semantics-1/semantics-typst.pdf b/semantics-1/semantics-typst.pdf index ba0ba42286e4d194243ad31fd13d870575968ef2..f65700e41ae6828bca3572d7e449eb2372c6b261 100644 GIT binary patch literal 34552 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 literal 86186 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 V5PWv`k8v;*xTQr - -@fig:lang shows the list of expressions, values, and security labels for the BoolInt\* language. -Expressions can be the value $#tr$, the value $#fl$, -integers $i$, -the conditional expression $#ife[$e$][$e$][$e$]$, -arithmetic operations $#suc[$e$]$ and $#prd[$e$]$, -and the security construct $#sec[$e$]$. -Note that conditional expressions have a recursive structure, -with 3 sub-expressions. - -After evaluating a program, we produce a _labeled value_ $#lval[$v$][$ell$]$, -where $v$ is the value and $ell$ is a security label -indicating whether the result is public ($#lL$) or private ($#lH$). -(In other languages, we might hit a bad situation and need to crash instead; -that won't happen in this language.) -The valid values for BoolInt\* are $#tr$, $#fl$, and $i$. - -We define a _join_ operation $#ljoin$ on security labels as follows: -$ #lL #ljoin #lL = #lL #h(3em) #lL #ljoin #lH = #lH #ljoin #lL = #lH #ljoin #lH = #lH $ -Intuitively, any interaction with a private value taints the result as private. - -With our expressions and values defined, -we can now specify the semantics for our language. -To do so, we will use the following big-step evaluation relation: - -$ #bstep[$e$][$#lval[$v$][$ell$]$] $ - -The above line should be read as -"the expression $e$ evaluates to the value $v$ with security label $ell$". // ----- Figure 2: big-step semantics ------------------------- @@ -171,7 +68,7 @@ The above line should be read as #v(0.6em) - #bsrule("B-Value", $emptyset$, $#bstep[$v$][$#lval[$v$][$#lL$]$]$) + #bsrule("B-Value", "", $#bstep[$v$][$#lval[$v$][$#lL$]$]$) #bsrule("B-Secret", $#bstep[$e$][$#lval[$v$][$ell$]$]$, $#bstep[#sec[$e$]][$#lval[$v$][$#lH$]$]$) @@ -193,50 +90,3 @@ The above line should be read as ], caption: [Big-step semantics for BoolInt\* with information flow], ) - -@fig:bigstep shows the big-step evaluation rules for the BoolInt\* language -with information flow tracking. - -The #rel("B-Value") rule applies when the expression (to the left of "$arrow.b.double$") -is also a value, as defined in @fig:lang. -There are no premises for this rule (above the line), -meaning that it is an _axiom_. -This rule states that a bare value evaluates to itself with a public label $#lL$, -so that #tr evaluates to $#lval[$#tr$][$#lL$]$ and $3$ evaluates to $#lval[$3$][$#lL$]$. - -The #rel("B-Secret") rule handles the #kw[secret] construct. -It evaluates the sub-expression $e$ and forces the security label to $#lH$, -regardless of the original label. -For example, $#sec[$3$]$ evaluates to $#lval[$3$][$#lH$]$. - -Two different rules are needed for handling conditional expressions. -Which rule applies depends on the premises. -Critically, both rules _join_ the condition's label $ell_1$ with the branch result's label. - -For the #rel("B-IfTrue") rule, -the premise states that $e_1$ evaluates to $#lval[$#tr$][$ell_1$]$ -and $e_2$ evaluates to $#lval[$v$][$ell_2$]$. -The result carries $ell_1 #ljoin ell_2$ as its label. -The structure of #rel("B-IfFalse") is similar. - -This join is essential for preventing _implicit flows_. -Consider the expression $#ife[#sec[$#tr$]][$1$][$0$]$. -Without the join, this would produce $#lval[$1$][$#lL$]$ — leaking which branch was taken -and thus revealing the secret condition. -With the join, the condition evaluates to $#lval[$#tr$][$#lH$]$, -so the result becomes $#lval[$1$][$#lH #ljoin #lL$] = #lval[$1$][$#lH$]$, -correctly tainting the output as private. - -We also have rules for handling the integer operations. -The #rel("B-Succ") rule states that if the operand $e$ evaluates to $#lval[$i$][$ell$]$, -then the expression $#suc[$e$]$ evaluates to $#lval[$i + 1$][$ell$]$. -This propagates the security label faithfully. -For example, $#suc[#sec[$3$]]$ evaluates to $#lval[$4$][$#lH$]$, -whereas $#suc[$3$]$ evaluates to $#lval[$4$][$#lL$]$. -Similarly, #rel("B-Pred") evaluates $#prd[$e$]$ to $#lval[$i - 1$][$ell$]$ if $e$ evaluates to $#lval[$i$][$ell$]$. - -In summary, under these semantics, there is no expression an attacker -can write that produces an $#lL$-labeled value -whose content depends on any $#lH$-labeled (secret) input. -The join in the conditional rules ensures that even _implicit_ information flows -through branch selection are tracked and labeled private.