<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
		<link>https://forum.guardant.ru/topic/249/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/249" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «GrdUtil: Создание алгоритма и защищенной ячейки».]]></description>
		<lastBuildDate>Thu, 27 Dec 2012 12:55:08 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1197/#p1197</link>
			<description><![CDATA[<p>Бестолковая работа - потому что в любом случае, какой бы не использовался ГСЧ, пароли проще всего посмотреть захучив вызовы Guardant API. Зачем в загородный дом ставить дверь как в банковское хранилище, если кому надо влезет через окно даже с обычной дверью?</p><p>А вот с GrdUtil вы правы. В последней версии всем алгоритмам кроме GSII64 действительно дается свойство чтения по паролю при создании. Мы эту возможность в следующей версии закроем, т.к. это конечно идеологически некорректно.</p>]]></description>
			<author><![CDATA[null@example.com (AndreyStepin)]]></author>
			<pubDate>Thu, 27 Dec 2012 12:55:08 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1197/#p1197</guid>
		</item>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1195/#p1195</link>
			<description><![CDATA[<div class="quotebox"><cite>AndreyStepin пишет:</cite><blockquote><p>Еще раз повторю - опеределитель не требует супермощного криптографического ГСЧ в силу особенностей использования ключей и алгоритмов.</p></blockquote></div><p>Абсолютно согласен. В данном случае требования к ГСЧ могут быть значительно ниже, чем в других криптографических задачах.<br /></p><div class="quotebox"><cite>AndreyStepin пишет:</cite><blockquote><p>Мы используем собственный ГСЧ, с собственным сбором энтропии ... проверяется по критерию согласия Пирсона (критерий Хи-квадрат), ... наш ГСЧ тщательно тестировался специалистами по криптографии (мы сотрудничаем с кафедрой криптологии и дискретной математики МИФИ) и показал очень хорошие результаты, не уступающие популярным криптографическим ГСЧ.</p></blockquote></div><p>Прекрасно. Подобный ответ я и надеялся услышать, когда создавал эту тему.</p><div class="quotebox"><cite>AndreyStepin пишет:</cite><blockquote><p>Возможность генераций паролей защищенных ячеек с помощью аналогичного ГСЧ мы учтем в следующих версиях утилиты. Но вообще говоря это работа близкая к бестолковой</p></blockquote></div><p>Почему бестолковой? Сейчас, как я понял в GrdUtil есть два ГСЧ - один <em>надежный</em>, для определителей, а другой &quot;<em>просто рандомный генератор</em>&quot;, для паролей. Так, действительно, почему бы и для паролей не использовать надежный ГСЧ? </p><div class="quotebox"><cite>AndreyStepin пишет:</cite><blockquote><p>Возможность прочитать определитель алгоритма из ключа есть потому, что алгоритм представляет из себя защищенную ячейку и это ее типичная возможность.</p></blockquote></div><p>Я так и думал.<br /></p><div class="quotebox"><cite>AndreyStepin пишет:</cite><blockquote><p>вообще говоря алгоритмы действительно должны быть недоступны для чтения из ячейки и накрыт аппаратным запретом, ...</p></blockquote></div><p>Полностью согласен.<br /></p><div class="quotebox"><cite>AndreyStepin пишет:</cite><blockquote><p>... и по умолчанию GrdUtil их создает именно таким образом. Просто я лично не вижу смысла блокировать эту возможность для алгоритмов просто ради блокирования. По умолчанию это всегда выключено.</p></blockquote></div><p>У меня, наверное, неправильная GrdUtil - она разрешает чтение <strong>всем</strong> создаваемым алгоритмам (с паролем, слава богу). Некоторым видам алгоритмов она еще разрешает активацию/деактивацию.</p>]]></description>
			<author><![CDATA[null@example.com (Luck)]]></author>
			<pubDate>Thu, 27 Dec 2012 11:20:07 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1195/#p1195</guid>
		</item>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1194/#p1194</link>
			<description><![CDATA[<p>Во первых, по поводу генерации определителей в GrdUtil.</p><p>Ваши опасения мне понятны, и могу вас заверить, что они беспочвенны :). Еще раз повторю - опеределитель не требует супермощного криптографического ГСЧ в силу особенностей использования ключей и алгоритмов. Но там далеко не srand(time)-rand(). Мы используем собственный ГСЧ, с собственным сбором энтропии (например, при сборе энтропии учитываются все действия пользователя с момента запуска GrdUtil). Качество &quot;случайности&quot; для каждого определителя проверяется по критерию согласия Пирсона (критерий Хи-квадрат), это помимо алгоритмов отсекающих заведомо слабые определители для конкретных типов криптоалгоритмов. <br />Плюс к этому наш ГСЧ тщательно тестировался специалистами по криптографии (мы сотрудничаем с кафедрой криптологии и дискретной математики МИФИ) и показал очень хорошие результаты, не уступающие популярным криптографическим ГСЧ.</p><p>Возможность генераций паролей защищенных ячеек с помощью аналогичного ГСЧ мы учтем в следующих версиях утилиты. Но вообще говоря это работа близкая к бестолковой, пароли проще всего подсмотреть отреверсив программу и вызовы Guardant API, а не используя математические методы и долго и мучительно собирая статистику.</p><p>Возможность прочитать определитель алгоритма из ключа есть потому, что алгоритм представляет из себя защищенную ячейку и это ее типичная возможность. В каких то редких сценариях эта возможность наверное может быть полезна, но вообще говоря алгоритмы действительно должны быть недоступны для чтения из ячейки и накрыт аппаратным запретом, и по умолчанию GrdUtil их создает именно таким образом. Просто я лично не вижу смысла блокировать эту возможность для алгоритмов просто ради блокирования. По умолчанию это всегда выключено.</p>]]></description>
			<author><![CDATA[null@example.com (AndreyStepin)]]></author>
			<pubDate>Thu, 27 Dec 2012 09:47:22 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1194/#p1194</guid>
		</item>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1193/#p1193</link>
			<description><![CDATA[<p>Еще вопрос. Зачем, в принципе, нужна возможность прочитать определитель алгоритма из ключа? Тем более, без пароля?<br />Вроде наоборот, ключ должен держать определитель в себе и никому его не сообщать. Тогда определитель будет знать только разработчик.</p>]]></description>
			<author><![CDATA[null@example.com (Luck)]]></author>
			<pubDate>Thu, 27 Dec 2012 09:30:06 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1193/#p1193</guid>
		</item>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1189/#p1189</link>
			<description><![CDATA[<div class="quotebox"><cite>AndreyStepin пишет:</cite><blockquote><p> вы сами можете генерировать и записывать туда любые пароли.</p></blockquote></div><p>Это понятно. У меня просто была мысль набить шаблон ключа алгоритмами про запас, чтобы в дальнейшем, при необходимости их можно было активировать.<br />Но набивать полсотни алгоритмов руками - а в каждом из них определитель и 3-4 пароля - желания нет. Тем более, что и необходимости в этом тоже нет.</p>]]></description>
			<author><![CDATA[null@example.com (Luck)]]></author>
			<pubDate>Tue, 25 Dec 2012 15:35:43 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1189/#p1189</guid>
		</item>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1188/#p1188</link>
			<description><![CDATA[<p>Причем здесь &quot;критерии слабых определителей (ключей) и свои методы генерации ключей (ключевых пар)&quot;?<br />В основе-то все равно должен лежать генератор случайных чисел! И если он недостаточно случаен, то сгенерированные ключи будут предсказуемы.</p><p>Допустим, в GrdUtil используется самый простой ГСЧ - rand(), причем без srand(). Этот ГСЧ будет всегда выдавать <strong>одну и ту же</strong> последовательность псевдослучайных чисел.</p><p>Я запускаю GrdUtil, создаю алгоритм (определитель, пароли на активацию и пр. GrdUtil генерирует сама), сохраняю маску, прошиваю ей электронные ключи.<br />Хакер запускает GrdUtil, создает алгоритм, и GrdUtil создает ему <strong>точно такие же</strong> пароли и определитель. Все. Ему не нужно ломать алгоритм, не нужно ничего брутфорсить, не нужно реверсить GrdUtil и вытаскивать оттуда ГСЧ -- GrdUtil сама выдаст все пароли.<br />Это в предположении, что используется rand() без srand(). Я все-таки надеюсь, GrdUtil использует что-то более надежное.</p><p>Использование rand() с&nbsp; srand(time()) тоже не очень надежно, но уже не позволит так просто узнать пароли и определители. И, в сочетании с тем, что ключ ограничивает количество попыток перебора пароля,&nbsp; это может быть вполне надежно. </p><p>И все же я не понимаю, почему GrdUtil не использует надежный ГСЧ с надежным seed-ом. Притом, что все это есть, в том числе открытое и бесплатное. Плохой ГСЧ может легко свести на нет все ваши труды по созданию электронных ключей&nbsp; и сопутствующего софта.</p>]]></description>
			<author><![CDATA[null@example.com (Luck)]]></author>
			<pubDate>Tue, 25 Dec 2012 15:09:04 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1188/#p1188</guid>
		</item>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1186/#p1186</link>
			<description><![CDATA[<div class="quotebox"><cite>Luck пишет:</cite><blockquote><p>То есть, определитель алгоритма создается с помощью надежного криптографического генератора случайных чисел (например, из CryptoAPI или OpenSSL), инициализированного надежным (длинным и случайным) seed-ом.</p></blockquote></div><p>В зависимости от алгоритма шифрования/подписи есть свои критерии слабых определителей (ключей) и свои методы генерации ключей (ключевых пар). Эти методы и используются. В общем случае криптографический ГСЧ там не нужен, этот определитель подобрать или вычислить невозможно - это равносильно взлому самого алгоритма или тупому брутфорсу.</p><div class="quotebox"><cite>Luck пишет:</cite><blockquote><p>А что значит &quot;<strong>просто</strong> рандомно сгенерированные&quot;? <br />С помощью CRT-шной функции rand() без использования srand()?<br />С помощью CRT-шной функции rand() с использованием srand(time())?<br />Или все же используется надежный ГСЧ?</p></blockquote></div><p>Опять же, необходимости в криптографически стойком ГСЧ для этой задачи нет. Мне даже сложно представить use case для этого. Алгоритм генерации не разглашается, но вы сами можете генерировать и записывать туда любые пароли.</p>]]></description>
			<author><![CDATA[null@example.com (AndreyStepin)]]></author>
			<pubDate>Tue, 25 Dec 2012 14:00:49 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1186/#p1186</guid>
		</item>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1183/#p1183</link>
			<description><![CDATA[<div class="quotebox"><cite>Антон Тихиенко пишет:</cite><blockquote><p>Во все создаваемые в <em>GrdUtil</em> алгоритмы пишется уникальный <em>(для каждого нового алгоритма сгенерированный отдельно)</em>, надежный определитель, которому можно доверять.</p></blockquote></div><p>То есть, определитель алгоритма создается с помощью надежного криптографического генератора случайных чисел (например, из CryptoAPI или OpenSSL), инициализированного надежным (длинным и случайным) seed-ом.</p><div class="quotebox"><cite>Антон Тихиенко пишет:</cite><blockquote><p>Что же касается паролей для сервисов аппаратных алгоритмов, то это просто рандомно сгенерированные, целые числа, максимальная длинна которых, составляет 4 байта.</p></blockquote></div><p>А что значит &quot;<strong>просто</strong> рандомно сгенерированные&quot;? <br />С помощью CRT-шной функции rand() без использования srand()?<br />С помощью CRT-шной функции rand() с использованием srand(time())?<br />Или все же используется надежный ГСЧ?</p>]]></description>
			<author><![CDATA[null@example.com (Luck)]]></author>
			<pubDate>Tue, 25 Dec 2012 13:07:28 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1183/#p1183</guid>
		</item>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1182/#p1182</link>
			<description><![CDATA[<div class="quotebox"><cite>Luck пишет:</cite><blockquote><p>Я хотел спросить, можно ли доверять определителю и паролям, которые GrdUtil прописала в свежесозданный алгоритм? Они действительно генерятся с помощью надежного ГСЧ, или во все создаваемые алгоритмы записывается один и тот же определитель?</p></blockquote></div><p>Во все создаваемые в <em>GrdUtil</em> алгоритмы пишется уникальный <em>(для каждого нового алгоритма сгенерированный отдельно)</em>, надежный определитель, которому можно доверять. Однако, указать определитель самостоятельно <em>(вручную)</em> разработчик тоже может. Про надежность определителей говорилось еще <a href="https://forum.guardant.ru/post/428/#p428">тут</a>.)<br />Что же касается паролей для сервисов аппаратных алгоритмов, то это просто рандомно сгенерированные, целые числа, максимальная длинна которых, составляет 4 байта.<br /></p><div class="quotebox"><cite>Luck пишет:</cite><blockquote><p>Тогда он будет уникальный для каждого записанного ключа. И храниться он будет, как я понимаю, в базе данных. А как быть с софтверным ключом? Как узнать, какие пароли записались в шаблон?<br />В данный момент, меня, видимо, интересуют <strong>постоянные пароли,</strong> сгенерированные однократно случайным образом.</p></blockquote></div><p>Внутри самого шаблона эти пароли меняться не будут даже при его активации, но для каждого шаблона придется отдельно, как то запоминать их, например, в виде nsd-файла сохраненного на основе данного шаблона.<br /></p><div class="quotebox"><cite>Luck пишет:</cite><blockquote><p>Для этого была бы удобна кнопочка &quot;Сгенерировать новое значение пароля&quot;. Она у вас есть, но только для определителей алгоритмов.<br />А, еще удобнее было бы, если бы случайные значения паролей автоматически генерировались бы при создании нового поля - защищенной ячейки или алгоритма.</p></blockquote></div><p>Текущее поведение утилиты <em>GrdUtil</em> при заполнении <em>(или не заполнении)</em> полей паролей для сервисов различных аппаратных алгоритмов действительно не совсем понятное, и мы обязательно учтем Ваши рекомендации при дальнейшем развитии данной утилиты.</p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Tue, 25 Dec 2012 12:25:21 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1182/#p1182</guid>
		</item>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1179/#p1179</link>
			<description><![CDATA[<div class="quotebox"><cite>Luck пишет:</cite><blockquote><p>GrdUtil при создании алгоритма записывает в него определитель, а также пароли на чтение, активацию и деактивацию. Полагаю, эти данные генерируются при помощи достаточно надежного генератора случайных чисел. Это действительно так?</p></blockquote></div><p>Я хотел спросить, можно ли доверять определителю и паролям, которые GrdUtil прописала в свежесозданный алгоритм? Они действительно генерятся с помощью надежного ГСЧ, или во все создаваемые алгоритмы записывается один и тот же определитель?</p><div class="quotebox"><cite>Антон Тихиенко пишет:</cite><blockquote><p>если нужно чтобы <em>GrdUtil</em> генерировал пароли для активированных сервисов, то следует выбирать тип пароля как случайный</p></blockquote></div><p>Тогда он будет уникальный для каждого записанного ключа. И храниться он будет, как я понимаю, в базе данных. А как быть с софтверным ключом? Как узнать, какие пароли записались в шаблон?<br />В данный момент, меня, видимо, интересуют <strong>постоянные пароли</strong>, сгенерированные однократно случайным образом.</p><div class="quotebox"><cite>Антон Тихиенко пишет:</cite><blockquote><p> если же используется постоянный пароль, то его необходимо указывать самостоятельно <em>(получать любым удобным и надежным, по Вашему мнению, способом)</em>.</p></blockquote></div><p>Для этого была бы удобна кнопочка &quot;Сгенерировать новое значение пароля&quot;. Она у вас есть, но только для определителей алгоритмов.<br />А, еще удобнее было бы, если бы случайные значения паролей автоматически генерировались бы при создании нового поля - защищенной ячейки или алгоритма.</p>]]></description>
			<author><![CDATA[null@example.com (Luck)]]></author>
			<pubDate>Mon, 24 Dec 2012 12:59:19 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1179/#p1179</guid>
		</item>
		<item>
			<title><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1177/#p1177</link>
			<description><![CDATA[<p>Здравствуйте, Luck.</p><p>При создании дескрипторов различных алгоритмов и защищенных ячеек, <em>GrdUtil</em> действительно по-разному может устанавливать набор активированных сервисов и паролей для них. Однако, для всех типов алгоритмов и защищенных ячеек, правильным будет следующее утверждение: если нужно чтобы <em>GrdUtil</em> генерировал пароли для активированных сервисов, то следует выбирать тип пароля как случайный <em>(в выпадающем списке, справа от поля для указания пароля, выбирать соответствующее значение)</em>, если же используется постоянный пароль, то его необходимо указывать самостоятельно <em>(получать любым удобным и надежным, по Вашему мнению, способом)</em>.</p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Mon, 24 Dec 2012 12:32:19 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1177/#p1177</guid>
		</item>
		<item>
			<title><![CDATA[GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link>https://forum.guardant.ru/post/1175/#p1175</link>
			<description><![CDATA[<p>GrdUtil при создании алгоритма записывает в него определитель, а также пароли на чтение, актитивацию и деактивацию. Полагаю, эти данные генерируются при помощи достаточно надежного генератора случайных чисел. Это действительно так?</p><p>А пароль на обновление алгоритма по умолчанию в маске не создается, он нулевой. То есть, получается, при необходимости пользователь должен либо сам придумать пароль на перезапись, либо сгенерить его с помощью внешней утилиты с ГСЧ и скопипастить в диалог настройки алгоритма.</p><p>При создании же защищенной ячейки GrdUtil вообще не предлагает никаких случайных данных, ни паролей. То есть все придется делать руками? Или можно как-то попросить GrdUtil, чтобы она создавала алгоритмы и защищенные ячейки со случайными данными и паролями.</p><p>Цель всего этого такова: не поставлять пользователю ключ с незанятой памятью, а набить его различными алгоритмами и защищенными ячейками, так сказать, &quot;про запас&quot;, чтобы в дальнейшем, при необходимости, можно было активировать новый алгоритм (ячейку), и использовать для защиты нового продукта.</p>]]></description>
			<author><![CDATA[null@example.com (Luck)]]></author>
			<pubDate>Mon, 24 Dec 2012 08:58:19 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1175/#p1175</guid>
		</item>
	</channel>
</rss>
