Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline chuba  
#1 Оставлено : 21 июня 2012 г. 16:41:18(UTC)
chuba

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.06.2012(UTC)
Сообщений: 3
Откуда: Mskow

Добрый день коллеги!

Мне надо закрыть канал передачи данных на один неплохо нагруженный сервер российскими криптоалгоритмами, как один из вариантов рассматривается КриптоПро TLS. Сервер самодельный, написаный на C++.

Вопрос:
1) какая максимальная производительность КриптоПРО TLS по одной сессии?
2) такая пропускная способность может быть достигнута по каждой сессии на сервере (если их будет много и при правильной реализации многопоточной обработки) или это суммарная пропускная способность всей подсистемы КриптоПРО TLS для одного процесса? Или для всей системы?
Offline Максим Коллегин  
#2 Оставлено : 22 июня 2012 г. 3:52:36(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
На нормальном железе производительность упирается в сетевую карту. По оценкам ~ 10Гбит будет прокачиваться.
Скорость сильно зависит от характера нагрузки - установление соединения - самая ресурсоемкая операция.
Знания в базе знаний, поддержка в техподдержке
Offline chuba  
#3 Оставлено : 6 июля 2012 г. 13:24:23(UTC)
chuba

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.06.2012(UTC)
Сообщений: 3
Откуда: Mskow

попробовал написать небольшой тест скорости шифрования на основе примеров WebServer, WebClient. Суть в том что после окончания рукопожатия зацикливаем функцию EncryptMessage на клиенте, и на буфере размером 16К меряем скорость шифрования. Результат: 250 - 300 МБит/сек. По нагрузке - загружен только один процессор.

Вот код который меряет скорость на клиенте:
Код:

{

long i = 0;
struct timeval start;
struct timeval current;

gettimeofday(&start);

for(;;)
{
    Buffers[0].pvBuffer     = pbIoBuffer;
    Buffers[0].cbBuffer     = Sizes.cbHeader;
    Buffers[0].BufferType   = SECBUFFER_STREAM_HEADER;

    Buffers[1].pvBuffer     = pbIoBuffer + Sizes.cbHeader;
    Buffers[1].cbBuffer     = Sizes.cbMaximumMessage;
    Buffers[1].BufferType   = SECBUFFER_DATA;

    Buffers[2].pvBuffer     = pbIoBuffer + Sizes.cbHeader + Sizes.cbMaximumMessage;
    Buffers[2].cbBuffer     = Sizes.cbTrailer;
    Buffers[2].BufferType   = SECBUFFER_STREAM_TRAILER;

    Buffers[3].BufferType   = SECBUFFER_EMPTY;

    Message.ulVersion       = SECBUFFER_VERSION;
    Message.cBuffers        = 4;
    Message.pBuffers        = Buffers;
    
        scRet = g_pSSPI->EncryptMessage(phContext, 0, &Message, 0);

    if(FAILED(scRet))
    {
        printf("**** Error 0x%x returned by EncryptMessage\n", scRet);
        return scRet;
    }
    
    i = i + 1;
    
    gettimeofday(&current);
    
    {
	double start_sec = 0;
	double current_sec = 0;
	    
	start_sec = start.tv_sec + ((double)start.tv_usec)/1000000;
	current_sec = current.tv_sec + ((double)current.tv_usec)/1000000;
	
	if(current_sec - start_sec > 1)
	{
    	    long speed = (i*Sizes.cbMaximumMessage*8) / (current_sec - start_sec) / 1048576;
    	    printf("Encryption speed: %d MBit/sec \n", speed);
    	    i = 0;
    	    
    	    gettimeofday(&start);
	}
    }
        
        
}
}


Вывод клиента в консоль:

Цитата:

# ./web_client -slocalhost
96 bytes of handshake data sent
905 bytes of handshake data received
210 bytes of handshake data sent
31 bytes of handshake data received
Handshake was successful
Detection connection partameters...
Connection start {1cd5b3c, 7f1e0b0}: 2012/7/6 5:56:5.307 UTC
Connection expiry {1ce7a0d, 7f1e0b0}: 2013/7/6 5:52:42.677 UTC

Server subject: E=xxx@cryptopro.ru, CN=xxx_srv_1
Server issuer: E=info@cryptopro.ru, C=RU, O=CRYPTO-PRO, CN=Test Center CRYPTO-PRO


Protocol: TLS1
Cipher: Gost 28147-89
Cipher strength: 256
Hash: Gost R 34.11-94
Hash strength: 256
Key exchange: 0xaa25
Key exchange strength: 512

Header: 5, Trailer: 4, MaxMessage: 16379
Encryption speed: 281 MBit/sec
Encryption speed: 285 MBit/sec
Encryption speed: 288 MBit/sec
Encryption speed: 289 MBit/sec
Encryption speed: 287 MBit/sec


Тест проводился на виртуалке.
ОС:
Цитата:

# uname -a
Linux shdw-dev 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64 GNU/Linux


CPU:
Цитата:

#lscpu
Architecture: x86_64
CPU op-mode(s): 64-bit
CPU(s): 4
Thread(s) per core: 1
Core(s) per socket: 2
CPU socket(s): 2
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 26
Stepping: 5
CPU MHz: 2833.770
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K


Криптопровайдер:

Цитата:

# ./csptest --version
CSP (Type:71) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Linux CPU:AMD64 FastCode:NoHardwareSupport.
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Linux CPU:AMD64 FastCode:NoHardwareSupport.
The type of the license: DRV
Expires: 2 month(s) 28 day(s)
Total:
[ErrorCode: 0x00000000]

получается чтобы мне увеличить скорость нужно устанавливать еще одну сессию(или несколько) на этот же хост и распределять нагрузку между ними. Или существуют еще какие то возможности ускорить шифрования по одной сессии? (понятно что юзать EncryptMessage сразу из нескольких потоков нельзя, но м.б. есть возможность сконфигурить TLS на использование нескольких потоков для шифрования в контексте одной сессии?)
Offline Максим Коллегин  
#4 Оставлено : 6 июля 2012 г. 20:03:11(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Шифрование не распараллеливается.
А зачем Вам такие скорости в одной сессии? Может IPsec?
Знания в базе знаний, поддержка в техподдержке
Offline chuba  
#5 Оставлено : 9 июля 2012 г. 14:16:22(UTC)
chuba

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.06.2012(UTC)
Сообщений: 3
Откуда: Mskow

Полазил по вашему сайту на тему ipsec. Первое что попало в глаза - КриптоПро IPsec, но указано что он ставиться только на Win. Дальше в руководстве разработчика вроде есть API для работы с IPSEC в том числе и на Linux (КриптоПро IKE, ESP, AH), однако пакеты, на которые идут ссылки из "введения" (например cprocsp-ipsec-esp-3.6.1-4.src.rpm или cprocsp-ipsec-devel-3.6.1-3.noarch.rpm), не входят в состав дистрибутивов КриптоПро CSP 3.6 R2 для Linux. Кое какие пакеты, например cprocsp-ipsec-devel-3.6.1-3.noarch.rpm входят в состав КриптоПро CSP 3.6 для CheckPoint.

Может я просто плохо поискал.
Подскажите, сейчас вообще возможно использования протоколов ipsec на обычном линуксе без покупки каких-либо технических средств (имеется ввиду чекпоинты и пр.)? Если да, то плиз. информацию - что откуда скачать и как поставить, ну или ссылку на документацию.


Offline Максим Коллегин  
#6 Оставлено : 9 июля 2012 г. 14:36:17(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Для linux существует только SDK. Сертифицируется в текущее время вместе с R3.
Знания в базе знаний, поддержка в техподдержке
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.