МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Лабораторная работа № 6. МЕТОДЫ ДВУХКЛЮЧЕВОЙ КРИПТОГРАФИИ





Цель работы

Знакомство с методами двухключевой криптографии и принципами формирования общих ключей Диффи и Хеллмана.

2. Теоретические положения

СТАНДАРТ RSA (криптография с асимметричным ключом)

Электронную (цифровую) подпись обычно реализуют на основе криптографического алгоритма с открытым ключом. Такие алгоритмы строятся на основе двух ключей (ключ шифратор (КШ), ключ дешифратор (КД)). Открытым может быть один из ключей, другой же обязательно секретным. На рис. 1 представлена система открытого распространения ключей Диффи и Хеллмана.

Рис. 1. Система открытого распространения

ключей Диффи и Хеллмана

 

При обмене информацией первый пользователь выбирает случайное число X1, из целых чисел 1,...,n-1. Это он держит в секрете, а другому пользователю посылает число

где m – положительное целое, меньшее n. Аналогично поступает и второй пользователь. В результате они могут вычислить z

.

Для того, чтобы вычислить z первый пользователь возводит y2 в степень X1, аналогичным способом поступает и второй пользователь. Не зная X1 и X2, злоумышленник не может вычислить z, имея только y1 и y2.

Эквивалентность этой проблемы проблеме вычисления дискретного логарифма есть главный вопрос криптографии с открытым ключом. До настоящего времени нет простого решения проблемы.

Например, если простое число длиной 1000 бит, то для вычисления y1 из X1 потребуется около 2000 умножений 1000 битовых чисел. С другой стороны, имеющимися алгоритмами вычисления логарифмов над полем GF(n) потребуется 2100 1030 операций. Подобрать же z злоумышленнику, не зная m, n, X1 или X2 за разумное время практически невозможно (см. табл. 1). В таблице 1 представлено сравнение рассмотренного ниже (в следующей лабораторной работе) одноключевого криптографического стандарта DES и двухключевого RSA.

Таблица 1

Характеристика DES RSA
вид криптографического алгоритма Одноключевой Двухключевой
Скорость работы Быстрая Медленная
Наименее затратный криптоанализ Перебор по всему ключевому пространству Разложение модуля
Стойкость Теоретическая Практическая
Временные затраты на криптоанализ Столетия зависят от длины ключа
Время генерации ключа Миллисекунды Десятки секунд
Тип ключа Симметричный Асимметричный
Длина ключа 56 бит 300 – 600 бит

Проблема произведений произведение m-битных
сомножителей

Основная проблема при формировании общих ключей Диффи и Хеллмана заключается в реализации произведений сомножителей большой разрядности (более 32-х бит). Рассмотрим метод формирования произведения сомножителей большой разрядности (m – разрядность сомножителей; L – количество 32-х битных слов каждом в сомножителе) на основе команд умножения 32-х битных сомножителей.

m = 64, L = 2

A = (a0 + a1 × 232);

B = (b0 + b1 × 232);

A × B = (a0 + a1 × 232) × (b0 + b1 × 232) = a0 × b0 + 232 × (a1 × b0 + a0 × b1) + 264 × a1 × b1.

Графическая интерпретация произведения 64-битных сомножителей

a0 × b0      
  a1 × b0 + a0 × b1    
    a1 × b1  

m = 96, L = 3

A = (a0 + a1 × 232 + a2 × 264);

B = (b0 + b1 × 232 + b2 × 232);

A × B = (a0 + a1 × 232 + a2 × 264) × (b0 + b1 × 232 + b2 × 232) = a0 × b0 + 232 × (a1 × b0 + a0 × b1) + 264 × (a0 × b2 + a1 × b1 + a2 × b0) + 296 × (a1 × b2 + a2 × b1) + 2128 × a2 × b2.

Графическая интерпретация произведения 96-битных сомножителей

a0 × b0        
  a1 × b0 + a0 × b1      
    a0 × b2 + a1 × b1 + a2 × b0    
      a1 × b2 + a2 × b1  
        a2 × b2

 

Алгоритм умножения L-словных сомножителей

Функция умножения L-словных сомножителей

// A – массив 32-х битных слов 1-го сомножителя;

// B – массив 32-х битных слов 2-го сомножителя;

// P – массив 32-х битных слов произведения;

// L – количество 32-х битных слов в каждом сомножителе.

void Mmul(unsigned long int* A, unsigned long int* B,

unsigned long int* P, int L){

int q, j, k;

unsigned long int Pm, Ps, r_A, r_B, r_P;

for(q = 0; q < (L + L); q++) P[q] = 0;

for(q = 0; q < (L + L - 1); q++){

Pm = 0;

Ps = 0;

r_P = 0;

for(j = 0; j < L; j++){

if(j > q) break;

for(k = 0; k < L; k++){

if((k + j) > q) break;

if((k + j) == q){

r_A = A[j];

r_B = B[k];

asm{

mov eAX, r_A

mov eBX, r_B

mul eBX

add Pm, eAX

adc Ps, eDX

adc r_P, 0

}

}

}

}

P[q] = P[q] + Pm;

P[q + 1] = P[q + 1] + Ps;

if(r_P != 0) P[q + 2] = P[q + 2] + r_P;

}

}

3. Задание на работу

Получить вариант задания у преподавателя для формирования общего ключа Диффи и Хеллмана.

Вариант m n X1 X2
2128
2256
2192
2512
2128
2256
2192
2192
2512
2128
2256

 

4. Оборудование

ПЭВМ с архитектурой IBM PC, операционная система – Windows 95, интегрированная среда – C++ Builder или Delphi версии не ниже 3.0

5. Порядок выполнения работы

1) Согласно полученному варианту задания разработать и отладить ПО для формирования общего ключа Диффи и Хеллмана.

2) Программно замерить время формирования одного общего ключа Диффи и Хеллмана.

3) Оформить отчет.

6. Оформление отчета

Отчет должен содержать:

− задание на лабораторную работу;

− листинг разработанного ПО для формирования общего ключа Диффи и Хеллмана;

− результаты исследования времени формирования общего ключа Диффи и Хеллмана.

7. Контрольные вопросы

1) Какие ассемблерные команды предназначены для обработки 32-х разрядных операндов?

2) В каких случаях находят применение двухключевые криптографические методы?

3) Разработать функцию произведения L1 и L2 –словных сомножителей (L1 и L2 – количество 32-х битных слов в первом и втором сомножителе).

4) Каким образом программно измеряется время формирования общего ключа Диффи и Хеллмана?

5) Приведите основные характеристики стандарта RSA.

6) Какую минимальную разрядность общего ключа Диффи и Хеллмана целесообразно использовать?





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.