Module1 — Secure Design
1. What is secure design? (plain language)
Secure design means building software and systems so that attackers have fewer ways to break them. Think of it as designing a building so burglars find it hard to enter, and if they break in, they can't easily reach valuable rooms.
Key ideas:
- Reduce the number of entry points.
- Make each entry point harder to exploit.
- Limit what code and users can do (least privilege).
- Detect and respond to problems quickly with logs and monitoring.
Why it matters for engineers
Security bugs can cause data loss, theft, or complete system takeover. Many bugs arise from incorrect assumptions about inputs, privileges, and trust. Good design prevents whole classes of bugs before code is written.
2. Core principles (clear definitions)
- Least privilege: Give each component only the access it absolutely needs.
- Defense in depth: Use multiple layers of protection (network, OS, application).
- Fail‑secure: If something breaks, do the safe thing (deny access), not the easy thing.
- Secure by default: Defaults should be safe; features disabled until needed.
- Explicit trust boundaries: Know where data crosses from untrusted to trusted contexts.
3. Attack Surface Reduction (ASR) — step-by-step
- Inventory: List all inputs (network ports, web endpoints, file parsers, CLI flags).