Costruire un Registro Audibile Forte per l'Integrità dei Dati
Un metodo per creare registri affidabili e verificabili nei sistemi distribuiti.
― 7 leggere min
Indice
- La necessità di auditabilità
- Lavori correlati
- Contributi
- Organizzazione del documento
- Modello di sistema
- Modello di guasto
- Primitivi di comunicazione
- Registro atomico auditabile a scrittore singolo/multi-lettore
- Sistemi correlati e impossibilità
- Risultati di impossibilità
- Specifica della soluzione
- Descrizione dell'algoritmo
- Prova dell'efficacia dell'algoritmo
- Conclusione
- Fonte originale
Un Registro Auditabile aggiunge la possibilità di controllare chi ha letto le informazioni in esso memorizzate. Questo documento discute come costruire un tale registro che possa gestire problemi causati da server difettosi, noti come guasti bizantini. Questi guasti si verificano quando alcuni server forniscono risposte errate o non seguono il protocollo previsto. Il nostro obiettivo è creare un modo affidabile per registrare e auditare l'accesso ai dati in un sistema dove i server comunicano in modo asincrono, il che significa che non devono operare in sincronia.
Quando si implementano registri auditabili, è importante avere un numero sufficiente di server. Lavori precedenti hanno dimostrato che sono necessari almeno 4f + 1 server, dove f è il numero massimo di server che possono guastarsi. Tuttavia, mostriamo che per certe condizioni, è possibile utilizzare solo 3f + 1 server mantenendo forti capacità di auditing.
La necessità di auditabilità
Oggi molte persone e organizzazioni usano sistemi di archiviazione distribuita di terze parti. Questi sistemi offrono spazio e accessibilità aggiuntivi, ma presentano sfide legate alla fiducia nei dati, alla privacy e alla sicurezza. Gli utenti devono fare affidamento sui fornitori di archiviazione per mantenere l'integrità dei propri dati. Eventi recenti hanno evidenziato i rischi associati alle vulnerabilità di archiviazione dei dati e la necessità di una regolamentazione e protezione adeguata dei dati.
Questo lavoro cerca di fornire un metodo per monitorare chi accede ai dati memorizzati, migliorando la sicurezza dei sistemi di archiviazione distribuiti. Immaginiamo un'impostazione in cui i clienti (utenti) possano controllare tutte le azioni di lettura eseguite sui dati senza rivelare le azioni di coloro che non vi hanno avuto accesso.
Lavori correlati
Risultati pubblicati in precedenza hanno gettato le basi per registri auditabili. Questo articolo introduce un nuovo algoritmo per costruire un Registro Atomico auditabile forte usando 3f + 1 server, migliorando i metodi precedenti che assicuravano solo capacità di auditing di base.
Contributi
I principali contributi di questo lavoro includono:
- Un algoritmo innovativo per implementare un registro atomico auditabile forte con 3f + 1 server.
- Un'implementazione in Rust utilizzando Zenoh, dimostrando l'algoritmo in pratica.
Organizzazione del documento
La struttura del documento è la seguente:
- Modello di sistema: descriviamo l'impostazione del sistema distribuito.
- Definizioni di registro auditabile: delineiamo le funzioni e le proprietà dei nostri registri.
- Limiti sul numero di server: discutiamo il numero minimo di server necessari per creare un registro auditabile.
- Algoritmo ottimale: presentiamo l'algoritmo più efficiente e ne proviamo la correttezza.
- Contesto multi-scrittore: consideriamo come adattare più scrittori mantenendo i guasti bizantini.
Modello di sistema
Nel nostro modello utilizziamo un insieme di processi che comunicano tramite messaggi. Ogni processo ha un identificatore unico e può agire come client o server. I server sono responsabili di mantenere il registro, mentre i client possono leggerne e scriverne. Solo un client designato, lo scrittore, può scrivere nel registro, mentre qualsiasi numero di client può leggere il suo contenuto.
Dobbiamo garantire che tutti i processi corretti seguano lo stesso protocollo affinché il sistema funzioni efficacemente. Un processo bizantino può guastarsi in modi imprevisti. Definiamo le interazioni e i metodi di comunicazione per client e server, inclusi broadcasting affidabile e comunicazione diretta.
Modello di guasto
In questa configurazione, tutti i processi devono funzionare correttamente secondo un protocollo definito. Se un processo agisce in un modo che contraddice questo, viene contrassegnato come bizantino. Lo scrittore può guastarsi semplicemente fermandosi, mentre qualsiasi numero di lettori può essere bizantino. Tuttavia, assumiamo che i lettori difettosi non collaborino tra loro.
Primitivi di comunicazione
Per facilitare la comunicazione, utilizziamo un metodo di broadcasting affidabile. Quando un processo corretto invia un messaggio, questo verrà eventualmente ricevuto da tutti i processi corretti. Inoltre, stabiliamo una comunicazione punto a punto, dove i messaggi inviati da un processo raggiungeranno il destinatario previsto senza perderli o duplicarli.
Registro atomico auditabile a scrittore singolo/multi-lettore
Qui delineiamo le funzioni di un registro atomico. Questo oggetto condiviso fornisce due operazioni principali:
- Scrivere: consente allo scrittore designato di assegnare un valore al registro.
- Leggere: consente a qualsiasi processo di ottenere il valore attuale dal registro.
L'atomicità significa che le operazioni sembrano avvenire in un ordine rigoroso, anche quando avvengono contemporaneamente. Introduciamo l'operazione di audit, che tiene traccia dell'accesso al registro.
L'operazione di audit consente allo scrittore di monitorare quali lettori hanno accesso al registro, creando un elenco di lettori e dei valori che hanno recuperato. Tuttavia, se un lettore accede a un valore e lo rivela senza utilizzare il meccanismo di audit, questo non verrà riportato.
Sistemi correlati e impossibilità
Ricerche precedenti indicano che costruire un registro auditabile con server bizantini può essere una sfida, specialmente quando almeno un server ha una copia completa dei dati. Se un lettore difettoso accede ai dati da quei server, potrebbe farlo senza lasciare traccia di accesso.
Per affrontare questo, suggeriamo di utilizzare tecniche di condivisione segreta e dispersione dell'informazione. Quando lo scrittore memorizza informazioni, le crittografa e le suddivide in più parti per garantire la sicurezza e ridurre le necessità di spazio. In questo modo, i lettori devono raccogliere più parti per ricostruire il valore.
Risultati di impossibilità
Dimostriamo che non è possibile creare un registro auditabile con meno di 4f + 1 processi senza consentire la comunicazione tra server. Analizziamo quanti blocchi sono necessari per un'operazione di audit efficace, estendendo i risultati esistenti al nostro sistema.
Concludiamo che se vengono utilizzati solo pochi server, il potenziale per lettori bizantini di sfruttare il sistema aumenta notevolmente, il che renderebbe l'audit inefficace.
Specifica della soluzione
Forniamo un algoritmo in grado di implementare un registro atomico auditabile forte, rimanendo resiliente ai guasti. Questo sistema richiede 3f + 1 server per garantire prestazioni ottimali. Sottolineiamo che la comunicazione tra server è essenziale, poiché consente una migliore coordinazione e garantisce che l'auditabilità possa essere raggiunta senza eccessivo sovraccarico.
Descrizione dell'algoritmo
L'algoritmo ha variabili specifiche sia per il lato dello scrittore che per quello del lettore, dettagliando come sono strutturati e elaborati i messaggi. Lo scrittore trasmette aggiornamenti, mentre i server confermano gli aggiornamenti dopo averli elaborati.
L'operazione di lettura coinvolge più fasi, garantendo che il lettore raccolga le informazioni necessarie per auditare efficacemente le risposte dei server. L'operazione di audit viene condotta in modo simile, con processi che inviano richieste e ricevono registri dai server per verificare i lettori.
Prova dell'efficacia dell'algoritmo
Proviamo che l'algoritmo presentato soddisfa i requisiti di atomicità e auditabilità. La prova mostra che ogni operazione di lettura eseguita da un processo corretto restituisce un valore valido. Ogni server registra le azioni e le risposte, garantendo che il sistema mantenga precisione e completezza.
Mostrando il comportamento del sistema in diverse condizioni, ci assicuriamo che il nostro meccanismo di audit possa monitorare efficacemente quali lettori hanno avuto accesso ai valori memorizzati nel registro. L'algoritmo tiene conto di potenziali problemi causati da processi difettosi e garantisce l'affidabilità dei dati recuperati.
Conclusione
In sintesi, abbiamo sviluppato un nuovo metodo per creare un registro atomico auditabile forte che opera in un sistema distribuito. Abbiamo affrontato le sfide dei guasti bizantini assicurandoci che il nostro sistema mantenga l'integrità dei registri di accesso ai dati. Utilizzando una combinazione di crittografia, condivisione segreta e comunicazione affidabile, abbiamo gettato le basi per soluzioni di archiviazione dei dati più sicure che possono essere fidate dagli utenti.
I nostri risultati offrono spunti preziosi per migliorare le capacità di audit nei sistemi di archiviazione distribuita, aprendo la strada a una maggiore sicurezza e affidabilità nella gestione dei dati. L'approccio delineato qui può servire come riferimento per lavori futuri in questo dominio, contribuendo ai progressi nei sistemi distribuiti e alle loro applicazioni.
Titolo: Preliminaries paper: Byzantine Tolerant Strong Auditable Atomic Register
Estratto: An auditable register extends the classical register with an audit operation that returns information on the read operations performed on the register. In this paper, we study Byzantine resilient auditable register implementations in an asynchronous message-passing system. Existing solutions implement the auditable register on top of at least 4f+1 servers, where at most $f$ can be Byzantine. We show that 4f+1 servers are necessary to implement auditability without communication between servers, or implement does not implement strong auditability when relaxing the constraint on the servers' communication, letting them interact with each other. In this setting, it exists a solution using 3f+1 servers to implement a simple auditable atomic register. In this work, we implement strong auditable register using 3f+1 servers with server to server communication, this result reinforced that with communication between servers, auditability (event strong auditability) does not come with an additional cost in terms of the number of servers.
Autori: Antonella Del Pozzo, Antoine Lavandier, Alexandre Rapetti
Ultimo aggiornamento: 2023-09-19 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2309.10664
Fonte PDF: https://arxiv.org/pdf/2309.10664
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.