Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лабораторная работа № 4. Методы криптографии. Реализация процедур стандарта DES




Цель работы

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

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-05-07; Просмотров: 560; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.