<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/249" />
	<updated>2012-12-27T12:55:08Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/249/</id>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1197/#p1197" />
			<content type="html"><![CDATA[<p>Бестолковая работа - потому что в любом случае, какой бы не использовался ГСЧ, пароли проще всего посмотреть захучив вызовы Guardant API. Зачем в загородный дом ставить дверь как в банковское хранилище, если кому надо влезет через окно даже с обычной дверью?</p><p>А вот с GrdUtil вы правы. В последней версии всем алгоритмам кроме GSII64 действительно дается свойство чтения по паролю при создании. Мы эту возможность в следующей версии закроем, т.к. это конечно идеологически некорректно.</p>]]></content>
			<author>
				<name><![CDATA[AndreyStepin]]></name>
				<uri>https://forum.guardant.ru/user/8/</uri>
			</author>
			<updated>2012-12-27T12:55:08Z</updated>
			<id>https://forum.guardant.ru/post/1197/#p1197</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1195/#p1195" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Luck]]></name>
				<uri>https://forum.guardant.ru/user/82/</uri>
			</author>
			<updated>2012-12-27T11:20:07Z</updated>
			<id>https://forum.guardant.ru/post/1195/#p1195</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1194/#p1194" />
			<content type="html"><![CDATA[<p>Во первых, по поводу генерации определителей в GrdUtil.</p><p>Ваши опасения мне понятны, и могу вас заверить, что они беспочвенны :). Еще раз повторю - опеределитель не требует супермощного криптографического ГСЧ в силу особенностей использования ключей и алгоритмов. Но там далеко не srand(time)-rand(). Мы используем собственный ГСЧ, с собственным сбором энтропии (например, при сборе энтропии учитываются все действия пользователя с момента запуска GrdUtil). Качество &quot;случайности&quot; для каждого определителя проверяется по критерию согласия Пирсона (критерий Хи-квадрат), это помимо алгоритмов отсекающих заведомо слабые определители для конкретных типов криптоалгоритмов. <br />Плюс к этому наш ГСЧ тщательно тестировался специалистами по криптографии (мы сотрудничаем с кафедрой криптологии и дискретной математики МИФИ) и показал очень хорошие результаты, не уступающие популярным криптографическим ГСЧ.</p><p>Возможность генераций паролей защищенных ячеек с помощью аналогичного ГСЧ мы учтем в следующих версиях утилиты. Но вообще говоря это работа близкая к бестолковой, пароли проще всего подсмотреть отреверсив программу и вызовы Guardant API, а не используя математические методы и долго и мучительно собирая статистику.</p><p>Возможность прочитать определитель алгоритма из ключа есть потому, что алгоритм представляет из себя защищенную ячейку и это ее типичная возможность. В каких то редких сценариях эта возможность наверное может быть полезна, но вообще говоря алгоритмы действительно должны быть недоступны для чтения из ячейки и накрыт аппаратным запретом, и по умолчанию GrdUtil их создает именно таким образом. Просто я лично не вижу смысла блокировать эту возможность для алгоритмов просто ради блокирования. По умолчанию это всегда выключено.</p>]]></content>
			<author>
				<name><![CDATA[AndreyStepin]]></name>
				<uri>https://forum.guardant.ru/user/8/</uri>
			</author>
			<updated>2012-12-27T09:47:22Z</updated>
			<id>https://forum.guardant.ru/post/1194/#p1194</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1193/#p1193" />
			<content type="html"><![CDATA[<p>Еще вопрос. Зачем, в принципе, нужна возможность прочитать определитель алгоритма из ключа? Тем более, без пароля?<br />Вроде наоборот, ключ должен держать определитель в себе и никому его не сообщать. Тогда определитель будет знать только разработчик.</p>]]></content>
			<author>
				<name><![CDATA[Luck]]></name>
				<uri>https://forum.guardant.ru/user/82/</uri>
			</author>
			<updated>2012-12-27T09:30:06Z</updated>
			<id>https://forum.guardant.ru/post/1193/#p1193</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1189/#p1189" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>AndreyStepin пишет:</cite><blockquote><p> вы сами можете генерировать и записывать туда любые пароли.</p></blockquote></div><p>Это понятно. У меня просто была мысль набить шаблон ключа алгоритмами про запас, чтобы в дальнейшем, при необходимости их можно было активировать.<br />Но набивать полсотни алгоритмов руками - а в каждом из них определитель и 3-4 пароля - желания нет. Тем более, что и необходимости в этом тоже нет.</p>]]></content>
			<author>
				<name><![CDATA[Luck]]></name>
				<uri>https://forum.guardant.ru/user/82/</uri>
			</author>
			<updated>2012-12-25T15:35:43Z</updated>
			<id>https://forum.guardant.ru/post/1189/#p1189</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1188/#p1188" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Luck]]></name>
				<uri>https://forum.guardant.ru/user/82/</uri>
			</author>
			<updated>2012-12-25T15:09:04Z</updated>
			<id>https://forum.guardant.ru/post/1188/#p1188</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1186/#p1186" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[AndreyStepin]]></name>
				<uri>https://forum.guardant.ru/user/8/</uri>
			</author>
			<updated>2012-12-25T14:00:49Z</updated>
			<id>https://forum.guardant.ru/post/1186/#p1186</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1183/#p1183" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Luck]]></name>
				<uri>https://forum.guardant.ru/user/82/</uri>
			</author>
			<updated>2012-12-25T13:07:28Z</updated>
			<id>https://forum.guardant.ru/post/1183/#p1183</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1182/#p1182" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Антон Тихиенко]]></name>
				<uri>https://forum.guardant.ru/user/31/</uri>
			</author>
			<updated>2012-12-25T12:25:21Z</updated>
			<id>https://forum.guardant.ru/post/1182/#p1182</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1179/#p1179" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Luck]]></name>
				<uri>https://forum.guardant.ru/user/82/</uri>
			</author>
			<updated>2012-12-24T12:59:19Z</updated>
			<id>https://forum.guardant.ru/post/1179/#p1179</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1177/#p1177" />
			<content type="html"><![CDATA[<p>Здравствуйте, Luck.</p><p>При создании дескрипторов различных алгоритмов и защищенных ячеек, <em>GrdUtil</em> действительно по-разному может устанавливать набор активированных сервисов и паролей для них. Однако, для всех типов алгоритмов и защищенных ячеек, правильным будет следующее утверждение: если нужно чтобы <em>GrdUtil</em> генерировал пароли для активированных сервисов, то следует выбирать тип пароля как случайный <em>(в выпадающем списке, справа от поля для указания пароля, выбирать соответствующее значение)</em>, если же используется постоянный пароль, то его необходимо указывать самостоятельно <em>(получать любым удобным и надежным, по Вашему мнению, способом)</em>.</p>]]></content>
			<author>
				<name><![CDATA[Антон Тихиенко]]></name>
				<uri>https://forum.guardant.ru/user/31/</uri>
			</author>
			<updated>2012-12-24T12:32:19Z</updated>
			<id>https://forum.guardant.ru/post/1177/#p1177</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[GrdUtil: Создание алгоритма и защищенной ячейки]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1175/#p1175" />
			<content type="html"><![CDATA[<p>GrdUtil при создании алгоритма записывает в него определитель, а также пароли на чтение, актитивацию и деактивацию. Полагаю, эти данные генерируются при помощи достаточно надежного генератора случайных чисел. Это действительно так?</p><p>А пароль на обновление алгоритма по умолчанию в маске не создается, он нулевой. То есть, получается, при необходимости пользователь должен либо сам придумать пароль на перезапись, либо сгенерить его с помощью внешней утилиты с ГСЧ и скопипастить в диалог настройки алгоритма.</p><p>При создании же защищенной ячейки GrdUtil вообще не предлагает никаких случайных данных, ни паролей. То есть все придется делать руками? Или можно как-то попросить GrdUtil, чтобы она создавала алгоритмы и защищенные ячейки со случайными данными и паролями.</p><p>Цель всего этого такова: не поставлять пользователю ключ с незанятой памятью, а набить его различными алгоритмами и защищенными ячейками, так сказать, &quot;про запас&quot;, чтобы в дальнейшем, при необходимости, можно было активировать новый алгоритм (ячейку), и использовать для защиты нового продукта.</p>]]></content>
			<author>
				<name><![CDATA[Luck]]></name>
				<uri>https://forum.guardant.ru/user/82/</uri>
			</author>
			<updated>2012-12-24T08:58:19Z</updated>
			<id>https://forum.guardant.ru/post/1175/#p1175</id>
		</entry>
</feed>
