s3rrallonga / s3rrallonga.github.io

TsunamiD
54 stars 57 forks source link

Discussió sobre l'arquitectura de xarxa #9

Open retroixer opened 4 years ago

retroixer commented 4 years ago

Vull discutir el disseny de l'aplicació.

Retroshare em sembla una bona decisió. És millor que una aplicació p2p, és f2f, friend to friend. Això vol dir que només fa connexions (TCP xifrades amb TLS pel transport, xifrades amb GPG pel contingut) a "nodes" que has afegit prèviament. Els nodes "amics" coneixen la teva IP i claus públiques, els que no ho són, poden solicitar crear túnels tipus turtle, fent salts entre nodes de confiança, per arribar a tu. El teu node només veu connexions TCP que arriben de nodes coneguts, però signats per "identitats remotes".

Per descobrir quina IP té cada node en cada moment fa servir principalment una DHT pública, però això pot portar problemes perquè la DHT es pot enverinar amb entrades falses. També es poden descobrir les IP d'altres nodes per "rumors", és a dir, el node amic A et diu quina IP té el node amic B. Però això es trenca ràpid i és fàcil arribar a quedar-se sense ningú connectat.

Retroshare tant permet fer una xarxa molt mallada, com molt centralitzada en un sol servidor, si passa que tothom afegeix un node central amb una IP coneguda per tothom. No seria una bona idea de disseny i retroshare no aportaria res. Per conèixer els detalls del protocol de xarxa, hi ha una presentació al FOSDEM i un article del contribuïdor principal explicant-ho.

Ha estat possible crear una aplicació per mòbil perquè existeix una llibreria nativa per Android. Crec que per això encara no està per iPhone. Hi ha una app en alpha de Retroshare per mòbil. Potser pot servir per veure amb qui s'està connectant l'aplicació del tsunami.

Dic tot això en obert perquè qui vulgui atacar la xarxa tard o d'hora esbrinarà com, i si ho publiquem en obert arribarà molt abans a tothom que pugui fer-hi un cop de mà.


En resum, sembla una bona decisió, però cal veure:

Com últim apunt @s3rrallonga , seria una bona idea tenir diversos nodes de RS amb connexions de confiança diferents a la xarxa per publicar la informació. Si no, poc a poc es pot anar estirant al fil fins descobrir qui té més contactes afegits, qui està servint més túnels, etc. A més que els mòbils de la gent central tindran massa trànsit.


EDITO: afegeixo recursos

retroixer commented 4 years ago

Obro fil nou a partir de les converses de #4. Publicar-ho a #4 em semblava off-topic.

alfred82santa commented 4 years ago

Sent un p2p/dht entenc que els QR han de servir per a fer el bootstrap (a falta de trackers és necessari saber d'algú que ja hi sigui a la xarxa). Al QR supose que hi ha codificada la IP (o identificador) del qui et convida. Fàcilment es podria comprovar: si escaneges un codi que ha estat generat per un "friend" que té el mòbil apagat no hauria de funcionar.

retroixer commented 4 years ago

El partit pirata també ha analitzat l'aplicació al seu blog.

Crec que en general aporta molt, però hi ha alguns detalls que em sembla que no han entès bé. Cito:

Retroshare fa servir una DHT (Distributed Hash Table o Taula d’Empremta Distribuïda) per indicar a quina adreça IP es troba cada amic.

ok

Aquesta informació és pública i per tant, relaciona la nostra clau amb una adreça IP.

Cert, però la nostra identitat no és pública. Per interactuar amb altres usuaris es fan servir un altre tipus d'identitat, les "identitats remotes". Només els nodes que afegim tindran la nostra "identitat de node" i podran saber la nostra IP a través de la DHT.

Les "identitats remotes" són parells de claus asimètriques que es poden crear i destruir per presentar-se a la xarxa amb màscares diferents. És obligatori fer servir una identitat remota per comunicar-se amb un node que no has afegit, en termes de xarxa, un node que està a més d'un salt de distància.

Existeixen dues integracions amb xarxes anònimes (I2P i Tor) que permeten ocultar la IP del dispositiu, però com dèiem abans, no podem confirmar si se’n fa ús.

ok, jo crec que no hi són. Estarien a /lib de l'aplicació.

Entenem que les persones que han desenvolupat l’aplicació hauran activat una de les dues, però aquí és on es troba un punt d’especulació.

No necessàriament. Com hem dit més amunt, la nostra IP queda publicada a la DHT i es pot esbrinar, però només ho pot fer qui coneix la nostra "identitat de node", que és només la gent a qui hem afegit. I això deixa camí obert pel següent comentari.

Abans però, un comentari més sobre les identitats remotes: no es publiquen a la DHT, i no tenen cap IP associada. Opcionalment, es pot signar una identitat remota amb la identitat de node, per tal de poder donar autenticitat en cas que es desitgi, igual que funciona el correu o salvant totes les distàncies, els comptes verificats de twitter. Les identitats remotes signades sí que estan vinculades a una adreça IP a través de la identitat del node. Però és totalment opcional.

retroixer commented 4 years ago

Com hem dit més amunt, la nostra IP queda publicada a la DHT i es pot esbrinar, però només ho pot fer qui coneix la nostra "identitat de node", que és només la gent a qui hem afegit. I això deixa camí obert pel següent comentari.

En l'aplicació oficial de retroshare, el procediment per connectar-se 2 persones és el següent:

  1. Cadascú s'instal·la l'aplicació i genera automàticament una identitat de privada de persona, una de node i una identitat remota. La identitat de persona signa la de node, i la de node signa la remota. Una mateixa "persona" pot tenir més d'un dispositiu/node associat (portàtil i mòbil) i cada node, pot tenir més d'una identitat remota anònima o signada. Tantes com necessiti. També es demana una contrasenya per xifrar les claus privades. (nota al peu sobre identitats)

  2. Cadascú fa arribar a l'altre la pròpia identitat de node, bé a través de text (una estructura de dades binària codificada en base64), bé a través d'un QR (crec que sense codificar). Això fa que cada aplicació (node) accepti connexions de l'altra, i l'avisi que s'hi vol connectar.

  3. Quan aconsegueixen connectar-se, comença l'intercanvi d'informació. S'envien les identitats remotes conegudes, anuncien els fòrums i canals que es segueixen, etc.

  4. A partir d'aquí, qualsevol missatge que arribi a un d'aquests nodes, si no és per ell mateix, el desarà fins que els dos estiguin online alhora, moment en què li enviarà, o bé fins que passi la data de caducitat o si el missatge ha viatjat massa lluny (massa salts).

Coneixent això, i sempre tenint en compte que l'ús de la llibreria de retroshare dóna moltes possibilitats, una implementació mínima, i la meva aposta, és la següent:


Notes Sobre el pas 1: un debat de la comunitat de Retroshare és la nomenclatura confusa. Jo faig servir consistenment els tres noms, però al paper, fan servir "identity" per parlar de "identitat remota", i "node identity" per parlar de "identitat de node". No especifiquen les "identitats de persona" perquè el paper no és tant de retroshare com de GXS, el nucli programat en la llibreria, que és el que fa servir TsunamiD

IsmaelMartinez commented 4 years ago

He estat mirant una mica tot això més però curiositat que per res me. Jo sospito que el QR seria la Public Key d'un dels participants de node.

L'única part que és més complicada és que la informació que quedi a la xarxa serà difícil d'eliminar (perquè està distribuïda per la xarxa). Limitant-ho amb l'app seria suficient.

Si un actor dolent arriba a la xarxa, hauria de ser possible treure'l del node sense afectar la resta de la xarxa (si no he entès malament) i el tema de les IPs amb la xarxa Tor seria suficient per protegir la identitat de la gent.

Gracies per el links. M'agrada aprendre coses d'aquestes i, si es pot, ajudar a millorar-ho

retroixer commented 4 years ago

Desenvolupo una mica les conseqüències que tindria que cada QR identifiqués un node amb una IP pròpia:

Pot ser també que no pretenguin arribar a tanta gent, o que sigui car fer-ho, i això explicaria també l'escassetat de QR, però no sembla el disseny inicial.

En fi, quin misteri.

IsmaelMartinez commented 4 years ago

No es l’app distribuida (aka cada usuari) es un servidor

On Wed, 23 Oct 2019 at 11:00, retroixer notifications@github.com wrote:

Desenvolupo una mica les conseqüències que tindria que cada QR identifiqués un node amb una IP pròpia:

  • Suposant que volen mobilitzar a través de l'app al mític 3,5% de la població d'un territori
  • Amb una població de 7M persones a Catalunya
  • A ràtio de 10 persones per node Surten 24 mil servidors, que és molt. Suposant que cada servidor està en un VPS baratet, que costi 3 € al mes, la despesa mensual es dispararia. Així que o bé m'equivoco molt, o bé els nodes es faran més grans que per cada 10 persones. O tenen "nodes" servidors amb IP diferents, perquè funcionen darrere de VPN, etc.

Pot ser també que no pretenguin arribar a tanta gent, o que sigui car fer-ho, i això explicaria també l'escassetat de QR, però no sembla el disseny inicial.

En fi, quin misteri.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/s3rrallonga/s3rrallonga.github.io/issues/9?email_source=notifications&email_token=AADJHEEZWUYPZ6IINBNS6JLQQAOELA5CNFSM4JBKBDK2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECA2OUQ#issuecomment-545367890, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADJHECAJ25GJFWXGO2SYO3QQAOELANCNFSM4JBKBDKQ .

retroixer commented 4 years ago

Pots elaborar una mica més? No entenc què vols dir.

IsmaelMartinez commented 4 years ago

https://www.google.co.uk/search?client=safari&hl=en-gb&sxsrf=ACYBGNSja5EA69cvttb1aGI_R3ZkDSaO7Q%3A1571825414300&ei=BiewXaP-EZOj1fAP2_ukiAI&q=distributed+network+diagram&oq=distributed+networking&gs_l=mobile-gws-wiz-serp.1.0.0i71l5.0.0..10657...0.1..0.0.0.......0.45ddCWuQGlc#imgrc=yymRkkXrCdwXjM :

On Wed, 23 Oct 2019 at 11:07, retroixer notifications@github.com wrote:

Pots elaborar una mica més? No entenc què vols dir.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/s3rrallonga/s3rrallonga.github.io/issues/9?email_source=notifications&email_token=AADJHEBMIBBXTZVCXWACGJTQQAO5RA5CNFSM4JBKBDK2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECA3CRY#issuecomment-545370439, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADJHEDDHN5AKJ26HGPYJJLQQAO5RANCNFSM4JBKBDKQ .

retroixer commented 4 years ago

https://www.google.co.uk/search?client=safari&hl=en-gb&sxsrf=ACYBGNSja5EA69cvttb1aGI_R3ZkDSaO7Q%3A1571825414300&ei=BiewXaP-EZOj1fAP2_ukiAI&q=distributed+network+diagram&oq=distributed+networking&gs_l=mobile-gws-wiz-serp.1.0.0i71l5.0.0..10657...0.1..0.0.0.......0.45ddCWuQGlc#imgrc=yymRkkXrCdwXjM :

No vull ni puc obrir enllaços de google perquè bloqueja els usuaris de tor, però em sembla que has enviat una imatge dient la diferència entre distribuït, centralitzat, etc. La conec i conec els conceptes.

No es l’app distribuida (aka cada usuari) es un servidor

El problema no és que no entengui les paraules que fas servir, sinó que què vols dir amb això. Fixa't que no hi ha subjectes o atributs.

IsmaelMartinez commented 4 years ago

Que si es distribuída no hi han servidors. Els clients fan el treball dels servidors així que, en principi, no tens que contar amb els costos de servidors. Perdoneu però tinc un constipat que m'ha deixat futut

On Wed, 23 Oct 2019, 12:08 retroixer, notifications@github.com wrote:

https://www.google.co.uk/search?client=safari&hl=en-gb&sxsrf=ACYBGNSja5EA69cvttb1aGI_R3ZkDSaO7Q%3A1571825414300&ei=BiewXaP-EZOj1fAP2_ukiAI&q=distributed+network+diagram&oq=distributed+networking&gs_l=mobile-gws-wiz-serp.1.0.0i71l5.0.0..10657...0.1..0.0.0.......0.45ddCWuQGlc#imgrc=yymRkkXrCdwXjM :

No vull ni puc obrir enllaços de google perquè bloqueja els usuaris de tor, però em sembla que has enviat una imatge dient la diferència entre distribuït, centralitzat, etc. La conec i conec els conceptes.

No es l’app distribuida (aka cada usuari) es un servidor

El problema no és que no entengui les paraules que fas servir, sinó que què vols dir amb això. Fixa't que no hi ha subjectes o atributs.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/s3rrallonga/s3rrallonga.github.io/issues/9?email_source=notifications&email_token=AADJHEFM57KD4RACFBAS3MTQQAWCDA5CNFSM4JBKBDK2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECBAIWI#issuecomment-545391705, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADJHEBPRC5UOMXC4XXACZLQQAWCDANCNFSM4JBKBDKQ .

paracomentar commented 4 years ago

Para esta aplicación cumpla el objetivo que se marca hay muchísimas variables que es complicado controlar:

Según mi opinión, es cuestión de tiempo de que la integridad y la confidencialidad del sistema se vean comprometidos, si no lo han sido ya.