Modelli per dati decentralizzati / federati

1

Qualcuno può indicarmi schemi o materiale su architetture di progettazione / dati federati / servizi decentralizzati?

Per fornire ulteriori informazioni sul problema che sto cercando di risolvere, ecco il contesto completo. Ho avuto un'idea per un po 'di tempo per creare un "libro di indirizzo inverso". Ad esempio, piuttosto che avere una lista di tutti i miei amici, i loro numeri di telefono, indirizzi, compleanni, ecc., mi prendo solo la responsabilità di gestire la mia propria rubrica. Posso quindi collegarmi ai miei amici per vedere le loro voci (o qualsiasi parte delle loro voci che sono felici di condividere con me). In questo modo, se cambio casa o ottengo un nuovo numero di telefono, aggiorno il mio record e tutti quelli a cui ho dato il permesso di vedere che le informazioni vedono il mio record aggiornato automaticamente nella loro rubrica.

Quanto sopra è semplice se stiamo parlando di un singolo sistema ... Ma questa idea è grande (cioè risolve un sacco di problemi GDPR, potenzialmente significa che non devo più contattare 50 aziende diverse quando mi trasferisco a casa per dire loro che mi sono trasferito, le aziende possono salvare una fortuna sprecata cercando di rintracciare coloro che non hanno dato loro queste informazioni, ecc.).

In quanto tale, sembra irragionevole avere un sistema che trattiene & controlla tutte queste informazioni. Gli utenti interessati alla sicurezza potrebbero voler eseguire la propria istanza che contiene le proprie informazioni; ma permetti comunque agli amici di usare l'implementazione dello status quo per accedere ai loro dati. In alternativa, altre società potrebbero voler ospitare i propri gusti di tale sistema, quindi non è un monopolio; ma di nuovo vorremmo che gli utenti di qualsiasi implementazione di questa soluzione fossero in grado di vedere gli altri utenti anche se si trovano su un'implementazione diversa (nello stesso modo in cui puoi utilizzare qualsiasi provider di posta elettronica e parlare ancora con gli amici di altri provider di posta) .

Scusa che questa è una domanda abbastanza sciolta; Ho provato a cercare ma non conosco abbastanza terminologia in quest'area per conoscere i termini di ricerca corretti, poiché tutti i sistemi su cui ho lavorato fino ad oggi sono stati centralizzati, o al massimo disponevano di un database master con più slave, piuttosto che essere completamente decentrato / federato.

Ho trovato alcune idee su questo argomento:

  • Avere un registro centralizzato, ma lasciare tutto il resto decentralizzato. Quindi qualsiasi sistema che fornisce questa funzionalità aggiunge il proprio URI al registro dopo il quale tutti i sistemi possono vederlo ... Comunque non mi piace questa soluzione, come se possibile, non voglio alcuna dipendenza centralizzata.

  • Fai in modo che ogni implementazione tenga un elenco di fornitori approvati (ad esempio per qualsiasi grande azienda che ospita soluzioni pubbliche) e che consenta agli utenti di aggiungere "provider ad-hoc" ai loro elenchi di "provider fidati" personali per soddisfare casi speciali (ad es. amici che gestiscono le proprie istanze / società private che si trovano in istanze di casa). Sostanzialmente un modello simile a come i certificati SSL sono attualmente gestiti nei browser; Le CA riconosciute sono fornite dal fornitore del browser (alcune di queste liste sono pubblicate per uso generale), ma è sempre possibile aggiungere le proprie CA al browser in caso di necessità.

posta JohnLBevan 19.01.2018 - 18:54
fonte

2 risposte

1

Analizziamo il problema:

  • Hai bisogno di un modo per identificare gli utenti
  • Dato un identificatore, devi avere un modo per determinare come spingere / tirare le informazioni

Inoltre, ovviamente è necessario un qualche tipo di protocollo standard e un modo per gestire i diritti di accesso. Inoltre, l'id utente dovrebbe essere qualcosa che le persone possono ricordare, non un indirizzo IPv6 o simili.

L'approccio alla posta elettronica

Alla fine, non si ottiene la qualche centralizzazione. Ma potresti essere in grado di delegare questa parte a un'infrastruttura già esistente.

Esempio: la posta elettronica, che presenta problemi simili, risolve entrambi questi problemi includendo le informazioni dell'host (server di posta) nell'identificatore utente (indirizzo). Sebbene l'e-mail stessa sia abbastanza distribuita, si affida al DNS per risolvere i nomi host, che è - alla radice - centralizzato. *

Puoi andare in un modo simile. O trovare la propria convenzione di denominazione (ad esempio providerXY.com>>AlbertEinstein79 ) o semplicemente utilizzare il formato di posta elettronica. Puoi anche fare un passo avanti e utilizzare effettivamente la posta elettronica per la comunicazione del tuo sistema, ovvero non definisci un protocollo ma un modello di posta elettronica che gli end-point possono analizzare - non che io raccomandi necessariamente questa rotta.

Uno svantaggio di questo approccio è che lega l'id dell'utente all'host sottostante, il che significa che non puoi realmente spostare il tuo account senza creare un nuovo identificatore. **

* La centralizzazione deriva dal fatto che tutti riconoscono alcuni server come autorevoli.

** Se il tuo sistema è basato su push, puoi usarlo per comunicare agli abbonati il tuo nuovo account. Tuttavia, questo non funziona se qualcuno ha annotato il tuo id su carta e prova ad accedervi dopo la tua mossa. Ad ogni modo, push basato non è probabilmente la strada da percorrere.

Approccio di ricerca

Se si desidera disaccoppiare l'host dall'identificatore utente (in modo che sia possibile cambiare host), è necessario un qualche tipo di servizio di ricerca. Se questo dovrebbe essere decentralizzato, ci sono alcuni problemi da risolvere.

  • Verifica l'univocità degli ID
  • Assicurati che solo il proprietario dell'ID possa modificare l'host
  • Assicurati che una persona non possa creare solo un paio di miliardi di ID

Anche se non sono sicuro (ma aperto a) di archiviare i dati effettivi in una blockchain, sarebbe in effetti un buon punto di riferimento. Non sono davvero un esperto di blockchain, quindi mi asterrò dal prendere in considerazione i dettagli qui, ma mi sembra che i suddetti problemi potrebbero essere risolvibili in questo modo.

    
risposta data 20.01.2018 - 12:57
fonte
2

Il primo @VladislavRastrusny ha ragione.

Questo non è un problema di pattern, un pattern è un modo generale astratto di risolvere un problema astratto noto, che poi (provate a) applicare a un caso concreto.

Qui @JohnLBevan sembra che tu abbia più difficoltà a trasformare un'idea di app / servizio / piattaforma in "realtà".

Quindi segui il mio commento ed elabora:

Blockchain at is core è un sistema di database decentralizzato, distribuito e difficile da temperare (in modo da garantire un certo grado di estensione).

Se ogni utente ha il proprio blocco con le sue informazioni e l'app lo lascia (o altri servizi / app sul suo telefono / computer automaticamente) cerca le informazioni di altre persone.

La parte "link" o "transaction" può essere utilizzata per dare accesso alle informazioni, quindi nella nostra situazione se Bob autorizza Alice a ricevere le sue informazioni, abbiamo la transazione e Bob e Alice sono collegati.

Blockchain come una chiamata di sistema PoW (Prove of Work) e può garantie solo che Bob è in grado di modificare le sue informazioni, quindi ogni punto della rete può essere abbastanza sicuro che non saranno un'altra persona che finge di essere Bob.

Bob è il solo responsabile del suo ingresso e della sua validità. Quando Alice vuole, ad esempio, chiamare Bob, l'app cerca il blocco Bob e se è considerata valida (tramite PoW) dal sistema trasferisce il numero di telefono all'app di composizione e voilà.

Ovviamente questo funziona solo se Bob ha una voce aggiornata, ma questo problema è già qui, e dovendo solo mantenere la tua voce, il costo è abbastanza basso, questo è il punto giusto.

Ecco perché la tua idea è ottima, perché la tua app può diventare un sistema IAM decentralizzato e distribuito (dovrai garantire l'accesso ai dispositivi degli utenti con 2FA).

Nota che esiste un'alternativa alla Blockchain chiamata Hashgraph che potresti voler esaminare anche in questo.

In ogni caso, non sarà facile con qualsiasi mezzo, quindi dovrai circondarti delle persone migliori che puoi.

Ma ancora una volta sembra un'idea grandiosa e ambiziosa, quindi ti auguro buona fortuna.

    
risposta data 20.01.2018 - 15:35
fonte

Leggi altre domande sui tag