Я не против поделиться некоторыми своими личными данными с компанией, предоставляющей мне услуги. Я считаю это вполне разумным условием обслуживания. Но когда истечет срок службы, я хочу, чтобы истек и мой общий доступ к данным.

Конечно, возможно, что компания удалит мои данные, особенно если они соответствуют требованиям регулирования данных (например, GDPR), но я бы предпочел, чтобы это было принудительно, а не было подарком компании.

И хотя мы говорим о моих данных, я бы также предпочел, чтобы мои данные хранились в безопасности (снова GDPR), возможно, удаленно от компании. Может быть, даже децентрализовано.

Также была бы полезна возможность обновлять свои данные, например, когда я меняю адрес, работу, номер телефона, адрес электронной почты, пол и т. Д. По своему усмотрению (опять же, GDPR).

Что ж, конечно, мы можем делать все это!

Права физических лиц GDPR 8 кратко изложены здесь. Доступны и другие правила защиты данных.

Хранилище данных, управляемое смарт-контрактом

Смарт-контракт между мной и компанией развернут в блокчейне. Смарт-контракт контролирует доступ к данным.

Мои данные хранятся в выбранном мной хранилище данных. В этом случае я собираюсь использовать доступный облачный сервер хранилища данных в тестовой сети Ethereum на datonavault.com. Дополнительные возможности, такие как самостоятельный хостинг, веб-интерфейс, межсетевые экраны, автономный хостинг и т.д., более подробно описаны в документации datona-lib.

У меня есть разрешение на чтение, запись и обновление моих данных. Это контролируется смарт-контрактом. В некоторых случаях эти разрешения могут быть ограничены, например, невозможно обновить адрес доставки или изменить реквизиты банковского счета.

Всякий раз, когда Компания хочет получить доступ к моим данным, они запрашивают их из хранилища данных, которое проверяет с помощью смарт-контракта, действительны ли разрешения компании. Компания получает данные только в том случае, если разрешения действительны.

Еще одна важная вещь, которую я хочу, чтобы смарт-контракт выполнял, - это истекший, когда истекает срок службы компании.

Это именно то, что может делать смарт-контракт, поэтому давайте сделаем это сразу после следующей загадочной картины.

Пример смарт-контракта

Вот смарт-контракт Solidity для блокчейна Ethereum (ну, в любом случае, соответствующие его части):

pragma solidity ^0.6.3;

import "SDACinterface.sol";

contract Duration_SDAC is SDACinterface {

    address myself = msg.sender;
    address company;
    uint endTime;
    constructor( address _company, uint duration_secs ) public {
        company = _company;
        endTime = block.timestamp + duration_secs;
    }
    function hasExpired() public view override returns (bool) {
        return block.timestamp >= endTime;
    }
    function getPermissions( address account, uint object ) public 
    view override virtual returns (uint) {
        if (!hasExpired()) {
            if (account == myself) 
                return ALL_PERMISSIONS;
            else if (account == company) 
                return READ_PERMISSION;
        }
        return NO_PERMISSIONS;
    }

    ...
}

Этот смарт-контракт соответствует спецификации интерфейса datona-lib. Это документ, который определяет интерфейс, который должен предоставить смарт-контракт, чтобы его можно было вызвать из хранилища данных.

В constructor() указывается адрес учетной записи компании и продолжительность смарт-контракта (в этом примере продолжительность указывается в секундах).

Важная функция getPermissions() вызывается всякий раз, когда хранилище данных требуется, чтобы определить, какой доступ имеет учетная запись и к какому объекту. Здесь мы игнорируем идентификатор объекта. Пока смарт-контракт не hasExpired(), мы возвращаем одинаковые разрешения для всех объектов. Это все разрешения для меня, и просто разрешение на чтение для компании.

Смарт-контракт может быть настолько простым или сложным, насколько это необходимо. Очевидно, это довольно просто. Но обратите внимание, что он по-прежнему очень мощный, поскольку контролирует мои данные.

Развертывание и использование смарт-контракта

Следуя примерам из этой статьи, мы развернем смарт-контракт в блокчейне Ethereum, используя окно терминала (обычно мы будем использовать DApp, чтобы сделать это за нас):

                            My Terminal
$ datona generateKey myself
$ contractCode= <<smart contract code as described in the example>>
$ company= <<company account address>
$ duration= <<number of seconds in one week>>
 
$ datona deployContract $contractCode $company $duration --key owner
0x3E68...44d8
$ contract=0x3E68...44d8

Здесь мы намеренно ограничиваем срок действия смарт-контракта 1 неделей.

Затем я могу создать хранилище данных для смарт-контракта (доступны другие хранилища):

                            My Terminal
$ vaultUrl=file://77.68.75.133:8127
$ vaultSrvrId=0x288b32F2653C1d72043d240A7F938a114Ab69584
$ datona createVault $contract $vaultUrl $vaultSrvrId --key myself

И тогда я могу написать данные, необходимые Компании:

                            My Terminal
$ datona writeVault $contract $vaultUrl $vaultSrvId --key myself
    "data required by company"

Компания может получать данные из окна своего терминала (обычно они используют программу, которая взаимодействует с datona-lib):

                         Company Terminal
$ datona readVault $contract $vaultUrl $vaultSrvId --key company
"data required by company"

Но когда Компания пытается прочитать данные неделю спустя:

                         Company Terminal
$ datona readVault $contract $vaultUrl $vaultSrvId --key company
permission denied

Компания не может получить доступ к данным. Кроме того, данные удаляются из хранилища данных для дополнительной безопасности и спокойствия.

Выводы

Я готов поделиться своей необходимой личной информацией с компаниями в обмен на услугу, при условии, что, когда срок действия услуги истечет, моя доля данных также истечет.

Я показал практическое решение для этого, используя комбинацию смарт-контракта и хранилища данных, которое соответствует спецификации интерфейса, описанной в datona-lib.

Био

Жюль Годдард - соучредитель Datona Labs, который предоставляет смарт-контракты для защиты вашей цифровой информации от злоупотреблений.

Сайт - твиттер - раздор - GitHub

Также прочтите