У вас вопросы?
У нас ответы:) SamZan.net

Первая фаза протокола- А- генерация случайного сеансового ключа k CryptGenKey;шифрование его с помощью открыто.html

Работа добавлена на сайт samzan.net: 2016-01-17

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.4.2025

Второй способ передачи сеансового ключа заключается в использовании специального трехфазного протокола (предполагается, что отправитель А и получатель В имеют открытые ключи обмена РКА, РКВ и логические имена IDA, IDB друг друга).

1. Первая фаза протокола:

А: генерация случайного сеансового ключа kA (CryptGenKey);
шифрование его с помощью открытого ключа В ЕРКВ (кА)
(CryptExportKey);

А->В: Еркв (кА);

В: расшифрование блоба с сеансовым ключом kA=DSKB(EPKB
(kA)) (CryptlmportKey).

2. Вторая фаза протокола:

В: генерация случайного сеансового ключа kB (CryptGenKey);
шифрование его с помощью открытого ключа А ЕРКА (кв)
(CryptExportKey);

B-*A: EPKA (kB);

В: вычисление хеш-значения Н1В=Н(кА, IDB, kB, IDA, «Фаза
2») (CryptCreateHash, CryptHashSessionKey, CryptHashData,
CryptGetHashParam);

B-*A: H1B;

ё) А: расшифрование блоба с сеансовым ключом kB=DSKA(EPKA (kB)) (CryptlmportKey); вычисление HlA=H(kA, IDB, kB, IDA, «Фаза 2») (CryptCreateHash, CryptHashSessionKey, CryptHashData, CryptGetHashParam); сравнение H1B и Н1А; при несовпадении хеш-значений (получатель не является подлинным или произошло искажение передаваемых по сети сообщений третьим лицом) выполнение протокола прекращается, а сеанс связи завершается.

3. Третья фаза протокола:

А: вычисление хеш-значения H2A=H(kB, IDA, IDB, «Фаза
3») (CryptCreateHash, CryptHashSessionKey, CryptHashData,
CryptGetHashParam);

A-»B: H2A;

В: вычисление хеш-значения H2B=H(kB, IDA, IDB, «Фаза
) (CryptCreateHash, CryptHashSessionKey, CryptHashData,
CryptGetHashParam);
сравнение Н2А и Н2В; при совпадении хеш-
значений сеансовые ключи
kA и kB могут использоваться для об
мена зашифрованными с их помощью сообщениями.

При выполнении данного трехфазного протокола потребуется использование еще двух функций CryptoAPI:

BOOL CryptHashSessionKey(HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags); /* добавление в хеш-значение с дескриптором hHash сеансового ключа шифрования с дескриптором hKey; значение параметра dwFlags не используется и должно  быть равно нулю */

 BOOL CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags); /* получение в буфере *pbData длиной *pdwDataLen хеш-значения с дескриптором hHash; после завершения в *pdwDataLen помещается действительный размер хеш-значения;" значение параметра dwFlags не используется и должно  быть равно  нулю;dwParam=HP_HASHVAL   */

5.3. Использование функций CryptoAPI для шифрования и расшифрования данных

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

BOOL    CryptEncrypt(HCRYPTKEY    hKey,     HCRYPTHASH    hHash, BOOL    Final,     DWORD    dwFlags,     BYTE    *pbData,     DWORD *pdwDataLen,   DWORD dwBufLen);   /* шифрование на сеансовом ключе  с дескриптором hKey порции данных из  буфера *pbData   длиной   dwBufLen    (*pdwDataLen   —   длина   порции данных,   после выполнения функции в  эту переменную записывается   фактическая   длина    зашифрованных   данных); hHash=0,   dwFlags=0,    Final   —  признак  последней  порции шифруемых данных  */

Для расшифрования зашифрованных с помощью сеансового ключа данных применяется функция CryptDecrypt:

BOOL CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen); /* расшифрование на сеансовом ключе с дескриптором hKey порции данных из буфера *pbData (*pdwDataLen длина порции данных, после выполнения функции в эту переменную записывается фактическая длина расшифрованных данных); hHash=0, dwFlags=0, Final признак последней порции расшифровываемых данных  */

Для изменения режима симметричного шифрования (ЕСВ, СВС, CFB или OFB, см. подразд. 4.4) используется функция CryptSetKeyParam:

BOOL CryptSetKeyParam(HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD dwFlags) ; /* установка режима шифрования для сеансового ключа с дескриптором hKey; dwParam=KP_MODE,   pbData   указывает  на   переменную   типа




1. тематического ожидания и дисперсии для нормального распределения
2. философское учение о бытии
3.  2013г ПОЛОЖЕНИЕ о конкурсе молодых семей ldquo;Счастье моёrdquo; 1
4. Основы Алгоритмизации и Программирования Руководитель
5. Клиника Диагностика и Лечение Гиперпластических процессов эндометрии
6. на тему- Развитие маркетинга в России План Введение
7. тема так как проблема формирования грамматических навыков является наиболее важной при обучении английск
8. А D. Sbiston была выполнена первая прямая хирургическая реваскуляризация миокарда с помощью аутовенозного АКШ
9. на тему- Бюджетный процесс
10. ТЕМА- Классификация Токарных Резцов