Pick the primitive from the requirement, ten times
Task
Work ten stated requirements to a primitive using the three eliminating questions, then implement the two that differ most and show what each provides.
Steps
- Write
lab/primitive-choice.csvwith headerrequirement,recoverable,secret_holders,adversary,primitive,eliminated_by. - Cover ten requirements spanning recovery, scope reduction, accidental integrity, adversarial integrity between two parties, provable origin to a third party, password storage, key derivation, proof of existence at a time, and proving an attribute without the data.
- Fill
eliminated_bywith the question that removed the other options -- recoverability, number of secret holders, or the adversary. - Implement a MAC and a digital signature over the same data, and demonstrate that both detect a change.
- Then demonstrate the difference: show that with the MAC either party could have produced the value, and write in
lab/nonrepudiation.mdwhy that eliminates non-repudiation.
Verify
awk -F, 'NR>1 {n++} END {print n" requirement(s)"}' lab/primitive-choice.csv
awk -F, 'NR>1 {print $5}' lab/primitive-choice.csv | sort -u | wc -l
awk -F, 'NR>1 && $6=="" {n++} END {print n+0" with no eliminating question"}' lab/primitive-choice.csv
grep -Eci 'either party|shared|sole control' lab/nonrepudiation.md
Ten requirements, five or more DISTINCT primitives chosen, every row naming the eliminating question, and the note explaining sole control. 'Is the original recoverable' removes a large share of wrong answers on its own.
This is an independent study companion for CompTIA SecurityX CAS-005 and is not produced by or endorsed by CompTIA.