Security vs Cloud blog | Апрель 2015

Security vs Cloud blog

Здесь найдете заметки по безопасности, облакам и предпринимательству

Меняем парольв PFX/PKCS12-контейнере

Иногда всплывает элементарная задача - сменить или задать пароль на PFX-контейнер с сертификатом и ключем. И выливается это в запуск утилит OpenSSL из консоли. В общем из пушки по воробьям :)
При этом в .NET это делается всего за 3 шага.
Необходимо:
- Открыть PFX/PKCS12-контейнер с флагом, разрешающим экспорт закрытого ключа, указав старый пароль
- Вызвать метод Export с флагом X509ContentType.Pfx и новым паролем для получения нового контейнера в виде бинарного массива
- Сохранить массив на диск и вуаля - получаем новый контейнер.
При экспорте PFX-контейнера есть одна хитрость. Новый пароль задается с помощью класса SecureString. Для удобного получения объекта SecureString из обычной строки можно использовать небольшое расширение:

public static SecureString ToSecureString(this string input)
{
            if (string.IsNullOrWhiteSpace(input))
                return null;

            SecureString res = new SecureString();
            foreach (char c in input.ToCharArray())
                res.AppendChar(c);
            return res;
}

Само приложение с исходниками для изменения пароля на PFX-контейнеры в приложении

PFXChangePassword.zip (53,7KB)

Internet of Things из подручных средств

Если вы пришли на ИТ-конференцию и на ней не быо ни оного доклада по IoT или даже Internet of Everything, это не ИТ-шная конференция. 
Говорить про IoT стали лет 7 назад. Одной из ранних пташек на поприще IoT Была французская компания Violet.NET
Они в 2008 уже показывали на конференциях NFC-ридеры с датчиками в виде кроликов MIR:ROR. Выпоустили они их в 2010, но дело не поезало и в 2011 они уже сообщили о банкротстве.
В 2011 мне достался их девайсик, и захотелось с ним что-нибудь натворить. После мучительного выбора сценариев было решено прикрутить девайс к медиацентру - машинке на базе Intel Atom/Win7, подключенной к телевизору.

После серии экспериментов, оказалось, что для общения с ридером Mirror можно использовать библиотеки pcsc_desfire и замечательную для .NET (выложил их в аттаче).

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


И вот сейчас настал 2015 год. Я роюсь в материалах конференции IOT Summit London 2015 и нахожу поделки примерно такого же уровня. Вообще весь IoT с конференции можно разделить на 3 части:
- Умные дома (да-да уровня этих кроликов :))
- Умные футболки/шорты/подштанники
- Датчики, которые могут что-то мерять (ветер, осадки, шум) и рапортовать владельцу
Т.е. за это время реальные области применения IoT так и остаются вотчиной гиков. Видимо придется еще пару-тройку лет подожлать, прежде чем какая-нибудь корпорация, например со своим Win10 сможет расшевелить рынок настолько, чтобы туда пр��шли реальные потребители умных железяк.

А пока в аттаче библиотечка. Чуть позже выложу код целиком, как только слегка причешу и приведу его в порядок :)

NFC.rar (46,3KB)

Коротенько о PKI

Откуда пошла Инфраструктура Открытых Ключей? И почему именно Инфраструктура?
На самом деле появилась она самым логичнейшим способом - в результате эволюции. 
Вспомним Энигму и симметричные криптосистемы. Они стойкие, позволяют шифровать данные с огромной скоростью, но при большом числе абонентов приходятя использовать единые для всех ключи, иначе задача даставки ключевой инфомации становится нереальной. 
Например для 100 абонентов - нужно чуть меньше чем 100-факториал ключей. Блакнотов не хватит! :)
Значит приходится использовать общие ключи, а это значит теряется контроль. Стоит кому-то каким-либо способом получить ключ - он может читать любую переписку абонентов. Да и доказать, какая часть системы была скомпрометирована - не реально.
Когда появились ассиметричные криптосистемы ex RSA - ключи стали попарно независимы. Те это можно представить как почтовый ящик: Открытый ключ - номер дома и почтового ящика, а секртеный ключ - есть только у меня и позволяет мне этот ящит открыть.
Здесь на 100 абонентов нужно всего 100 пар ключей. 
Но и тут есть довольно банальные уязвимости. Открытый ключ должен доставляться доверенным способом или быть как-то проверяемым. Иначе мне могут подсунуть чужой ключ, я зашифрую данные для третьей строны, Они их прочтет, подправит и спокойно передаст дальше.
По аналогии с почтовым ящиком - если я пришел положить письмо, а кто-то взял и преписал номер ящика на свой. Я передам пимьо злоумышленнику, он его прочтет и уже потом может изменить и положить в ящик реального адресата.
Вот здесь и появляется Инфраструктура Открытых Ключей. 

Суть его проста - мы доставляем доверенно только 1 ключ нашего Главного Пользователя (Удостоверяющего Центра), а он заверяет все остальные ключи. И если мы получаем чей-то ключ то  начале проверяем его с помощью ключа УЦ.

На самом деле это объяснение на пальцах, и в PKI еще много интересныз и мощных инструментов, таких как политики, OID-ы, типы документов. 
Если интересно посмотреть как это все работает в картинках - в приложении презентация по введению в PKI :)

pki_one_day_introduction_lyubko.pdf (1,3MB)