powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пятничная криптостойкость
12 сообщений из 137, страница 6 из 6
Пятничная криптостойкость
    #39795431
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Пожалуйста.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
mayton@mayton-ryzen:/sql.ru/dima/crypt_speed$ ./make.sh 
compile Apr  2 2019 21:25:37
test speed fill 500000 blocks of 1472 bytes each ... 
filled 701 Mb in 848 ms 827 Mb/s   
test speed CBC XOR encrypt 500000 blocks of 1472 bytes each ... 
704 ms 995 Mb/s
test speed RC4 encrypt 500000 blocks of 1472 bytes each ... 
2175 ms 322 Mb/s
test speed RC4rand256 encrypt 500000 blocks of 1472 bytes each ... 
380 ms 1844 Mb/s
test speed AES-128 encrypt 500000 blocks of 1472 bytes each ... 
62 ms 11211 Mb/s
test speed AES-128 decrypt 500000 blocks of 1472 bytes each ... 
68 ms 10237 Mb/s
test speed AES-128 + XOR encrypt 500000 blocks of 1472 bytes each ... 
98 ms 7141 Mb/s
test speed AES-128 + XOR decrypt 500000 blocks of 1472 bytes each ... 
62 ms 11158 Mb/s
...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39795509
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересные цифры. Тут 21848374 AES шифрование было 9 Гб/сек, стало 11 Гб/сек. Я всего лишь размер блока уменьшил до 1472 байт. На моем i7-6700K как было 6 Гб/сек, так и осталось.

AES-128 + XOR отличный результат на обоих процах. Это замена тормозного AES-128 + CBC, т.е. сначала CBC, точнее XOR с предыдущим как в CBC, но без шифрования, затем AES шифрование.

И очень странный результат RC4rand256, это просто побайтный XOR с ключевой последовательностью смещенной N байт, где N значение первого байта шифруемого.
Как-то сложно описал, проще исходник показать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
void rc4rand256_speed(int block_size, int block_count) {
	rc4_t rc4("My secret key", 13); // Инициализация ключевой последовательности
	uint8_t *buf = new uint8_t[block_size]; // буфер под данные
	uint8_t *key = new uint8_t[block_size + 256]; // буфер под ключевую последовательность
	rc4.crypt(key, block_size + 256); // Заполнение ключевой последовательности
	fill_data(0, 0, 12345); // Инициализация генератора данных
	int cs = 0;
	printf("test speed RC4rand256 encrypt %d blocks of %d bytes each ... \n", block_count, block_size);
	uint32_t start = clock(); // Начало замера
	for (int i = 0; i < block_count; i++) {
		fill_data(buf, block_size);
		uint8_t *k = key + buf[0]; // Начало последовательности для шифрования текущего блока
		buf[0] ^= k[0]; // buf[0] нельзя шифровать, а если цикл начать с 1 почему-то медленнее работает
		for (size_t i = 0; i != block_size; i++) buf[i] ^= k[i]; // Шифрование
		cs += checksum(buf, block_size); // Расчет контрольной суммы чтобы оптимизатор ничего не убрал
	}
	// Вывод результата
	int time = clock() - start - time_fill;
	if (time == 0) time = 1;
	int64_t total = (int64_t)block_size * block_count;
	printf("%d ms %d Mb/s\n%u\r", time / ((int)CLOCKS_PER_SEC / 1000), (int)((total * CLOCKS_PER_SEC / time) >> 20), cs);
}


Это я ищу быструю альтернативу хотя бы спрятать, там где полноценно зашифровать не удается из-за отсутствия поддержки AES-NI.

У меня RC4rand256 дает какие-то фантастические скорости: в виндовсе в 6-7 раз быстрее чем AES, но в линуксе в 2 раза медленнее, у тебя в линуксе в 6.5 раз медленнее.
Похоже меня компилятор MSVC обхитрил, что-то соптимизировал там где я не ожидал, надо изобретать другой способ тестирования.
Также есть сомнения в точности замера AES, т.к. по идее результат должен быть одинаков в виндовсе и линуксе, но в линуксе почти вдвое медленнее.
...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39795537
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй у себя ещё парочку компиляторов.
Тогда мы точнее поймём где идёт влияние железа.
И где влияют конкретные возможности оптимизаций.
...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39795793
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТакже есть сомнения в точности замера AES, т.к. по идее результат должен быть одинаков в виндовсе и линуксе, но в линуксе почти вдвое медленнее.
Если Линукс на виртуалке, то в некоторых версиях QEMU, например, был баг когда CPUID AЕS флаг пробрасывался в гостевую систему некорректно (точнее никак).
...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39795797
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovDima TТакже есть сомнения в точности замера AES, т.к. по идее результат должен быть одинаков в виндовсе и линуксе, но в линуксе почти вдвое медленнее.
Если Линукс на виртуалке, то в некоторых версиях QEMU, например, был баг когда CPUID AЕS флаг пробрасывался в гостевую систему некорректно (точнее никак).
Виртуалки под VirtualBox. Я флаг AES проверяю. Да и непохоже что программно считается, программно раз в 100 медленнее, а тут всего в 2 раза.
...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39795974
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovDima TТакже есть сомнения в точности замера AES, т.к. по идее результат должен быть одинаков в виндовсе и линуксе, но в линуксе почти вдвое медленнее.
Если Линукс на виртуалке, то в некоторых версиях QEMU, например, был баг когда CPUID AЕS флаг пробрасывался в гостевую систему некорректно (точнее никак).
Линукс на железе.
...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39796013
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonDimitry Sibiryakovпропущено...

Если Линукс на виртуалке, то в некоторых версиях QEMU, например, был баг когда CPUID AЕS флаг пробрасывался в гостевую систему некорректно (точнее никак).
Линукс на железе.
Я так понял что речь про мой линукс в виртуалке.
...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39797528
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предыдущие замеры строились на замере времени пустого цикла и вычитание его из времени цикла с полезной нагрузкой. Тут похоже компилятор меня перехитрил соптимизировав циклы.

Переделал все на акторы, т.е. многопоточно. Замер времени от и до без вычетов.

АлгоритмРезультат i7-6700KПустой прогон125 ms 11230 Mb/sXOR SHIFT198 ms 7089 Mb/sXOR SHIFT + CBC556 ms 2524 Mb/sRC42253 ms 623 Mb/sAES-128 encrypt486 ms 2888 Mb/sAES-128 decrypt514 ms 2731 Mb/sAES-128 + CBC encrypt1181 ms 1188 Mb/sAES-128 + CBC decrypt512 ms 2741 Mb/sXOR128 + CBC encrypt183 ms 7671 Mb/sXOR128 + CBC decrypt182 ms 7713 Mb/s

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

mayton , пожалуйста, запусти тест на своем AMD и результат напиши.

PS Однопроцевые виртуалки виндовса и линукса дают похожие результаты.
...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39797702
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хопа. Привет. Только добрался до компа.
...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39797716
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Готово.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
mayton@mayton-ryzen:/sql.ru/dima/crypt_speed$ ./make.sh 
compile Apr  6 2019 21:58:23
21:58:25 test speed send to next 1000000 blocks of 1472 bytes each ...
21:58:25 581 ms 2416 Mb/s
21:58:25 test speed XOR SHIFT crypt 1000000 blocks of 1472 bytes each ...
21:58:26 395 ms 3553 Mb/s
21:58:26 test speed XOR SHIFT + CBC encrypt 1000000 blocks of 1472 bytes each ...
21:58:26 424 ms 3310 Mb/s
21:58:26 test speed RC4 crypt 1000000 blocks of 1472 bytes each ...
21:58:32 6130 ms 229 Mb/s
21:58:32 test speed AES-128 encrypt 1000000 blocks of 1472 bytes each ...
21:58:33 606 ms 2316 Mb/s
21:58:33 test speed AES-128 decrypt 1000000 blocks of 1472 bytes each ...
21:58:33 492 ms 2853 Mb/s
21:58:33 test speed AES-128 + CBC encrypt 1000000 blocks of 1472 bytes each ...
21:58:35 1964 ms 714 Mb/s
21:58:35 test speed AES-128 + CBC decrypt 1000000 blocks of 1472 bytes each ...
21:58:36 465 ms 3018 Mb/s
21:58:36 test speed XOR128 + CBC encrypt 1000000 blocks of 1472 bytes each ...
21:58:36 366 ms 3835 Mb/s
21:58:36 test speed XOR128 + CBC decrypt 1000000 blocks of 1472 bytes each ...
21:58:37 348 ms 4033 Mb/s



Еще под катом информация о процессоре. Хм.. странно что частота как-то плавает. Возможно надо
заниматься оверклокингом. Чем я еще пока не занимался. Вобщем обещаю чуть позже посмотреть
как райзен ее вообще регулирует.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
mayton@mayton-ryzen:/sql.ru/dima/crypt_speed$ cat /proc/cpuinfo
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 23
model		: 1
model name	: AMD Ryzen 5 1600 Six-Core Processor
stepping	: 1
microcode	: 0x8001137
cpu MHz		: 1374.456
cache size	: 512 KB
physical id	: 0
siblings	: 12
core id		: 0
cpu cores	: 6
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca
bugs		: sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 6387.31
TLB size	: 2560 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39797813
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonХм.. странно что частота как-то плавает.
Похоже проц прогревается постепенно, пустой цикл медленнее чем нагруженный.
Наверно для точности замеров надо запускать несколько раз подряд. Но и этот результат подойдет, мне точно не надо, этих данных вполне достаточно чтобы определиться. Спасибо.
...
Рейтинг: 0 / 0
Пятничная криптостойкость
    #39797819
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуйста. Но я ещё покручу регуляторы.
Просто повода не было.
...
Рейтинг: 0 / 0
12 сообщений из 137, страница 6 из 6
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пятничная криптостойкость
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]