Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
 Re: Авторизация без сервера  [new]
Gennadiy Usov
Member

Откуда:
Сообщений: 1462
Поскольку ищется число, скажем так, оригинальное, то почему оно не может быть в виде массива сочетаний из 0 и 1 (естественно в битах)? Длина массива сочетаний - любая.
30 дек 18, 14:11    [21776889]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Я не до конца понял что разрабатывает Дима. Но RSA стандартизирован и имеет фиксированные
разрядности алгоритмов и ключей.

Хотя если брать математическое описание алгоритма - то его можно адаптировать под любые разрядности.
Главное чтоб наши комьютеры не захлебнулись.
30 дек 18, 14:24    [21776895]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dima T
Member

Откуда:
Сообщений: 13634
mayton
Я не до конца понял что разрабатывает Дима. Но RSA стандартизирован и имеет фиксированные
разрядности алгоритмов и ключей.

Хотя если брать математическое описание алгоритма - то его можно адаптировать под любые разрядности.
Главное чтоб наши комьютеры не захлебнулись.

RSA как по учебнику. Алгоритм с википедии, он же в каментах кода 21776202

Единственное ограничение - вписаться в 32 бита, чтобы использовать стандартные целые типы.
30 дек 18, 14:36    [21776897]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Вобщем от 1024 бит и выше.

$ ssh-keygen -t rsa -b 1000
Invalid RSA key length: minimum is 1024 bits
30 дек 18, 14:36    [21776898]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
До 16 килобайт.

$ ssh-keygen -t rsa -b 32768
key bits exceeds maximum 16384


Предыдущий запуск с 16к отработал но занял где-то 2 минуты.
30 дек 18, 14:42    [21776901]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47394
Dima T
Это-то тут при чем?

Это тут при том, что авторизация не зависит от того кем она проводится. Если сервер верит Алисе на слово, а Боб доверяет серверу, то Боб может спокойно верить Алисе на слово и степень безопасности от этого не изменится. Получит ли Боб ключ Алисы от сервера или от Алисы непосредственно - совершенно всё равно.

Dima T
Суть моей проблемы в том чтобы никто не смог писать от лица уже имеющейся учетки.
Например тебе в вацап напишут с неизвестного номера - ничего страшного, главное чтобы левые люди не писали с известных тебе номеров. Т.е. получатель изначально знает от кого принимать сообщения. Я эту проблему решаю.

Если Боб один раз получил ключ Алисы от сервера, то уже никто кроме самой Алисы не сможет ему написать с этой учётки даже при моментальном отсутствии сервера. Это тривиально и на "проблему" не тянет.

PS: Эх, а я-то считал себя безалаберным используя для идентификации 381-битные ключи...
30 дек 18, 15:02    [21776909]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47394
Dima T
Наткнулся на is_prime(233 * 1103) дает true, я на его основе делаю пару ключей, естественно они не рабочие.

Как с этим бороться?

Именно так и бороться: проверять сгенерированную пару ключей на "рабочесть". Если проверка не прошла - генерировать новую пару. Все так делают.
30 дек 18, 15:05    [21776911]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47394
mayton
RSA стандартизирован и имеет фиксированные
разрядности алгоритмов и ключей.

Как алгоритм он никаких ограничений не имеет. SSH/SSL имеет ограничения по используемым (генерируемым) ключам, но они связаны исключительно с соображениями безопасности снизу и используемым протоколом сверху.
30 дек 18, 15:10    [21776913]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Мне кажется надо еще раз проговорить архитектуру Димы.

Как я понял сеть - централизованная. Есть сервер но он иногда недоступен. Верно?
30 дек 18, 15:33    [21776918]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Gennadiy Usov
Member

Откуда:
Сообщений: 1462
mayton
Я не до конца понял что разрабатывает Дима. Но RSA стандартизирован и имеет фиксированные разрядности алгоритмов и ключей.
Хотя если брать математическое описание алгоритма - то его можно адаптировать под любые разрядности.
Главное чтоб наши комьютеры не захлебнулись.
А если адаптировать алгоритмы под ключи?
30 дек 18, 16:03    [21776928]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dima T
Member

Откуда:
Сообщений: 13634
Dimitry Sibiryakov
Dima T
Это-то тут при чем?

Это тут при том, что авторизация не зависит от того кем она проводится. Если сервер верит Алисе на слово, а Боб доверяет серверу, то Боб может спокойно верить Алисе на слово и степень безопасности от этого не изменится. Получит ли Боб ключ Алисы от сервера или от Алисы непосредственно - совершенно всё равно.

Dima T
Суть моей проблемы в том чтобы никто не смог писать от лица уже имеющейся учетки.
Например тебе в вацап напишут с неизвестного номера - ничего страшного, главное чтобы левые люди не писали с известных тебе номеров. Т.е. получатель изначально знает от кого принимать сообщения. Я эту проблему решаю.

Если Боб один раз получил ключ Алисы от сервера, то уже никто кроме самой Алисы не сможет ему написать с этой учётки даже при моментальном отсутствии сервера. Это тривиально и на "проблему" не тянет.

PS: Эх, а я-то считал себя безалаберным используя для идентификации 381-битные ключи...

Еще раз - давай оставим в стороне тему создания новых учеток. Я ее не поднимал. Тема сильно зависит от области применения.

Обычно эта задача решается так что с улицы никого не пускают, а пускают из другой системы, где пользователь уже присутствует.
Если ты банк, то сначала пакет документов в ответ учетка. Если мессенджер, то давай номер телефона и получи код в смс-ке и т.д. и т.п.
У меня эта тема уже порешана, учетки заводятся не без участия администраторов. Проблем с нездоровой активностью фантомных учеток у меня нет и не было.
mayton
Как я понял сеть - централизованная. Есть сервер но он иногда недоступен. Верно?

Верно, но при отсутствии сервера учетки могут обмениваться сообщениями, главное убедиться что тот кто пишет является тем за кого выдает. Это надо только при отсутствии сервера.
30 дек 18, 16:41    [21776947]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Dima T
mayton
Как я понял сеть - централизованная. Есть сервер но он иногда недоступен. Верно?

Верно, но при отсутствии сервера учетки могут обмениваться сообщениями, главное убедиться что тот кто пишет является тем за кого выдает. Это надо только при отсутствии сервера.

Ок. Тогда следующий вопрос-предложение. Или мысль. Или statement.
Если я буду неправ - сообщи.

1) При установке софта в каждое приложение прошивается сертификат (публичный ключ + реквизиты) сервера.
2) Все клиенты обмениваются сообщениями по принципу все-со всеми. Протокол и формат сейчас не имеет значения. TCP/UDP, Jabber, JMS.
3) Имеет значение аутентичноть. Тоесть все сообщения от всех имеют отправителя. Например.
From mayton: Привед! Чо как?

В данном случае в сети может существовать только 1 mayton.
4) Сообщения от лже-mayton должны
- игнорироваться?
- помечаться как непроверенные? Ненадёжные? Non-confident.
5) Любой контрагент может войти в сеть без сервера и (теоретически) начать писать другим
сообщения. Данный пункт является архитектурной проблемой и его надо как-то разрешить.
30 дек 18, 16:53    [21776955]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47394
Dima T
Верно, но при отсутствии сервера учетки могут обмениваться сообщениями, главное убедиться что тот кто пишет является тем за кого выдает. Это надо только при отсутствии сервера.

Тогда повторяю медленно: авторизационные токены всех участников рассылаются всем остальным участникам с сервера чем быстрее тем лучше. Если сообщение пытается отправить кто-то, чьего токена у получателя ещё нет - он получает отлуп. Всё.

Если последний пункт тебя не устраивает, то ты можешь завести "временное доверие", при котором принятое сообщение помещается в карантин и ждёт до тех пор когда сервер вернётся и подтвердит подлинность отправителя.

Если ждать возвращения сервера невтерпёж, то подтверждение токена может быть запрошено у других участников сети и доверие к отправителю можно оценить по кворуму.
30 дек 18, 18:01    [21776972]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dima T
Member

Откуда:
Сообщений: 13634
mayton
Dima T
пропущено...

Верно, но при отсутствии сервера учетки могут обмениваться сообщениями, главное убедиться что тот кто пишет является тем за кого выдает. Это надо только при отсутствии сервера.

Ок. Тогда следующий вопрос-предложение. Или мысль. Или statement.
Если я буду неправ - сообщи.

1) При установке софта в каждое приложение прошивается сертификат (публичный ключ + реквизиты) сервера.
2) Все клиенты обмениваются сообщениями по принципу все-со всеми. Протокол и формат сейчас не имеет значения. TCP/UDP, Jabber, JMS.
3) Имеет значение аутентичноть. Тоесть все сообщения от всех имеют отправителя. Например.
From mayton: Привед! Чо как?

В данном случае в сети может существовать только 1 mayton.
4) Сообщения от лже-mayton должны
- игнорироваться?
- помечаться как непроверенные? Ненадёжные? Non-confident.
5) Любой контрагент может войти в сеть без сервера и (теоретически) начать писать другим
сообщения. Данный пункт является архитектурной проблемой и его надо как-то разрешить.

1. Клиент как-то получает логин/пароль. Нет смысла расписывать всю схему. Клиент - это конкретный пользователь конкретной копии БД, но не только. Есть еще роботы.
2. Верно.
3. Верно.
4. лже-mayton вообще не должен попасть в систему, т.е. если один mayton онлайн в системе, то второй не может залогинится.
5. Собственно это и есть проблема о которой топик. Я придумал как ее минимизировать 21771725.

С другой стороны мне хочется понять насколько полезно неполноценное шифрование: в общем случае мой самодельный RSA32 ломается меньше чем за секунду (до написания в инете видел заявления что до суток продержится, но увы и ах, kealon(Ruslan) отрезвил), с другой стороны он нужен для редких случаев когда нет инета. Мой RSA32 может и дырявый насквозь, но если обеспечить получение открытого ключа только проверенными пользователями, то он вполне будет криптостоек, т.к. при прослушке зашифрованное не прочитать без ключей.
30 дек 18, 18:14    [21776977]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dima T
Member

Откуда:
Сообщений: 13634
Заменил проверку на простое с Миллера-Рабина, на тупую проверку остатка от деления всех простых до sqrt(x). Стало быстрее в два раза. Наверно это особенность x32, на больших разрядностях такая проверка захлебнется.
+ bool is_prime32(uint32_t x)
// Проверка на простоту делением на простые
bool is_prime32(uint32_t x) {
	// Все 16 битные простые
	static uint16_t *prime = NULL;
	if (prime == NULL) { // Инициализация prime[]
		prime = new uint16_t[6543];
		uint16_t *cur = prime;
		*cur = 2;
		cur++;
		for (uint16_t i = 3; i != 65535; i += 2) {
			bool is_prime = true;
			for (uint16_t *c = prime; (uint32_t)i >= (uint32_t)(*c) * (*c); c++) {
				if (i % (*c) == 0) {
					is_prime = false;
					break;
				}
			}
			if (is_prime) {
				*cur = i;
				cur++;
			}
		}
		*cur = 0; // Ограничитель для чисел близких к максимуму
	}
	// Проверка x
	for (uint16_t *cur = prime; (*cur) != 0 && x >= (uint32_t)(*cur) * (*cur); cur++) {
		if (x % (*cur) == 0) return false;
	}
	return true;
}
30 дек 18, 18:54    [21776985]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47394
Dima T
лже-mayton вообще не должен попасть в систему, т.е. если один mayton онлайн в системе, то второй не может залогинится.

А если сервера нет, то как этот первый сможет залогиниться?

Dima T
Собственно это и есть проблема о которой топик. Я придумал как ее минимизировать

А я предлагаю как её устранить на корню. При этом центральный сервер вообще можно выкинуть из картины за ненадобностью. Что и сделано у биткоина и прочих блокчейнов.
30 дек 18, 19:30    [21776995]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Dima T
1. Клиент как-то получает логин/пароль. Нет смысла расписывать всю схему. Клиент - это конкретный пользователь конкретной копии БД, но не только. Есть еще роботы.
2. Верно.
3. Верно.
4. лже-mayton вообще не должен попасть в систему, т.е. если один mayton онлайн в системе, то второй не может залогинится.
5. Собственно это и есть проблема о которой топик. Я придумал как ее минимизировать 21771725.

С другой стороны мне хочется понять насколько полезно неполноценное шифрование: в общем случае мой самодельный RSA32 ломается меньше чем за секунду (до написания в инете видел заявления что до суток продержится, но увы и ах, kealon(Ruslan) отрезвил), с другой стороны он нужен для редких случаев когда нет инета. Мой RSA32 может и дырявый насквозь, но если обеспечить получение открытого ключа только проверенными пользователями, то он вполне будет криптостоек, т.к. при прослушке зашифрованное не прочитать без ключей.

Хм. В твоей схеме шифрование-то вобщем не нужно.

В момент регистрации когад клиент как-то получает логин/пароль - сервер получает публичный ключ
клиента. Подписывает его. И сохраняет в свою базу. И с этого момента все участники чата если
обращаются на сервер могут получить образ этой базы и кешировать его так-же как браузер
хранит "печенюшки". Основываясь на TTL каждой записи. (Помним что сертификаты имеют
срок годности).

Есть еще схема когда участники между собой могут передавать образ этой базы.
Поскольку все записи заверены сервером (хардкод главного сертификата) то все
имеют возможность видеть публичные ключи всех.
30 дек 18, 19:36    [21776996]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Вот к примеру публичная часть RSA-ключа которую я сгенерил сегодня

~/.ssh$ fold < id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGSwaUaFwt8Yz7rqkLTQJw+lE2sx74EF9zQ+1GNbEE
/+OXtXhivDIDX+lLJg0KG2ZfXXrZPsvGslmDXYIK7D5jA7HY3bcB9/Z6Wg+HfJvoOvrSab8/mWFr51V9
8WuLAFv9AWj4je1A+Wrr1+IQjtRXgrBrDxmnomvYRn38/vK438WVxs7ByIMBj858u2p6xI6xtGtgt1Da
LvEjJnjKE6X9+MTZnpb/r7RVzXXvHODPnKLQDkVlm8IA47HYuKOCTAwqYETGQVEi6JXMJ481AoHTW21c
HxanOKcyiTObHpr+LiY+o2+Pzy6pyMbXyFIMIsljgiWhUDSe0PyETuaTWu91 mayton@mayton-HP-25
0-G4-Notebook-PC


В данном случае ssh-rsa - видимо сигнатура файла.
Длинная белиберда в base64 это и есть ключ.
Остальное - это пользователь-хост и протокол.

(P.S. всё побежал резать Оливье пока меня жена не убила...)
30 дек 18, 19:42    [21776997]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dima T
Member

Откуда:
Сообщений: 13634
Поделюсь немного своим жизненным опытом: на клиенте шифрование БД было, обмен с сервером был по HTTP (не HTTPS) с открытой передачей пароля по самодельному протоколу.

Конкуренты (их прога стояла там же где моя) не стали вникать в тонкости, а пошли сначала путем подмены DNS, т.е. в hosts на мои домены прописали свои шлюзы, где пытались анализировать трафик и рубить им не угодный, хотели скомпромитировать что у меня обмен не надежен. Не получилось. Затем просто за DDOS-или мой сервер.

Если учетка связана с деньгами, например вход в инет-банк, то да, согласен, есть интерес взломать и деньги украсть, а если явных денег нет, то проще заддосить и попросить денег за остановку атаки. Я исхожу из того что заддосить меня нельзя, а в остальном я нафиг не интересен, я Неуловимый Джо.

PS Никому не навязываю свою точку зрения, т.к. всем начальство может задать вопрос "а может быть что шпиьон прочитает нашу переписку?", ответить "нет" можно дать только при применении общеизвестных и проверенных способов шифрования.
30 дек 18, 20:18    [21777007]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
exp98
Member

Откуда:
Сообщений: 1624
Dima T, ведь в цикле вместо всех нечётных достаточно 6х+-1, т.е. 1/3 всех значений вместо половины.
30 дек 18, 20:36    [21777011]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dima T
Member

Откуда:
Сообщений: 13634
exp98
Dima T, ведь в цикле вместо всех нечётных достаточно 6х+-1, т.е. 1/3 всех значений вместо половины.

Знаю, но для x32 это не сильно ускорит.
30 дек 18, 20:45    [21777012]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dima T
Member

Откуда:
Сообщений: 13634
Dimitry Sibiryakov
Dima T
лже-mayton вообще не должен попасть в систему, т.е. если один mayton онлайн в системе, то второй не может залогинится.

А если сервера нет, то как этот первый сможет залогиниться?

Никак. Но есть локалка, где 2-3 юзера заинтересованных в обмене друг с другом. Найти друг-друга элементарно через mailslot`ы. Дальше надо убедиться что они те за кого себя выдают, что и есть тема топика.

Dimitry Sibiryakov
Dima T
Собственно это и есть проблема о которой топик. Я придумал как ее минимизировать

А я предлагаю как её устранить на корню. При этом центральный сервер вообще можно выкинуть из картины за ненадобностью. Что и сделано у биткоина и прочих блокчейнов.

Не стоит исключение превращать в правило. Серверов я могу пачку поднять и наладить между ними репликацию и оповещение клиентов какие сервера доступны. Это неубиваемо и гораздо эффективней блокчейнов
30 дек 18, 21:08    [21777018]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dima T
Member

Откуда:
Сообщений: 13634
Dimitry Sibiryakov, самое главное что по UDP не будет работать без сервера. Наты и брандмауры не пропустят.
Алиса спрашивает у сервера адрес Боба.
Сервер пишет Алисе адрес Боба и Бобу адрес Алисы.
Алиса и Боб начинают писать друг-другу и пробивают все наты и брандмауры.
Ключевое слово "друг-другу", без этого никак.
30 дек 18, 21:15    [21777021]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Как-то.... сумбурно все. Есть и DDOS. И локальная сеть. Вещи вобщем-то несовместимые.
Вобщем как для меня то надо отделить мух от котлет и понять что за проблема решается.
Какие есть бизнес-кейсы. Как это будет использоваться.

Вобщем сумбурно.
30 дек 18, 21:42    [21777028]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация без сервера  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47394
Dima T
Не стоит исключение превращать в правило. Серверов я могу пачку поднять и наладить между ними репликацию и оповещение клиентов какие сервера доступны. Это неубиваемо и гораздо эффективней блокчейнов

Это неубиваемо только пока ты жив и твои сервера не блокируются целенаправленно. Но распределённая пировая сеть всё равно надёжнее. Хотя, конечно, с вендор-лок и зависимостью от тебя в этом случае будет облом, а значит монетизация может не заработает.
30 дек 18, 23:00    [21777052]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
Все форумы / Программирование Ответить