Как стать автором
Обновить

Пишем ГОСТ криптопровайдер

Время на прочтение 18 мин
Количество просмотров 38K
Криптография *
рис.1
Секреты создания CSP для Windows раскрыты в статье Ю.С.Зырянова.

Российские криптоалгоритмы ГОСТ реализованы в OpenSSL Gost.

Удивлен, что на просторах Интернета не удалось найти подтверждения, что кем-то был создан интерфейс криптопровайдера ГОСТ под Windows с использованием вышеприведенных инструментов.

Можно подумать, что эта задача под силу только крупным коммерческим компаниям, имеющим большой опыт в сфере информационной безопасности, к примеру, таким как:Опровергнуть, хотя бы частично, это утверждение и будет задачей данной статьи.
Читать дальше →
Всего голосов 71: ↑66 и ↓5 +61
Комментарии 41

Подключаем Рутокен ЭЦП к OpenSSL

Время на прочтение 3 мин
Количество просмотров 18K
Информационная безопасность *
Из песочницы
UPDATE. Готовое решение для электронной подписи в браузере — Рутокен Плагин

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

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

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

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

Читать дальше →
Всего голосов 23: ↑21 и ↓2 +19
Комментарии 8

Защита RDP по ГОСТ с помощью Рутокен ЭЦП. Двухуровневый TLS

Время на прочтение 4 мин
Количество просмотров 27K
Информационная безопасность *
image

Протокол RDP является протоколом прикладного уровня и поэтому для его защиты идеально подходит TLS, который работает над транспортным уровнем.

В данном топике с помощью open source приложений OpenSSL и sTunnel мы защитим RDP-соединения по протоколу TLS c поддержкой российских шифрсьютов (GOST2001-GOST89-GOST89), клиентская аутентификация по ГОСТ-вым сертификатам будет проводиться аппаратно на борту USB-токена Рутокен ЭЦП с выработкой ключа согласования по схеме VKO GOST 34-10.2001. При этом ключ аутентификации является неизвлекаемым и его невозможно украсть. Так же Рутокен ЭЦП будет использоваться в качестве аппаратного ДСЧ.

Для случая аутентификации на терминальном сервере об Active Directory по сертификатам RSA мы обернем TLS по RSA в TLS по ГОСТ. Таким образом, мы получим двухуровневый TLS — RSA с клиентской аутентификацией будет идти внутри канала, защищенного ГОСТами.

Читать дальше →
Всего голосов 40: ↑36 и ↓4 +32
Комментарии 19

Номинальные ряды для JavaScript и ГОСТ-28884-90

Время на прочтение 3 мин
Количество просмотров 2.7K
JavaScript *Разработка систем связи *

Порядок — это хаос, который нам понятен.
Генри Миллер
Ссылки
Информация: Wiki,
PDF ГОСТа
Репозиторий: GitHub,
NpmJs
Исходный код
#!/usr/bin/env node
/**
* @name      nominal.js
* @author    XGuest <xguest@list.ru>
* @link      https://github.com/xguest/nominal
* @version   2.0.1.0
* @copyright GPL applies.
*            No warranties XGuest[05.02.2016/09:48:26] nominal[ver.2.0.1.0]
* #guid      {A645E9CA-BE33-4642-AF0F-B4EF046D31E7}
*
* @description Подбирает значения числовых номиналов из стандартных
*              РЯДЫ ПРЕДПОЧТИТЕЛЬНЫХ ЗНАЧЕНИЙ ДЛЯ РЕЗИСТОРОВ И КОНДЕНСАТОРОВ
*              Соответствует ГОСТу-28884-90, МЭК 63 63
*
* @param {Number} [a]      Для положительных - Подбираемый номинал,
*                          Для отрицательных - Индекс a >= (-1 * b)
*                          undefined - рекурсия всех значений ряда b
*
* @param {Number} [b]      Номер номинального ряда стандарта
*                          E3, E6, E12, E24, E48, E96, E192.
*                          undefined - рекурсия всех рядов значения a
*
* @return {Number|Object}  Для (a || b) = undefined - Object номиналов
*                          Во всех остальных случаях предпочтительное значение
*/
/*eslint complexity: [2, 13]*/
function nominal(a, b) {
  function lg(a, b) {                                // Логарифм по основанию 10
    return parseInt(Math.log(a) / Math.LN10 * (b || 1), 10); // Целая часть
  }
  function pg(a, c) {                                // Степень по основанию 10
    var d = 25 > b ? 1 : 2;                          // Правило округления
    /*eslint no-unused-expressions: [2, { allowShortCircuit: true, allowTernary: true }]*/
    0 > a && (d -= a);                               // Для отрицательных
    return Number((Math.pow(10, a) * (c || 1))       // c = Мантисса
         .toFixed(0 < d ? d : undefined));           // Округление
  }
  /*eslint no-caller: 0*/
  var c, d = {};                                     // c = tmp_var; d = out_var;
  if (!b) {                                          // Не получен номер ряда
    for (b = 0; 7 > b; b++) {                        // Цикл рядов номиналов
      c = 3 * Math.pow(2, b);                        // Номер номинального ряда
      d[c] = arguments.callee(a, c);                 // Рекурсия
    }
    return d;                                        // Объект номиналов
  }
  if (!a) {                                          // Не получен номинал
    for (a = 1; a < b + 1; a++) {                    // Цикл по номиналам ряда
      d[a] = arguments.callee(-1 * a, b);            // Рекурсия
    }
    return d;                                        // Объект номиналов
  }
  a = 0 > a ?                                        // a < 0 получен индекс
      (c = 25 > b ? 0 : 2, -1 * a - 1) :             //
      (c = lg(a), d = lg(a / pg(c), b), d < 0 ? b + d : d); // индекс номинала
  for (d = 0; 7 > d; d++) {                          // Проверка ОДЗ
    if (b === (3 * Math.pow(2, d))) {d = 8;break;}   // для рядов номиналов
  }
  if (d !== 8 || Math.abs(a) > b) return;            // для индексов номиналов
  a = pg(a / b);                                     // Номинал по индексу
  return pg(c,                                       // Разрядность
      {'2.6': 2.7, '2.9': 3, '3.2': 3.3, '3.5': 3.6, '3.8': 3.9, // Исключения
        '4.2': 4.3, '4.6': 4.7, '8.3': 8.2, '9.19': 9.2}[a] || a);
}

module.exports = nominal;
Читать дальше →
Всего голосов 5: ↑3 и ↓2 +1
Комментарии 2

Гигабитный ГОСТ VPN. TSS Diamond

Время на прочтение 4 мин
Количество просмотров 16K
Блог компании TS Solution Системное администрирование *Сетевые технологии *Стандарты связи *
VPN канал — необходимость практически для всех компаний, которые имеют удаленные филиалы или просто удаленных сотрудников. Для организации этих самых каналов существует довольное большое количество технологий и протоколов (IPSec, GRE. L2TP и т.д.), которые поддерживаются большинством современного оборудования. Однако существует определенная категория организаций, которые вынуждены (именно вынуждены) использовать решения поддерживающие отечественные криптоалгоритмы — ГОСТ VPN. При этом реализовать этот ГОСТ на Linux-подобных системах не составляет особого труда. Однако получить сертификат ФСБ (как средство СКЗИ) — практически невозможно для зарубежных решений (Cisco, Check Point, Fortinet и т.д.). В связи с этим, выбор оборудования резко сужается. До сих пор в подобных случаях рассматривали следующие варианты:

  • S-terra
  • АПКШ Континент
  • Ideco МагПро ГОСТ-VPN
  • Vipnet
  • Застава

Однако, на текущий момент весьма трудно найти решение которое поддерживало бы Гигабитный ГОСТ VPN. Существуют различные «хитрые» способы обойти эту проблему, например поставить несколько устройств на каждой стороне и с помощью балансировки увеличить общую пропускную способность канала используя несколько VPN-туннелей.
Пример от S-terra:
Читать дальше →
Всего голосов 15: ↑11 и ↓4 +7
Комментарии 29

Настройка двусторонней RSA и GOST аутентификации в приложении на JBoss EAP 7

Время на прочтение 14 мин
Количество просмотров 17K
Блог компании Альфа-Банк Информационная безопасность *Криптография *Open source *Java *


Здравствуйте!

Безопасности в современной деловой информационной среде отводится одна из первостепенных ролей. Нужно ли говорить, что в Банке, где большая часть продуктов строится на Digital-технологиях, а на кону доверие, спокойствие и благосостояние клиентов, информационная безопасность ставится в авангард.

В этой статье расскажу, как мы в своей деятельности применяем один из инструментов обеспечения информационной безопасности.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 3

Интеграция с ЕСИА на базе oauth2-client (PHP)

Время на прочтение 3 мин
Количество просмотров 22K
Open source *PHP *


Представляем yet another PHP-пакет интеграции с ЕСИА — ekapusta/oauth2-esia. Реализован как адаптер к популярному league/oauth2-client.

Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 15

ЭЦП по ГОСТ на GNU/Linux с помощью OpenSSL

Время на прочтение 2 мин
Количество просмотров 16K
Информационная безопасность *Криптография *Open source **nix *ECM/СЭД *
Туториал

Электронная подпись документа без проблем.

Подписать бесплатно без регистрации и СМС
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 37