¡Buen día!
Me gustaría compartir con la comunidad pensamientos interesantes sobre la creación de un correo electrónico descentralizado y autónomo y demostrar en la práctica el funcionamiento de una implementación existente.
Inicialmente, «Telegraph» fue desarrollado como un medio de comunicación aficionado entre los miembros de nuestra pequeña comunidad estudiantil, que de alguna manera ha dedicado su actividad a la informática y las comunicaciones.
Nota Bene: «Telegraph» es un medio de comunicación aficionado; extraer un beneficio práctico a gran escala parece bastante problemático, sin embargo, esta cuestión difícilmente puede considerarse significativa en absoluto; nuestra principal meta es atraer la atención hacia el desarrollo de este tipo de sistemas de comunicación.
Tendemos a pensar que aumentar el interés general en la esfera del desarrollo de diversos sistemas de comunicación es algo necesario y bastante importante, ya que comprender los principios fundamentales de cómo funcionan y en qué se basan estos sistemas es la clave principal para aumentar la conciencia de los ciudadanos en cuestiones de seguridad de la información.

¡Atención!Para evitar posibles malentendidos — en algunos casos se pueden pasar las imágenes:

El sistema se basa en el voluntariado y puro entusiasmo: simplemente nos gusta lo que hacemos. Puedes considerarlo un pasatiempo y no estarás equivocado, ya que todavía hay aficionados a la comunicación a través de la correspondencia en papel; «Telegraph» puede considerarse en muchos casos como una realización digital de los principios de funcionamiento de la correspondencia convencional.
«Telegraph» es un análogo autónomo del correo electrónico, que permite enviar mensajes de texto simples sin utilizar internet. «Telegraph» puede asociarse en cierto modo con — un método de intercambio de información sin usar una red.
Como buzones se utilizan unidades flash, y como oficinas de correos funcionan los terminales: computadoras que actúan como puntos de acceso para recibir y enviar correspondencia electrónica.
Veamos un ejemplo simple de interacción con el sistema. Disponemos de dos memorias USB y un terminal. En el propio script se han definido las variables globales necesarias para la posterior interacción con el sistema: el número del terminal, la ruta a la raíz y demás.
Si conectamos el dispositivo extraíble al terminal y ejecutamos el script, intentará obtener los mensajes salientes desde el directorio /mnt/Telegraph/Outbox y transferirlos a su memoria, luego — verificar la existencia de nuevos mensajes en su memoria para el usuario actual. Si existen, se escribirán en /mnt/Telegraph/Inbox.
Registro de nuevos dispositivos
Sucede de manera bastante ordinaria. El script encuentra nuevas memorias USB conectadas al sistema y trata de emparejar sus identificadores únicos con los que están presentes en la raíz. Si los dispositivos no se han registrado antes, serán formateados de acuerdo a las reglas establecidas por 'Telegraf'.
Después de registrar un nuevo dispositivo, la estructura de la raíz toma la siguiente forma:
En el archivo de configuración config.ini, ubicado en la raíz de la memoria USB, se encuentra la información del sistema: el identificador único y la clave secreta.
¡Dadle ron a la gente!
No, en serio. Se pueden obtener los originales , y ya es hora de pasar de la teoría a la práctica.
Pero debo decir unas cuantas palabras sobre cómo está estructurado en la práctica el sistema de intercambio de mensajes.
Para comenzar, aclaremos de qué consta el identificador único de once dígitos. Por ejemplo, 10455000001.
El primer dígito, 1, corresponde al número del país. El código internacional es — 0, Rusia en este caso es — 1.
A continuación hay cuatro dígitos que corresponden al número de la región donde se encuentra el terminal. 0455 — este es el distrito urbano de Kolomna.
Después siguen dos dígitos, — 00, — que corresponden directamente al número del terminal.
Y solo luego — cuatro dígitos, que son el número secuencial del usuario asignado a este terminal. En nuestro caso es — 0001. También existe y 0000 — este número pertenece directamente al terminal. No se puede enviar correspondencia a este número, pero el propio terminal utiliza este número para enviar mensajes de servicio a los usuarios. Por ejemplo, si un mensaje no pudo ser entregado por alguna razón.
En la raíz de nuestra "bandeja de entrada" hay dos directorios necesarios para recibir y enviar mensajes de texto. Al conectar el dispositivo al terminal, los mensajes salientes se cargan desde el directorio "Outbox" al servidor, mientras que, lógicamente, los mensajes entrantes se cargan en el directorio "Inbox".
Cada archivo, dependiendo del directorio, está nombrado con el número del destinatario o del remitente.
Si intentamos enviar un mensaje a un destinatario inexistente, el terminal nos enviará un mensaje de error.
Sin embargo, si decidimos enviar una carta a un destinatario que se encuentra en otro terminal (independientemente de si existe o no), será almacenada en la memoria del terminal hasta que el agente transfiera la correspondencia escrita de nuestro terminal al suyo.
Cuando el agente de la oficina 10500000000 (en otras palabras, el cartero) conecte su dispositivo a nuestro terminal, las cartas salientes se transferirán a su almacenamiento. Posteriormente, cuando conecte su dispositivo a su terminal, estas cartas se descargarán en la memoria del terminal y esperarán a que el destinatario las transfiera a su unidad flash.
Sesión de comunicación
Intentemos enviar un mensaje con el texto "¡Hola!" de 10455000001 a 10455000002.
¡Eso es todo!
Agradeceré cualquier crítica sobre el código fuente del proyecto y sobre el artículo en sí.
Gracias por su atención.
Fuente: habr.com
