Wednesday, January 15, 2014

За нами следят

Уже наверно не секрет, что закладки есть везде - и в железе, и в ПО.
Поэтому это уже не удивляет, не удивляет, например, и ответ Cisco.
В любом случае, как бы там ни было на самом деле, очевидно, что НДВ в ПО реализовать несложно, да и в железе тоже.
Это и понятно - страна имеющая абсолютное господство на рынке аппаратных и программных средств рано или поздно будет использовать это преимущество для преследования, своих, государственных целей.

Что же делать со всем этим рядовым компаниям, использующим все эти "вражеские" технологии, за неимением отечественных, доверенных альтернатив? Да ничего не делать! Противостоять спецслужбам должны спецслужбы. Отсутствие отечественных конкурентоспособных продуктов, что вынуждает всех использовать недоверенные вражеские решения - также государственная проблема. У нас даже есть своя Силиконовая долина, - там даже есть секция, посвященная ИТ. Но почему-то я не вижу элементарных вещей отечественного производства, столь же качественных как западные аналоги: операционная система, офисное и прикладное ПО, аппаратные средства вычислительной техники, собранные на отечественных микросхемах и комплектующих... Без этого элементарного фундамента никакая сертифицированность прикладного ПО не избавит от возможности быть компрометируемым, поскольку всегда возможна компрометация с более низкого уровня абстракции (я столько раз об этом писал и говорил разным людям, поэтому прошу извинить, если повторяюсь): супер-защищенная ОС компрометируется через железные закладки, супер-защищенное прикладное ПО - через закладки в ОС и т.п. - зашифрованные по ГОСТ крипто-контейнеры в устройствах Apple компрометируются через закладки в iOS и железе, приложения под Windows - через закладки в ОС Windows и том же железе, поскольку даже если мы будем собирать платы сами, там будет стоять тот же Intel с vPRO, что является легальной закладкой.

Поэтому, я предлагаю переориентировать Сколково на вопросы национальной безопасности - пускай там научатся делать для начала элементарные вещи, которые покроют внутреннюю потребность в "беззакладочных" информационных технологиях. Если из этого выйдут конкурентоспособные продукты, на этом потом можно будет и заработать, и также попробовать попреследовать государственные интересы, как это делает АНБ США.

Friday, January 10, 2014

О национальной безопасности

Я часто задумываюсь о различного рода социальных проблемах, об их пагубных последствиях для общества, для нации, для Человечества.
Несложно понять, что все современные этические нормы, также недвусмысленно ораженные в основах всех современных религий (в случае Православия - заповеди), имеют вполне определенную цель - сохранение человека как одного из видов, населяющих нашу планету на как можно более долгие годы.
Для государства - физическое и духовное здоровье его населения - прямой стратегический интерес. Ведь понятно, что истрию и события творят конкретные люди, и если людей в государстве (как это иногда грязно называют "людского материала") не будет - попросту не будет государства. Люди - едва ли не основная ценность любого государства, основа его мощи, залог процветания. Кто будет отставить интересы государства в межгосударственных кофликтах? Кто будет двигать науку и прогресс? Кто будет зарабатывать на пенсию пожилым и на всякого рода социальные программы?.... Поэтому, очевидная позиция государства, - всяческая поддержка воспроизводства населения, - различные "материнские капиталы" и "земельные участки многодетным" и т.п.. Все эти программы не могут приносить результата без поддержки естественного инструмента воспроизводства населения - института семьи. Да, если у нас будут нормальные крепкие семьи ситуация с воспроизводством населения будет решаться сама собой. Поэтому - культивирование естественных семейных взаимоотношений - стратегический интерес государства.
Однако, последнее время действительно наблюдается реальный перекос морали в России, что невольно заставляет верить во всякого рода теории заговоров. Откуда не возьмись повылазили сексуальные меньшинства, причем, почему-то об этом стало "модно" открыто заявлять. Вот я реально не пойму, - если у человека какой-то изъян, - разумная реакция это всячески скрывать: если у кого-то нет глаза, - нормально это как-то прикрыть, чтобы не шокировать своим видом общество, - это элементарное уважение. Аналогично, если кто-то имеет особые пристрастия в интимных отношениях - не понятно, зачем эти свои "особенности", свои пороки, афишировать. Тем более абсурдно этим гордиться, и уже просто опасно для всех окружающих - это культивировать.
Ну а чем же это плохо для государства? Тут все просто и примитивно: если однополых браков будет большинство, население государства просто перестанет самовоспроизводиться. И уже некому будет пойти на войну чтобы защитить интересы государства, а может, буть и нацию от исчезновения, уже некому будет заработать на социальные программы, на детские сады, бесплатное образование и медобслуживание, на пенсии пожилым, некому будет производить элементарные блага, которые мы уже давно не умеем себе обеспечивать сами, но так к ним привыкли.
В свете всего сказанного выше, я полностью поддерживаю письмо Ивана Охлобыстина и считаю абсолютно нормальным государственное преследование пороков, разлагающих мораль общества (более понятно: создающих риск вымирания населения государства). Я здесь усматриваю прямые государственные интересы, которые государство обязано защищать имеющимися у него инструментами (в частности, законами).
При этом, может, и не нужно наказывать людей за то, что они больны (я рассматриваю гея исключительно как психически нездорового человека), просто нужно чтобы они сидели спокойно, как прежде, и уже тем более не гордились и не рассказывали окружающим как круто быть также больнымими, особенно людям, с еще не оформившейся психикой, еще не умеющими отличить где истина, а где ложь, еще не способными за красивыми словами увидеть суть, еще склонным верить и доверять, чистым и наивным - нашим детям.

Thursday, January 9, 2014

Сравнение хешей MD5

Снова возникла потребность поупражняться в академическом программировании. На сей раз надо было научиться быстро сравнивать хеши MD5.
Обычно при слове "MD5" перед глазами встает шестнадцатеричное представление 16-байтного числа, т.е. последовательно типа "7b68b20e5f46971e9daab02208c53f2c", поэтому первая идея сравнения была - сравнение двух 32-символьных срок с использованием strncmp.
Если наша хеширующая фунция возвращает MD5 не как строку, а как массив байтов (все нормальные функции именно так и делают), как например, здесь, то представляется совсем неразумным каждый раз рассчитав 16-и байтовый хеш, преобразовывать его в 32-символьную строку только для возможности выполнить сравнение. Ситуация особенно ухудшается, если нам надо выполнить миллион сравнений, - у нас будет миллион ненужных преобразований в строку.
Поэтому, второй мыслью было сравнение двух бинарных 16-байтных массивов с использованием memcmp. По скорости она примерно такая же как strncmp (разве что сейчас мы сравниваем 16 байтов, а выше сравнивали 32 байта), однако нет необходимости преобразовывать MD5 в строку исключительно для возможности сравнения.
Но и этот вариант показался тоже не оптимальным, поскольку memcmp слишком продвинута, чем это необходимо для нашей задачи - всего-то понять, идентичны хеши или нет, - мне не надо знать какой из них больше, а какой меньше.... Более того, с большой степенью вероятности разные хеши будут различаться с первого же байта, причем эта вероятность будет стремительно расти продвигаясь побайтово по хешу....
Все это навело на мысль следующей простой функции, которая, как мне показалось, продемонстрировала большую производительность чем memcmp и strncmp.

inline bool bcmp(BYTE *a, BYTE *b, int n){
    for (int i = 0; i < n; i++)
        if(b[i] ^ a[i]) 
            return false;

    return true;
}
Важно отметить, что здесь используется слово "inline", что свидетельствует о использовании C++.
Соответственно, сравнение хешей выглядит так:

if ( bcmp(md5hash1, md5hash2, 16) ){
   //Сделать что-то, если равны
}
else {
   //Сделать что-то, если не равны
}

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