Главная страница
    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.009 c
15-1148890565
Ega23
2006-05-29 12:16
2006.06.25
А что в IDE Delphi5 делает функция


11-1129318131
Ritter
2005-10-14 23:28
2006.06.25
События мыши в ListView


15-1147007389
Mozart
2006-05-07 17:09
2006.06.25
Слышал ли кто - нибудь о фирме nsign.ru? предложили работу...


4-1143484952
Eraser
2006-03-27 22:42
2006.06.25
Crypto API и многопоточность


2-1149437413
alex007
2006-06-04 20:10
2006.06.25
Создание компонентов на форме в запущенном приложении





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский