Markdown Editor

Privacy Threat Model Template (LINDDUN)

Privacy threat model by LINDDUN category: DFD with trust boundaries, data inventory, elicitation matrix, register, PETs, DPIA link

Phần mềm & Kỹ thuậtĐầy đủLINDDUN (threat categories)privacythreatmodelmath
Mở trong editorTải .md

Cách dùng: Use at design time for any feature that handles personal data, alongside the security threat model. Draw the data flow diagram and fill the personal data inventory before eliciting threats per element and category. The main pitfall is rating impact on the company instead of on the data subject.

Xem trước

Privacy Threat Model: [System or feature name]

Privacy threat model for a system, service or feature, organised around the seven LINDDUN privacy threat categories (Linking, Identifying, Non-repudiation, Detecting, Data disclosure, Unawareness and unintervenability, Non-compliance) as published on linddun.org by the DistriNet research group at KU Leuven (category names checked in October 2026). It records the system description, a data flow diagram with trust boundaries, a personal data inventory, threat elicitation per category and diagram element, a threat register with severity, privacy-enhancing mitigations, residual risk and the link to the data protection impact assessment (DPIA). This is an engineering format, not legal advice. Replace every [bracketed] value and every row marked Example.

Document control

FieldValue
Document ID[PTM-FITTRACK-001]
System / feature[FitTrack mobile app: workout sharing and coach matching]
System version modelled[Design doc v2.1, release 4.0]
Version[0.1]
Status[Draft / In review / Approved]
Owner[@privacy-engineer]
Contributors[@tech-lead], [@product-manager], [@data-protection-officer]
Related DPIA[DPIA-2026-014]
Related security threat model[TM-FITTRACK-003 (STRIDE)]
Last updatedYYYY-MM-DD
Classification[Internal / Confidential]

Approvals

RoleNameDecisionDate
Privacy engineering lead[@name][Approved / Changes requested]YYYY-MM-DD
Engineering owner[@name][Accepted mitigations]YYYY-MM-DD
Data protection officer[@name][Reviewed for DPIA input]YYYY-MM-DD
Product owner[@name][Accepted residual risk]YYYY-MM-DD

Revision history

VersionDateAuthorChange
0.1YYYY-MM-DD[@name]System description, DFD and data inventory
0.2YYYY-MM-DD[@name]Example: Elicitation workshop, 14 threats recorded
1.0YYYY-MM-DD[@name]Example: Approved; residual risks handed to DPIA-2026-014

Contents

1. Introduction and scope

This section states what the model covers and which processing purposes it assumes.

1.1 Purpose of the model

This model identifies privacy threats to the people whose data [System name] processes, rates them, and agrees mitigations before [release 4.0 / the change]. It complements the security threat model, which focuses on attackers against the system; here the concern also includes the operator, legitimate recipients and the system's own design.

1.2 Scope

In scopeOut of scope
Example: Mobile app, workout API, coach-matching service, analytics pipelineExample: Payment provider (separate assessment), corporate HR systems
Example: Data shared with coaches and with the analytics vendorExample: Marketing website cookies (covered by consent review)
[Component][Component]

1.3 Processing purposes

IDPurposeLawful basis (as recorded by legal)Data subjects
P-1Example: Record and display the user's own workoutsContractApp users
P-2Example: Match users with coaches by goal and locationConsentApp users, coaches
P-3Example: Product analytics on feature usageLegitimate interest, with opt-outApp users
[P-n][Purpose][Basis][Subjects]

2. System description

[System name] lets users log workouts from their phone and wearable, share selected workouts with friends, and request a personal coach who sees their training history.

2.1 Actors

ActorRelationshipData they can see
App userData subjectOwn data; friends' shared workouts
FriendData subject and recipientWorkouts shared with them
CoachRecipient (independent professional)Training history of matched users
Support agentOperator staffAccount data on ticket, with justification
Analytics vendorProcessorPseudonymous usage events
[Actor][Relationship][Data]

2.2 Main user journeys

  1. Example: User records a run; GPS track and heart rate sync to the workout API.
  2. Example: User shares a run with friends; friends see route map and pace.
  3. Example: User requests a coach; matching service uses goal, age band and city.
  4. [Journey]

2.3 Assumptions

  • Example: Transport is TLS 1.2+ and storage is encrypted at rest (covered by the security threat model).
  • Example: Coaches are contractually bound but not employees.
  • [Assumption]

3. Data flow diagram

The diagram shows external entities (E), processes (P), data stores (DS) and numbered data flows (F). Grouped zones are trust boundaries.

ElementTypeDescriptionPersonal data handled
E1External entityApp userAll own data
P1ProcessMobile appGPS, heart rate, device ID
P2ProcessWorkout APIWorkouts, account ID
P3ProcessCoach matchingGoal, age band, city
DS1Data storeWorkout storeGPS tracks, heart rate
DS2Data storeProfile storeName, email, date of birth, city
E2External entityCoachTraining history of matched users
E3External entityAnalytics vendorPseudonymous events, device model
F1 to F7Data flowsSee diagramAs labelled

4. Personal data inventory

IDData categoryExample fieldsSensitivitySourcePurposesStored inRecipientsRetention
D-01IdentityName, emailPersonalUserP-1, P-2DS2Coach (name only)Account life + 30 days
D-02Location tracesGPS track points every 2 sHigh: reveals home and routineDeviceP-1DS1Friends (if shared)Example: 24 months
D-03Health dataHeart rate, resting HRSpecial category (health)WearableP-1, P-2DS1Coach24 months
D-04Device identifiersInstall ID, device modelPersonal (pseudonymous)DeviceP-3E3Analytics vendor13 months
D-05Profile attributesDate of birth, city, goalPersonalUserP-2DS2Matching serviceAccount life
[D-nn][Category][Fields][Level][Source][P-n][Store][Recipients][Period]

5. Threat elicitation

Threats were elicited in [two 90-minute workshops on YYYY-MM-DD] with [engineering, product, the DPO and a user researcher].

5.1 Categories and prompts

The category names follow LINDDUN; the prompts are this template's own questions.

CodeCategoryPrompt questions for this system
LLinkingCan two data items, sessions or datasets be tied to the same person, even without knowing who they are? Do identifiers persist across contexts?
IIdentifyingCan someone learn who a person is from the data, through direct identifiers, unique combinations or inference?
NrNon-repudiationIs a person unable to deny an action or a claim when deniability matters to them (for example, a confidential report)?
DDetectingCan an observer infer that a person uses the system, or has a record in it, without seeing the content?
DDData disclosureIs more personal data collected, stored, processed or shared than the purpose needs? Is it exposed to the wrong recipient?
UUnawareness and unintervenabilityDo people know what happens to their data, and can they access, correct, export, restrict or delete it?
NcNon-complianceDoes processing depart from law, policy, consent or recognised good practice (retention, minimisation, processor contracts)?

5.2 Elicitation matrix

Each cell holds the threat IDs found, or "n/a" with a reason in the notes.

ElementLINrDDDUNc
E1 App usern/an/an/an/an/aPT-07n/a
P1 Mobile appPT-01n/an/aPT-05PT-04PT-07n/a
P2 Workout APIn/an/an/an/an/aPT-08n/a
P3 Coach matchingn/aPT-03n/an/aPT-06n/an/a
DS1 Workout storePT-01PT-02n/an/an/aPT-08PT-09
DS2 Profile storen/an/an/an/an/aPT-08n/a
F6 to coachn/an/an/an/aPT-06n/an/a
F7 to analyticsPT-01n/an/aPT-05PT-04n/aPT-10
[Element][IDs][IDs][IDs][IDs][IDs][IDs][IDs]

Notes on "n/a" cells: Example: Non-repudiation is not relevant to the workout API because no action needs to be deniable by the user; revisit if anonymous feedback is added.

6. Threat register

Severity is the product of likelihood and impact on the data subject, each rated 1 to 4:

S=L×I,S∈[1,16]S = L \times I, \qquad S \in [1, 16]
IDThreat scenarioCategoryElementDataLISSeverityOwnerStatus
PT-01Example: The persistent install ID in analytics events links a user's workouts across years and to their account if the vendor's data is joined with oursLP1, F7, DS1D-04339High[@name][Open]
PT-02Example: Shared GPS tracks start and end at the user's home, identifying where they liveIDS1D-024416Critical[@name][Open]
PT-03Example: Rare combination of age band, small city and goal makes a user identifiable to a coach before consent to share nameIP3D-05236Medium[@name][Open]
PT-04Example: App sends precise location and full device model to analytics although only feature usage is neededDDP1, F7D-02, D-04339High[@name][Open]
PT-05Example: Network observers and other apps can detect use of a fertility-training feature from a distinctive API hostnameDP1, F7D-03236Medium[@name][Open]
PT-06Example: Coach receives full heart-rate history instead of the summary needed to plan trainingDDP3, F6D-03339High[@name][Open]
PT-07Example: Users are not told that coaches can keep notes after the match endsUE1, P1D-03326Medium[@name][Open]
PT-08Example: No self-service export or deletion of workouts; requests take 30 days by emailUP2, DS1, DS2All428Medium[@name][Open]
PT-09Example: GPS tracks retained indefinitely in backups, beyond the 24-month policyNcDS1D-02339High[@name][Open]
PT-10Example: No data processing agreement covers the analytics vendor's sub-processorsNcF7, E3D-04236Medium[@name][Open]
[PT-nn][Scenario][Code][Element][D-nn][1-4][1-4][S][Severity][@name][Status]

7. Mitigations and privacy-enhancing technologies

Mitigation strategies are listed from strongest to weakest: avoid the data, minimise it, separate or aggregate it, hide it, then inform and empower the person.

7.1 Mitigation plan

IDMitigationStrategyThreatsOwnerTarget dateVerification
M-01Example: Rotate analytics ID every 30 days; never send account ID or location to analyticsMinimise, unlinkPT-01, PT-04[@name]YYYY-MM-DDInspect event payloads in CI contract test
M-02Example: Privacy zones: trim the first and last 500 m of shared tracks around user-defined placesHidePT-02[@name]YYYY-MM-DDAutomated test with fixture tracks
M-03Example: Matching uses k-anonymous buckets (city replaced by region when fewer than 10 users share the combination)AggregatePT-03[@name]YYYY-MM-DDQuery test on production-like data
M-04Example: Coach sees weekly summaries by default; full history only with explicit per-coach consentMinimise, consentPT-06, PT-07[@name]YYYY-MM-DDUX review and consent log check
M-05Example: Self-service export (JSON, GPX) and deletion with backup purge within 35 daysEmpowerPT-08, PT-09[@name]YYYY-MM-DDDeletion audit report
M-06Example: Generic API hostnames and certificate pinning for sensitive featuresHidePT-05[@name]YYYY-MM-DDTraffic capture review
M-07Example: Data processing agreement with sub-processor list and audit rightComplyPT-10[@legal]YYYY-MM-DDSigned agreement on file
[M-nn][Mitigation][Strategy][PT-nn][@name]YYYY-MM-DD[Evidence]

7.2 Privacy-enhancing technologies considered

TechnologyWhat it doesConsidered forDecision
Pseudonymisation with rotating identifiersReplaces stable IDs with short-lived onesPT-01Example: Adopted (M-01)
k-anonymity or generalisationCoarsens quasi-identifiers until each record matches at least k peoplePT-03Example: Adopted with k=10k = 10 (M-03)
Differential privacyAdds calibrated noise to aggregate statisticsProduct analytics dashboardsExample: Deferred; volumes too low for useful accuracy
On-device processingComputes summaries on the phone and sends only resultsPT-06Example: Under evaluation for weekly summaries
End-to-end encryptionContent readable only by sender and recipientCoach chat[Decision]
Private set intersectionFinds shared contacts without revealing address booksFriend finding[Decision]

For differential privacy, a mechanism satisfies ε\varepsilon-differential privacy when, for any two datasets DD and D′D' that differ in one person and any output set SS:

Pr⁡[M(D)∈S]≤eε⋅Pr⁡[M(D′)∈S]\Pr[M(D) \in S] \le e^{\varepsilon} \cdot \Pr[M(D') \in S]

Smaller ε\varepsilon means stronger privacy and noisier results; record the chosen value and the budget per release if it is adopted.

8. Residual risk

ThreatMitigationsResidual LResidual IResidual SDecisionRisk ownerReview by
PT-02M-02236Example: Accept; users can widen privacy zones[@product-owner]YYYY-MM-DD
PT-06M-04133Accept[@product-owner]YYYY-MM-DD
PT-05M-06224Accept[@product-owner]YYYY-MM-DD
[PT-nn][M-nn][1-4][1-4][S][Accept / Reduce further / Avoid][@name]YYYY-MM-DD

Overall conclusion: Example: After mitigations no residual threat is rated above Medium. Processing of health data (D-03) remains high risk by nature and is assessed in the DPIA.

9. Link to the DPIA

This model provides engineering evidence for [DPIA-2026-014]. The table maps its outputs to the DPIA.

DPIA topicInput from this model
Description of processingSections 1.3, 2 and 3
Necessity and proportionalityData inventory (section 4) and minimisation mitigations (M-01, M-04)
Risks to rights and freedomsThreat register (section 6)
Measures to address risksMitigation plan (section 7)
Residual risk and consultation decisionSection 8

Trigger a DPIA review when: [a new data category or purpose is added; a new recipient receives personal data; a residual risk is rated High].

10. Appendices

The appendices hold the glossary, rating scales and references.

10.1 Glossary

TermMeaning
DFDData flow diagram with external entities, processes, data stores and flows
DPIAData protection impact assessment
PETPrivacy-enhancing technology
Quasi-identifierAttribute that is not identifying alone but can be in combination
Data subjectThe person the data is about

10.2 Rating scales

ScoreLikelihoodImpact on the data subject
1Unlikely; needs insider plus rare conditionsMinor inconvenience, easily reversed
2Possible with effortSignificant inconvenience or embarrassment
3Likely for a motivated partySerious consequences: discrimination, stalking risk, financial loss
4Expected in normal operationSevere or irreversible: physical danger, loss of livelihood

Severity bands: 1 to 3 Low, 4 to 8 Medium, 9 to 12 High, 13 to 16 Critical.

10.3 References

ReferenceUse
LINDDUN privacy threat modelling framework, linddun.org (DistriNet, KU Leuven)Threat category names in section 5
[Organisation's privacy policy and DPIA procedure]Ratings and hand-over
[Security threat model]Security threats out of scope here

Standard and licence note

Based on the LINDDUN privacy threat modelling framework developed by the DistriNet research group at KU Leuven (https://linddun.org), using only its seven threat category names (Linking, Identifying, Non-repudiation, Detecting, Data disclosure, Unawareness and unintervenability, Non-compliance) as published on linddun.org in October 2026. The LINDDUN website states copyright of KU Leuven and no open licence could be verified, so this template reproduces none of its threat trees, catalogues, descriptions or method text; the prompts, register, matrices and examples are original. Consult linddun.org for the full method and its threat knowledge. This is an engineering format, not legal advice. Template licence: MIT.

Template liên quan