Skip to content

Commit b39db23

Browse files
authored
Remove nanoTDF documentation (#173)
Remove all nanoTDF references from public documentation and code samples as the feature is being made proprietary. ## Changes - Removed KAS NanoTDF rewrap section and diagram from Key Access documentation - Deleted NanoTDF code samples (Java collection examples, TDF encryption example) - Removed NanoTDF feature matrix entries and constraints in base key documentation - Updated OpenAPI spec descriptions to remove nanoTDF-specific language - Updated build configuration to stop generating nanoTDF specification pages ## Note OpenAPI specs in `/specs` are vendored from upstream. Local modifications will be overwritten when running `npm run update-vendored-yaml`. The upstream opentdf/platform repository should be updated separately.
1 parent 6f26673 commit b39db23

File tree

22 files changed

+112
-325
lines changed

22 files changed

+112
-325
lines changed

code_samples/java/decrypt-collection-example.mdx

Lines changed: 0 additions & 37 deletions
This file was deleted.

code_samples/java/encrypt-collection-example.mdx

Lines changed: 0 additions & 42 deletions
This file was deleted.

code_samples/tdf/encryption_nanotdf.mdx

Lines changed: 0 additions & 44 deletions
This file was deleted.

docs/appendix/matrix.mdx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ Feature matrix for the different SDK versions.
5858
| | | | |
5959
| **Encrypt/Decrypt**[^103] | Stable | Stable | Stable |
6060
| - ZTDF[^110] | Stable | Stable | Stable |
61-
| - NanoTDF[^111] | Stable | Stable | Stable |
6261
| - ABAC[^112] | Stable | Stable | Stable |
6362
| - Key Access Grants[^140] | Stable | Stable | Stable |
6463
| | | | |
@@ -71,7 +70,6 @@ Feature matrix for the different SDK versions.
7170
[^103]: Encrypt is the ability to encrypt data.
7271
[^105]: Service APIs are APIs that are provided by the library to interact with the service.
7372
[^110]: Support for the [Zero Trust Data Format](https://github.com/opentdf/spec/tree/main/schema/tdf) utilizing JSON manifests and assertation.
74-
[^111]: Support for the [Nano Trusted Data Format](https://github.com/opentdf/spec/tree/main/schema/nanotdf).
7573
[^112]: ABAC is Attribute Based Access Control.
7674
[^113]: Dissem is Dissemination List (i.e., email lists).
7775
[^120]: Authorization APIs for managing authorization policies.

docs/components/key_access.md

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -77,60 +77,3 @@ At this point, the client is ready to make the rewrap request. The following is
7777
```
7878
7979
6. If the policy is valid and untampered, KAS calls the [Authorization Service](./authorization) to confirm whether the entity is allowed access to the TDF. If authorized, KAS rewraps the symmetric key with the client's public key and returns the newly wrapped key for the client to use in decrypting the TDF.
80-
81-
### NanoTDF
82-
83-
<img src="/img/kas_nano_flow.svg" alt="KAS NanoTDF Rewrap"/>
84-
85-
NanoTDF leverages the same KAS Rewrap Endpoint but the request body differs slightly from a TDF Rewrap call.
86-
87-
1. The client extracts the NanoTDF [Header](/spec/schema/nanotdf#331-header) and from that Header extracts the KAS URL.
88-
89-
2. The client generates an ephemeral asymmetric key pair, used to wrap the shared secret originally generated on NanoTDF creation.
90-
91-
3. Because NanoTDF doesn't have the concept of a Key Access Object the client builds one. The Key Access Object is then used to help build a `RequestBody`:
92-
93-
```json title="Key Access"
94-
{
95-
"header": "<nanotdf header>",
96-
"type": "remote",
97-
"url": "https://kas.opentdf.io",
98-
"protocol": "kas"
99-
}
100-
```
101-
102-
```json title="Request Body"
103-
{
104-
"requestBody": {
105-
"algorithm": "ec:secp256r1",
106-
"keyAccess": "<key access>",
107-
"clientPublicKey": "<client public key>"
108-
}
109-
}
110-
```
111-
112-
4. With this `RequestBody`, the client creates a Signed Request Token, which is a JWT signed with the client's DPoP public key or Ephemeral Key Pair
113-
114-
:::note
115-
"Demonstration of Proof of Possession" is currently optional due to inconsistencies across identity providers.
116-
:::
117-
118-
```json title="Body of JWT"
119-
{
120-
"requestBody": "<RequestBody>"
121-
}
122-
```
123-
124-
At this point, the client is ready to make the rewrap request. The following is an example request body.
125-
126-
```json title="Signed Request Token"
127-
{
128-
"signedRequestToken": "<The JWT>"
129-
}
130-
```
131-
132-
1. KAS extracts the encrypted policy in the NanoTDF [Header](/spec/schema/nanotdf#331-header) and verifies the policy binding.
133-
- If ECDSA Binding is enabled KAS will verify the use ECDSA to verify the signature otherwise it defaults to comparing the `GMAC`
134-
135-
2. If the policy is valid and untampered, KAS calls the [Authorization Service](./authorization) to confirm whether the entity is allowed access to the NanoTDF. If authorized, KAS generates a new shared key with the clients ephemeral public key and uses `AES-GCM` to encrypt the shared secret used to encrypt the NanoTDF payload.
136-

docs/components/policy/keymanagement/base_key.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ When using the [kas-registry proto](https://github.com/opentdf/platform/blob/522
2323
1. The passed in kas information list
2424
2. The key algorithm
2525
2. If a base key is not present, the SDK will fallback to using the passed in kas information list and key algorithm.
26-
3. If the base key is not of type ECC, it **cannot** be used with NanoTDF.
27-
1. If the registered base key is not of type ECC, the SDK will fallback to using the passed in kas url and key type.
2826

2927
:::note
3028
In upcoming versions of the SDK, post v0.5.0, the SDK will prefer to error when no base key is set; instead of falling back.

docs/getting-started/index.mdx

Lines changed: 2 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -544,20 +544,14 @@ Now that we have a few basic resources in place we can show you how to control a
544544
545545
### Encrypt Data Without Attributes
546546
547-
Within the `otdfctl` CLI there is basic functionality to interact with `zTDF` and `nanoTDF`.
547+
Within the `otdfctl` CLI there is basic functionality to interact with `zTDF`.
548548
549549
#### Example zTDF encryption
550550
551551
```shell
552552
echo 'my first encrypted tdf' | otdfctl encrypt --profile platform-otdf-local -o example.tdf --tdf-type tdf3
553553
```
554554
555-
#### Example nanoTDF encryption
556-
557-
```shell
558-
echo 'my first encrypted nano tdf' | otdfctl encrypt --profile platform-otdf-local -o example.nano.tdf --tdf-type nano
559-
```
560-
561555
### Decrypt Data Without Attributes
562556
563557
Because we didn't add any attributes to the data we encrypted, we should be able to decrypt the data without any issues.
@@ -571,21 +565,12 @@ otdfctl decrypt --profile platform-otdf-local --tdf-type tdf3 example.tdf
571565
my first encrypted tdf
572566
```
573567
574-
```shell
575-
otdfctl decrypt --profile platform-otdf-local --tdf-type nano example.nano.tdf
576-
```
577-
578-
```shell
579-
# Output
580-
my first encrypted nano tdf
581-
```
582-
583568
### Encrypt Data With Attributes
584569
585570
In this example we will encrypt the data with the attribute `https://opentdf.io/attr/role/value/guest`. First cleanup any existing tdf files from before.
586571
587572
```shell
588-
rm example.tdf example.nano.tdf
573+
rm example.tdf
589574
```
590575
591576
#### Example zTDF encryption with attributes
@@ -594,12 +579,6 @@ rm example.tdf example.nano.tdf
594579
echo 'my first encrypted tdf' | otdfctl encrypt --profile platform-otdf-local -o example.tdf --tdf-type tdf3 --attr https://opentdf.io/attr/role/value/guest
595580
```
596581
597-
#### Example nanoTDF encryption with attributes
598-
599-
```shell
600-
echo 'my first encrypted nano tdf' | otdfctl encrypt --profile platform-otdf-local -o example.nano.tdf --tdf-type nano --attr https://opentdf.io/attr/role/value/guest
601-
```
602-
603582
### Decrypt Data With Attributes
604583
605584
In this first example we will try to decrypt the data but it will fail because we shouldn't be assigned the entitlement of `https://opentdf.io/attr/role/value/guest` at this point.
@@ -616,17 +595,6 @@ ERROR Failed to decrypt file: reader.WriteTo failed: doPayloadKeyUnwrap split
616595
rpc error: code = PermissionDenied desc = forbidden
617596
```
618597
619-
#### Example nanoTDF failed decryption
620-
621-
```shell
622-
otdfctl decrypt --profile platform-otdf-local --tdf-type nano example.nano.tdf
623-
```
624-
625-
```shell
626-
ERROR Failed to decrypt file: readSeeker.Seek failed: error making request to kas: error making rewrap request: rpc error: code = PermissionDenied desc = request error
627-
rpc error: code = PermissionDenied desc = forbidden
628-
```
629-
630598
What we have to do now is assign the entitlement of `https://opentdf.io/attr/role/value/guest` to the entity by creating a new subject mapping for the condition set we created earlier.
631599
632600
#### Create a new subject mapping
@@ -665,17 +633,6 @@ otdfctl decrypt --profile platform-otdf-local --tdf-type tdf3 example.tdf
665633
my first encrypted tdf
666634
```
667635
668-
#### Example nanoTDF successful decryption
669-
670-
```shell
671-
otdfctl decrypt --profile platform-otdf-local --tdf-type nano example.nano.tdf
672-
```
673-
674-
```shell
675-
# Output
676-
my first encrypted nano tdf
677-
```
678-
679636
## Takeaways and Next Steps
680637
681638
In this document you have learned how to create a namespace, attribute, subject mapping, and encrypt/decrypt data with the **OpenTDF Platform**.

0 commit comments

Comments
 (0)