LINUX.ORG.RU

Хочу сделать регистрацию без email, посоветуйте вычислительную задачку для браузера

 


3

1

Возникла идея сделать один мелкий сайтик с юзерами, а там регистрация. В силу того, что я не понял, зачем мне для регистрации просить email, да ещё гонять трафик и снюхиваться со всякими email-серверами, то емейла/телефона при регистрации не будет.

Но минимально защититься от спама хочется. Самодельный генератор капчи есть, написанный на крестах, который генерит капчу за 1..2 мсек, но всё же простейший ДДОС с кучей запросов на эту капчу быстро ушатает генератор и исчерпает запасы качп в базе, а завязываться на доступность гугловых рекапч не хочется, да и лишние коннекты ваять, когда генератор уже есть. Неважно насколько он крутой, важно что нейросеть у атакующего тяжелее этого генератора.

Поэтому возникла идея поставить капчу позже, а сначала попросить юзера доказать, что он выдержал некий proof-of-time алгоритм (и возможно proof-of-memory с микрокодом типа как в RandomX, но похрен). Proof-of-time - это, короче, пруф того, что ты регался не менее 5 секунд. Реализуется как 5 обменов с браузерным JS, между которыми не может быть менее секунды, причём сервер не утруждает себя хранением состояния, чтобы выдерживать SYN-flood-атаки (запустили регистрацию 100500 раз и свалили).

Посылаем браузеру структуру данных, с прошитым в ней миллисекундным timestamp, изменить который без разрушения структуры невозможно, просим прислать нам структуру обратно через секунду и забываем про факт посылки. Когда через секунду браузер присылает эту структуру назад, мы смотрим на прошитый в ней timestamp и понимаем, прошло ли достаточно времени для её возврата нам или юзер читерит. Далее генерим аналогичную структуру для второго состояния и так далее, пока не получим возврат на последнюю посылку. То есть, нужен алгоритм генерации такой структуры данных, валидность которой наступает в будущем.

На экране юзера такая регистрация будет выглядеть как прогресс-бар, который тупо доходит до 100% за 5 секунд.

Простейший вариант - тупо зашифровать своим секретным ключом AES128 строчку вида <256-bit-random-salt> и на входе расшифровывать обратно, сверяя timestamp. Но может есть чё попроще или наоборот поумнее, понадёжнее или «так же надёжно, но вычислительно сильно дешевле»?

А ещё были такие идеи на тему proof-of-memory: генерим на сервере 512 байт данных и запоминаем, а юзеру отправляем 1 МБ, где в случайных местах замешаны эти 512 байт. Потом посылаем юзеру 10 запросов в рандомные места этого 1 МБ куска, ответы на большинство из которых нас не волнуют. Пара запросов, которые попадают в «наши данные» мы проверяем, но юзер вынужден помнить весь 1 МБ, не зная где среди них лежат наши данные. Потом я прочитал про RandomX и понял, что это содомия, а нормальные чуваки просто генерят какой-то псевдомашинный код на тему перемещения блоков в памяти, который (код) юзер физически состоянии исполнить только имея, скажем, 4 гига оперативы - короче надо ещё про это почитать! Жаба конечно задушит каждому дебилу по 1 МБ рассылать. Нужно, чтобы псевдокод для исполнения у жертвы не мог вернуть верный результат без использования настоящих 16 мегабайт памяти, но чтобы результат работы кода был мизерным и был известен серверу прямо в момент генерации этого рандомного дьявольского псевдокода.

Ответ на: комментарий от igloev

Опять кому-кают? ;)

Да что ж за лентяи-то такие, за вас в толковый словарь ходить? ;)

 1. кому-чему являющийся должником кого-либо, обязанный уплатить что-либо кому-либо ◆ Я вам должен три рубля. ◆ Илья Ильич вам должен десять тысяч по заёмному письму? И. А. Гончаров, «Обломов»

 2. с инф. обязан сделать что-либо ◆ Служащие должны вовремя являться на работу. ◆ Я должен был, прежде чем объясняться в любви, посвятить её в свою тайну! А. П. Чехов, «Женщина без предрассудков»

 3. с инф. о том, что непременно, неизбежно совершится, произойдёт ◆ Затмение должно наступить в три часа.

 4. с инф. служит для выражения вероятности, предполагаемой неизбежности какого-нибудь события ◆ Она должна была прийти ещё вчера. ◆ Подождите, он должен вернуться к обеду.

Сами посчитаете, в скольких пунктах здесь «кому»? ;)

mertvoprog ()
Ответ на: комментарий от aureliano15

Отсутствие http?

Да, и не только — в запущенных случаях ниже TLS1.2 вообще ничего не работает, даже сертификаты обновлять на старых системах бесполезно.

то же самое на большинстве сайтов

Массовость фашизма как-то его оправдывает? ;)

там, где есть логин/пароль или другая передача конфиденциальных данных

На педивикии это всё опционально, там просто публичные текстовые статьи. И на большинстве информационных сайтов тоже. Обычному пользователю мало где нужно регистрироваться и тем более гонять что-то конфиденциальное и при этом непубличное. Но https-фашизм навязывается абсолютно всему вебу. Не удивимся, если уже через пару лет Google начнёт ущемлять не-https-фашистские сайты в своём браузере, поисковике и марионеточном браузере (лисе).

почему это плохо, даже когда острой необходимости в шифровании нет?

Очевидно же, потому что совместимость ломается. Сайты становятся недоступны для браузеров без реализаций свежайших шифров и сертификатов. При том, что остальные-то технологии с конца прошлого века не менялись. Выглядит как подготовительный этап к тому, чтобы сломать web в корне и перевести на новый стек технологий (в принципе, WA+WebGL уже таковым являются, но для всего подряд их пока не юзают).

Что обходится?

Требование поддержки шифрования на клиенте. Запускается stunnel на удалённой машине, натравленный на определённый https-фашистский хост/порт, к нему подключается с нешифрованной стороны клиент. Также через всякие шебпрокси можно обходить, но там слишком много MitM.

mertvoprog ()
Ответ на: комментарий от mertvoprog

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

TLS1.2 появился в 2008 году. Это насколько же система должна была устареть, чтобы его не поддерживать?! Как там вам в 0-х живётся? У нас в 20-х коронавирус, санкции и глобальное потепление!

На педивикии это всё опционально, там просто публичные текстовые статьи. И на большинстве информационных сайтов тоже.

Согласен. На таких сайтах можно было бы поддерживать и обычный http хотя бы для незалогинившихся. Но, с другой стороны, нет худа без добра: массовое шифрование всего и вся затрудняет слежку.

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

Т. е. выпущенных в 0-е годы и раньше. Не вижу проблемы.

Запускается stunnel на удалённой машине, натравленный на определённый https-фашистский хост/порт, к нему подключается с нешифрованной стороны клиент.

Понял. А зачем так сложно, когда можно просто обновить браузер?

aureliano15 ★★ ()
Ответ на: комментарий от aureliano15

Как там вам в 0-х живётся?

Превосходно. Народ и тачки из 90-х эксплуатирует, какие там 00-е.

массовое шифрование всего и вся затрудняет слежку

И является поводом запретить шифрование вообще.

Почему Вы считаете слежку чем-то плохим? Вы анархист?

Т. е. выпущенных в 0-е годы и раньше. Не вижу проблемы.

Кагбэ напоминаем, что речь о

неизвестных браузерах 20-летней давности

И проблема есть, потому что обратная совместимость в вебе формально есть, но на самом деле её нет. И никакого проку с того, что сайты кичатся простой HTML-статикой, когда к ним даже соединение установить нельзя.

можно просто обновить браузер

Нельзя же.

mertvoprog ()
Ответ на: комментарий от igloev

Вы не в курсе, что есть ЭВМ с гарвардской архитектурой, например, где прикладное ПО зашивается с ОС в единый образ и отдельно не обновляется?

Что прожорливость браузеров со временем растёт и определённых аппаратных конфигураций им становится мало?

Что совместить бутерброд в виде (старое железо + {относительно новая ОС|костыли для старой, чтобы обеспечивать новые API} + новые браузеры) далеко не всегда тривиально?

Чушь не несите ;)

mertvoprog ()
Последнее исправление: mertvoprog (всего исправлений: 1)
Ответ на: комментарий от mertvoprog

массовое шифрование всего и вся затрудняет слежку

Почему Вы считаете слежку чем-то плохим?

Потому что я не люблю, когда за мной следят. К тому же это нарушает мои конституционные права, а именно ст. 23 конституции РФ.

Вы анархист?

Да. Но мирный и более чем умеренный.

Т. е. выпущенных в 0-е годы и раньше. Не вижу проблемы.

Кагбэ напоминаем, что речь о

неизвестных браузерах 20-летней давности

Ну я же про эти браузеры как раз оговорился, что

тестить сайт на всех неизвестных браузерах 20-летней давности — перебор.

И проблема есть, потому что обратная совместимость в вебе формально есть, но на самом деле её нет.

С этим, пожалуй, соглашусь.

можно просто обновить браузер

Нельзя же.

Если комп так слаб, то поставьте links. Он встаёт на любое железо, потребляет до смешного мало памяти и поддерживает tls. А вот с js и css там облом.

aureliano15 ★★ ()
Ответ на: комментарий от aureliano15

я не люблю, когда за мной следят

Мало чего Вы не любите. Из детсада пишете?

конституции РФ

Это такой бренд туалетной бумаги?

Но мирный и более чем умеренный

Это как, на полшишечки? Так это уже не анархизм тогда, а ближе ко всяким минархизмам и прочим либурундельствам.

перебор

Но известных 19-летней, выходит, уже не перебор ;)

Если комп так слаб, то поставьте links

Как только портируете его на все платформы, на которые есть другие некробраузеры, так сразу. А это куча мобильников, телевизоров, игровых приставок и прочей эмбедщины. И этим тоже кто-то пользуется.

А вот с js и css там облом

Ну и чем оно лучше всяких Access NetFront и Pocket IE, где JS/CSS хоть как-то реализованы?

mertvoprog ()
Ответ на: комментарий от igloev

Ну так контролируют свои данные полтора психа, остальные сидят на игле облаков и соцсетей (даже те, кто в начале 00-х ещё не сидели). И это необходимо решать, чтобы массами не манипулировали одним махом. И решать необходимо силами каждого отдельного шарящего индивидуума, иначе не взлетит.

mertvoprog ()
Ответ на: комментарий от mertvoprog

я не люблю, когда за мной следят

Мало чего Вы не любите. Из детсада пишете?

Нет. Из демократической страны.

конституции РФ

Это такой бренд туалетной бумаги?

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

Но мирный и более чем умеренный

Это как, на полшишечки? Так это уже не анархизм тогда, а ближе ко всяким минархизмам и прочим либурундельствам.

И опять нет. Мирный — это значит против войны и прочих вооружённых кровопролитий и тер. актов. А умеренный — значит за постепенность, а не прямо завтра всё сразу.

Если комп так слаб, то поставьте links

Как только портируете его на все платформы, на которые есть другие некробраузеры, так сразу. А это куча мобильников, телевизоров, игровых приставок и прочей эмбедщины. И этим тоже кто-то пользуется.

Это действительно проблема. Но проблема обоюдная: с одной стороны веба, а с другой — всей этой вашей проприетарщины. Почему бы не дать вендорам альтернативу: или открывай прошивку, или, если не хочешь, будь добр сам в течение 30 лет поддерживать актуальные обновления? Но ведь они не хотят ни открывать, ни поддерживать даже несколько лет. Вот у меня есть старый сканер, который прекрасно работает во всех новейших линуксах, а в последних оффтопиках работать не хочет, потому что нет дров. Вроде бы и веб тут ни при чём, а без линукса всё равно пришлось бы покупать новый сканер.

А вот с js и css там облом

Ну и чем оно лучше всяких Access NetFront и Pocket IE, где JS/CSS хоть как-то реализованы?

Тем, что наличие/отсутствие js и css вы можете сами контролировать как веб-мастер и веб-программист на любом хостинге. В т. ч. можете анализировать юзерагент и отдавать одним вариант с js и css, а другим — без них, если так заботитесь об обратной совместимости со старым софтом и железом. А вот для того, чтобы контролировать используемые при этом протоколы, надо быть владельцем хостинга.

aureliano15 ★★ ()
Ответ на: комментарий от igloev

А ты тут при чём

Несём «психоз» в массы, очевидно же.

зачем решил это обсудить

Низачем, это Вы скатили обсуждение в данную степь вместо того, чтобы не мыслить субъективистски.

mertvoprog ()
Ответ на: комментарий от mertvoprog

И проблема есть, потому что обратная совместимость в вебе формально есть, но на самом деле её нет. И никакого проку с того, что сайты кичатся простой HTML-статикой, когда к ним даже соединение установить нельзя.

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

anonymous ()
Ответ на: комментарий от aureliano15

Из демократической страны

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

Это такой документ

Которому многие законы противоречат. В отличие от стран, где Конституционный Суд реально работает.

постепенность

Постепенное устранение власти? Это как?

всей этой вашей проприетарщины

Вам показать кучу свободных проектов, которые в теории допилить можно, но на практике некому? ;)

Вот свободный аналог транскодеров и J2ME-клиентов Opera Mini вполне можно забабахать, почему же до сих пор нет?

в течение 30 лет поддерживать

Are you okhreneley tumm, конторы столько не живут ;) И как это поможет некрофилам, которые хотят пользовать лет сорок, или пока календарь в устройстве не закончится?

прекрасно работает во всех новейших линуксах, а в последних оффтопиках работать не хочет, потому что нет дров

Бывает, но обычно наоборот ;) Мы тоже подбирали старый Bluetooth-свисток специально под онтопик, модель где-то явно упомянута в исходниках ядра. Нашли с липким корпусом всего за 15 хрювень, доставка дороже обошлась ;) Но вот если взять рандомную китайщину — ситуация уже будет не столь радужной, при этом высокоуровневые интерфейсы драйверов в винде не ломаются.

анализировать юзерагент

А что делать с дятлами, которые спуфят его на что попало? ;) Пускай страдают?

чтобы контролировать используемые при этом протоколы, надо быть владельцем хостинга

Ну покажите хостинг, на котором для работы HTTP/1.1 надо плясать с бубном, а вот всякие TLS/SSL, SNI, SPDY, QUIC — работают без бубна, а не наоборот ;)

mertvoprog ()
Ответ на: комментарий от mertvoprog

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

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

igloev ()
Ответ на: комментарий от Dred

Прикрутил бы какой-нибудь oauth, нахрена вообще с регистрацией и безопасностью возиться?

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

igloev ()
Ответ на: комментарий от mertvoprog

Демократия — власть большинства [skip] Вы таки уверены, что большинство против любой (!) слежки?

Не только. Это ещё и соблюдение прав меньшинства, законности и пр. и пр.

власть большинства, в первую очередь интеллектуального

А вот это уже аристократия, а не демократия.

Это такой документ

Которому многие законы противоречат.

В соответствии всё с той же Конституцией, она у нас прямого действия, т. е. не нуждается в расшифровке другими кодексами и имеет над ними приоритет.

Постепенное устранение власти? Это как?

Примерно как в Швейцарии.

Вам показать кучу свободных проектов, которые в теории допилить можно, но на практике некому? ;)

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

в течение 30 лет поддерживать

Are you okhreneley tumm, конторы столько не живут ;)

Ну, с покойника не спросишь. А пока живут, пусть поддерживают. И купившие их бренд тоже пусть автоматически принимают и обязательства.

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

30 лет — это только для разогрева. Позже можно будет довести и до 40, и больше. А поможет тем, что большинство контор предпочтут открыть старые прошивки и драйвера, чтобы не поддерживать их столько времени.

прекрасно работает во всех новейших линуксах, а в последних оффтопиках работать не хочет, потому что нет дров

Бывает, но обычно наоборот ;)

Статистику я не собирал, но у меня так, как я сказал.

высокоуровневые интерфейсы драйверов в винде не ломаются.

Я так понимаю, что в этом месте следует смеяться и аплодировать?

анализировать юзерагент

А что делать с дятлами, которые спуфят его на что попало? ;) Пускай страдают?

Разумеется, если они сами себе такие буратины, что сидя под линксом всем говорят, что у них последний хром. А как им можно помочь, если не брать в расчёт лоботомию?

Ну покажите хостинг, на котором для работы HTTP/1.1 надо плясать с бубном, а вот всякие TLS/SSL, SNI, SPDY, QUIC — работают без бубна, а не наоборот ;)

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

Да, запамятовали, а обратная обратной совместимости как называется? ;)

Обратная обратной — это когда написанная 20 лет назад программа гарантированно будет работать с любым протоколом, который может появиться в течение ближайших 20 лет? Если она самая, то libastral.

aureliano15 ★★ ()
Ответ на: комментарий от Harald

зачем тебе такие юзеры :)

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

igloev ()
Ответ на: комментарий от igloev

А чё вы решили посраться о своей хрени именно в моём треде?

Ok, завязываю. @mertvoprog, если захотите ответить, создавайте тему в толксах и кастуйте меня. Или в крайнем случае в теме о закладках: она похожа, т. к. тоже связана с сетью и безопасностью, а ТС там перерегался и, как я понимаю, на свою тему снова не подписался (если только с блокировкой пользователя не уменьшаются счётчики отслеживания во всех отслеживаемых им темах).

aureliano15 ★★ ()