<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Рутокен &mdash; Работа с RuToken средствами CryptoAPI]]></title>
	<link rel="self" href="https://forum.rutoken.ru/feed/atom/topic/2375/" />
	<updated>2016-03-25T15:03:00Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rutoken.ru/topic/2375/</id>
		<entry>
			<title type="html"><![CDATA[Re: Работа с RuToken средствами CryptoAPI]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/9467/#p9467" />
			<content type="html"><![CDATA[<p>2а - можно, например в PFX (но если устройство не Рутокен ЭЦП, в Рутокен ЭЦП экспорт закрытого ключа невозможен)<br />2б - тоже можно (импорт PFX)<br />3. в Актив Рутокен CSP этот флаг вообще не поддерживается</p>]]></content>
			<author>
				<name><![CDATA[Кирилл Мещеряков]]></name>
				<uri>https://forum.rutoken.ru/user/6786/</uri>
			</author>
			<updated>2016-03-25T15:03:00Z</updated>
			<id>https://forum.rutoken.ru/post/9467/#p9467</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Работа с RuToken средствами CryptoAPI]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/9466/#p9466" />
			<content type="html"><![CDATA[<p>Тема всё ещё актуальна.</p>]]></content>
			<author>
				<name><![CDATA[apixosoft]]></name>
				<uri>https://forum.rutoken.ru/user/10019/</uri>
			</author>
			<updated>2016-03-25T11:27:44Z</updated>
			<id>https://forum.rutoken.ru/post/9466/#p9466</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Работа с RuToken средствами CryptoAPI]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/9405/#p9405" />
			<content type="html"><![CDATA[<p>И ещё пара вопросов:<br /> • можно ли сгенерировать ключ на токене, а потом экспортировать его <strong>(2а)</strong>? Но только однажды, сразу после создания, как CRYPT_ARCHIVABLE. Либо, в противном случае, сгенерировать его локально и записать на токен <strong>(2б)</strong>, потому что локально нужно иметь всю ключевую пару.<br /> • надо ли для генерации ключа получать контекст с флагом CRYPT_MACHINE_KEYSET, или ключи должны быть пользовательские, т.е. использовать параметры по умолчанию? <strong>(3)</strong></p>]]></content>
			<author>
				<name><![CDATA[apixosoft]]></name>
				<uri>https://forum.rutoken.ru/user/10019/</uri>
			</author>
			<updated>2016-03-15T06:07:08Z</updated>
			<id>https://forum.rutoken.ru/post/9405/#p9405</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Работа с RuToken средствами CryptoAPI]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/9392/#p9392" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Кирилл Мещеряков пишет:</cite><blockquote><p>Да, вы правильно нашли тонкое место :)<br />Если вы создаете закрытый ключ на токене - то вы не сможете его извлекать. <br />Каждый раз нужно будет расшифровывать что-то только с&nbsp; использованием токена.</p></blockquote></div><p>Вы, верно, не очень внимательно читали тему :) Как раз-таки этого я и добиваюсь, чтобы расшифровывать можно было только с помощью токена. То есть та же самая последовательность инструкций (за исключением того, что я создаю не локально ключ, а на токене, и ничего не экспортирую/импортирую) будет работать и при использовании токена? <strong>(0)</strong></p><div class="quotebox"><cite>Кирилл Мещеряков пишет:</cite><blockquote><p>К первому вашему посту, есть вопрос:<br />Что значит шифруется сначала открытым, а потом закрытым?<br />В схеме RSA возможно шифрование только на открытом ключе, а расшифрование на закрытом. <br />Вы ничего не путаете?</p></blockquote></div><p>Кажется, немного попутал, да ☺ Вернее, не уточнил — имелась в виду цифровая подпись, ведь она делается закрытым ключом в источнике, верно? <strong>(1)</strong></p>]]></content>
			<author>
				<name><![CDATA[apixosoft]]></name>
				<uri>https://forum.rutoken.ru/user/10019/</uri>
			</author>
			<updated>2016-03-04T17:52:37Z</updated>
			<id>https://forum.rutoken.ru/post/9392/#p9392</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Работа с RuToken средствами CryptoAPI]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/9391/#p9391" />
			<content type="html"><![CDATA[<p>Да, вы правильно нашли тонкое место :)<br />Если вы создаете закрытый ключ на токене - то вы не сможете его извлекать. <br />Каждый раз нужно будет расшифровывать что-то только с&nbsp; использованием токена.</p><p>К первому вашему посту, есть вопрос:<br /></p><div class="quotebox"><cite>apixosoft пишет:</cite><blockquote><p>сгенерированный файл лицензии сначала шифруется на выпускающей стороне 1-м закрытым ключом, а затем — 2-м открытым</p></blockquote></div><p>Что значит шифруется сначала открытым, а потом закрытым? </p><p>В схеме RSA возможно шифрование только на открытом ключе, а расшифрование на закрытом. <br />Вы ничего не путаете?</p>]]></content>
			<author>
				<name><![CDATA[Кирилл Мещеряков]]></name>
				<uri>https://forum.rutoken.ru/user/6786/</uri>
			</author>
			<updated>2016-03-04T13:22:03Z</updated>
			<id>https://forum.rutoken.ru/post/9391/#p9391</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Работа с RuToken средствами CryptoAPI]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/9386/#p9386" />
			<content type="html"><![CDATA[<p>Постановку задачи можно немного облегчить, интересует именно вопрос с «собственным» ключом — как реализовать этот вариант с модулем RuToken и какой лучше использовать?<br />Я сделал тестовый пример, реализующий следующие действия:<br />а) на выпускающей стороне:<br /> — открываю контейнер посредством <em>CryptAcquireContext</em> (или создаю новый, генерирую асимметричный ключ с помощью <em>CryptGenKey(AT_KEYEXCHANGE,CRYPT_ARCHIVABLE)</em> и экспортирую PRIVATEKEYBLOB);<br /> — получаю дескриптор ключа посредством <em>CryptGetUserKey(AT_KEYEXCHANGE)</em>;<br /> — генерирую сессионный ключ с помощью <em>CryptGenKey(CALG_RC4)</em> и экспортирую его посредством <em>CryptExportKey(SIMPLEBLOB)</em> совместно с зашифрованными им через <em>CryptEncrypt</em> данными, сохраняя это в одно сообщение;<br /> — разрушаю/закрываю ключи/хранилища.<br />б) на принимающей стороне:<br /> — открываю контейнер посредством <em>CryptAcquireContext</em> (или создаю новый, импортировав экспортированный на стороне а) ключ посредством <em>CryptImportKey</em>;<br /> — получаю дескриптор ключа посредством <em>CryptGetUserKey(AT_KEYEXCHANGE)</em>;<br /> — открываю сообщение, импортируя оттуда ключ через <em>CryptImportKey</em> и расшифровывая им остаток сообщения;<br /> — разрушаю/закрываю ключи/хранилища.</p><p>Тонким местом здесь является экспорт ключевой пары в источнике и импорт оной в приёмнике. Разумеется, конечному пользователю эта информация не должна быть доступна, дабы он не завладел закрытым ключом, для этой цели как раз и служит токен. Сохранится ли эта последовательность в случае работы с токеном, или надо будет внести какие-то серьёзные изменения? Возможно, также будут какие-то тонкости, которые мне неизвестны.</p>]]></content>
			<author>
				<name><![CDATA[apixosoft]]></name>
				<uri>https://forum.rutoken.ru/user/10019/</uri>
			</author>
			<updated>2016-03-03T09:01:55Z</updated>
			<id>https://forum.rutoken.ru/post/9386/#p9386</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Работа с RuToken средствами CryptoAPI]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/9335/#p9335" />
			<content type="html"><![CDATA[<p>Добрый день! Есть задача лицензирования ПО. Суть в следующем: есть выпускающая сторона, и есть клиент. Есть 2 пары ключей RSA: 1-я — «собственный» ключ, 2-я — «экспортный»; сгенерированный файл лицензии сначала шифруется на выпускающей стороне 1-м закрытым ключом, а затем — 2-м открытым. 1-й открытый ключ хранится в модуле лицензирования (поэтому он «собственный»), 2-й записывается на токен. Соответственно, у клиента надо сначала расшифровать лицензию 2-м закрытым, а затем — 1-м открытым (который хранится в модуле). Такова постановка задачи, менять её не надо.<br />Вопрос: как средствами CryptoAPI расшифровать лицензию закрытым ключом неявно (например, сделать это средствами самого токена), т.е. чтобы его нельзя было извлечь и, соответственно, использовать в своих целях? Интересует подробный алгоритм как шифрования и записи данных на токен, так и обратного процесса (просто я пока слабо представляю себе эту картину даже в общих деталях).</p><p>Т.к. я новичок в крипции вообще и в вопросах использования RuToken — в частности, просьба разворачивать свой ответ, дабы было понятно не только профессионалам ☺ И просьба простить меня за возможные некорректные формулировки в вопросах.<br />Заранее спасибо!</p>]]></content>
			<author>
				<name><![CDATA[apixosoft]]></name>
				<uri>https://forum.rutoken.ru/user/10019/</uri>
			</author>
			<updated>2016-02-15T12:05:13Z</updated>
			<id>https://forum.rutoken.ru/post/9335/#p9335</id>
		</entry>
</feed>
