Яндекс.Метрика

    Песочница

    Песочница

    OpenSSL с использованием аппаратной реализации алгоритмов ГОСТ

    Как известно, OpenSSL версии 1.0.0 и старше поддерживает российские криптоалгоритмы ГОСТ, причем поддержка этих алгоритмов полнофункциональна: реализованы подпись и шифрование в форматах PKCS#7, CMS, S/MIME в соответствии с российскими стандартами и RFC; протокол TLS с поддержкой российских шифрсьютов и т.п.

    Таким образом, OpenSSL полностью совместим с проприетарными средствами криптозащиты российских производителей.

    Для поддержки ГОСТов в него добавлен специальный «плагин» — engine gost. Вместе с тем существуют криптографические USB-токены с аппартной реализацией российских криптоалгоритмов на «борту». Примером такого токена является Рутокен ЭЦП, который, кстати сказать, сертифицирован. Рутокен ЭЦП можно подключить к OpenSSL таким образом, что криптографические операции будут делаться на «борту»
    токена.

    Для Рутокен ЭЦП имеется специальный кроссплатформенный плагин к OpenSSL — engine pkcs11_gost, который позволяет использовать аппаратную релизацию ГОСТов через стандартный интерфейс OpenSSL.

    Здесь опишу, как это делается на win32.

    1. OpenSSL можно взять отсюда www.slproweb.com/products/Win32OpenSSL.html. При установке в диалоге “Select Additional Tasks” следует выбрать “The OpenSSL” binaries (/bin) directory”.

    2. Плагин и требующиеся ему библиотеки можно скачать по ссылке www.rutoken.ru/download/software/forum/pkcs11-gost-win32-4.2.0.zip.

    3. Содержимое архива следует скопировать в папку установки OpenSSL/bin. При этом конфиг openssl. cfg надо заменить, так как в архиве содержится конфиг заточенный на использование engine pkcs11_gost.

    4. Затем запускаем cmd.exe (ну или кому что нравится) и указываем в переменных окружения наш конфиг SET OPENSSL_CONF=полный путь к файлу конфигурации openssl.cfg.

    5. Теперь нужно установить драйвера Рутокен, подключить к компьютеру Рутокен ЭЦП и отформатировать его через Панель управления->Панель управления Рутокен.

    Используя утилиту openssl.exe пройдем путь, который позволит нам подписать файл. При этом криптографические операции (а здесь используются генерация ключа и электронная подпись) будут производиться «на борту» Рутокен ЭЦП

    1. Сгенерим ключ подписи ГОСТ Р 34.10-2001:

    openssl genpkey -engine pkcs11_gost -algorithm GOST2001 -pkeyopt slot_key_id:50 -pkeyopt paramset:A -pkeyopt pin:12345678

    2. Cоздадим заявку на сертификат в формате PKCS#10 для созданного ключа:

    openssl req -engine pkcs11_gost -new -key 50 -keyform engine -out req.csr

    3. Создадим самоподписанный корневой сертификат, для того чтобы выдать пользовательский сертификат на заявку. Для начала сгенерируем внутри токена ключ УЦ:

    openssl genpkey -engine pkcs11_gost -algorithm GOST2001 -pkeyopt slot_key_id:100 -pkeyopt paramset:A -pkeyopt pin:12345678

    Затем сами себе выдадим корневой сертификат для этого ключа:

    openssl req -engine pkcs11_gost -x509 -new -key 100 -keyform engine -out ca.crt

    4. Выпустим сертификат по заявке, полученной на шаге 2. Для этого в папке установки OpenSSL/bin создадим папку demoCA, в которой создадим папку newcerts. В папке demoCA создадим пустой файл index.txt и файл serial, в котором напишем 01. Это позволит нам вести учет выданных сертификатов. Команда выдачи сертификата:

    openssl ca -engine pkcs11_gost -keyfile 100 -keyform engine -cert ca.crt -in req.csr -out tester.crt

    5. Подпишем произвольный файл “присоединенной” подписью в формате S/MIME:

    openssl smime -engine pkcs11_gost -sign -in [имя файла] -out [подписанный файл] -nodetach -binary -signer tester.crt -inkey 50 -keyform engine

    в формате PKCS#7:

    openssl smime -engine pkcs11_gost -sign -in [имя файла] -out [подписанный файл] -nodetach -binary -signer tester.crt -inkey 50 -keyform engine -outform PEM

    в формате CMS:

    openssl cms -engine pkcs11_gost -sign -in [имя файла] -out [подписанный файл] -nodetach -binary -signer tester.crt -inkey 50 -keyform engine -outform PEM

    Более детальное описание использования OpenSSL с Рутокен ЭЦП можно найти на странице forum.rutoken.ru/topic/1639/.

    Песочница

    Алгоритм определения движения через сравнение двух кадров

    Здравствуйте, хабражители.
    Хочу с вами поделиться своими наработками по обработке изображений. В последнее время занимаюсь написанием домашнего сервера под «умный дом» и начал с видеонаблюдения.
    Задача оказалась не такой тривиальной. По поводу всего видеонаблюдения я напишу отдельно (если кому-то это интересно), а сейчас хотел бы затронуть тему «Алгоритм определения движения через сравнение двух кадров».
    Этот алгоритм необходим для включения (выключения) записи видео с видеокамер.

    Песочница

    Ускоряем OpenMP в Visual C++ 2010

    Одним из популярных и дешёвых средств реализации многопоточных вычислений на языке C++ является OpenMP.

    Достоинства технологии очевидны: простота; малые, и легко отключаемые изменения в коде; поддержка от авторов самых популярных компиляторов:
    • Visual C++
    • GCC 4.2
    • Intel C++ Compiler
    Проверка боем проходит успешно, и вот распараллеленный код проникает в самые укромные уголки проекта, бьёт все рекорды производительности, выдавая шикарную статистику, подтверждающую успешность релиза.

    Проходит пара лет, вы успешно мигрируете на Visual Studio 2010,… и обнаруживаете себя сидящим в луже. Если вчера обработка большого массива данных на машинах с многоядерными процессорами проходила за считанные секунды, то сегодня наличие любого фонового приложения, занимающего собственными вычислениями одно или несколько ядер, практически вешает приложение.

    Почему так происходит, и как с этим бороться?

    Песочница

    Возвращаем Pidgin и Skype на верхнюю панель GNOME Shell

    image image image

    Хочу рассказать несложное действие по оптимизации рабочего пространства, которое упростит жизнь многим пользователям GNOME Shell, привыкшим видеть в трее иконки любимых IM (Pidgin и др.), Skype или других приложений. В стандартной настройке они находятся в «нижнем» трее, вызов которого осуществляется наведением мыши на нижний край экрана. Неудобство упомянутого «нижнего» трея в плане общения по jabber, skype, icq и т.д. состоит в том, что пропустив от кого-либо сообщение (например, отойдя от ПК), увидеть его при возвращении без дополнительного вызова дефолтного трея невозможно. Иконка же на верхней панели сразу бросается в глаза, поэтому пропустить важное сообщение или не ответить на него вовремя менее вероятно.

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

    Песочница

    GLPI + Fusion Inventory

    Понадобилось мне собрать инфу о конфигурации компьютеров в рабочей сети. В качестве базы была выбрана GLPI. Т.к. OCS Inventory уже описывали на хабре и в коментариях к той статье упоминалось про Fusion Inventroy, то его и будем устанавливать.
    Основные задачи:
    1. прикрутить Fusion Inventory к GLPI, без использования OCS Inventory;
    2. скрипт сбора инфы запускать вручную, при необходимости (чтобы в памяти ничего лишнего не висело);
    3. собрать конфигурацию компьютеров, управляющих промышенным оборудованием (они не подключены к сети);

    Песочница

    Cisco ASA в GNS3: возможные сценарии и сопутствующие баги

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

    В последних версиях GNS3 появилась возможность эмуляции такого устройства, как Cisco ASA. Это устройство является многофункциональным межсетевым экраном, может работать в различных режимах (routed/transparent; single/multiple context), применяться в отказоустойчивых конфигурациях (active/standby; active/active) и т.д. В статье приводятся результаты тестирования и выводы, насколько полно поддерживается данный функционал при виртуализации этого устройства в GNS3.

    Песочница

    Nokia и ёжики. Часть 1


    На мой взгляд, hedgewars — одна из лучших open-source игр жанра «артиллерия», к тому же, с российскими корнями. Ёжики портируются под Android и iOS, а недавно я начал портировать их под свой N900, а заодно и под N9, так что пусть этот пост поучаствует в конкурсе «Умные телефоны за умные посты».
    Во время портирования приходилось решать различные вопросы, которые могут возникнуть при разработке приложений с использованием эмулятора N900/N9.

    Среда кросс-компиляции


    Что понадобится для портирования:

    • Компилятор free pascal, который идёт вместе с дистрибутивом
    • Исходные коды free pascal версии 2.5
    • Исходный код binutils
    • Nokia SDK, с которым идут многие необходимые средства кросс-компиляции

    Сборка паскалевского кросс-компилятора:

    Кросс-компилятор получится собрать с использованием make не новее 2.81, например, если вы пользуетесь Arch Linux, то вам придётся воспользоваться downgrade.

    Песочница

    Еще чуть-чуть о круглых аватарках на CSS3 и маленькой тайне Оперы

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

    Все знают, что в Опере border-radius не работает для тега img. Даже обертка с overflow:hidden не спасает — углы предательски торчат из нее наружу. Чего только не придумано для борьбы с этим багом. Например, перекрыть эти выступающие углы border-ом псевдоэлемента :before обертки. Наш хабраколлега еще больше приблизился к идеалу, показав, что обертка не нужна (заодно еще раз раскрыв мощь CSS3). Но у таких решений есть существенное ограничение: картинки должны быть на однотонном фоне, иначе «покрышка» сразу выдаст себя.

    Но есть у Оперы одна малоизвестная особенность, которая поможет нам решить эту проблему. Предлагаю вашему вниманию пример (сразу с кодом — его очень мало — и результатом): jsfiddle.net/XVtMh/147/.

    Песочница

    Как по CEE дампу найти строку в которой падает программа на майнфрейме

    Когда-то мне пришлось осваивать работу на С++ с майнфреймом, и возникла проблема как разобраться, в каком месте программа падает и в чем причина. Сразу оговоюсь, что все относится к программированию на майнфреймах под операционной системой z/OS в USS. С одной стороны получается элементарщина, но найти все это в документации IBM не так просто. Кроме того, нужно хотя бы уметь читать HLASM.

    В нижеприведенном документе я попробую описать, как по CEE дампу найти строку в которой программа падает.

    Песочница

    О государственной субсидии на практике

    image

    На Хабре давно появляются статьи о государственной субсидии в 327 000 рублей на открытие собственного дела. Последний топик, который, как верно подметил в комментарии один пользователь Хабра, выглядит скорее как реклама, нежели детальный обзор этапов получения субсидии и подтолкнул меня на написание отчета. Скажу сразу, эту субсидию я «получаю» уже несколько месяцев: недели прохождения всех бюрократических этапов, решение экспертов отправить бизнес-план на переработку и логическое завершение этого «цирка» — отказ финансовой комиссии в предоставлении субсидии.

    Песочница

    Настройка прокси на прошивке Tomato

    Начну, пожалуй, с главного — для чего, собственно, нужен мне лично прокси-сервер. У нашего провайдера (думаю как и у всех прочих) есть внутренние ресурсы, доступ на которые возможен только с компьютера, подключенного к этому самому провайдеру. Ранее, я использовал схему: белый IP у компьютера, прокси-сервер (CCProxy) и не выключал компьютер. Идея о том, что на роутере можно поставить прокси-сервер витала давно, так как на роутерах стоит Linux, вопрос был лишь в реализации. Squid слишком тяжел для данно задачи, ведь мне нужно простое и практичное решение и вот недавно, я наткнулся на одну программу — srelay, которая осуществояет «проброс» трафика через HTTP и SOCKS прокси.

    Песочница

    Windows Phone, в настоящее время, в пять раз выгоднее для нас, чем iPhone

    Когда мы впервые приступили к нашему путешествию в разработке мобильных приложений, выбор целевой платформы был легкой задачей: iOS вел с большим отрывом, рынок Android был фрагментирован и в ориентирован в основном на бесплатные / спонсируемые рекламой (а это не подходит для нашей бизнес-модели), а Windows Phone был только что запущен и имел неопределенное будущее. Наше первое приложение для iPhone в App Store, было выпущено в марте 2011 года и было очень успешным.

    Проработав нашу стратегию расширения в App Store (как с точки зрения рынка, так и с точки зрения других приложений), мы начали оценку других платформ. Последовав «беспристрастному» совету нашего близкого друга в Microsoft, мы решили попробовать WP7. У нас уже был весь контент из наших iPhone приложений — все, что нам было нужно это разработать «движок» для наших приложений на WP7. Кто-то из команды моего друга в Microsoft, был готов протянуть нам руку помощи, чтобы совместно с нами разработать движок для WP7, поэтому мы справились всего за пару недель!

    Песочница

    Пиратство: преступление или принуждение?

    Меня очень интересует вопрос, почему в России очень плохо развита индустрия создания платного ПО.

    Задавая этот вопрос своим друзьям, знакомым или просто ища ответ в Сети я приходил к неутешительным выводам.
    Многие говорили что это связанно с тем, что в России очень плохо обстоит дело с защитой авторских прав, кто-то ссылался на то что зачем тратить деньги на разработку чего бы то ни было, если через несколько недель этот продукт взломают и в сети появятся бесплатные (взломанные) аналоги. А кто-то совсем пессимистичный говорил о том, что в нашей стране просто нельзя заниматься высокими технологиями.

    Песочница

    Microsoft WebMatrix Installation. «Тяжела и некозиста жизнь дизайнера WebMatrix-иста» — эссе о том, как всё пошло не так… а так красиво начиналось

    <?php
    echo("Hello, World!\n");
    echo 'Этот топик не имеет никакой практической пользы для специалистов/разработчиков, он направлен на простых, интересующихся людей, для которых «большие братья» постоянно пытаются создать ПО, убеждая весь мир, что всё просто, что не надо быть супер-спецом и владеть миллионами премудростей и технических навыков, что всё уже предусмотрено и разработано, ты только скачай, и сразу сможешь делать всё что захочешь! Правда ли это, судить вам, я свой ответ немного проиллюстрировал и описал ниже. Надеюсь, что в ущерб глубокому смыслу, хотя бы стилистика изложения кому-то покажется приятной.';
    ?>


    Предыстория

    Чего уж тут скрывать, повёлся как и многие другие на красивый конкурс Microsoft WebMatrix и интересных конкурентов. Сам до этого никогда не использовал сред разработчика сайтов, всегда пользовался готовыми CMS (Joomla, Wordpress), но тут захотелось, завертелось, заблестело в глазах… Решил попробовать поучаствовать, а заодно и новую тулзу для себя изучить в надежде, что она поможет мне более продуктивно и профессионально работать с моими блогами и микро-сайтами.

    Итак, посмотрел официальную страницу на сайте разработчика, полюбовался на видео-презентации, почитал спецификацию к дистрибутиву и не найдя никаких явных проблем с установкой нажал кнопку «Загрузить WebMatrix». Сразу насторожил тот факт, что образ, предлагаемый для скачивания имеет вид WebMatrix_1_13_x86_ru-RU.msi и по всем логикам жанра должен работать на х86. Проверил еще раз спецификацию, не нашел ни одного упоминания про несовместимость с х64, ну что же, думаю, надо запускать установщик… На этом предыстория закончилась.

    История одного пакета

    А пакет этот, как уже стало понятно выше, не что иное как WebMatrix_1_13_x86_ru-RU.msi, запускаю! Недолго думая, пакет после пары кликов «Далее» мне сообщает — надобно Internet Information Services (IIS) 7.5 Express, старче

    Песочница

    Marvel или SandForce? И всё-таки они сжимаются

    Хочу поделиться результатом своего теста, который, как ни странно, противоречит устоявшемуся в широких массах стереотипу, что накопители на SandForce имеют «кукурузное» быстродействие и только диски на Marvel выбор нелохов.
    Коротко, суть претензий к SF в том, что свои заявленные скорости он демонстрирует в тестах со сжимаемыми данными, а на «случайных» сильно проседает, и если в первом случае SF здорово обходит Marvel, то во втором ситуация меняется на противоположную. Учитывая соотношение цена/ёмкость мало кто оспаривает то, что область применения SSD не хранилище медиатеки а системный диск с ОС. Так сжимается она или нет?

    По роду деятельности я часто выполняю процедуру «восстановление предустановленной производителем системы». Каждый кто покупал новый ноутбук знает, что кроме Виндовс там установлена целая куча нужного и не очень софта. И когда в гарантийном сервисе Asus вам меняют умерший ЖД на новый то они должны восстановить информацию на «как из коробки». Процедура восстановления не сложная. Утилита разбивает ЖД на разделы, потом туда сбрасывается три-четыре файла с расширением WIM гигов на 5 и пяток мелких служебных файлов. После перезагрузки автоматически начинается процесс восстановления. В этот момент о существовании ноута можно забыть, т.к. заветную надпись на его экране «PASS», означающую что всё прошло успешно и аппарат готов к выдаче клиенту, можно будет лицезреть не раньше чем часа через 2 или 4, в зависимости от модели. К этому моменту наш ЖД содержит порядка ста тысяч файлов на сумму в три десятка Гигабайт. Почему так расплывчато? Просто нас интересуют только три момента,-количество образованных файлов ОГРОМНО, увеличение занимаемого объёма МНОГОКРАТНО, а выполнение процедуры НЕИЗМЕННО в пределах любой конкретной модели. По ходу выполнения процедуры происходит разворачивание чистого образа версии Виндовс для данной модели. Установка всех драйверов и утилит, специфичных для данной модели. Установка фирменного и сопутствующего ПО. Потом система прибирается за собой и, удалив первичные файлы, создаёт в скрытом разделе ЖД аварийный образ восстановления для данной модели. Таким образом не только создаётся но и удаляется огромный объём первичных данных и временных файлов. Во время всего этого происходит несколько десятков перезагрузок. Ну чем не модель поведения типичного пользователя ПК? Он устанавливает ОС, драйвера, своё ПО, что-то скачивает, что-то удаляет, включает и выключает свой комп.

    Так как время- деньги, мне надо было сократить время ожидания готовности ноутбуков к выдаче клиентам. Решил проводить процедуру на временном SSD с последующим клонированием готовой системы на ЖД. За одно совместить полезное с приятным и выяснить, какой контроллер SSD лучше справится с работой.

    Тестовый набор состоит из ноутбука Asus K52J, HDD Hitachi 320G 5400rpm, SSD Crucial M4-256G(fw0009), SSD OCZ Vertex3-120G(fw2.15). С начала на штатном ЖД были созданы разделы и залиты все исходные файлы. Затем был создан образ диска на рабочем ПК. Образ был поочерёдно развёрнут на обоих SSD. Так были получены «исходные заготовки», все в равных условиях. Диски по очереди вставлялись в ноутбук и нажималась кнопка включения, засекалось время старта. Появление надписи «PASS» на экране означало запись времени окончания теста и выключение ноута. В BIOS выставлен SATA Mode- AHCI. А поскольку сам SATA работает в режиме 3G/s, то в этом-же режиме и познакомимся с конкурсантами.

    image

    Не смотря на то, что оба диска заявлены как SATA 6G/s(SATA3), даже в облегчённом варианте использования-SATA2, Crucial на Marvel бесспорный лидер. Хотя, если запустить тест из хорошо сжимаемых данных, лидер меняется.

    image

    Конечно не так радикально- уж больно потолок низковат, не перепрыгнешь. Для примера, собственно ЖД выглядит так:

    image

    Разница впечатляет. И сразу отвечая на вопрос отмечу, что оба SSD, перед тем как на них был развёрнут тестовый образ, были полностью заполнены несжимаемыми данными(фильмы).

    Всё вышенаписанное потребовалось только для того, что бы правильно воспринять последние три числа:

    — ЖД 1 часа 36 минут
    — Crucial M4-256 1 час 5 минут
    — OCZ Vertex3-120 1 час ровно

    И кто бы мог подумать, глядя на результаты AS SSD.

    Песочница

    Визуализация октодерева и алгоритмов работы над его структурой. Часть 1


    Октодеревья применяются для решения множества задач связанных с оптимизацией, визуализацией в компьютерной графике, да и не только. К примеру, знаменитый и всеми любимый idSoftware, флагман технологий в области компьютерной графики и всего остального, что относится к компьютерным играм, свой новый и, конечно же, высокотехнологичный движок id Tech 6 реализует с инновационной технологией «Sparse Voxel Octree», в основе которой лежит октодерево. Октодеревья позволяют создавать полностью разрушаемую геометрию моделей, как это сделал когда-то главный программист движка DukeNukem 3D, написав сие творение. Если касаться оптимизации, то эту структуру употребляют в движках моделирования физики, очень облегчает работу камню. Ну, и без трассировки лучей не обойдется, здесь тоже применяют октодеревья.

    Под катом много трафика!

    Песочница

    Как мы писали приложение для Facebook

    Как сделать приложение для социальной сети? Как сделать так, что бы оно было популярным? Почему из сотен тысяч приложений популярными становятся только единицы?

    Если подходить к этому формально, то нам хватило 4 человека и две недели времени. Сегодня это сделать проще, чем завтра. Написав самое простое приложения для facebook или для vkontakte, каждый получит не только опыт разработчика, но и возможность монетизировать свой проект, сделав его успешным и многопользовательским. Это не так сложно, как кажется на первый взгляд. Мы расскажем в статье всякие полезности, которые выяснили в ходе создания собственного приложения Flickr Photo Quiz (FPQuiz). Опробовать его в деле можно тут apps.facebook.com/flpquiz/game.php.
    image

    Песочница

    Идея мобильного приложения для наблюдателей на выборах

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

    Чтобы быть готовым ко всему, я прочитал несколько брошюр, и практически в каждой авторы советуют производить некоторые подсчеты в уме/блокнотике, чтобы затем сравнить их с данными, вписанными в итоговый протокол. В частности, предлагается примерно считать количество проголосовавших, а также самому считать (хотя бы примерно) количество голосов за ту или иную партию вместе с комиссией (после вскрытия урн бюллетени разбираются членами комиссии, и каждый голос, поданный за партию, объявляется вслух).

    Прошу прощения за такое продолжительное вступление, но оно, я думаю, поможет понять суть идеи. А идея проста — сделать приложение для наблюдателя на выборах, помогающее в подобных подсчетах. Я, к сожалению, не обладаю достаточным опытом, чтобы быстро и качественно написать такое приложение, но возможно, кто-то обладает достаточным временем, знаниями и инициативностью, чтобы реализовать идею?

    Песочница

    Копирайт в двух аксиомах

    Хотел написать комментарий к последнему топику о проблемах авторского права, но получилось очень длинно.
    Сразу скажу, я не защищаю ни тех, кого тут принято называть «копирастами», ни их противников. Меня всегда удивляли споры вокруг этого вопроса. Аргументы приводятся всевозможные. Люди придумывают самые невероятные примеры, только бы доказать свою точку зрения…
    Я решил немного алгоритмизировать своё понимание этого вопроса.