Skip to content

Commit

Permalink
chore: init new docs structure
Browse files Browse the repository at this point in the history
see #26
  • Loading branch information
nlm-pro committed Aug 18, 2022
1 parent 755ddd9 commit 39907d6
Show file tree
Hide file tree
Showing 74 changed files with 1,105 additions and 163 deletions.
27 changes: 27 additions & 0 deletions docs/02-tutorial.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
sidebar_position: 2
title: Tutorial
tags: [quickstart]
---

:::Warning

:construction_worker: This section is under construction

:::

## 1. Configure the Privacy Computation Engine

## 2. Set-up Storage

## 3. Initiate a Web App

## 4. Encrypt Data

## 5. Capture Data

## 6. Install the Privacy Request Capture Interface

## 7. Make a Privacy Request

## 8. Decrypt Data
9 changes: 9 additions & 0 deletions docs/03-computation/01-introduction.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: Introduction
sidebar_position: 1
tags: ["introduction"]
---

The blindnet devkit **Privacy Computation Engine** is a service that interpret your rights to hold and treat a particular Data Capture at a particular point of time and calculate a response to [Data Subjects'](/docs/references/lexicon#data-subject) [Privacy Requests](docs/references/lexicon#privacy-request).

It associates a [Privacy Compiler](./references/high-level-architecture#privacy-compiler) and [Customization API](./references/high-level-architecture#customization-api).
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
# How Privacy Computation Engine Works

## Configuring your Privacy Computation Engine
---
title: Configuring your Privacy Computation Engine
sidebar_position: 2
tags: ['guide']
---

You must first configure the Privacy Computation Engine in order to make the most of it.

It needs to know about:

- General information about your Organization and its' data processing policies (Equivalent to a RoPA - Record of Processing Activities)
- Mappings of your data structures to [PRIV](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md) Data Categories
- Few choices you have to make about when to authenticate the user (before or after they make a Privacy Request), and when to deliver automatic responses and when to wait for validation

To Configure your Privacy Computation Engine prepare the following information:

<!-- prettier-ignore -->
| Information | Format | Example|
| :----: | :-----: | :--------|
| Name and contact details of your Organization and its representative | `string` | `Blindnet Inc. [email protected] Vuk Janosevic`|
Expand All @@ -26,12 +32,14 @@ To Configure your Privacy Computation Engine prepare the following information:
| A table of data transfers | `Transfer Record` | see bellow |

Based on this information the Privacy Computation Engine creates a set of **Processing Records** that contain:

- Identification of the data field in your database. Table/Object and field/property. E.g. `USER`, `e_mail_address`
- A [Privacy Scope](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#privacy-scope) e.g. (`CONTACT.EMAIL` x {`COLLECTION`, `STORING`, `USING`} x {`SERVICES`,`COMPLIANCE`})
- One or more [Legal Bases](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#legal-base) e.g. a legal base of type `CONTRACT`

It is possible to end-up having serval records for one Data Category, e.g.

<!-- prettier-ignore -->
| Data in database | Privacy Scope | Legal bases |
| :----: | :-----: | :--------|
| table:`USER` field:`name` | `NAME.FIRST-NAME` x {`COLLECTION`, `STORING`, `USING`} x {`SERVICES`,`COMPLIANCE`} | `CONTRACT` |
Expand All @@ -44,33 +52,20 @@ The same System is sending marketing and advertising e-mail to the user under `L
The System only shares the e-mail with partners under `CONSENT` legal base.

A **Transfer Record** has:

- One or more data categories being transferred outside of the system e.g. `CONTACT.EMAIL`
- One or more Systems to which transfer is made (their IDs (URLs) and user-readable names)

Multiple provenance objects can also be provided for the same data category. Consider the following examples:

<!-- prettier-ignore -->
| Provenance object | `data-category` | `provenance-category` | `system` |
| :----: | :-----: | :-----: | :--------|
| provenance1 | `CONTACT.EMAIL` | `USER.DATA-SUBJECT` | `https://thissystem.com` |
| provenance2 | `CONTACT.EMAIL` | `TRANSFERRED` | `https://linkedin.com` |
| provenance2 | `BEHAVIOR.CONNECTION` | `DERIVED` | `https://thissystem.com` |
| provenance3 | `PROFILING` | `TRANSFERRED` | `https://marketing-data-exchange.com` |

The records given in the example correspond to the situation of a System that collect the e-mail directly from the user (proveance1),
but also, since the System uses OpenID and allow login through Linkedin, it may gain knowledge of e-mail from Linkedin (provenance2).
The records given in the example correspond to the situation of a System that collect the e-mail directly from the user (proveance1), but also, since the System uses OpenID and allow login through Linkedin, it may gain knowledge of e-mail from Linkedin (provenance2).
The system generates connection data, every time the user connects to it.
It obtains profiling data about the user for a marketing data exchange platform, so that it can better target the user with marketing offers.

## Using your Privacy Computation Engine

The Privacy Computation Engine (PCE) processes a timeline of [PRIV Events](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#events).
Feed anything that is a PRIV event (e.g. Consent, Legal Base Event, Privacy Request) to your PCE.
The PCE will order them in a timeline.

<img height="300" src="./img/PCEexplained.gif" />

Processing the timeline of PRIV events, the PCE will deliver recommendations of [Privacy Request Responses](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#privacy-request-response)

The PCE decides on the responses to recommend by calculating, at each moment an Eligible Privacy Scope.
The component responsible for translating PRIV events into operations over the Eligible Privacy Scope is called Privacy Compiler.
See [How Privacy Compiler Works](./pc.mdx) to learn more.
18 changes: 18 additions & 0 deletions docs/03-computation/03-usage.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Using your Privacy Computation Engine
sidebar_position: 3
tags: ['guide']
---


The Privacy Computation Engine (PCE) processes a timeline of [PRIV Events](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#events).

Feed anything that is a PRIV event (e.g. Consent, Legal Base Event, Privacy Request) to your PCE.
The PCE will order them in a timeline.

<img height="300" src="/img/how_it_works/PCEexplained.gif" />

Processing the timeline of PRIV events, the PCE will deliver recommendations of [Privacy Request Responses](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#privacy-request-response)

The PCE decides on the responses to recommend by calculating, at each moment an Eligible Privacy Scope.
The component responsible for translating PRIV events into operations over the Eligible Privacy Scope is called Privacy Compiler.
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# How Privacy Compiler Works
---
title: Compilation
sidebar_position: 4
tags: ['guide']
---

## Initial Set-up

Based on the [configuration given to the Privacy Computation Engine](./pce.mdx#configuring-your-privacy-computation-engine), the Privacy Compiler first calculates an initial Eligible Privacy Scope.
Based on the [configuration given to the Privacy Computation Engine](./configuration), the Privacy Compiler first calculates an initial Eligible Privacy Scope.

In the Eligible Privacy Scope, each [Privacy Scope Triple](#triple) is associated with one or more active [Legal Bases](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#legal-base).
Legal Bases can be acquired and lost.
Expand All @@ -21,26 +25,31 @@ With every PRIV event, the Privacy Compiler calculated the change to be made to

The Eligible Privacy Scope becomes the [union](#union) of the previous Eligible Privacy Scope and of the Privacy Scope given in the `scope` property of the [Consent](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#consent).

> **Note**
> If the User previously made an `OBJECT` or `RESTRICT` request reducing the Eligible Privacy Scope, giving a new Consent is a way to re-include (previously excluded) triples in the Eligible Privacy Scope.
:::Note
If the User previously made an `OBJECT` or `RESTRICT` request reducing the Eligible Privacy Scope, giving a new Consent is a way to re-include (previously excluded) triples in the Eligible Privacy Scope.
:::

### Legal Base Event

For events of `event-type` `SERVICE-START` or `RELATIONSHIP-START`:

- the `scope` of the [Legal Base](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#legal-base) is added to the Eligible Privacy Scope using the [union](#union) operation.
- when a `data-reference` is specified in the [Legal Base Event](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#legal-base-event) the Privacy Compiler remembers it so that Triples associated to this reference can be found later

For events of `event-type` `SERVICE-END` or `RELATIONSHIP-END`:

- when a particular `data-reference` is given:
> **Note**
> A Data reference can indicate a particular user account, contract, particular medical or legal file especially when the same Data Subject may have several ongoing files with the same Organization
- The Privacy Compiler looks for Triples in the Eligible Privacy Scope that have that reference
- Removes the reference and to it associated Legal Base
- Removes from the Eligible Privacy Scope all the Triples that are left with no active Legal Base
- The Privacy Compiler looks for Triples in the Eligible Privacy Scope that have that reference
- Removes the reference and to it associated Legal Base
- Removes from the Eligible Privacy Scope all the Triples that are left with no active Legal Base
- when no `data-reference` is given:
- The Privacy Compiler looks for all Triples associated with the `legal-base` of the Legal Base Event
- Removes the Legal Base in question
- Removes from the Eligible Privacy Scope all the Triples that are left with no active Legal Base
- The Privacy Compiler looks for all Triples associated with the `legal-base` of the Legal Base Event
- Removes the Legal Base in question
- Removes from the Eligible Privacy Scope all the Triples that are left with no active Legal Base

:::Note
A Data reference can indicate a particular user account, contract, particular medical or legal file especially when the same Data Subject may have several ongoing files with the same Organization
:::

### `REVOKE-CONSENT` Privacy Requests

Expand All @@ -55,27 +64,33 @@ In this case, for every triple in the [intersection](#intersection) of the previ
Finally, the Privacy Compiler removes all the Triples that are left with no active Legal Base as a consequence of consent change.

### `OBJECT` Privacy Requests

The Privacy Compiler looks for a [Privacy Scope Restriction](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#privacy-scope) associated with the request.
For every triple found in the [intersection](#intersection) of the Eligible Privacy Scope and the scope of the given Privacy Scope Restriction, the Privacy Compiler removes any association of such triples with `CONSENT`, `LEGITIMATE_INTEREST` Legal Bases.
The `NECESSARY` or `CONTRACT` Legal Bases are kept.

> **Note**
> If the User wants to remove Triples linked to `CONTRACT` they need to terminate the contract, generating a `SERVICE-END` [Legal Base Event](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#legal-base-event).
> No Privacy Request coming from the Data Subject can alter the Triples included in the Privacy Eligible Scope by `NECESSARY` Legal Base.
:::Note
If the User wants to remove Triples linked to `CONTRACT` they need to terminate the contract, generating a `SERVICE-END` [Legal Base Event](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#legal-base-event).

No Privacy Request coming from the Data Subject can alter the Triples included in the Privacy Eligible Scope by `NECESSARY` Legal Base.
:::

Finally, the Privacy Compiler removes all the Triples that are left with no active Legal Base as a consequence of consent change.

The consequences of `OBJECT` requests are long-lasting, and affect the future of Eligible Privacy Scope.
Triples concerned by the an `OBJECT` Privacy Request, after it has been made, can't re-enter Eligible Privacy Scope by `LEGITIMATE INTEREST` regardless of any future `LEGITIMATE INTEREST` Legal Base Event.

### `RESTRICT` Privacy Requests

The Privacy Compiler looks for a [Privacy Scope Restriction](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#privacy-scope) associated with the request.
For every triple found in the Eligible Privacy Scope and not found in the scope of the given Privacy Scope Restriction, the Privacy Compiler removes any association of such triples with `CONSENT`, `LEGITIMATE_INTEREST` Legal Bases.
The associations with `NECESSARY` or `CONTRACT` Legal Bases remain unaffected.

> **Note**
> If the User wants to remove Triples linked to `CONTRACT` they need to terminate the contract, generating a `SERVICE-END` [Legal Base Event](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#legal-base-event).
> No Privacy Request coming from the Data Subject can alter the Triples included in the Privacy Eligible Scope by `NECESSARY` Legal Base.
:::Note
If the User wants to remove Triples linked to `CONTRACT` they need to terminate the contract, generating a `SERVICE-END` [Legal Base Event](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#legal-base-event).

No Privacy Request coming from the Data Subject can alter the Triples included in the Privacy Eligible Scope by `NECESSARY` Legal Base.
:::

Finally, the Privacy Compiler removes all the Triples that are left with no active Legal Base as a consequence of consent change.

Expand All @@ -88,6 +103,7 @@ Triples not included in the scope of a `RESTRICT` Privacy Request, after it has

A **<a name="triple"></a>Privacy Scope Triple** is a unit of [Privacy Scope](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#privacy-scope)
and it consists of (in that order):

- one [Data Category Term](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/./https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#data-categories) or `*`
- one [Processing Category Term](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#processing-categories) or `*`
- one [Purpose Term](https://github.com/blindnet-io/product-management/blob/main/refs/schemas/priv/RFC-PRIV.md#purpose) or `*`
Expand Down
4 changes: 4 additions & 0 deletions docs/03-computation/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "Computation",
"position": 3
}
6 changes: 6 additions & 0 deletions docs/03-computation/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import DocCardList from '@theme/DocCardList';
import {useCurrentSidebarCategory} from '@docusaurus/theme-common';

# Privacy Computation Engine

<DocCardList items={useCurrentSidebarCategory().items}/>
11 changes: 11 additions & 0 deletions docs/04-interfaces/01-introduction.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: Introduction
sidebar_position: 1
tags: ["introduction"]
---

The blindnet devkit provides several user interfaces to allow different kinds of users to interact around Privacy Requests and help developers to execute privacy-by-design and privacy UX.

Those interfaces are delivered as a collection of Web Components and JS libraries called [Privacy Components for the Web](https://github.com/blindnet-io/privacy-components-web).

This allow you to embed any of this user interfaces independendly in any web page or application.
7 changes: 7 additions & 0 deletions docs/04-interfaces/02-install.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: Installation
sidebar_position: 2
tags: ["guide"]
---

> :construction_worker: This section is under construction
4 changes: 4 additions & 0 deletions docs/04-interfaces/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "User Interfaces",
"position": 4
}
6 changes: 6 additions & 0 deletions docs/04-interfaces/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import DocCardList from '@theme/DocCardList';
import {useCurrentSidebarCategory} from '@docusaurus/theme-common';

# User Interfaces

<DocCardList items={useCurrentSidebarCategory().items}/>
7 changes: 7 additions & 0 deletions docs/05-storage/01-introduction.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: Introduction
sidebar_position: 1
tags: ["introduction"]
---

> :construction_worker: This section is under construction
4 changes: 4 additions & 0 deletions docs/05-storage/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "Storage",
"position": 5
}
6 changes: 6 additions & 0 deletions docs/05-storage/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import DocCardList from '@theme/DocCardList';
import {useCurrentSidebarCategory} from '@docusaurus/theme-common';

# Storage

<DocCardList items={useCurrentSidebarCategory().items}/>
7 changes: 7 additions & 0 deletions docs/06-data-capture/01-introduction.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: Introduction
sidebar_position: 1
tags: ["introduction"]
---

> :construction_worker: This section is under construction
4 changes: 4 additions & 0 deletions docs/06-data-capture/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "Data Capture",
"position": 6
}
6 changes: 6 additions & 0 deletions docs/06-data-capture/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import DocCardList from '@theme/DocCardList';
import {useCurrentSidebarCategory} from '@docusaurus/theme-common';

# Data Capture

<DocCardList items={useCurrentSidebarCategory().items}/>
22 changes: 7 additions & 15 deletions docs/introduction.mdx → docs/07-encryption/01-introduction.mdx
Original file line number Diff line number Diff line change
@@ -1,31 +1,26 @@
---
title: Introduction
sidebar_position: 0
sidebar_position: 1
tags: ["introduction"]
---


# Introduction

:::warning
Check out our [Quick Start](./quickstart) guide to get started in a snap.
:::

Blindnet offers a simple solution to enable data privacy and compliance with requirements in various data regulations, including GDPR and CCPA.

Beyond compliance, we provide software developers with a service to minimize the exposure to unnecessary user data and reduce the risk in case of data breaches, named _blindnet devkit_.

## blindnet devkit

The blindnet devkit gives all developers the hability to protect users’ data (e.g., files, images, documents) in an easy and intuitive way.
Beyond compliance, we provide software developers with a service to minimize the exposure to unnecessary user data and reduce the risk in case of data breaches via encryption.

It is a collection of SDKs, Restful APIs, and web components and interfaces intended for developers to implement data captures, their lifecycle management, and data rights management, in their own software.
The blindnet devkit Encryption and Access Management Engine gives all developers the hability to protect users’ data (e.g., files, images, documents) in an easy and intuitive way.

Blindnet devkit is compatible with all available user authentication systems. The user experience does not change when you integrate the blindnet devkit.
It is a collection of SDKs and Restful APIs intended for developers to implement data captures, their lifecycle management, and data rights management, in their own software.

THe blindnet devkit is compatible with all available user authentication systems. The user experience does not change when you integrate the blindnet devkit.

### What it does

When using the blindnet devkit in your application, the JavaScript client library encrypts and decrypts user data directly on user local machines (e.g, browsers or mobile phones), while managing the encryption keys in the background, along with:
When using the blindnet devkit Encryption and Access Management Engine in your application, the JavaScript client library encrypts and decrypts user data directly on user local machines (e.g, browsers or mobile phones), while managing the encryption keys in the background, along with:

- Symmetric encryption of documents (e.g., files, images); document keys are randomly generated and transferred between users with asymmetric key encryption.
- A password-based secure backup of user private keys, which allows users to access their data from different browsers. Thanks to our password splitting function your users still use only one password to access your system and to secure their private keys.
Expand All @@ -39,6 +34,3 @@ When using the blindnet devkit in your application, the JavaScript client librar
For a quick and easy introduction, check out the [Quick Start](./quickstart) guide.

Then, read the more detailed [Guides](./guides) for more advanced usage.



Loading

0 comments on commit 39907d6

Please sign in to comment.