Společnost iExec nedávno představila nové vývojářské nástroje, které řeší případ použití „Marketingu zvyšujícího soukromí“. Tyto nástroje jsou iExec DataProtector a iExec Web3Mail. Tyto vývojářské nástroje, které existují jako snadno použitelné pakety kódu npm, mají za cíl revoluci ve způsobu, jakým DApps zachází s ochranou dat a komunikací. Tento článek se hluboce ponoří do technických funkcí DataProtector a Web3Mail.

iExec DataProtector

iExec DataProtector je nástroj určený k ochraně uživatelských dat pomocí mechanismu šifrování a správy přístupových práv prostřednictvím chytrých smluv. Vlastníci dat mohou aplikacím udělit oprávnění a umožnit jim používat data – aniž by je ve skutečnosti zveřejnili.

Tento nástroj je efektivním řešením pro práci s daty; spojuje a zjednodušuje funkce datové sady iExec, jako je šifrování dat a správa přístupových práv. Kromě toho DataProtector usnadňuje získávání všech chráněných dat spojených s konkrétním vlastníkem nebo konkrétním datovým schématem (viz níže příklad datového schématu). Poskytuje také uživateli možnost zrušit jedno nebo všechna přístupová práva k datům. Jinými slovy, vlastníci dat mají možnost dynamicky spravovat a kontrolovat přístupová oprávnění, což zajišťuje robustní zabezpečení a soukromí jejich dat, pomocí uživatelsky přívětivého nástroje.

V ekosystému iExec je datovou množinou Non-Fungible Token (NFT) používaný jako řídící mechanismus pro důvěrná data. Na iExec Marketplace poskytovatelé datových sad vytvářejí a podepisují „datasetorders“, které specifikují správu datové sady, např. který Dapp může použít datovou sadu. V DataProtector definují vlastníci dat pravidla přístupu na vyšší úrovni, která jsou automaticky převedena do datasetorderů.

DataProtector lze snadno integrovat do jakéhokoli softwarového projektu (Rychlý start), aby byla chráněná data bezproblémově přístupná autorizovaným aplikacím Confidential Computing.

DataProtector spoléhá na:

1/ inteligentní smlouva DataProtector, která spolupracuje s inteligentní smlouvou DatasetRegistry za účelem vytvoření datové sady;

2/ podgraf DataProtector, server mimo řetězec, který neustále sleduje události na blockchainu a poté ukládá, indexuje a získává data chráněná DataProtector a používá následující součásti protokolu iExec:

  • Inteligentní smlouva DatasetRegistry na vytvoření/vytváření odpovídající datové sady spojené s chráněnými daty

  • smart contract PoCo pro správu přístupových práv

  • iExec Marketplace pro sdílení objednávek

  • tajná správa (SMS) k ukládání tajemství uživatelů

Šest funkcí DataProtector

1/ ProtectData šifruje data uživatelů a zaznamenává vlastnictví na smart kontraktu.

Aby uživatel ochránil svá data, zavolá funkci protectData poskytnutím datových dat jako vstup. Volitelně může uživatel také zadat název pro data, která budou veřejnými informacemi a zůstanou nešifrovaná. Pokud není zadán žádný název, je přiřazen jako „Bez názvu“.

Zde je příklad datového objektu:

data:
{
e-mail: 'example@gmail.com',
SMTP server: {
port: 5000,
smtp_server: 'smtp.gmail.com'
}
}

V tomto příkladu se datový objekt skládá ze dvou klíčů: email a SMTPserver. Hodnota e-mail je example@gmail.com. Hodnota SMTPserver se skládá ze dvou dalších párů klíč/hodnota: port s hodnotou 5000 a smtp_server s hodnotou smtp.gmail.com.

Poté funkce protectData provede následující kroky:

  1. Extrahujte datové schéma, tj. jiný klíč a typ každé hodnoty. Zde je odpovídající datové schéma předchozího příkladu dat:

dataSchema:
{
"e-mail": "řetězec",
"SMTP server": {
"port": "int",
"smtp_server": "řetězec"
}
}

2. Vytvořte archiv dat, který bude považován za složku. V této složce je vytvořen soubor pro každý klíč. Typ každého souboru odpovídá typu odpovídajícího klíče a soubor obsahuje odpovídající hodnotu zadanou v datech. Je možné mít dílčí data, která odpovídají párům dílčího klíče/hodnoty klíče. Tento klíč je vytvořen jako složka, ve které je vytvořen soubor pro každý pár podklíč/hodnota. Globální složka je zazipována do archivu.

Zde je odpovídající archiv předchozího příkladu dat:

Příklad: pravá část k zahrnutí

Tato stromová struktura umožňuje chránit jakýkoli typ dat, jako jsou soubory, text, obrázky a další. Výsledný archiv lze navíc snadno nahrát na libovolnou úložnou platformu, což usnadňuje procesy ukládání a vyhledávání dat.

3. Vygenerujte šifrovací klíč a zašifrujte archiv. V tomto šifrování je použito standardní šifrovací schéma AES-256-CBC. Poté je šifrovaný archiv vložen do veřejného úložiště IPFS.

4. Odešlete smart kontraktu DataProtector datové schéma spolu s klasickými argumenty pro vytvoření datových sad:

  • Inteligentní smlouva DataProtector volá inteligentní smlouvu DatasetRegistry k vyražení příslušné datové sady a vysílá datové schéma v blockchainové události.

  • Podgraf DataProtector pozoruje tuto událost a indexuje chráněná data.

5. Vložte do SMS tajný šifrovací klíč.

6. Vraťte uživateli hodnoty protectedData a metadata.

2/ grantAccess, který opravňuje aplikaci používat data uživatelů, aniž by byla data samotná odhalena.

grantAccess diagram iExec

Vlastník dat používá funkci grantAccess k autorizaci aplikace a žadatele k přístupu k jeho chráněným datům. Tato funkce bere jako vstupy protectedData, authorizedApp a authorizedUser, což jsou adresy chráněných dat, aplikace a uživatele. Poté funkce grantAccess spustí následující kroky:

  1. Vytvořte datasetorder pro nastavení pravidel governance, tedy přístupových práv pro autorizovanou aplikaci a autorizovaného uživatele, podepsaný vlastníkem datové sady.

  2. Publikovat datasetorder na iExec Marketplace.

  3. Vraťte uživateli datasetorder.

3/ revokeAllAccessObservable, která odebere všem aplikacím přístup ke konkrétním chráněným datům.

Funkce revokeAllAccessObservable je volána vlastníkem dat s hodnotou protectedData a volitelně s filtrem authorApp a/nebo s filtrem AuthorUser. Poté funkce revokeAllAccessObservable spustí následující kroky:

  1. Dotazujte objednávky datových sad na tržiště, a pokud jsou k dispozici, odpovídají filtrům.

  2. Pro každý datasetorder zruší datasetorder voláním PoCo smart contractu, který vygeneruje událost tohoto odvolání. Marketplace API pozoruje tuto událost a vymaže odpovídající objednávku.

  3. Pro každý odvolaný přístup vrátí datasetorder a transakci podepsanou vlastníkem, která tento přístup odvolává.

4/ revokeOneAccess, který zruší přístup aplikace ke konkrétní chráněné datové sadě.

Funkce revokeOneAccess je podobná funkci revokeAllAccessObservable s tím rozdílem, že odvolání je pro jeden přístup. Vlastník dat zavolá revokeOneAccess se vstupním údajem enabledAccess, aby zahájil odvolání tohoto přístupu. Hodnotu provideAccess lze získat z funkce fetchGrantedAccess. Poté revokeOneAccess spustí následující kroky:

  1. Požádejte o odvolání odpovídajícího datasetoderu smart kontraktu PoCo, který vyvolá událost tohoto odvolání. Marketplace API pozoruje tuto událost a vymaže odpovídající objednávku.

  2. Vraťte datasetorder a transakci podepsanou vlastníkem, která ruší přístup.

5/ fetchProtectedData, která načítá zašifrovaná data chráněná DataProtector.

Uživatel volá funkci fetchProtectedData s volitelným filtrem vlastníka (pro získání pouze zašifrovaných dat konkrétního uživatele) a/nebo filtrem dataSchema (pro načtení zašifrovaných dat s konkrétním schématem). Poté funkce fetchProtectedData zpracuje následující kroky:

  1. Dotaz na chráněná data do podgrafu DataProtector, volitelně odpovídající filtrům.

  2. Vraťte uživateli pole požadovaných chráněných dat, tj. jméno, adresu, vlastníka a schéma každého chráněného údaje, volitelně odpovídající filtrům.

6/ fetchGrantedAccess, který poskytuje seznam přístupů udělených ke konkrétním chráněným datům.

Funkce fetchGrantedAccess má podobný mechanismus jako funkce fetchProtectedData s tím rozdílem, že požadavek se týká udělených přístupů k daným chráněným datům. Tento požadavek funguje následovně:

  1. Uživatel volá fetchGrantedAccess s protectedData jako vstup. Volitelně může uživatel požádat pouze autorizované aplikace a/nebo autorizovaného žadatele zadáním filtrů autorizovaná aplikace a autorizovaný uživatel.

  2. fetchGrantedAccess dotazuje datasetorder odpovídající filtrům rozhraní API Marketplace a vrátí pole všech udělených přístupů.

Příklad použití: Web3Mail

Pomocí DataProtector je Web3Mail nástroj pro vývojáře k vytváření aplikací, které umožňují posílání e-mailů majitelům účtu Ethereum bez znalosti jejich e-mailové adresy. Využitím tohoto nástroje mohou koncoví uživatelé eliminovat požadavek na sdílení své e-mailové adresy s více třetími stranami, což výrazně snižuje rizika spojená s úniky dat a spamem.

Web3Mail spoléhá na DataProtector při ochraně e-mailových adres a interakci s protokolem iExec, sendEmail DApp a službou mailjet při odesílání e-mailů.

Na iExec Marketplace poskytovatelé aplikací vytvářejí a podepisují ‚apporders‘, které určují řízení aplikace, např. poplatek za každé provedení DApp. Ve Web3Mail je sendEmail DApp již nasazen a odpovídající apporder byl podepsán a publikován na iExec Marketplace. SendEmail DApp vezme předmět a obsah e-mailu jako tajemství žadatele a odešle e-mail na chráněnou e-mailovou adresu.

V protokolu iExec jsou tajná tajemství žadatele parametry, které jsou vystaveny pouze autorizovaným aplikacím uvnitř enkláv a nikdy je neopouštějí. Ve Web3Mail má k předmětu a obsahu e-mailů přístup pouze sendEmail DApp.

Za prvé, majitelé účtu Ethereum používají DataProtector k ochraně svých e-mailových adres a udělují oprávnění ostatním uživatelům posílat jim e-maily. Majitel účtu Ethereum může určit předem stanovený limit pro přístup ke svému chráněnému e-mailu. Po dosažení tohoto limitu musí majitel účtu zavolat funkci grantAccess aplikace DataProtector, aby mu udělila povolení k zasílání dalších e-mailů.

Pro každý chráněný e-mail byla vytvořena datová sada a odpovídající datasetorder byl podepsán a publikován na iExec Marketplace a indexován pomocí Graph.

Web3Mail se skládá ze dvou funkcí:

  • fetchMyContacts, která vrátí seznam účtů Ethereum, jejichž majitelé povolili jejich zasílání e-mailem. Uživatel zavolá funkci fetchMyContacts, která spustí následující kroky:

  1. Odešlete žádost do rozhraní API Marketplace o obnovení seznamu objednávek datových sad, pro které vlastníci udělili uživateli oprávnění k přístupu a využívání jejich chráněné datové sady.

  2. Vyžádejte si odpovídající chráněné datové sady pro Graph.

  3. Ověřte, zda každá datová sada obsahuje pole e-mailu a ujistěte se, že schéma každé chráněné datové sady odpovídá ‘email:string’.

  4. Vraťte uživateli seznam platných kontaktů, včetně chráněné datové sady a adres vlastníků.

  • sendEmail, který odešle e-mail uživateli tak, že zná pouze účet Ethereum

Uživatel vyvolá funkci sendEmail k odeslání e-mailu autorizovanému držiteli účtu Ethereum, který lze získat pomocí funkce fetchMyContacts. Uživatel zadá předmět emailu emailSubject, obsah emailu emailContent a chráněnou emailovou adresu protectedData.

Funkce sendEmail vytvoří a podepíše objednávku nazvanou „requestorder“ pro vyžádání provedení sendEmail DApp. Proces této funkce je tedy podobný vytvoření požadavku na úlohu v protokolu iExec.

V ekosystému iExec je úloha instancí, kde je vyžadován výpočetní výkon. Úkolem je provedení dohody mezi datasetorder, apporder, requestorder a workerpoolorder, která označuje, kteří pracovníci jsou k dispozici pro kterou kategorii úkolů. Ve Web3Mail je úlohou provedení sendEmail DApp s chráněným e-mailem jako datovou sadou, předmětem e-mailu a obsahem e-mailu jako tajemstvím žadatele.

sendEmail zpracovává následující kroky:

  1. Dotazem na SMS zkontrolujte existenci tokenu úložiště. Tento token se používá jako ověřovací token pro pracovníka k nahrání výsledku úlohy. Tím je zajištěno, že výsledek úkolu může odeslat pouze oprávněný pracovník.

  2. Vyžádejte si odpovídající chráněnou datovou sadu pro Graph a ověřte, zda každá datová sada obsahuje pole pro e-mail.

  3. Požadavek na Marketplace API: Datasetorder chráněného e-mailu s chráněnou datovou adresou, apporder sendEmail DApp, workerpoolorder

  4. Odeslat předmět e-mailu a obsah e-mailu jako tajemství žadatele (další podrobnosti naleznete v technické dokumentaci iExec).

  5. Vytvořte a podepište requestorder pro vyžádání provedení sendEmail DApp s emailSubject a emailContent jako tajnými informacemi žadatele. V requestorderu může uživatel specifikovat cenu, kterou je ochoten zaplatit za provedení úkolu.

  6. Informujte smart kontrakt PoCo, že existuje shoda objednávek mezi apporder, datasetorder, workerpoolorder a requesterorder. Poté chytrá smlouva PoCo: ověří a potvrdí shodu, vydá shodu objednávek a upozornění plánovači skupiny pracovníků, vrátí dohodu

  7. Požadavek na výpočet odpovídajícího úkolu obchodu k chytré smlouvě PoCo. Plánovač, který již sledoval shodu objednávek a oznámení z chytré smlouvy PoCo, zahájí úlohu, která spustí spuštění sendEmail DApp.

  8. Vraťte taskid uživateli.

Omezení těchto nástrojů

DataProtector a tak Web3Mail využívají Confidential Computing (CC) vyvinutý společností iExec. SMS používaná v iExec CC je centralizovaná komponenta, ve které uživatelé posílají svá tajemství, např. tajný klíč pro šifrování dat. Když je přijat tajný klíč, SMS vytvoří zabezpečenou relaci v rámci CAS (Configuration and Attestation Service), vloží tajný klíč a udělí aplikaci přidružené k requestorderu k němu přístup. Vzhledem k centralizované povaze SMS však existuje potenciální jediný bod selhání. Pokud CAS nebo SMS procházejí aktualizací nebo jsou mimo provoz, existuje riziko ztráty uložených tajemství. K vyřešení tohoto problému iExec aktivně pracuje na decentralizaci SMS, čímž zmírňuje výše uvedený problém a zvyšuje celkovou odolnost systému.

Je důležité poznamenat, že Web3Mail využívá služby Mailjet, využívající zprostředkující e-mailovou adresu pro usnadnění odesílání e-mailů. Úroveň důvěry ve Web3Mail je přímo spojena s důvěrou vloženou do služby mailjet a iExec, které ji provozují, a mají možnost přístupu k e-mailovým adresám a obsahu e-mailů.

Děkuji za přečtení!

💬 Pokud se chcete na cokoliv zeptat ohledně těchto nástrojů nebo se dozvědět o možnostech financování, neváhejte se obrátit na tým iExec na našem oficiálním serveru Discord.

📚Začněte s těmito nástroji, podívejte se na dokumentaci iExec

$RLC #iExec #AI #Web3 #blockchain #Dapps