IPFS sin dolor (pero eso no es exacto)



A pesar de que en Habré ya no había un artículo sobre IPFS .

Aclararé de inmediato que no soy un experto en este campo, pero he mostrado interés en esta tecnología más de una vez, pero intentar jugar con ella a menudo causaba algo de dolor. Hoy retomé los experimentos y obtuve algunos resultados que me gustaría compartir. En resumen, se describirá el proceso de instalación de IPFS y algunos chips (todo se hizo en ubuntu, en otras plataformas que no probé).

Si se perdió lo que es IPFS, está escrito con algún detalle aquí: habr.com/en/post/314768

Instalación


Para la pureza del experimento, propongo instalarlo de inmediato en algún servidor externo, ya que consideraremos algunas dificultades al trabajar en modo local y remoto. Entonces, si lo desea, no será demolido por mucho tiempo, no hay muchos.

Listo


Documentación oficial
Vea la versión actual en golang.org/dl

Nota: es mejor instalar IPFS en nombre del usuario, que se supone que debe usar los más frecuentes. El hecho es que a continuación consideraremos la opción de montaje a través de FUSE y hay sutilezas allí.

cd ~ curl -O https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz tar xvf go1.12.9.linux-amd64.tar.gz sudo chown -R root:root ./go sudo mv go /usr/local rm go1.12.9.linux-amd64.tar.gz 

Luego debe actualizar el entorno (más detalles aquí: golang.org/doc/code.html#GOPATH ).

 echo 'export GOPATH=$HOME/work' >> ~/.bashrc echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.bashrc source ~/.bashrc 

Verifique que go esté instalado

 go version 

Instalar IPFS


Me gustó la forma de instalar a través de ipfs-update más .

Instalarlo con el comando

 go get -v -u github.com/ipfs/ipfs-update 

Después de eso, puede ejecutar los siguientes comandos:

versiones de actualización de ipfs : para ver todas las versiones disponibles para descargar.
versión de actualización de ipfs : para ver la versión instalada actual (hasta que tengamos instalado IPFS, no será ninguna).
ipfs-update install latest : instala la última versión de IPFS. En lugar de la última, respectivamente, puede especificar cualquier versión deseada de la lista de disponibles.

Instalar ipfs

 ipfs-update install latest 

Cheque

 ipfs --version 

Directamente con la instalación en términos generales, todo.

Lanzamiento de IPFS


Inicialización


Primero debes realizar la inicialización.

 ipfs init 

En respuesta, obtendrá algo como esto:

  ipfs init initializing IPFS node at /home/USERNAME/.ipfs generating 2048-bit RSA keypair...done peer identity: QmeCWX1DD7HnXXXXXXXXXXXXXXXXXXXXXXXXxxx to get started, enter: ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme 

Puedes ejecutar el comando propuesto

 ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme 

Resultado
 Hello and Welcome to IPFS! ██╗██████╗ ███████╗███████╗ ██║██╔══██╗██╔════╝██╔════╝ ██║██████╔╝█████╗ ███████╗ ██║██╔═══╝ ██╔══╝ ╚════██║ ██║██║ ██║ ███████║ ╚═╝╚═╝ ╚═╝ ╚══════╝ If you're seeing this, you have successfully installed IPFS and are now interfacing with the ipfs merkledag! ------------------------------------------------------- | Warning: | | This is alpha software. Use at your own discretion! | | Much is missing or lacking polish. There are bugs. | | Not yet secure. Read the security notes for more. | ------------------------------------------------------- Check out some of the other files in this directory: ./about ./help ./quick-start <-- usage examples ./readme <-- this file ./security-notes 


Aquí, en mi opinión, lo interesante ya está comenzando. En la etapa de instalación, los chicos ya están comenzando a usar sus propias tecnologías. El hash propuesto QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv, no generado específicamente para usted, pero cosido en el lanzamiento. Es decir, antes del lanzamiento, prepararon un texto de bienvenida, lo vertieron en IPFS y agregaron la dirección al instalador. En mi opinión, esto es muy bueno. Y este archivo (más precisamente, la carpeta completa) ahora se puede ver no solo localmente, sino también en la puerta de enlace oficial ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv . Al mismo tiempo, puede estar seguro de que el contenido de la carpeta no cambió de ninguna manera, porque si hubiera cambiado, el hash también habría cambiado.

Por cierto, en este caso, IPFS tiene algunas similitudes con el servidor de control de versiones. Si realiza cambios en los archivos de origen de la carpeta y vuelve a verter la carpeta en IPFS, recibirá una nueva dirección. Al mismo tiempo, la carpeta anterior no irá a ningún lado así y estará disponible en su dirección anterior.

Lanzamiento directo


 ipfs daemon 

Deberían obtener una respuesta como esta:

 ipfs daemon Initializing daemon... go-ipfs version: 0.4.22- Repo version: 7 System version: amd64/linux Golang version: go1.12.7 Swarm listening on /ip4/xxxx/tcp/4001 Swarm listening on /ip4/127.0.0.1/tcp/4001 Swarm listening on /ip6/::1/tcp/4001 Swarm listening on /p2p-circuit Swarm announcing /ip4/127.0.0.1/tcp/4001 Swarm announcing /ip6/::1/tcp/4001 API server listening on /ip4/127.0.0.1/tcp/5001 WebUI: http://127.0.0.1:5001/webui Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080 Daemon is ready 

Abrimos la puerta a internet


Presta atención a estas dos líneas:

 WebUI: http://127.0.0.1:5001/webui Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080 

Si instaló IPFS localmente, accederá a las interfaces IPFS en las direcciones locales y todo estará disponible para usted (por ejemplo, localhost : 5001 / webui /). Pero cuando se instala en un servidor externo, por defecto, las puertas de enlace están cerradas a Internet. Hay dos puertas de enlace:

  1. Admin webui ( github ) en el puerto 5001.
  2. API externa en el puerto 8080 (solo lectura).

Hasta ahora, puede abrir ambos puertos para experimentos (5001 y 8080), pero, por supuesto, en el servidor de batalla, el puerto 5001 debe cerrarse con un firewall. Hay 4001 puertos, es necesario para que otros pares puedan encontrarte. Debe dejarse abierto a solicitudes externas.

Abra ~ / .ipfs / config para editar y encuentre estas líneas en él:

 "Addresses": { "Swarm": [ "/ip4/0.0.0.0/tcp/4001", "/ip6/::/tcp/4001" ], "Announce": [], "NoAnnounce": [], "API": "/ip4/127.0.0.1/tcp/5001", "Gateway": "/ip4/127.0.0.1/tcp/8080" } 

Cambie 127.0.0.1 a la ip de su servidor y guarde el archivo, luego reinicie ipfs (detenga el comando de ejecución Ctrl + C y vuelva a ejecutar).

Debe obtener

 ... WebUI: http://ip__:5001/webui Gateway (readonly) server listening on /ip4/ip__/tcp/8080 

Ahora las interfaces externas deberían estar disponibles.

Echa un vistazo

 http://__ip_:8080/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme 

El archivo Léame anterior debería abrirse.

 http://__ip_:5001/webui/ 

La interfaz web debería abrirse.

Si webui funciona para usted, la configuración de IPFS se puede cambiar directamente en él, incluidas las estadísticas de visualización, pero a continuación consideraré las opciones de configuración directamente a través del archivo de configuración, que generalmente no es crítico. Es mejor recordar exactamente dónde se encuentra la configuración y qué hacer con ella, y si la cara web no funciona, será más difícil.

Configure una interfaz web para trabajar con su servidor


Aquí está el primer escollo, que pasó unas tres horas.

Si instaló IPFS en un servidor externo, pero no instaló o inició IPFS localmente, cuando acceda a / webui en la interfaz web, debería ver un error de conexión:



El hecho es que webui, en mi opinión, funciona de manera muy ambigua. Primero, intenta conectarse a la API del servidor donde está abierta la interfaz (por supuesto, según la dirección en el navegador). y si no funciona allí, intenta conectarse a la puerta de enlace local. Y si tiene IPFS ejecutándose localmente, su webui funcionará bien, solo usted trabajará con IPFS local, no externo, aunque abrió webui en un servidor externo. Luego suba los archivos, pero por alguna razón no los ve así en un servidor externo ...

Y si no se ejecuta localmente, obtenemos un error de conexión. En nuestro caso, el error probablemente se deba a CORS, que también se indica mediante webui, que propone agregar una configuración.

 ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://ip_ :5001", "http://127.0.0.1:5001", "https://webui.ipfs.io"]' ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]' 

Acabo de registrar un comodín

 ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]' 

Los encabezados agregados se pueden encontrar en el mismo ~ / .ipfs / config. En mi caso es

  "API": { "HTTPHeaders": { "Access-Control-Allow-Origin": [ "*" ] } }, 

Reiniciamos ipfs y vemos que webui se ha conectado con éxito (al menos debería hacerlo si abrió las puertas de enlace para solicitudes desde el exterior, como se describe anteriormente).

Ahora puede cargar directamente carpetas y archivos a través de la interfaz web, así como crear sus propias carpetas.

Montar el sistema de archivos FUSE


Este es un truco bastante interesante.

Podemos agregar archivos (así como carpetas) no solo a través de la interfaz web, sino también directamente en el terminal, por ejemplo

 ipfs add test -r added QmfYuz2gegRZNkDUDVLNa5DXzKmxxxxxxxxxx test/test.txt added QmbnzgRVAP4fL814h5mQttyqk1aURxxxxxxxxxxxx test 

El último hash es el hash de la carpeta raíz.

Con este hash, podemos abrir la carpeta en cualquier nodo de ipfs (que puede encontrar nuestro nodo y obtener el contenido), podemos hacerlo en la interfaz web en el puerto 5001 u 8080, o podemos hacerlo localmente a través de ipfs.

 ipfs ls QmbnzgRVAP4fL814h5mQttyqk1aUxxxxxxxxxxxxx QmfYuz2gegRZNkDUDVLNa5DXzKmKVxxxxxxxxxxxxxx 10 test.txt 

Pero aún puede abrirlo como una carpeta normal.

Creemos dos carpetas en la raíz y otorguemos derechos a nuestro usuario.

 sudo mkdir /ipfs /ipns sudo chown USERNAME /ipfs /ipns 

y reinicie ipfs con el indicador --mount

 ipfs daemon --mount 

Puede crear carpetas en otros lugares y especificarles la ruta a través del demonio ipfs --mount --mount-ipfs / ipfs_path --mount-ipns / ipns_path

Ahora leer de esta carpeta es algo inusual.

 ls -la /ipfs ls: reading directory '/ipfs': Operation not permitted total 0 

Es decir, no hay acceso directo a la raíz de esta carpeta. Pero luego puedes obtener el contenido, conociendo el hash.

 ls -la /ipfs/QmbnzgRVAP4fL814h5mQttyqxxxxxxxxxxxxxxxxx total 0 -r--r--r-- 1 root root 10 Aug 31 07:03 test.txt 

 cat /ipfs/QmbnzgRVAP4fL814h5mQttyqxxxxxxxxxxxxxxxxx/test.txt test test 

Además, incluso el autocompletado dentro de la carpeta funciona al especificar una ruta.

Como dije anteriormente, hay sutilezas con tal montaje: de manera predeterminada, las carpetas FUSE montadas son accesibles solo para el usuario actual (incluso la raíz no puede leer desde dicha carpeta, sin mencionar a otros usuarios en el sistema). Si desea hacer que estas carpetas sean accesibles para otros usuarios, entonces en la configuración debe cambiar "FuseAllowOther": falso a "FuseAllowOther": verdadero. Pero eso no es todo. Si ejecuta IPFS como root, entonces todo está bien. Y si en nombre de un usuario normal (aunque sudo), obtiene un error

 mount helper error: fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf 

En este caso, debe corregir /etc/fuse.conf descomentando la línea #user_allow_other.

Después de eso reiniciamos ipfs.

Problemas conocidos con FUSE


Más de una vez se notó el problema de que después de reiniciar ipfs con el montaje (o tal vez en otros casos), los puntos de montaje / ipfs y / ipns dejan de estar disponibles. No hay acceso a ellos, pero ls -la / ipfs muestra ???? en la lista de derechos.

Encontré tal solución:

 fusermount -z -u /ipfs fusermount -z -u /ipns 

Luego reinicie ipfs.

Agregar servicio


Por supuesto, el lanzamiento en la terminal solo es adecuado para pruebas primarias. En modo combate, el demonio debería iniciarse automáticamente cuando se inicia el sistema.

En nombre de sudo, cree el archivo /etc/systemd/system/ipfs.service y escríbalo:

 [Unit] Description=IPFS Daemon After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=simple ExecStart=/home/USERNAME/work/bin/ipfs daemon --mount User=USERNAME Restart=always [Install] WantedBy=multi-user.target 

USERNAME, por supuesto, debe ser reemplazado por su usuario (y tal vez la ruta completa al programa ipfs será diferente para usted (debe especificar la ruta completa)).

Activamos el servicio.

 sudo systemctl enable ipfs.service 

Iniciamos el servicio.

 sudo service ipfs start 

Verifique el estado del servicio.

 sudo service ipfs status 

Para la pureza del experimento, será posible reiniciar el servidor en el futuro para verificar que ipfs se inicie con éxito automáticamente.

Agrega las fiestas que conocemos


Considere la situación cuando tenemos nodos IPFS instalados tanto en un servidor externo como localmente. En un servidor externo, agregamos algún tipo de archivo e intentamos obtenerlo a través de IPFS localmente mediante CID. Que va a pasar Por supuesto, es muy probable que el servidor local no sepa nada sobre nuestro servidor externo y simplemente tratará de encontrar el archivo por CID "preguntando" a todos los pares de IPFS disponibles (con los cuales ya ha logrado "conocer"). Esos, a su vez, preguntarán a los demás. Y así, hasta que se encuentre el archivo. En realidad, sucede lo mismo cuando intentamos obtener el archivo a través de la puerta de enlace oficial ipfs.io. Si tiene suerte, el archivo se encontrará en unos segundos. Y si no, no se encontrará en unos minutos, lo que afecta en gran medida la comodidad del trabajo. Pero sabemos dónde aparecerá este archivo por primera vez. Entonces, ¿por qué no le decimos inmediatamente a nuestro servidor local "Mire allí primero"? Aparentemente, esto se puede hacer.

1. Vaya al servidor remoto y busque ~ / .ipfs / config en la configuración

 "Identity": { "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuxxxxxxxxxxxxxxxx", 

2. Ejecutamos el estado de sufs service ipfs y buscamos entradas de Swarm en él, por ejemplo:

 Swarm announcing /ip4/ip__/tcp/4001 

3. A partir de esto, agregamos la dirección general del formulario "/ ip4 / ip_your_server / tcp / 4001 / ipfs / $ PeerID".

4. Para mayor confiabilidad, a través de nuestro sitio web local, intentaremos agregar esta dirección a sus pares.



5. Si todo está bien, abra la configuración local ~ / .ipfs / config, busque "Bootstrap" en ella: [...
y agregue la dirección recibida primero a la matriz.

Reinicie IPFS.

Ahora agregue el archivo al servidor externo e intente solicitarlo en el servidor local. Debe volar rápido.

Pero esta funcionalidad aún es inestable. Por lo que yo entiendo, incluso si especificamos la dirección de pares en Bootstrap, en el curso del trabajo, ipfs cambia la lista de conexiones activas con pares. En cualquier caso, se está discutiendo esto y los deseos sobre la posibilidad de indicar pares constantes aquí y parece que se supone que debe agregar alguna funcionalidad a ipfs@5.0+

Se puede ver una lista de pares actuales tanto en webui como en la terminal.

 ipfs swarm peers 

Tanto allí como allí puedes agregar tu fiesta manualmente.

 ipfs swarm connect "/ip4/ip__/tcp/4001/ipfs/$PeerID" 

Hasta que haya mejorado esta funcionalidad, puede escribir una herramienta para verificar una conexión con el par deseado, y si no, para agregar una conexión.

Razonamiento


Entre aquellos que ya están familiarizados con IPFS, existen argumentos a favor y en contra de IPFS. En principio, anteayer la discusión de ayer me impulsó a cavar IPFS nuevamente. Y con respecto a la discusión mencionada anteriormente: no puedo decir que estoy firmemente en contra de algunos de los argumentos expresados ​​anteriormente (no estoy de acuerdo con el hecho de que un programa y medio usan IPFS). En general, ambos tienen razón a su manera (especialmente los comentarios sobre cheques te hacen pensar). Pero si descarta la evaluación moral y legal, ¿quién dará una evaluación técnica de esta tecnología? Personalmente, tengo algún tipo de sentimiento interno de que "esto es necesario seguro, tiene ciertas perspectivas". Pero por qué exactamente, no hay una redacción clara. Al igual que si observa las herramientas centralizadas existentes, en muchos aspectos están muy por delante (estabilidad, velocidad, capacidad de administración, etc.). Sin embargo, tengo un pensamiento, que parece tener sentido y que difícilmente se puede implementar sin sistemas descentralizados. Por supuesto, realmente me muevo, pero lo formularía de esta manera: el principio de diseminar información en Internet necesita ser cambiado.

Te lo explicaré. Si lo cree así, ahora nuestra información se difunde según el principio "Espero que la persona a quien la transfirí la proteja y no se pierda o reciba a aquellos a quienes no estaba destinada". Por ejemplo, es fácil considerar varios servicios de correo, almacenamiento en la nube, etc. ¿Y qué tenemos al final? En Habré Hub, la seguridad de la información está en la primera línea y casi todos los días recibimos noticias sobre otra fuga global. En principio, todo lo más interesante aparece en el artículo <irony> maravilloso </ ironía> El verano está por terminar. Casi no se filtraron datos . Es decir, los principales gigantes de Internet se están volviendo más grandes, están acumulando más y más información, y esas filtraciones son una especie de explosiones atómicas informativas. Esto nunca ha sucedido, y aquí de nuevo. Al mismo tiempo, aunque muchos entienden que existen riesgos, continuarán confiando sus datos con compañías de terceros. En primer lugar, no hay mucha alternativa, y en segundo lugar, prometen haber reparado todos los agujeros y esto nunca volverá a suceder.

¿Qué opción veo? Me parece que los datos deberían distribuirse inicialmente abiertamente. Pero la apertura en este caso no significa que todo deba ser fácil de leer. Estoy hablando de la apertura del almacenamiento y la distribución, pero no de la apertura total en la lectura. Supongo que la información debe distribuirse con claves públicas. Después de todo, el principio de las claves públicas / privadas ya es antiguo, casi como Internet. Si la información no es confidencial y está diseñada para un amplio rango, se presenta de inmediato con la clave pública (pero aún en forma cifrada, cualquiera puede descifrarla con la clave existente). Y si no, se presenta sin una clave pública, y la clave misma se transmite a la que debe tener acceso a esta información. Al mismo tiempo, el que necesita leerlo debe tener solo una clave, y dónde obtener esta información, no debe estar volando, simplemente la extrae de la red (este es el nuevo principio de distribución al contenido, no a la dirección).

Por lo tanto, para un ataque masivo, los atacantes necesitarán obtener una gran cantidad de claves privadas, y es poco probable que puedan hacerlo en un solo lugar. Esta tarea, según lo veo, es más difícil que hackear un servicio en particular.

Y aquí se cierra otro problema: la confirmación de la autoría. Ahora en Internet puedes encontrar muchas citas escritas por nuestros amigos. ¿Pero dónde está la garantía de que los escribieron? Ahora, si cada grabación estuviera acompañada de una firma digital, sería mucho más simple. Y no importa dónde se encuentre esta información, lo principal es la firma, que, obviamente, es difícil de falsificar.

Y esto es lo que es interesante aquí: IPFS ya tiene herramientas de cifrado (después de todo, está basado en la tecnología blockchain). La clave privada se especifica inmediatamente en la configuración.

  "Identity": { "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuMxxxxxxxxxxxxxx", "PrivKey": "CAASqAkwggSkAgEAAoIBAQClZedVmj8JkPvT92sGrNIQmofVF3ne8xSWZIGqkm+t9IHNN+/NDI51jA0MRzpBviM3o/c/Nuz30wo95vWToNyWzJlyAISXnUHxnVhvpeJAbaeggQRcFxO9ujO9DH61aqgN1m+JoEplHjtc4KS5 pUEDqamve+xAJO8BWt/LgeRKA70JN4hlsRSghRqNFFwjeuBkT1kB6tZsG3YmvAXJ0o2uye+y+7LMS7jKpwJNJBiFAa/Kuyu3W6PrdOe7SqrXfjOLHQ0uX1oYfcqFIKQsBNj/Fb+GJMiciJUZaAjgHoaZrrf2b/Eii3z0i+QIVG7OypXT3Z9JUS60 KKLfjtJ0nVLjAgMBAAECggEAZqSR5sbdffNSxN2TtsXDa3hq+WwjPp/908M10QQleH/3mcKv98FmGz65zjfZyHjV5C7GPp24e6elgHr3RhGbM55vT5dQscJu7SGng0of2bnzQCEw8nGD18dZWmYJsE4rUsMT3wXxhUU4s8/Zijgq27oLyxKNr9T7 2gxqPCI06VTfMiCL1wBBUP1wHdFmD/YLJwOjV/sVzbsl9HxqzgzlDtfMn/bJodcURFI1sf1e6WO+MyTc3................. + / NDI51jA0MRzpBviM3o / c / Nuz30wo95vWToNyWzJlyAISXnUHxnVhvpeJAbaeggQRcFxO9ujO9DH61aqgN1m + JoEplHjtc4KS5  "Identity": { "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuMxxxxxxxxxxxxxx", "PrivKey": "CAASqAkwggSkAgEAAoIBAQClZedVmj8JkPvT92sGrNIQmofVF3ne8xSWZIGqkm+t9IHNN+/NDI51jA0MRzpBviM3o/c/Nuz30wo95vWToNyWzJlyAISXnUHxnVhvpeJAbaeggQRcFxO9ujO9DH61aqgN1m+JoEplHjtc4KS5 pUEDqamve+xAJO8BWt/LgeRKA70JN4hlsRSghRqNFFwjeuBkT1kB6tZsG3YmvAXJ0o2uye+y+7LMS7jKpwJNJBiFAa/Kuyu3W6PrdOe7SqrXfjOLHQ0uX1oYfcqFIKQsBNj/Fb+GJMiciJUZaAjgHoaZrrf2b/Eii3z0i+QIVG7OypXT3Z9JUS60 KKLfjtJ0nVLjAgMBAAECggEAZqSR5sbdffNSxN2TtsXDa3hq+WwjPp/908M10QQleH/3mcKv98FmGz65zjfZyHjV5C7GPp24e6elgHr3RhGbM55vT5dQscJu7SGng0of2bnzQCEw8nGD18dZWmYJsE4rUsMT3wXxhUU4s8/Zijgq27oLyxKNr9T7 2gxqPCI06VTfMiCL1wBBUP1wHdFmD/YLJwOjV/sVzbsl9HxqzgzlDtfMn/bJodcURFI1sf1e6WO+MyTc3................. 7LMS7jKpwJNJBiFAa / Kuyu3W6PrdOe7SqrXfjOLHQ0uX1oYfcqFIKQsBNj / Fb + GJMiciJUZaAjgHoaZrrf2b / Eii3z0i + QIVG7OypXT3Z9JUS60  "Identity": { "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuMxxxxxxxxxxxxxx", "PrivKey": "CAASqAkwggSkAgEAAoIBAQClZedVmj8JkPvT92sGrNIQmofVF3ne8xSWZIGqkm+t9IHNN+/NDI51jA0MRzpBviM3o/c/Nuz30wo95vWToNyWzJlyAISXnUHxnVhvpeJAbaeggQRcFxO9ujO9DH61aqgN1m+JoEplHjtc4KS5 pUEDqamve+xAJO8BWt/LgeRKA70JN4hlsRSghRqNFFwjeuBkT1kB6tZsG3YmvAXJ0o2uye+y+7LMS7jKpwJNJBiFAa/Kuyu3W6PrdOe7SqrXfjOLHQ0uX1oYfcqFIKQsBNj/Fb+GJMiciJUZaAjgHoaZrrf2b/Eii3z0i+QIVG7OypXT3Z9JUS60 KKLfjtJ0nVLjAgMBAAECggEAZqSR5sbdffNSxN2TtsXDa3hq+WwjPp/908M10QQleH/3mcKv98FmGz65zjfZyHjV5C7GPp24e6elgHr3RhGbM55vT5dQscJu7SGng0of2bnzQCEw8nGD18dZWmYJsE4rUsMT3wXxhUU4s8/Zijgq27oLyxKNr9T7 2gxqPCI06VTfMiCL1wBBUP1wHdFmD/YLJwOjV/sVzbsl9HxqzgzlDtfMn/bJodcURFI1sf1e6WO+MyTc3................. Zijgq27oLyxKNr9T7  "Identity": { "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuMxxxxxxxxxxxxxx", "PrivKey": "CAASqAkwggSkAgEAAoIBAQClZedVmj8JkPvT92sGrNIQmofVF3ne8xSWZIGqkm+t9IHNN+/NDI51jA0MRzpBviM3o/c/Nuz30wo95vWToNyWzJlyAISXnUHxnVhvpeJAbaeggQRcFxO9ujO9DH61aqgN1m+JoEplHjtc4KS5 pUEDqamve+xAJO8BWt/LgeRKA70JN4hlsRSghRqNFFwjeuBkT1kB6tZsG3YmvAXJ0o2uye+y+7LMS7jKpwJNJBiFAa/Kuyu3W6PrdOe7SqrXfjOLHQ0uX1oYfcqFIKQsBNj/Fb+GJMiciJUZaAjgHoaZrrf2b/Eii3z0i+QIVG7OypXT3Z9JUS60 KKLfjtJ0nVLjAgMBAAECggEAZqSR5sbdffNSxN2TtsXDa3hq+WwjPp/908M10QQleH/3mcKv98FmGz65zjfZyHjV5C7GPp24e6elgHr3RhGbM55vT5dQscJu7SGng0of2bnzQCEw8nGD18dZWmYJsE4rUsMT3wXxhUU4s8/Zijgq27oLyxKNr9T7 2gxqPCI06VTfMiCL1wBBUP1wHdFmD/YLJwOjV/sVzbsl9HxqzgzlDtfMn/bJodcURFI1sf1e6WO+MyTc3................. 

No soy un especialista en seguridad y no puedo saber exactamente cómo usarlo correctamente, pero me parece que estas claves se usan a nivel de intercambio entre nodos IPFS. Y también js-ipfs y proyectos de ejemplo como orbit-db , en el que funciona orbit.chat . Es decir, en teoría, cada dispositivo (móvil y no solo) puede equiparse fácilmente con sus propias máquinas de cifrado-descifrado. En este caso, solo queda que todos se encarguen de mantener sus claves privadas y todos serán responsables de su propia seguridad, y no serán rehenes de otro factor humano en algún gigante de Internet súper popular.

Source: https://habr.com/ru/post/465599/


All Articles