Previous Entry Share Next Entry
2016-01

рабочее

Надо отметить, что тестировать взаимодействие групп не доверяющих друг другу P2P-нод - это очень своеобразное занятие.

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

(у каждого юзера есть N девайсов, юзеры могут образовывать 1:1 соединения и группы, исключать из групп других юзеров, банить свои девайсы, центрального сервера нет, все ключи эфемерные, доверенного таймстемпинг сервиса нету)

Ыэээх. Симулятор какой-то написать, что ли.

This entry was originally posted at http://wizzard.dreamwidth.org/411664.html. It has comment count unavailable comments. Please comment there using OpenID.

  • 1
mudasobwa December 20th, 2014
Доверенный таймстемпинг в группе появляется как только N членов объявляют себя как ntpd proxy. Случаются промежутки, когда никого из них в сети нет, но это, вроде, случай нерелевантный (так же, как отсутствие пиров — на трех пользователях, насколько я понимаю, ничего работать не будет).

Почему у группы не может быть перманентного ключа, выполняющего роль соли к эфемерным?
По-моему, часть задач это решит.

wizzard0 December 20th, 2014
> часть задач это решит.

Какую именно часть? :-)

mudasobwa December 20th, 2014
Исключение других пользователей из групп, например. Ревокнул ключ — и ага.

И про девайсы, сразу. Я сюда это перенесу, тут релевантнее:

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


Вообще не вижу проблему. Есть сущность девайс. Юзер — это группа девайсов. Группа — это группа юзеров. Если ты умеешь исключать юзера из группы, ты автоматом умеешь исключать девайс из юзера. Или я что-то недопонимаю?

wizzard0 December 20th, 2014
Из юзера - да.
Но как юзер представляется с точки зрения остальных юзеров группы?

mudasobwa December 20th, 2014
Ты у меня уточняешь детали своей имплементации?

Я бы с девайсами работал точно так же, как сишные библиотеки с умными указателями.

wizzard0 December 20th, 2014
Я к тому, что security is not composable, и утверждение "ты автоматом умеешь" неверно.

mudasobwa December 21st, 2014
Я имел в виду, что при правильном (на мой взгляд) проектировании отношения девайс ⇒ юзер и юзер ⇒ группа — это одно и то же отношение. Выражаясь терминами ООП, есть ентити, которая может включать в себя такие же, либо расширенные ентити. И «наследование» девайс⇐юзер⇐группа дает ту самую поддержку автоматом.

Исключение девайса из юзера и исключение юзера из группы — это (могу ошибаться) одно и то же действие.

wizzard0 December 21st, 2014
Cryptography is full of counter-intuitive shit.

Например, если данные зашифровать, а потом еще раз зашифровать - результат может быть расшифровать проще, чем после первого раза.

Или если подписать несколько файлов одним и тем же ключом, то в ряде случаев после этого можно вычислить секретный ключ.

Поэтому сделать интерфейс, который просто "умеет вот так" - обычно невозможно, у всего есть побочные эффекты.

В данном конкретном случае инкапсуляции нет во-первых из-за асинхронности. "Юзер", где юзер = 1 девайс, исключается из группы действительно тривиально. Юзер, где юзер = N девайсов - выглядит в группе по-другому, т.к., например, нет одной_сущности, которая могла бы линеаризовать поток входящих сообщений от других юзеров.

Во-вторых, из-за побочных эффектов. Можно абстрагировать юзера как черный ящик, и создавать нового, состоящего из нового подмножества девайсов. Тогда удаление девайса проявится как одновременный leave-join во всех группах, в которых юзер участвует. Вуаля, мы только что деанонимизировали юзера (если он там был под разными именами)

lionet December 20th, 2014
А что, TLA+/PlusCal не подходят?

wizzard0 December 20th, 2014
Скорее всего, подходят, но TLA мне совершенно на голову не налазит :(

lionet December 29th, 2014
PlusCal может налезть же.

wizzard0 December 29th, 2014
Я попробую, спасибо.

blackyblack December 20th, 2014
Кое-что можно юнит тестами порешать. Делаешь фейковый класс (или что там у тебя) сетки и гоняешь через него запросы.

buriy December 20th, 2014
Какая жестяная жесть...
Упрощай по максимуму, вот тебе мой совет. Навороты можно и потом поверх добавить.

wizzard0 December 20th, 2014
Сделать из бабушки потом дедушку не всегда возможно.

buriy December 20th, 2014
Согласен. Нужен баланс.

nponeccop December 20th, 2014
https://www.google.com.ng/search?q=network+simulator - не подходят? Тысячи их

wizzard0 December 20th, 2014
Не, всякую там потерю пакетов засимулировать не проблема. А вот варианты реордеринга событий поперебирать хотелось бы.

nponeccop December 20th, 2014
https://www.google.com.ng/search?q=concurrent%20protocol%20verification - active research area однако!

https://www.google.com.ng/search?q=message+passing+verification - тоже!

Че-то по другим запросам всякие генераторы для телекома идут.

Edited at 2014-12-20 05:01 pm (UTC)

bvlb December 20th, 2014

  • 1
?

Log in

No account? Create an account