"Телеграф" - електронна пошта без інтернету

Добрий день!

Мені хотілося б поділитися з спільнотою цікавими думками про створення автономної децентралізованої електронної пошти та продемонструвати на практиці роботу однієї вже існуючої реалізації.

Спочатку «Телеграф» розроблявся як аматорський засіб зв'язку між членами нашої невеликої студентської спільноти, так чи інакше свою діяльність, що присвятила обчислювальній техніці та комунікаціям.

Нотабене: «Телеграф» - аматорський засіб комунікації; практичну вигоду отримати в промислових масштабах є досить проблематичним, проте проблему цю навряд чи хоч якоюсь мірою можна назвати суттєвою — переважно головною нашою метою ми вважаємо безпосередньо привернення уваги до розробки таких комунікаційних систем.

Ми схильні вважати, що підвищення загальної зацікавленості у сфері розробки різних систем комунікацій — справа потрібна і досить важлива, бо розуміння основних принципів того, як працюють і на чому тримаються ці системи, є основним ключем до підвищення обізнаності громадян у питаннях інформаційної безпеки.

"Телеграф" - електронна пошта без інтернету

Ахтунг!Щоб уникнути можливих непорозумінь, у деяких випадках зображення можна гортати:
"Телеграф" - електронна пошта без інтернету

Система тримається на добровільних засадах та чистому ентузіазмі – нам просто подобається те, чим ми займаємося. Можете визнати це за хобі і не виявитеся неправими — адже досі існують любителі спілкування за допомогою паперової кореспонденції; «Телеграф» у більшості випадків можна як цифрову реалізацію принципів роботи звичайної пошти.

«Телеграф» є автономним аналогом електронної пошти, що дозволяє передавати прості текстові повідомлення без використання інтернету. «Телеграф» тією чи іншою мірою можна віднести до Кросівки — спосіб обміну інформацією без використання мережі.

Як поштові скриньки використовуються флеш-накопичувачі, а ролі поштових відділень виступають термінали — комп'ютери, які є своєрідними пунктами доступу до отримання та передачі електронної кореспонденції.

Розглянемо найпростіший приклад взаємодії із системою. У нас є дві флешки і один термінал. У самому скрипті прописані необхідні глобальні змінні для подальшої взаємодії з системою - номер терміналу, шлях до кореня та ін.

Якщо ми підключимо знімний накопичувач до терміналу і запустимо скрипт, він спробує отримати вихідні повідомлення з директорії /mnt/Telegraph/Outbox і перенести їх у свою пам'ять, потім перевірити наявність у своїй пам'яті нових повідомлень для поточного користувача. Якщо такі є — записати їх у /mnt/Telegraph/Inbox.

Реєстрація нових пристроїв

Відбувається досить відчутно. Скрипт знаходить нові флеш-накопичувачі, підключені до системи, і намагається зіставити їх унікальні ідентифікатори з тими, що представлені докорінно. Якщо пристрої раніше не піддавалися реєстрації, їх буде відформатовано відповідно до заявлених «Телеграфом» правил.

Після реєстрації нового пристрою структура кореня набуває наступного вигляду:

Подивитися повідомленням imgur.com

У конфігураційному файлі config.ini, розташованому в корені флеш-накопичувача, знаходиться системна інформація - унікальний ідентифікатор та секретний ключ.

Подивитися повідомленням imgur.com

Дайте людям рому!

Ні, ну, справді, серйозно! Вихідники роздобути можна тут, А нам вже потихеньку настав час перебиратися від теорії до практики.

Але я повинен сказати ще кілька слів про те, як на практиці влаштовано систему обміну повідомленнями.

Для початку розберемося, з чого складається одинадцятизначний унікальний ідентифікатор. Наприклад, 10455000001.

Перша цифра 1відповідає за номер країни. Міжнародний код 0, Росія ж у цьому випадку - 1.

Далі йдуть чотири цифри, які відповідають за номер регіону, де розташований термінал. 0455 - Це Коломенський міський округ.

За ними йдуть дві цифри, 00- відповідальні безпосередньо за номер терміналу.

І лише потім — чотири цифри, які є порядковим номером користувача, закріпленим за цим терміналом. У нас це - 0001. Також існує і 0000 - Цей номер належить безпосередньо самому терміналу. На нього не можна надіслати письмову кореспонденцію, зате сам термінал використовує цей номер для надсилання службових повідомлень користувачам. Наприклад, якщо повідомлення не вдалося доставити з якихось причин.

Подивитися повідомленням imgur.com

У корені нашої «поштової скриньки» знаходиться дві директорії, необхідні для того, щоб отримувати та надсилати текстові повідомлення. При підключенні пристрою до терміналу з директорії Outbox на сервер відвантажуються вихідні повідомлення, а в директорію Inbox, що логічно, завантажуються вхідні.

Кожен файл в залежності від директорії названий номером одержувача або відправника.

Якщо спробуємо надіслати повідомлення неіснуючому адресату, то термінал нам надішле повідомлення про помилку.

Подивитися повідомленням imgur.com

Однак, якщо ми вирішимо надіслати листа адресату, що знаходиться на іншому терміналі (незалежно від того, існує він чи ні), він буде записаний на згадку про термінал до того, як агент не перенесе письмову кореспонденцію з нашого терміналу на свій.

Подивитися повідомленням imgur.com

Коли агент відділення 10500000000 (іншими словами - листоноша) підключить свій пристрій до нашого терміналу, вихідні листи будуть передані на його накопичувач. Згодом, коли він підключить свій пристрій до свого терміналу, ці листи виявляться скинутими на згадку про термінал і чекатимуть, коли адресат відвантажить їх на свій флеш-накопичувач.

Сеанс зв'язку

Спробуємо передати повідомлення з текстом «Привіт!» від 10455000001 к 10455000002.

Подивитися повідомленням imgur.com

На цьому все!

Радий будь-якій критиці на адресу вихідного коду проекту і безпосередньо самої статті.

Дякую за увагу.

Джерело: habr.com

Додати коментар або відгук