Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Вниз

Crypto API и многопоточность   Найти похожие ветки 

 
Eraser ©   (2006-03-27 22:42) [0]

Ещё один вопрос по крипто-API.
Потокобезопасно ли CryptoAPI, т.е. можно ли, без угрозы возниконовения ошибок, одновременно шифровать/дешифровать данные в нескольких потоках, одним и тем же ключем без защиты критическими секциями или объектами ядра?

В инете и MSDN внятного ответа на этот вопрос не нашёл.

Спасибо.


 
Polevi ©   (2006-03-28 09:22) [1]

я бы не стал


 
Reindeer Moss Eater ©   (2006-03-28 09:26) [2]

Было бы странным, если бы реализации провайдеров были потоконебезопастными.

одним и тем же ключем без защиты ...
У программиста, использующего cryptoapi,  доступа непосредственно к приватному ключу никогда не будет. Поэтому использование объектов синхронизации никак не может повлиять на процесс.

А вообще что мешает делать CrytptAcquireConetx в каждом своем потоке?


 
Eraser ©   (2006-03-28 15:31) [3]

понятно, буду проверять на практике )

> А вообще что мешает делать CrytptAcquireConetx в каждом
> своем потоке?

алгоритм работы программы... каждый раз аутентифицироваться и авторизовываться не годится. Можно конечно каждый раз импорировать сохранённый session key... но уж очень не желательно его сохранять.


 
Reindeer Moss Eater ©   (2006-03-28 15:39) [4]

Не понял.
Во вторичных потоках пользовательский интерфейс живет что ли?
Что значит "каждый раз аутентифицироваться и авторизовываться" ?


 
Eraser ©   (2006-03-28 15:53) [5]


> Reindeer Moss Eater ©   (28.03.06 15:39) [4]

не.. пользовательского интерфеса там вообще нету ))
схема такая, клиент аутентифицируется/авторизуется, на сервере создаётся некий "контекст" (объект) соединения с информацией о клиенте. После успешной аутенификации соединение отключается, поток аутентификации завершает свою работу, но "контекст" остаётся, в этом "контексте" хранится дескриптор ключа шифрования, который был сгенерирован при аутентификации, к примеру, по алгоритму Diffie-Hellman"a.

Далее, при работе с этим же клиентом, данные шифруются ключом, дескриптор которого находится в "контексте" соединения (т.е. клиенту не нужно повторно проходить аутентификацию), но т.к. сервер многопоточный, то одновременно сервер может обрабатываеть несколько различных типов запроса от одного и того же клиента, т.е. "контекста" соединения.

Надеюсь не сильно сумбурно выразился ))


 
Reindeer Moss Eater ©   (2006-03-28 16:11) [6]

А почему бы не работать "этажом выше", используя клиентский сертификат и мессаджи? Не генерируя сессионный ключ руками.


 
Eraser ©   (2006-03-28 16:25) [7]


> Reindeer Moss Eater ©   (28.03.06 16:11) [6]

да итак я через чур высоко забрался...тут в основном 2 фактора мешают:
1. всё портит необходимость совместимости с win9x (обязательное условие) с приемлемой криптозащитой... а 40 битный CALG_RC4 это смешно.. вдруг и правда кому то взбредёт в голову сломать.. и сломают же ведь, поэтому надо предусмотреть "свой" алгоритм (без CryptoAPI) специально для 9x, например 512 RSA + 128 AES ... или Blowfish.
2. Необходима высокая производительность. Думаю мессаджи её не обеспечат.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
6-1139817774
Anton_123
2006-02-13 11:02
2006.06.25
Delphi, Web & RealVideo


3-1146571342
Суслик
2006-05-02 16:02
2006.06.25
Распределенные транзакции в MSSQL Server


4-1143463865
Sorcerer
2006-03-27 16:51
2006.06.25
Полупрозрачный MessageBox


2-1149584453
ttt_111
2006-06-06 13:00
2006.06.25
Написание HELP


2-1149586291
StriderMan
2006-06-06 13:31
2006.06.25
Record и указатель на Record





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский