wD
heap_t due nowBTCinC final is out“Security” is incomplete as a concept.
Use threat modeling:
Read more: OWASP.org
| Informally | Formally |
|---|---|
| What? | Description of the subject to be modeled |
| For whom? | A way of validating the model and threats |
| From whom? | Potential threats to the system |
| Any limitations? | Assumptions that can be checked |
| How? | Actions that can be taken to mitigate each threat |
| Informally | Formally |
|---|---|
| What? | Currency |
| For whom? | An economy with internet access |
| From whom? | Fraud, central authority, surveillance |
| Any limitations? | Public ledger |
| How? | bchain.html |
We can instead proceed in four steps.
We give the adversary the power to mount a chosen message attack, namely the attacker can request the signature on any message of his choice. Even with such power, the adversary should not be able to create an existential forgery, namely the attacker cannot output a valid message-signature pair \((m, \omega)\) for some new message \(m\).
Attack Game 13.1 (Signature security). For a given signature scheme \(\mathcal{S} = (\mathcal{G}, \mathcal{S}, \mathcal{V})\), (generate, sign, verify) defined over \((\mathcal{M}, \Sigma)\), (messages, signatures), and a given adversary \(\mathcal{A}\), the attack game runs as follows:
Attack Game 13.1 (Signature security). For a given signature scheme \(\mathcal{S} = (\mathcal{G}, \mathcal{S}, \mathcal{V})\), (generate, sign, verify) defined over \((\mathcal{M}, \Sigma)\), (messages, signatures), and a given adversary \(\mathcal{A}\), the attack game runs as follows:
Attack Game 13.1 (Signature security). For a given signature scheme \(\mathcal{S} = (\mathcal{G}, \mathcal{S}, \mathcal{V})\), (generate, sign, verify) defined over \((\mathcal{M}, \Sigma)\), (messages, signatures), and a given adversary \(\mathcal{A}\), the attack game runs as follows:
Attack Game 13.1 (Signature security). For a given signature scheme \(\mathcal{S} = (\mathcal{G}, \mathcal{S}, \mathcal{V})\), (generate, sign, verify) defined over \((\mathcal{M}, \Sigma)\), (messages, signatures), and a given adversary \(\mathcal{A}\), the attack game runs as follows:
\[ \mathcal{V}(pk, m, \sigma) = \text{accept} \]
(G,C,2) to (G,C,3)G submits a second (G,G,2) next blockG loses their private key?A security policy could have the property of being secure if the threats of a threat model are mitigated
RGYRGYRGYNote
A trace property is a set of traces.
Properties provide a way to answer the “How?” after asking:
property[0] = ["GREEN_"]
property[1] = ["YELLOW"]
property[2] = ["RED___"]
property[3] = ["GREEN_", "YELLOW"]A Kripke Structure is a tuple {S, …} that models a state machine.
A Kripke Structure is a tuple {S, …} that models a state machine.
For a traffic light, S is: {"GREEN_", "YELLOW", "RED___"}
For a Bitcoin, it is perhaps the current owner.
A Kripke Structure is a tuple {S, I, …} that models a state machine.
A Kripke Structure is a tuple {S, I, …} that models a state machine.
For a traffic light, I = S {"GREEN_", "YELLOW", "RED___"}
For a Bitcoin, the initial state is Satoshi Nakamoto’s public key.
A Kripke Structure is a tuple {S, I, …} that models a state machine.
A Kripke Structure is a tuple {S, I, R, …} that models a state machine.
Note
A binary relation R ⊂ S × S is left-total if for all elements s of S there exists some ordered pair in R such that the first element of the ordered pair is s.
A Kripke Structure is a tuple {S, I, R, …} that models a state machine.
A Kripke Structure is a tuple {S, I, R, …} that models a state machine.
A Kripke Structure is a 4-tuple {S, I, R, L} that models a state machine.
A Kripke Structure is a 4-tuple {S, I, R, L} that models transitions between over atomic propositions AP.
true or false (2 options) for every given state.A Kripke Structure is a 4-tuple {S, I, R, L} that models transitions and AP.
A Kripke Structure is a 4-tuple {S, I, R, L} that models transitions and AP.
Now that I’ve rigorously defined Kripke Structures, I am willing to tell you they are just diagrams.
| R | G | Y | |
|---|---|---|---|
| R | x | ||
| G | x | ||
| Y | x |
R is accepted.RG is accepted.RY is a rejected.
R to Y
SYN and ACK have been received by both client and server.
LISTEN and then transitions to state SYN-RECEIVED.
Client.SYNClient.SYN x2Server.SYNServer.ACKClient.ACK
SYN initially.ACK until seeing SYNACK until seeing ACKACK
It often suffices to define two temporal operators:
Along with existing logical operators:
Apply these over atomic propositions in AP to describe security.
With logical negation (not) and disjunction (or) we can generate other logical connectives.
| \(p\) | \(q\) | \(\neg p\) | \(p \lor q\) | \(\neg p \lor \neg q\) | \(\neg p \lor \neg q \equiv p \land q\) |
|---|---|---|---|---|---|
| True | True | False | True | False | True |
| True | False | False | True | True | False |
| False | True | True | True | True | False |
| False | False | True | False | True | False |

| Name | Written: | Meaning | Equivalencies |
|---|---|---|---|
| neXt | X p | p holds in the next time | X p |
| Future | F p | p holds in some future time | True U p |
| Global(ly) | G p | p holds future times | ¬(True U ¬ p) |
| Name | Written: | Meaning | Equivalencies |
|---|---|---|---|
| Until | p U q | p holds unless q, q must hold eventually | p U q |
| Release | p R q | q holds up to and including when p holds | ¬(¬ p U ¬ q) |
| Name | Written: | Meaning | Equivalencies |
|---|---|---|---|
| Weak until | p W q | p holds up to when q holds | (p U q) ∨ G p |
| Mighty release | p M q | q holds up to and including when p holds, and p must hold eventually | q U (p ∨ q) |
States \[ q_n \]
Transitions \[ \overset{\{1\}}{\longrightarrow} \]
Start state \(q_1\)
Accept state \(q_3\)
States \[ q_n \]
Transitions \[ \overset{\{1\}}{\longrightarrow} \]
Start state \(q_1\)
Accept state \(q_3\)
0 out of \(q_1\).1 out of \(q_1\).1 out of \(q_2\).0 out of \(q_3\).1 out of \(q_3\).[0, 1, 1, 0, 1] by ending in \(q_3\)[0, 0, 1, 0, 1]?A finite automaton is formally defined as a 5-tuple:
| \(\delta=\) | \(0\) | \(1\) |
|---|---|---|
| \(q_1\)| | \(q_1\) | \(q_2\) |
| \(q_2\)| | \(q_1\) | \(q_3\) |
| \(q_3\)| | \(q_3\) | \(q_3\) |
We note that the empty string is not in any way related to the empty language
\[ \forall w_i \in \Sigma : \exists r_0r_1\ldots r_n : \]
\[ r_0 = q_0 \land \]
\[ r_n \in F \land \]
\[ \forall i : r_i = \delta(r_{i-1},w_i) \]
A formal characterization for safety prop- erties and liveness properties is given in terms of the structure of the Buchi automaton that specifies the property. The characterizations permit a prop- erty to be decomposed into a safety property and a liveness property whose conjunction is the original.
The closure of Büchi Automaton given by A ≔ {Q, Σ, δ, q0, F } is cl(A) ≔ {Q, Σ, δ, q0, Q }.
That is, cl(A) is equivalent to A if the set of accepting states F is expanded to include all of the states of A
That is, all circles are double circles.
red \(\implies \neg\) greengreen \(\lor\) \(\neg\) X redThe closure of Büchi Automaton given by A ≔ {Q, Σ, δ, q0, F } is cl(A) ≔ {Q, Σ, δ, q0, Q }.
That is, cl(A) is equivalent to A if the set of accepting states F is expanded to include all of the states of A
A liveness property is a property given by a Büchi Automaton A ≔ {Q, Σ, δ, q0, F } such that cl(A) ≔ {Q, Σ, δ, q0, Q } accepts all possible traces in Σω.
We recall set theoretic intersection… \[ \forall e : e \in A \lor e \in B \implies e \in A \cup B \]
What are these automata accepting again?
Note
A trace property is a set of traces.
Given a Buchi automaton
m, it is not difficult to construct Buchi automataSafe(m)andLive(m)such thatSafe(m)specifies a safety property,Live(m)specifies a liveness property, and the property specified bymis the intersection of those specified by Safe(m) and Live(m).
Consider the following Büchi automata over the alphabet of lower case letters:

{"a", "b", "aa", "ab", "ba", "bb", "aaa", "aab", ... }{"a", "aa", "ba", "ca", "da", "ea", "fa", "ga", ... }Safe(m) and Live(m)…
Safe(m)excludes the “bad thing” for a Buchi automaton, which is attempting an undefined transition, because if such a “bad thing” happens at any point in the trace, the Buchi automaton will not accept that trace.
A core “nicety” of Büchi Automata is that the safety property is the closure.
Safe(m) = cl(m)
Live(m)requires the “good thing” for a Buchi automaton, which is entering an accepting state infinitely often, because we require this “good thing” to happen for trace to be accepted.
“Consider the following Büchi automata over the alphabet of lower case letters”

{a, b, ?}, the alphabet or the possible states of the trace (NOT the states of the automata) that form the labels on arrows.Confidentiality refers to protecting information from unauthorized access.
Integrity means data are trustworthy, complete, and have not been accidentally altered or modified by an unauthorized user.
Availability means data are accessible when you need them.
Authenticity is the property that an entity is what it claims to be.
Non-repudiation is defined as the ability to prove the occurrence of a claimed event or action and its originating entities.