213


Пост навеян вот этим
криком отчаяния, в рамках которого нас закидали ссылками на доклады о фактах нахождения уязвимостей, хайповые сайты несущие правду в массы и хабрахабр. Разве что Рен-ТВ не подключили.
Когда людей
порядком заебали перестали привлекать слова биткоин и блокчейн, пришло время вбросить
говно на вентилятор новый тренд об уязвимостях в современных системах. Тема безопасности это, блять, неиссякаемый Клондайк. Это как секс - когда миссионерская поза заёбывает, можно трахнуть в попу и в глаз ради разнообразия, а потом повернуть к себе и опять по-старинке. Вот так же с информационной безопасностью.
Поскольку я достаточно плотно работаю разработчиком ПО, в этой области, я позволил себе вольность - поковыряться в этой теме как можно подробнее. Я понимаю, что я, нихуя, ни разу не авторитет для уважаемого ЯП-сообщества, но, отмахиваясь от
лучей поноса новостей про уязвимости, мне отчего-то сразу подумалось, что эта тема раздута несколько бОльше, чем она того заслуживает. Причин на это несколько:
1. Все мы сильно беспокоимся о своей безопасности. До того сильно, что готовы задушить того, кто закрыв дверь на замок, забыл дополнительно "закрыть её на цепочку". В то же время грабят нас давно банки - то есть угроза идёт не из-за двери. Поэтому корпорации со страшной силой доят нас в этой области. Вы себе даже не представляете какой лютый пиздец творится на эту тему в кулуарах секьюрити департментов;
2. Хуйли тут таить - для компаний это профит. Скоро появятся ПО которое гласит "неуязвимо для атак Spectre и Meltdown". И будет стоить ахулиард денег, хотя внутри там будет то, что должно было быть еще со времен мамонтов, а именно, нормальный секьюрный код с использованием широко известных в узких кругах решениями;
3. Ну и отказ от ответственности: звиняйте, у нас утечка данных потому что "Spectre", "Meltdown" (уверен, появятся другие модные названия), поэтому вас выебали, но, у нас хорошая новость! Выебали так же и других, поэтому вам не должно быть настолько обидно.
На рынке уже давно есть решения (названий которых я вам не скажу, чтобы не начали орать про рекламу), которые призваны решить эти проблемы во многих областях кодописания и программостроения. Я столкнулся с ними где-то в 2011 году и, вы, блять, не поверите, в 2011 году решались проблемы вот точно такие же, когда ваш компьютер
берут в анальное рабство подвергается атакам с физическим к нему доступом.
Дело в том, что если достаточно квалифицированный злоумышленник получит физический доступ к компьютеру, то он может скопировать содержимое жесткого диска, и сделать "скриншот" всей оперативной памяти не выключая вашу любимую ОС. Из полученных данных он вытащит ключи, пароли и явки. И, разумеется вам - пизда, дорогие мои. Для особо упоротых, я должен оговориться насчёт жесткого диска: да, он может быть зашифрован. А ключ, в открытой форме, находится где? В оперативной памяти, которую только что невозбранно спиздили! И при помощи полученного ключа, жесткий диск, опять же, можно расшифровать. Ничего это всё не напоминает? А мне напоминает. Проблему о которой начался ор в этих ваших интернетах. "Все данные спиздят, нас в рабство, а жён - выебут.".
Так вот, суть программных решений (повторяюсь, древних как говно мамонта!), заключается в том, чтобы:
1. Запутать код до такой степени, что время, потраченное на его расшифровку будет сопоставимо со временем актуальности секретной информации;
2. Никогда не хранить секретные данные в открытом виде в памяти;
Первый подход называется
обфускация, про который знает даже школота, которая вчера открыла учебник по православному Javascript. А второй называется
whitebox cryptography - WBC. Остановимся на втором подробнее.
WBC, это такой подход, когда если данные спизят - ну и хуй с ними. Они всегда зашифрованы. И зашифрованы они сложными математическими алгоритмами. И подход гарантируют, что ни в какой момент времени ваши данные в открытом виде не промелькнут в оперативной памяти. НИКОГДА БЛЯТЬ. Правда там не принято писать "блять", но я читал - там почти что так и написано. Были проведены тысячи разных испытаний на попытку взлома разными уважающими компаниями по разработке кода, компаниями по аудиту кода и просто веселыми хакерами. Включая период после официального нахождения вышеупомянутых уязвимостей. Как известно - хуй что было взломано. Взломать конечно можно - перебором. Перебирать будете дольше чем проживёте, так как нет таких вычислительных мощностей на нашем бренном шарике.
Как это работает? Попробую описать принцип WBC на пальцах:
Предположим, что 4, 6 - это очень секретные данные. Но так уж получилось, что нам нужно сложить 4 и 6, и получить результат (который тоже секретный, как писька жены):
4 + 6 = 10 (i)
Нам будет очень печально, если эти циферки украдут. Что делаем? А вот что. Мы придумываем функцию, которая изменяет наши числа на лету. Скажем, прибавляет единицу. То есть наша "4" превращается в "5", наша "6" превращается в "7":
5 + 7 = 12 (i)
Ни одной старой цифры. Спиздят - да и похуй. На самом деле алгоритмов там тонна, они ппц сложные и разработчик может их комбинировать уникальным для него самого методом. В результате мы получаем какое-то говно лишенное смысла, которое никому кроме вашей программы не интересно.
Этот параграф пропускаем - нихуя интересного нет в нём. Например, у нас есть видеопоток D, зашифрованный ключом K. Зашифрованный поток пусть будет D'. Ключ K, у нас тоже не в чистом виде, а в виде WhiteBox - K'. Алгоритм может расшифровать поток D' применяя K' и расшифровывая контент не приводя K' к K. Либо, если расшифровкой контента занимается аппаратура (видеокарта например), требующая поток зашифрованный собственным ключом (D" и K"), то можно преобразовать D' в D" минуя D, а K' в K" минуя K. Я сразу сказал - пропускаем параграф, так что не обижаемся.
Так вот - именно так и работают многие системы. Да спиздят, ну и что? Многие приложения на этих ваших андроидах защищены именно так. А те кто так не делают - должны будут обновить приложения хранящие такие данные. Лично у меня одного, как разработчика, переход с OpenSSL-криптографии на новую заняло где-то 2 недели. Причём речь идёт не о переписывании программы целиком, а буквально 10% кода (если не меньше). Да, эти системы стоят деньги, но очень смешные в рамках корпораций.
Поэтому прекращаем фалломорфировать, сокращаться и сраться по углам. Спокойно ждём обновлений и ставим их. Осторожными быть конечно надо, но блять, шапочки из фольги - это перебор.
P.S. Кто не ссыт, вот
ссылка по которой можно проверить - уязвим ваш браузер или нет. Если ссыте, то аккуратно копируем ссылку в буфер обмена (не переходя по ней) и в гугл (или яндекс) - вдруг я злой хакер!
P.P.S.
Если результат "VULNERABLE" (уязвим), то это точно и однозначно. Однако, если результат "NOT VULNERABLE" (неуязвим), то это означает, что возможно есть другой метод атаки, не учтенный разработчиками сайта. Печально, конечно, но это надо помнить.