Sto costruendo un open source distribuito (e in parte non in linea replicato, poiché si presume che la rete sia instabile) CMS e uno dei "lavori" del core system saranno raggruppare tutti i file e generare un hash univoco da loro.
Questo hash speciale verrà verificato con un vero hash per vedere se corrispondono, in modo da garantire che nessuno modifichi la fonte maliziosamente.
Se entrambe le corrispondenze hash possono tranquillamente andare avanti con il processo e in particolare con la replica, se non viene trovata alcuna corrispondenza, otteniamo l'ip / proxy / tor-node e blocciamo i successivi tentativi di unione.
Ok, aggiungiamo un contesto ...
Supponiamo di avere una cartella chiamata "cmsfiles" e all'interno abbiamo i file: app.py, dbconn.py, users.py, reputation.py, node_list.py, blacklist.py ecc ..
C'è John, il fondatore di un portale chiamato "Ultime notizie". Ha un vero e proprio hash ("originalhash") ed è nella "lista dei nodi", quindi è un punto di riferimento da controllare.
Ora, Dan che è interessato al portale vuole unirsi a esso per avere il suo accordo di partecipazione (sia esso discussioni o qualsiasi altra cosa) .. così scarica e installa (lascia che sia python + sharq Sqlite) il software suggerito dal portale di sola lettura.
Ora, quando visita di nuovo il portale, viene visualizzato un messaggio che dice qualcosa come "Stiamo controllando l'integrità prima di allineare entrambe le macchine, tenerti stretto e aspettare" .. quello che succede in sottofondo è che le macchine di John vengono contattate (dalla lista degli indirizzi della lista dei nodi) che poi continua a raggruppare tutti i file macchina di Dan in "cmsfiles" in un singolo hash e confrontarli con quelli genuini ... se entrambi gli hash corrispondono, la macchina di Dan viene aggiunta alla lista node_list e la sua il database viene scaricato / aggiornato e segue quindi il "treno" di John.
Passano due giorni dall'ingresso di Dan ..
Arriva un altro tizio chiamato "Jack", ma con intenzioni malevole, mentre modifica il file "reputation.py" in modo da superare la limitazione di 120 punti per votare.
Vede la stessa cosa di Dan ma sullo sfondo succede qualcosa di poco diverso ..
Quando la macchina di John o Dan controlla l'hash, scoprono che non corrisponde al richiedente, quindi o la macchina di John o Dan continua a buttarlo fuori dalla rete mettendolo nella lista "blacklist.py".
nota: se Jack modificasse manualmente gli indirizzi nell'elenco per provare a convalidare la sua macchina, sarebbe da solo e avrebbe appena creato il proprio portale senza alcun danno per gli altri portali già esistenti
Ciò di cui non sono sicuro è se questo può essere considerato un sistema sicuro e che nessuno può simulare / bypassare l'hash in qualche modo. O forse se sto facendo male e dovrebbe essere fatto in un modo diverso?
P.S. È stato in parte ispirato al funzionamento interno di Bitcoin e Osiris sps.