DEV Community

Akhouri Anmol Kumar
Akhouri Anmol Kumar

Posted on

What Actually Happens When ATLOCK Protects a File on Windows?

When people hear “file protection”, the first thing they usually think about is encryption.

But encryption isn't the only way to protect a file.

While building ATLOCK v4, I ended up going deeper into a different part of Windows security:

NTFS Access Control Lists (ACLs).

And the more I worked with them, the more interesting the distinction became.

🔐 Two Different Security Problems

Consider these two questions:

Who is allowed to access this file?

and:

What happens if someone obtains the underlying data?

They're different problems.

ATLOCK approaches them differently.

                ATLOCK
                   │
      ┌────────────┴────────────┐
      │                         │
  FILE GUARD               PASSWORD VAULT
      │                         │
   NTFS ACLs                  Fernet
      │                         │
Enter fullscreen mode Exit fullscreen mode

Access control Authenticated encryption

That's an important architectural distinction.

  1. File Guard → NTFS ACLs

Windows already has a sophisticated authorization model.

NTFS permissions can define access for users and groups through an ACL containing access-control entries.

Conceptually:

┌──────────────────────┐
│ PROCESS │
└──────────┬───────────┘


┌──────────────────────┐
│ Windows Access Token │
└──────────┬───────────┘


┌──────────────────────┐
│ NTFS ACL / ACEs │
└──────────┬───────────┘

┌────┴────┐
▼ ▼
ALLOW DENY

The important part is that the decision isn't purely made by ATLOCK.

Windows participates in the authorization process.

That means ATLOCK can work with an existing operating-system security primitive instead of inventing a completely separate file permission system.

  1. Why Not Encrypt Every Protected File?

Because encryption and authorization have different jobs.

Imagine a file containing:

Project/
├── design.pdf
├── notes.txt
└── source.zip

If I encrypt everything, I introduce a cryptographic data-protection layer.

If I modify access permissions, I'm changing who Windows permits to interact with those objects.

Those are not equivalent.

A useful mental model is:

                DATA
                  │
      ┌───────────┴───────────┐
      │                       │
Confidentiality          Authorization
      │                       │
  Encryption                ACLs
      │                       │
 "Can it be read?"     "Can it be accessed?"
Enter fullscreen mode Exit fullscreen mode

That distinction influenced how I designed ATLOCK.

  1. Password Vault → Cryptography

The Password Vault is a different problem.

Here, encryption is fundamental.

ATLOCK uses Fernet for the vault.

At a high level:

Master Password


PBKDF2-HMAC-SHA256


Derived Key


Fernet


Encrypted Vault Data

The Fernet construction provides authenticated encryption using:

AES-128-CBC + HMAC-SHA256

The important point isn't simply saying:

“It's AES.”

A secure design also needs to consider key derivation, authentication, integrity, key handling, and failure behavior.

That's where cryptographic implementations become more than a checkbox.

  1. Intruder Ops → Event Handling

Then there's Intruder Ops.

The interesting engineering problem here isn't simply:

failed attempt → camera

The real workflow is closer to:

Access Event


Authentication / Failure Logic


Configured Trigger

├───────────────┐
▼ ▼
Alert Evidence Capture


Local Storage

And hardware makes this considerably more annoying.

A webcam might be:

unavailable
disconnected
already occupied
slow to initialize
returning an error
behaving differently across systems

A security event shouldn't freeze the application's UI while hardware initialization happens.

That forced me to think about the capture process as an asynchronous workflow rather than simply calling a camera operation and waiting.

  1. The Real Security Problem Isn't the Feature

This is probably the biggest thing I've learned while building ATLOCK.

Adding:

🔒 File Protection

doesn't automatically make software secure.

Adding:

🔐 Encryption

doesn't automatically make software secure.

Adding:

📸 Intruder Detection

doesn't automatically make software secure.

The interesting questions come afterward.

What happens when things fail?

For example:

ACL modification fails

Did the application detect it?

Was the previous state preserved?

Was the user informed?

Can the operation be safely retried?

Or:

Camera unavailable

Does Intruder Ops crash?

Does the UI freeze?

Is the event still recorded?

Does the application recover?

Security engineering is often less about the happy path and more about the paths nobody wants to test.

🧠 Threat Modeling Changed How I Think About ATLOCK

The more I build, the less interested I am in asking:

“How many security features does ATLOCK have?”

I'd rather ask:

“What threat is this feature actually addressing?”

For example:

Component Primary purpose
NTFS ACLs Authorization
Fernet Confidentiality + integrity/authentication
PBKDF2 Password-based key derivation
Intruder Ops Local response to configured access failures
Lockdown Restricting interaction with the application/system workflow

This makes feature design much more intentional.

⚠️ And There Are Still Questions

ATLOCK is an independent project, not a replacement for Windows' entire security architecture or enterprise endpoint protection.

There are still things I want to investigate more deeply:

ACL inheritance edge cases
Recovery from failed permission changes
Privilege boundaries
Local evidence protection
Process termination and crash behavior
Camera/device failure handling
Authentication state management
Threat modeling against different local attackers

That's the part I'm enjoying most.

Not adding another button.

Finding the boundary where the button actually matters.

🔥 Why I'm Writing About This

A lot of software development content focuses on:

“Look what I built.”

I'm increasingly interested in:

“Here's why I built it this way.”

Because architecture decisions have consequences.

Choosing an existing OS security primitive instead of inventing one.

Separating authorization from encryption.

Treating hardware operations as failure-prone.

Thinking about the threat model before adding another security feature.

Those decisions matter far more than how impressive a feature list looks on a landing page.

Final Thought

ATLOCK started as an application.

For me, it's becoming something more useful:

a practical laboratory for learning how security software actually behaves in the real world.

Every bug teaches something.

Every failed implementation exposes an assumption.

Every user question reveals a blind spot.

And every technical criticism gives me another angle I hadn't considered.

That's the part of building software I don't want to lose.

Don't just build features.

Understand the system those features are entering.

🔒 ATLOCK v4 — Akhouri Systems

GitHub:
https://github.com/Akhouri-Anmol-Kumar/ATLOCK

ATLOCK

"We Build What Others Forgot To Fix"

Top comments (0)