@tinytars/vault 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -19
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,28 +14,44 @@ Maintained by the [Tiny Tars Foundation](https://tinytars.foundation), a 501(c)(
|
|
|
14
14
|
|
|
15
15
|
## Why
|
|
16
16
|
|
|
17
|
-
### The
|
|
18
|
-
|
|
19
|
-
This package was extracted from a health-records app
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
### The HIPAA-adjacent vault
|
|
18
|
+
|
|
19
|
+
This package was extracted from a health-records app built against HIPAA-adjacent constraints,
|
|
20
|
+
and that origin is worth stating plainly: it's a real, fully worked use case, not a footnote.
|
|
21
|
+
The fit is exact: the vault **owner** is the person whose record it is; a **provider** link is a
|
|
22
|
+
treating professional's standing access to that record; a **support** link is a colleague's
|
|
23
|
+
time-boxed access, handled by `break-glass.ts`'s grant/check/revoke lifecycle so a temporary
|
|
24
|
+
exception doesn't quietly become a permanent one.
|
|
25
|
+
|
|
26
|
+
And the fit isn't just structural — four of the package's primitives map onto four things a
|
|
27
|
+
HIPAA-adjacent deployment specifically needs:
|
|
28
|
+
|
|
29
|
+
#### Satisfies the FTC Health Breach Notification Rule
|
|
30
|
+
|
|
31
|
+
The audit log in `adapters/d1/audit.ts` is shaped to satisfy the Rule's disclosure-logging
|
|
32
|
+
requirement directly — who accessed whose record and why, so a breach can be scoped to affected
|
|
33
|
+
individuals.
|
|
34
|
+
|
|
35
|
+
#### Zero-knowledge storage
|
|
28
36
|
|
|
29
37
|
`crypto.ts` gives that app a zero-knowledge vault — the storage operator holds ciphertext and
|
|
30
38
|
never a key or usable plaintext, which matters when the payload is a medical record.
|
|
39
|
+
|
|
40
|
+
#### Consent-based sharing
|
|
41
|
+
|
|
31
42
|
`envelope-access.ts` gives it consent-based sharing — access is a per-principal, revocable
|
|
32
|
-
wrapped-key grant, not a shared secret or a role flag, which is what "the
|
|
33
|
-
sees
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
wrapped-key grant, not a shared secret or a role flag, which is what "the record's owner controls
|
|
44
|
+
who sees it" actually requires at the implementation level.
|
|
45
|
+
|
|
46
|
+
#### Time-boxed emergency access
|
|
47
|
+
|
|
48
|
+
`break-glass.ts` gives it the piece hand-rolled HIPAA-adjacent systems get wrong most often: a
|
|
49
|
+
time-boxed grant with the TTL clamp, self-expiry, and audit trail built in.
|
|
50
|
+
|
|
51
|
+
None of this makes the package itself HIPAA-compliant — it's a primitive an adopter builds
|
|
52
|
+
compliant handling on top of, not a compliance product in its own right — but the shape it ships
|
|
53
|
+
is exactly the shape that adopter needs, not something assembled from unrelated parts after the
|
|
54
|
+
fact.
|
|
39
55
|
|
|
40
56
|
### Beyond health
|
|
41
57
|
|
|
@@ -49,7 +65,7 @@ Concretely, beyond the healthcare case above:
|
|
|
49
65
|
- **Outside counsel** reviewing a client's encrypted case files, access granted for the matter's
|
|
50
66
|
duration and revoked when it closes.
|
|
51
67
|
- **An accountant** getting temporary access to a household's financial records at tax time,
|
|
52
|
-
through the same time-boxed grant `break-glass.ts` gives a
|
|
68
|
+
through the same time-boxed grant `break-glass.ts` gives a treating professional.
|
|
53
69
|
- **A corporate IT admin** granted standing access to an employee's HR file for the audit trail
|
|
54
70
|
it creates, or temporary access during an offboarding review.
|
|
55
71
|
- **A SaaS support agent** getting time-boxed access to a customer's account data to debug a
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tinytars/vault",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
4
4
|
"description": "Runtime-agnostic key derivation, authenticated envelope encryption, and storage-agnostic access-control contracts for per-user encrypted data.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|