The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Разработчик WireGuard серьёзно ускорил вызов getrandom() в Linux

05.07.2024 08:17

Джейсон Доненфилд (Jason A. Donenfeld), автор VPN WireGuard, представил патчи, значительно ускоряющие получение случайных чисел от системы через функцию getrandom(), реализованную через соответствующий системный вызов Linux. Преимуществом такого решения по сравнению с использованием /dev/random или /dev/urandom является неподверженность атакам на исчерпание файловых дескрипторов, которые могут привести к неинициализированным и неслучайным криптографическим ключам.

Предложенная оптимизация основана на использовании механизма vDSO (virtual dynamic shared object), дающего возможность перенести обработчик системного вызова из ядра в пространство пользователя и избежать переключений контекста. В случае с getrandom(), в виде vDSO оформлена реализация связанного с данной функцией системного вызова, код которой заранее загружается в адресное пространство процесса непосредственно ядром. Такой подход позволил ускорить получение случайных чисел в некоторых ситуациях в 15 раз и более.

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

  1. Главная ссылка к новости (https://www.phoronix.com/news/...)
  2. OpenNews: Для ядра Linux предложена реализация /dev/random, избавленная от привязки к SHA-1
  3. OpenNews: Предварительное сообщение об удалённой уязвимости в сетевом стеке ядра Linux
  4. OpenNews: Избавление ядра Linux от кода, меняющего поведение для процессов, начинающихся на символ X
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61494-random
Ключевые слова: random, kernel, wireguard
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (98) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (3), 08:42, 05/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Источники энтропии надо тестировать, в этом случае качество более важно скорости.

    dd if=/dev/urandom status=none |rngtest -c 100000

    dd if=/dev/hwrng status=none |rngtest -c 100000

    dd if=/dev/random status=none |rngtest -c 100000


    https://www.opennet.dev/openforum/vsluhforumID10/5638.html

     
     
  • 2.5, Аноним (5), 08:45, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +16 +/
    Что сказать то хотел?
     
     
  • 3.7, Аноним (3), 08:52, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Измените качество и скорость источника энтропии getrandom() и сравните его с /dev/urandom.
     
     
  • 4.9, Аноним (5), 09:09, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты понимаешь что такое vDSO? Там ссылка есть с описанием. Код функции не изменился от слова совсем. Всё работает так же, как работало раньше, но только быстрее
     
     
  • 5.13, Аноним (3), 09:27, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Вытянь с vDSO энтропию и замеряй rngtest ее качество и скорость.

    Сравни со скоростью

    dd if=/dev/urandom status=none |rngtest -c 100000

    Докажи, что не хуже качество и лучшая скорость.

     
     
  • 6.43, HyC (?), 12:44, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Вытянь с vDSO энтропию и замеряй rngtest ее качество и скорость.

    Ничего в качестве не изменилось. Изменился просто механизм вызова.

     
  • 6.103, Аноним (103), 18:43, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чувак, почитай как urandom работает Потом умничать будешь Грубо говоря это так... большой текст свёрнут, показать
     
  • 3.38, Аноним (38), 12:18, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что
    < более важно
    ?
    Блеснуть эрудицией.
     
  • 2.6, Аноним (3), 08:49, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сам чуток патчу ядро Linux для улучшения /dev/(u)random

    В тестах:

    dd if=/dev/urandom status=none |rngtest -c 100000

    Получаю 50-70 ошибок, без аппаратного rng в системе.

    Желаемого качества энтропии в четыре девятки для /dev/urandom без аппаратного rng мне получить так он не удалось.

     
     
  • 3.45, Аноним (-), 12:57, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Ты читал статьи, обосновывающие эти методы В этих статьях есть описание результ... большой текст свёрнут, показать
     
     
  • 4.81, Ivan_83 (ok), 22:51, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Чувак, откуда по твоему берутся специалисты? С марса?
    Это такие же люди, которые походили по граблям, набили шишек.
    И вот ты щас двигаешь тему что надо ничего не делать и ждать маны небесной от марсиан, а откуда им взятся?
     
     
  • 5.97, Аноним (-), 12:46, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Чувак, откуда по твоему берутся специалисты? С марса?
    > Это такие же люди, которые походили по граблям, набили шишек.

    У тебя представления ремесленника, а не инженера. Специалисты появляются в результате длинного и упорного обучения, которое включает в себя и хождение по граблям, но при этом содержат другой не менее, а может и более важный элемент: изучение всех тех граблей и шишек, которые набили другие. Это достигается через чтение книг и статей, общение с профессорами, а позже с коллегами.

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

     
     
  • 6.109, Аноним (-), 22:05, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Во первых вон тот гражданин в крипто рубит так что дай боже каждому Он как раз ... большой текст свёрнут, показать
     
     
  • 7.112, Аноним (-), 22:27, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Во первых вон тот гражданин в крипто рубит так что дай боже каждому.

    Ты о ком сейчас, родный? Я надеюсь о Доненфилде, а не о ком-то в этом треде? В этом треде нет ни одного рубящего в крипто, включая в этот список и меня. Моя подкованность в крипто ровно того уровня, чтобы детектить совсем уж школоло-уровня "экспертов".

    Прости, остальное твоё я не буду разбирать. Причину я уже называл выше: хочешь учиться, учись, но не жди, что я тебя буду учить.

     
     
  • 8.117, n00by (ok), 10:54, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    О Кнуте, очевидно Кнут - общепризнанный гуру в области односторонних криптограф... текст свёрнут, показать
     
  • 8.120, Аноним (-), 18:43, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно Вот вы кэп то Рубить в крипто можно на разном уровне Чтобы с ноля диз... большой текст свёрнут, показать
     
  • 4.82, Мне хватает (?), 03:06, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Несмотря на важность использования проверенных и сертифицированных реализаций криптографических генераторов случайных чисел, возможно, что иногда не standartные методы и подходы могут принести улучшения в определенных ситуациях. Экспериментирование с генераторами случайных чисел и их усовершенствование может привести к новым открытиям и улучшениям, которые не были доступны в стандартных реализациях. Подход к улучшению генератора случайных чисел может быть обоснован изучением методов и результатов, не уступающих стандартным специалистам, и в некоторых случаях может оказаться плодотворным. Таким образом, не следует исключать возможность подхода к собственной реализации генератора случайных чисел, но при этом необходимо учитывать потенциальные риски и выполнять тщательное тестирование и анализ вмешательств.
     
  • 4.89, Аноним (89), 10:03, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты меня не учи откуда энтропию брать. Рассказываешь здесь страшилки для детей.

    Алгоритм в ядре Linux рассчитан больше на скорость чем на количество и качество.

    Есть куча уже известных и хорошо описанных методов и алгоритмов как значительно улучшить энтропию и увеличить ее количество в Linux.

    Можно применить более медленные алгоритмы и получить лучшее ее качество.

    Мне удалось значительно улучшить качество и количество энтропии в Linux не очень сильно нагрузив процессор.

    Отдельно получил программный источник энтропии с качеством 1. Скорость для меня приемлемая, правда значительно грузит проц. Готов померятся качеством энтропии моего rng с любым вашим trng!

    Полученную энтропию всегда необходимо хорошо тестировать.

     
     
  • 5.96, Аноним (-), 12:41, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты меня не учи откуда энтропию брать.

    Я не собираюсь тебя учить, не надейся. Либо ты учишься сам, либо остаёшься безграмотным.

     
     
  • 6.99, Аноним (99), 13:21, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Грамотеи, готов померятся качеством энтропии моего rng с любым твоим trng!
     
     
  • 7.101, Аноним (-), 13:53, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > качеством энтропии

    В каких попугаях ты меняешь "качество" энтропии, и почему ты считаешь, что твои попугаи хоть сколько-нибудь значимы?

     
  • 5.100, Аноним (-), 13:35, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Лол, я походил по ссылкам, почитал, там Торвальдс про тебя написал One final no... большой текст свёрнут, показать
     
  • 3.49, Rev (ok), 13:59, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    На обычном Дебиане с установленным haveged, без аппаратных rng, показывает success 1000 и failures 0.
     
     
  • 4.104, Аноним (-), 18:54, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В более-менее современных линухах, с не очень античными ядрами, даже неблокирующ... большой текст свёрнут, показать
     
  • 3.62, Аноним (62), 16:46, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Без haveged rngtest FIPS 140-2 successes 99915 rngtest FIPS 140-2 failures ... большой текст свёрнут, показать
     
     
  • 4.90, Аноним (89), 10:15, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    haveged портит качество /dev/random, хотя скорость увеличивает заметно.

    haveged не рекомендую использовать из-за плохого качества его энтропии.

    Если нечего лучше нет, для криптухи рекомендую использовать:



    gpg --gen-random 2



     
     
  • 5.105, Аноним (-), 19:02, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > haveged портит качество /dev/random, хотя скорость увеличивает заметно.
    > haveged не рекомендую использовать из-за плохого качества его энтропии.

    Сейчас системда умеет подгружать в пул энтропии на старте свой random seed накопленый по ходу пьесы и вон то нечто стало нафиг не надо.

    Без сохранения random seed - виртуалки и эмбедовка сами по себе слишком предсказуемые и воспроизводимые и сразу после старта там в системе энтропии мизер, так что кому-то карта может попереть, если они состояние PRNG восстановят. Ну вот и приходится как-то так это затыкать.

     
  • 2.12, Аноним (12), 09:25, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Там разве не в пределах погрешности разница?
     
     
  • 3.14, Аноним (3), 09:30, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Брал очень большую выборку. Разница не в пределах погрешности. Все проводимые тесты описал. Результат можно верифицировать повторив.
     
     
  • 4.15, Аноним (12), 09:31, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://wiki.archlinux.org/title/Rng-tools

    >It is normal for any random number generator to fail in a small number of tests in 1000 passes, however if the number of failures is too great (like 10), probably there is something wrong.

    Пара неудач на 1000 тестов как раз и есть погрешность. Т.е. в итоге ничего не намеряно, кроме случайности.

     
     
  • 5.17, Аноним (17), 09:40, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Намерено, то что энтропия sha1 лучше энтропии sha-224, а энтропия sha-224 лучше энтропии sha3-224. Почему?

    Результат можно перепроверить. Методология описана. Одни хеш функции дают энтропию лучше чем другие.

     
     
  • 6.19, Аноним (12), 09:49, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Намерено, то что энтропия sha1 лучше энтропии sha-224, а энтропия sha-224 лучше энтропии sha3-224.

    Где? Просто выяснено, что в статистических (т.е. случайных!) тестах в конкретном прогоне у sha1 было больше неудач.
    В общем перепроверьте. Проведите те же самые тесты еще хотя бы несколько раз. Думаю, что результаты просто будут случайными - например в следующий раз sha1 будет хуже sha-224.

     
     
  • 7.20, Аноним (17), 09:54, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Брал достаточно большую выборку, чтобы утверждать в точности полученных результатов.

    Методология проведения теста и входных данных там подробно описана. Можете перепроверить у себя.

    Проверял на кухне, осенью, когда отопления ещё не включили...

     
     
  • 8.22, Аноним (12), 09:59, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Там совсем путанно как-то написано Дайте готовые bash скрипты, которые достаточ... текст свёрнут, показать
     
     
  • 9.24, Аноним (24), 10:44, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для хеширования необходимо иметь много мелких точно уникальных файлов На этих у... большой текст свёрнут, показать
     
     
  • 10.92, Аноним (89), 10:48, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Кто осенью для обогрева запустит тест, лучше его чуть модифицировать, с получени... большой текст свёрнут, показать
     
  • 6.110, Аноним (-), 22:10, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Намерено, то что энтропия sha1 лучше энтропии sha-224, а энтропия sha-224 лучше
    > энтропии sha3-224. Почему?

    А на практике - на sha-1 известны коллизии. Отсюда мораль: ценность упомянутых тестов в младших значащих цифрах - понятно какая.

     
  • 2.23, Аноним (-), 10:14, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Там по ссылке написан известный рефрен ложь делится на три категории 1 ложь, 2... большой текст свёрнут, показать
     
     
  • 3.26, Аноним (24), 10:57, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот скрипт:
    https://www.opennet.dev/openforum/vsluhforumID3/134208.html#24

    Хочешь получить цифру, для сравнения, а не "?" после трёх девяток - проведи 1 миллион тестов:

    bash entropy-hash sha1 |rngtest -c 1000000

    Результат исследования:

    sha1, tiger, sha224, whirlpool - победили ВСЕ стандартные, програмные, источники энтропии в системе! Даже 'gpg --gen-random 2' повержен.

    Проиграли только искусственному источнику энтропии с коррекцией ошибок под проводимый тест:




    dd if=/dev/urandom status=none |rngtest --pipe



     
     
  • 4.42, Аноним (-), 12:39, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Вот скрипт:

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

     
     
  • 5.93, Аноним (89), 11:08, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Запускаешь скрипт:
    https://www.opennet.dev/openforum/vsluhforumID3/134208.html#92
    Входные данные для всех хешей идентичны.
    Результатом работы скрипта есть некая энтропия хешей.
    Имея достаточное количество энтропии и способ проверки этой энтропии можно оценить ее качество.

    Статистика: больше пройденных тестов значит лучше качество.

    Проблема: качество энтропии хеша в среднем выше 99.9% а значит для точной четвертой цифры надо провести 1 000 000 тестов. Для одного теста, с помощью rngtest, надо получить 2500 байт энтропии. Для миллиона тестов необходимо получить 2.5GB энтропии с хешей.

     
  • 2.50, Аноним (50), 14:51, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Но подождите, на x86-64 random и urandom абсолютно идентичны, так как используют инструкцию RDTSC, которая предоставляет аппаратный jitter процессора в качестве источника энтропии.

    То есть вы хотите сказать, что хардварный рандом из CPU некачественный?

     
     
  • 3.60, anonymous (??), 16:44, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ну если честно то да, и этом то и главная проблема. На практике его подмешивают с чем нибудь псевдослучайным с хорошими свойствами (для разных задач разные), лучше ща такие деньги пока не придумали.
     
     
  • 4.64, morphe (?), 16:56, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    От смешивания рандома с чем угодно не зависящим от исходного рандома энтропия не может уменьшиться, она только растёт
     
     
  • 5.69, anonymous (??), 18:38, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    похоже ты ничего не понял В двух словах сложно пояснить там уже ядрёная математ... большой текст свёрнут, показать
     
     
  • 6.83, morphe (?), 04:29, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Прошу прощения, вы случаем не аудиофил?
     
     
  • 7.98, Аноним (-), 13:11, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не аудиофил Информационная энтропия -- это сумма p log p по всем p со зн... большой текст свёрнут, показать
     
     
  • 8.102, morphe (?), 17:31, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это логично что если ты не даешь генератору случайных чисел выдавать последовате... текст свёрнут, показать
     
     
  • 9.113, Аноним (-), 22:50, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что такое CSRNG Какая-то магия, как ты думаешь Или может быть идеальный генер... текст свёрнут, показать
     
     
  • 10.114, morphe (?), 23:22, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Разумеется он не идеален, однако CSPRNG по определению пригоден для использовани... текст свёрнут, показать
     
  • 3.70, Аноним (70), 18:53, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >rdtsc
    >random

    А посоны-то и не знали, и продолжали ей свой код профилировать.

     

  • 1.16, Tron is Whistling (?), 09:34, 05/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А теперь повторить сравнение, но с mitigations=off, а ещё лучше, всей этой ненормальной обёрткой, выключенной опциями ядра. Переключение контекста из-за этого бреда стало слишком дорогим.
     
     
  • 2.31, нах. (?), 11:28, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    так там же не выключается ничего давным-давно.

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

     
  • 2.32, laindono (ok), 11:33, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Переключение контекста дорогое удовольствие уже как минимум пару десятков лет.

    Быстрее, чем без переключения контекста, не станет.

     
     
  • 3.37, Аноним (37), 12:14, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А пару десятков лет назад оно чем принципиально отличалось?
     
     
  • 4.41, laindono (ok), 12:28, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А пару десятков лет назад оно чем принципиально отличалось?

    Сейчас процессоры тех лет называются микроконтроллерами. Никаких кешей, никаких предсказаний, никакой многоядерности и так далее. Из состояния при переключении только регистровый файл и всё.

     
     
  • 5.58, Аноним (37), 16:30, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Как бы, 20 лет назад это эпоха Pentium 3 и 4. Там есть предсказания, они ещё в Pentium появились. Ну а кеш внешний ещё в 80386 появился (1985), MMU и отдельные адресные пространства в 80286 (1982).
     
  • 5.75, Аноним (75), 19:44, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    мк сейчас вполне могут быть армы с кэшами и предсказаниями и с ядрами
     
  • 5.95, Аноним (95), 11:52, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Про микроконтроллеры и многоядерность, почитай про Kendryte K210.
     
  • 5.106, Аноним (-), 19:05, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Сейчас процессоры тех лет называются микроконтроллерами. Никаких кешей, никаких предсказаний,
    > никакой многоядерности и так далее. Из состояния при переключении только регистровый
    > файл и всё.

    Не, чувак, они называются - динозаврами. Здоровые, прожорливые, а считают - как вот эта тетрадная клеточка запитаная от CR2032 (батарейка на мамаке для часов) :)

     
  • 2.39, Аноним (37), 12:19, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но на практике там, где требуются случайные числа, нужно и mitigations=on.
     
     
  • 3.111, Tron is Whistling (?), 22:22, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем mitigations=on там, где нет постороннего кода?
     

  • 1.27, Аноним (27), 10:58, 05/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Будут неизбежные проблемы с жором памяти. Ибо на юзерспейсное состояние она нужна. Если уж прямо так хочется ускоряться ... у вас видеокарта есть (с чтением чужой видеопамяти, оставшейся в карте, хе-хе, там вообще защиты памяти нет, ибо свопить, очищать и эксклюзивно выделять память для процесса слишком дорого, всё крутится в общей памяти, не удивлюсь, если виртуалки могут читать содержимое экрана хостовых програм), можно нехило ускорить генерацию, генеря буферы случайных чисел параллельно в OpenCL через counter mode.
     
     
  • 2.66, Аноним (66), 17:57, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Код вообще не смотрел, но мнение имеет. Нет там никакого жопа памяти. При чем тут видеокарта вообще? Там, блин, ChaCha20. Еще xor видеокартой посчитай.
     

  • 1.35, Соль земли (?), 11:51, 05/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/



    #define SET_CALLBACK(a)                \
    do                                     \
    {                                      \
        printf("hello world");             \
        printf("hello world");             \
    } while( 0 )


    Вам кажется очень адекватным такое применение while? Мне нет. Знакомьтесь, "функциональный" макрос. Чтобы вставлять несколько statement, как один statement. Таких 5250 в ядре.

     
     
  • 2.47, Del (?), 13:43, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А можно в целях повышения образованности, зачем такой кусок кода? Или вы для примера привели чтобы передать логику?
     
     
  • 3.48, Аноним (48), 13:56, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чтобы можно было поставит ; в конце, будто вызов обычной функции, а не макроса. Няшная, конечно, странная, но разрабы под нее ещё страннее.
     
     
  • 4.53, Del (?), 16:00, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Чтобы можно было поставит ; в конце, будто вызов обычной функции, а
    > не макроса. Няшная, конечно, странная, но разрабы под нее ещё страннее.

    А в каком месте может потребоваться бесконечный вывод Hellow world?

     
     
  • 5.65, Аноним (65), 17:13, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    бесконечный, это когда while(1)
     
  • 3.85, n00by (ok), 07:30, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    См. "Верёвка достаточной длины, что бы выстрелить себе в ногу", автор  Ален И. Голуб
     
  • 3.107, Аноним (-), 19:07, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А можно в целях повышения образованности, зачем такой кусок кода? Или вы
    > для примера привели чтобы передать логику?

    Позволяет воткнуть блок кода макросом без особых приколов, обломов и неожиданных эффектов.

     
  • 2.51, Аноним (51), 14:59, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Вам кажется очень адекватным такое применение while? Мне нет.

    Это типичная практика в сишном коде лол

     
  • 2.54, Аноним (54), 16:02, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Это более чем обычная идиома в сишке!! (почти как эти два восклицательных знака)

    Вот больше про противление ногострельбе с макросами:
    этот do-while (0) https://wiki.sei.cmu.edu/confluence/display/c/PRE10-C.+Wrap+multistatement+mac
    заворачивание аргументов в скобки https://wiki.sei.cmu.edu/confluence/display/c/PRE01-C.+Use+parentheses+within+
    временные переменные против двойного инкремента https://wiki.sei.cmu.edu/confluence/display/c/PRE12-C.+Do+not+define+unsafe+ma

     
     
  • 3.76, Аноним (76), 20:28, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за ссылки!
     
  • 2.59, Аноним (62), 16:33, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Лишь бы C11 не использовать.
     
  • 2.63, Аноним (63), 16:47, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > SET_CALLBACK

    А это тут причем в твоём коде?

     
     
  • 3.68, Соль земли (?), 18:25, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Не причём. Просто название макроса. Вместо SET_CALLBACK(a) можно написать TRALALA. Но обязательно капсом. Так принято, чтобы отличать макросы от обычного кода.
     
  • 3.86, n00by (ok), 07:32, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что бы было очевидно, что пример надуман с какой-то неясной целью.
     
  • 2.119, Аноним (119), 14:44, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    это показывает, какой отстой эти ваши макросы в СИ
     

  • 1.71, Аноним (-), 19:11, 05/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    схожесть с недавней истории с xz уже не такая неочевидная хоть и остается тщательно замыленной. гражданин постепенно разворачивает импланты там где дверь на замке даже для тех кто имеет право там что то делать.
     
  • 1.72, IZh. (?), 19:17, 05/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Тем временем, Торвальдс высказал своё мнение: https://www.phoronix.com/news/Linus-Torvalds-No-Random-vDSO
     
     
  • 2.79, Казацький ватажок (?), 21:49, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Какое? Изначальное? Или с то, где решил ещё раз пересмотреть патчи?
     
  • 2.80, Аноним (80), 22:19, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Торвальдс тут ничего не решает, VDSO - это shared object, а патч код ядра не затрагивает. Кому надо - просто либу заменят.
     

  • 1.73, Аноним (73), 19:39, 05/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В Linux для x86 нет разницы между random и urandom. Random не является генератором случайных чисел. Это как маспо среди it технологий. Продукт, идентичный натуральному, "пригодный" для криптографии.
     
     
  • 2.74, Аноним (73), 19:40, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Может кто-то напомнить, почему допустили такое? Почему разрешили убить random и заменить его на такую заглушку?
     
     
  • 3.77, Казацький ватажок (?), 21:44, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что блокируется и ждёт пополнения энтропии (труЪ случайности), когда запасы энтропии истощаются. Т.е. когда требуется много рандомных данных, чтение random может быть медленным, так как оно ждёт накопления нужного кол-ва энтропии.
     
     
  • 4.87, Аноним (73), 09:53, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так можно же было оставить urandom для получения псевдослучайных данных с большой скоростью и random для случайных. Зачем испортили? Не понимаю.
     
     
  • 5.94, Аноним (89), 11:13, 06/07/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 5.108, Аноним (-), 20:36, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Никто там ничего не портил Urandom это такой PRNG на стероидах, который инициал... большой текст свёрнут, показать
     
     
  • 6.116, Аноним (73), 09:55, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так я и говорю, что блокирующей версии в Linux больше нет. Random = urandom.
     
     
  • 7.122, Аноним (122), 19:01, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Так я и говорю, что блокирующей версии в Linux больше нет. Random = urandom.

    Да, я припоминаю подобное изменение. И все же, насколько я помню все немного сложнее и в определенных условиях, типа только стартанувшей системы с низкой энтропией, которая вообще адкватный seed еще не набрала - блокирующая версия вроде бы все же может заблокироваться?

     
  • 2.78, Казацький ватажок (?), 21:47, 05/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В Linux для x86 нет разницы между random и urandom.

    И чем же random\urandom отличается на x86 от других архитектур? 🤔

     

  • 1.84, foo (?), 06:03, 06/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Апдейт: Линус отклонил это. Апдейтните новость.

    https://www.phoronix.com/news/Linus-Torvalds-No-Random-vDSO

    Linus Torvalds isn't yet content with its design or even the need.

     
     
  • 2.88, Аноним (88), 09:54, 06/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ничего он не отклонил. Вначале выразил сомнение в нужности, но потом ему разжевали зачем это и он согласился принять после решения некоторых сугубо технических вопросов.


     
  • 2.123, Аноним (123), 19:51, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Он не отклонил саму идею, он отклонил реализацию с дополнительным сисколлом.

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

     

  • 1.91, pda (ok), 10:38, 06/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Можно и ещё сильнее ускорить... :) https://xkcd.com/221/
     
  • 1.115, Аноним (115), 07:46, 07/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А что там насчёт clock_gettime() кто в курсе? Лет так 10 назад оно реально кушало процессор. Сравнивал небольшой js код через qtwebkit тех времён. На венде в фоновом простое 0% CPU usage, на линуксе постоянно 2% было, а ноутбук разряжался быстрее при работе примера. Возможно дело в самом WebKit тех времён, а возможно в clock_gettime() теперь уже покрыто мраком.
     
     
  • 2.121, Аноним (122), 18:56, 07/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А что там насчёт clock_gettime() кто в курсе? Лет так 10 назад
    > оно реально кушало процессор.

    Если ты поклацаешь по ссылкам и проч - найдешь список того что в vDSO нынче модно упихпивать. И да, там есть clock_gettime(). Именно поэтому.

    Так что - насчет clock_gettime в современных ядрах все ЗБС. А кто хочет суперстабильным 2.6.32 пользоваться - получает вон то.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру