vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Я как-то придумал эту идею и хотел реализовать на какой-то ролевой игре. Но так и не собрался.

Представим себе, что у нас есть n субъектов которые хотят иметь возможность обмениваться защищенными сообщениями каждый с каждым, причем совершенно не представляют себе, кто через некоторое (небольшое) время будет союзником, а кто врагом.

Предлааемое решение - некая n+1 сторона привозит и продает руководителям этих n партий шифроблокноты. Блокноты - пронумерованы. И в каждом n (лучше n+m, есть несколько запасных блокнотов на случай компрометации или утраты) страниц.

Каждая страница представляет собой поворотную решётку 10x10 или 12x12. Соответсвенно, если мы хотим отправить письмо владельцу блокнота i (а список владельцев доверенная сторона-организатор сети распространяет по своим абонентам абсолютно открыто. Более того, если список сторон известен заранее. его можно прям на форзаце напечать, а там уже вопрос только в том, выкупила соответсвующая партия свой блокнот или нет), мы открываем i-тую страницу нашего блокнота и шифруем этой решеткой письмо.

Получаетель письма смотрит список абонентов, находит там нас (j) открывает j-тую страницу своего блокнота и расшифровыает посление.

n+1 сторона-организатор криптосети мамой клянется, что у неё нет копий решёток, содержащихся в проданных блокнотах.

n, кстати, может быть достаточно большим. Количество возможных решеток равно 4m2/4 где m - сторона квадрата, т.е для решетки 10x10 - 250. А число нужных для шифрования решеток (n2-n)/2. Так что можно еще и при генерации решеток спокойно выкидывать те, у которых расположение дырок не обеспечивает механической прочности или слишком много подряд идущих дырок, позволяющих увидеть кусок открытого текста.

Тут поскольку у любого участника сети есть как противники, так и союзники, а блокнот работает и с теми, и с другими, информация о компрометации блокнота скорее всего будет распространяться достаточно быстро.

А вот, собственно как можно нагенерировать кучу поворотных решеток

#!/usr/bin/env python3
import secrets
SIZE = 10 
def bits(random):
    for byte in random:
        m = int(byte)
        for n in range(4):
            yield m & 3
            m = m >> 2
rand = secrets.token_bytes(int((SIZE*SIZE / 2 + 7) / 8)+1)
matrix = [['.'] * SIZE for i in range(SIZE)]  
getbits = bits(rand)
for i in range(SIZE >> 1):
    for j in range(SIZE >> 1):
        quarter = next(getbits)
        if quarter == 0:
            matrix[i][j] = 'x'
        elif quarter == 1:
            matrix[SIZE - j - 1][i] = 'x' # clockwise
        elif quarter == 2:
            matrix[SIZE - i - 1][SIZE - j - 1] = 'x' #upside down
        else:
            matrix[j][SIZE - i - 1] = 'x' # anticlockwise
print('\n'.join([ ' '.join(matrix[i]) for i in range(SIZE)]))

Date: 2021-11-14 11:30 am (UTC)
kant_elz: (Default)
From: [personal profile] kant_elz
А что произойдет, если один из блокнотов и адреса будут захвачены врагами?

Date: 2021-11-14 03:14 pm (UTC)
kant_elz: (Default)
From: [personal profile] kant_elz
Я, наверное, не совсем однозначно сформулировал вопрос...
Может ли утеря блокнота и адресов привести к ликвидации сети?
Вот решит товарищ майор, что эту гидру надо уничтожить. Может ли он для этого воспользоваться списком адресов и блокнотом?

Date: 2021-11-15 09:23 am (UTC)
kant_elz: (Default)
From: [personal profile] kant_elz
Спасибо. Но такая система может использоваться? На поверхности игра, а внутри группа подпольщиков?
Edited Date: 2021-11-15 09:25 am (UTC)

Date: 2021-11-15 01:26 pm (UTC)
kant_elz: (Default)
From: [personal profile] kant_elz
Да, для ролевой игры это так. Я думал о группах сопротивления.

Date: 2021-11-15 02:27 pm (UTC)
kant_elz: (Default)
From: [personal profile] kant_elz
Понятно, спасибо. Что вы думаете об AxCrypt?

Date: 2021-11-15 04:54 pm (UTC)
kant_elz: (Default)
From: [personal profile] kant_elz
Я пользуюсь и они денег не просят...

Date: 2021-11-14 12:14 pm (UTC)
From: [personal profile] igus
Имхо, решётки тут совсем не по существу (ну разве что как удобный для игрового приенения вариант), замени решётки на AESовские ключи - что изменится?

Date: 2021-11-14 12:18 pm (UTC)
slobin: (Default)
From: [personal profile] slobin
Ни разу не видел на реальной игре шифра сложнее простой подстановки. А шифр простой подстановки после приобретения некоторого игрового опыта читается "с листа". В смысле, весь этот частотный анализ уходит в подсознание, глаза начинают сразу (ну, через минуту) видеть плейнтекст. Навык не такой уж и сложный, не сложнее, чем, например, говорить стихами. И точно так же приводит в офигение тех, кто сам не пробовал.

Сейчас я так уже не могу ("бароны стареют"), сейчас мне уже минут десять нужно. Правда, с параллельной имитацией осмысленной беседы, что несколько осложняет задачу. Но всё равно не то. :-(

... Эч ба мЕ? Элтай ба сэтай? ...

Date: 2021-11-14 08:33 pm (UTC)
From: [personal profile] karpion
А чем плохо просто передавать сложенную записку из-рук-в-руки? Это же ролевая игра, записки не проходят через человека-в-середине.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

July 2025

S M T W T F S
  12345
6789 1011 12
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 16th, 2025 01:22 pm
Powered by Dreamwidth Studios