roman_vlg
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вопрос по настройке argon. На pc и android (keepass2android) появилась новая функция деривации ключа в дополнение к aes-kdf - Argon2d. Она даёт большую стойкость к перебору хешей на спец. аппартных средствах (gpu и asic). Но в настройке argon неоднозначен. У aes-kdf была одна опция - количество циклов. Чем больше, тем устойчивее к перебору и тем дольше выполнение. Я ставил 1250000 циклов. На mtk6580 это замедляло открытие базы на пару секунд, не больше. При том, повышать это число уже не имеет никакого смысла, тем более, что мастер ключ у меня не короткий. Для Argon доступно больше опций: •циклы •память •параллелизм Для эффективного шифрования ключа аргон просит много озу, ибо берет не циклами, а размером матрицы. Но на смартфоне озу в дефеците (думаю 50мб потолок, да и то, если они будут освобождены после разблокироаки базы) и нужно искать компромисс. Вопросы следующие: 1) Правильно ли я понимаю, что нельзя компенсировать снижение лимита памяти повышением количества циклов? Например 60 итераций при 30мб дадут менее устойчивый к перебору на гпу результат, чем 600 итераций при 3мб? 2) Параллелизм это количество одновременно выполняемых на ЦП потоков. Но почему нужно задавать эту настройку заранее для каждой базы, а не в настройках самой программы? Количество потоков влияет на получаемый результат? Если задать 4, и попытаться открыть базу на двухпоточном цп, будет фейл? От количества потоков зависит только скорость выполнения, но не безопасность? -Если 4 ядра есть, как на пк, так и на андроид, то ставить 4? 3) Нельзя просто по времени исполенения сравнить устойчивость aes-kdf и аргона, так как на скорость аргона в большей мере влияют циклы, чем память. Как же мне вычислить приемлемость перехода на аргон? Чтобы не получить обратный эффект - снижение стойкости. Ну то есть, какие настройки argon будут соответствовать надежности aes-kdf с 1 250 000 циклов для перебора на x86 и при этом дадут бОльшую стойкость для перебора на на спец. хешедробилках? 4) Если нет какого-то необходимого количества итераций и приемлемо любое число, начиная с двух, то выбирать стоит при равной скорости тот вариант, где больше памяти, а не циклов, так ведь? Добавлено: Потестил немного на ведре, пк под рукой нет. Параллелизм: Число одновременно выполняемых потоков вычислений. Чем больше потоков, тем быстрее откроется бд. Открыть бд на цп с меньшим числом потоков, чем выставлено в настройках бд, можно и это даже не замедлит обработку. Увеличение этого значения выше числа поддерживаемых процессором потоков уже не даёт прироста скорости. Параллелится даже один цикл, то есть число циклов не обязательно подбирать кратным числу потоков для ускорения обработки. Прирост скорости ~40% при удвоении потоков на цикл. 4п, 4ц по времени равны 3п, 3ц при равном объеме памяти. Лучше использовать все потоки цп. Память Приложение сжирает на нужды argon ровно столько озу, сколько указано в настройках. Но только на время расшифровки. Как только бд открыта, память освобождается. Правда для андроида с гигом озу сжирание 100мб означает вылет фоновых приложений, а может и не фоновых даже. Не знаю, стоит ли вообще юзать аргон, если памятью не располагаешь в достаточном объёме (знать бы еще сколько достаточно и при скольких циклах). На бюджетном mtk6580 вот что намерил: 4ц, 4п, 18мб = 4,5с 3ц, 4п, 25мб = 4,6с 4ц, 4п, 20мб = 5,1с 3ц, 3п, 25мб = 5,6с 4ц, 4п, 25мб = 5,7с 4цикла будут выполнены за то же время, что и три цикла, если понизить память с 25 до 18. Какой вариант окажется устойчивее, фиг знает. Надо матчасть курить. С Aes с 1250000 циклами за 2,5с открывалось. | Всего записей: 168 | Зарегистр. 30-06-2014 | Отправлено: 00:03 16-07-2017 | Исправлено: roman_vlg, 02:05 16-07-2017 |
|