Pick the primitive from the requirement, ten times

short · 45 min · Objective 3.5

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

  1. Write lab/primitive-choice.csv with header requirement,recoverable,secret_holders,adversary,primitive,eliminated_by.
  2. 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.
  3. Fill eliminated_by with the question that removed the other options -- recoverability, number of secret holders, or the adversary.
  4. Implement a MAC and a digital signature over the same data, and demonstrate that both detect a change.
  5. Then demonstrate the difference: show that with the MAC either party could have produced the value, and write in lab/nonrepudiation.md why 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.