close

Вход

Забыли?

вход по аккаунту

?

Отчёт 3 наш

код для вставкиСкачать
БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И РОБОТОТЕХНИКИ
КАФЕДРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И АВТОМАТИЗИРОВАННЫХ СИСТЕМ
Отчёт по лабораторной работе №3 на тему: "ПОСТРОЕНИЕ КРИПТОГРАФИЧЕСКОЙ СИСТЕМЫ С ОТКРЫТЫМ КЛЮЧОМ"
Исполнители:студентки гр.107319 Антонович О.Д.
Макарченко В.В. Проверила: ст.пр. Белова С.В. Минск 2013
Цель работы:
Познакомиться с моделью шифрования с открытым ключом на примере алгоритма RSA.
Задания на лабораторную работу:
1. Изучить алгоритм RSA.
2. Изучить методические указания к выполнению лабораторной работы. (См. также книгу Б. Шнайер "Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си" Глава 11 "Математические основы".)
3. Написать программу генерации больших простых чисел на основе указанного алгоритма по вариантам:
1) Rabin-Miller.
4. Написать программы шифрования и расшифрования по алгоритму RSA. Входные параметры программы шифрования: p, q, e - открытый ключ, М - открытый текст. Например: p=3, q=11, e=7, M=31.
Вывести на экран значение функции Эйлера, личный ключ, шифртекст.
Текст программы:
1. RSA
using System;
using System.Windows.Forms;
namespace RSA
{
public partial class Form1 : Form
{
int n, f, d, k = 0;
//int p = 3, q = 11, e = 7, d = 3;
public Form1()
{
InitializeComponent();
}
public int fun(int p, int a, int b)
{
double si = 1;
int s;
si = Math.Pow(a, b) % p;
s = Convert.ToInt32(si);
return s;
}
private void button1_Click(object sender, EventArgs ea)
{
MyMethod(int.Parse(tb_e.Text));
}
private void MyMethod(int e)
{
string str1;
str1 = textBox1.Text;
textBox2.Text = "";
textBox3.Text = "";
k = Convert.ToInt16(str1);
//шифровка
k = fun(n, k, e);
textBox2.Text = k.ToString();
//расшифровка
k = fun(n, k, d);
textBox3.Text = textBox3.Text + k.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
GetValues(int.Parse(tb_p.Text), int.Parse(tb_q.Text), int.Parse(tb_e.Text));
}
private void GetValues(int p, int q, int e)
{
n = p * q; //вычисление модуля произведения
f = (p - 1) * (q - 1); // функция Эйлера
A:
//вычисление секретной экспоненты
while (d < f)
{
if ((d * e) % f == 1)
break;
d = d + 1;
}
if ((d * e) % f != 1)
MessageBox.Show(@"Ошибка!!!");
if (d == f) goto A;
tb_n.Text = n.ToString();
tb_fn.Text = f.ToString();
tb_d.Text = d.ToString();
}
}
}
2. Генерация простых чисел
using System;
using System.Windows.Forms;
namespace ГПЧ
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Random myran = new Random();
int p, b = 0, m, z, j = 0, count = 0;
string text = "";
double m1, z1;
for (int o = 0; o < 100; o++)
{
A:
p = myran.Next(2,3000);
b = 0;
count = 0;
for (int i = 0; i < p; i++)
{
if (Math.Pow(2, b) < p - 1)
b++;
}
m1 = (p - 1) / Math.Pow(2, b);
m = Convert.ToInt16(m1);
z1 = Math.Pow((p - 1), m);
z = Convert.ToInt16(z1);
if (p % 2 == 0 && p != 2 || p % 3 == 0) goto A;
if (z % p == 1 || z % p == (p - 1))
{
count++;
}
if (j + 1 < b && z != p - 1)
{
z = (z * z) % p;
if (z == p - 1)
{
count++;
}
}
else if (j == b && z != (p - 1)) goto A;
text = p.ToString();
}
textBox1.Text = text;
}
}
}
Результаты работы программы:
1. RSA
2. Генерация простых чисел
Ответы на контрольные вопросы:
1. Опишите модель асимметричного шифрования. 1) Каждая конечная система генерирует пару ключей (сколько пользователей, столько и пар ключей)
2) Каждая из систем публикует свой ключ шифрования (открытый ключ), а второй ключ остаётся в личном владении (личный ключ)
3) Если пользователь А собирается отправить сообщение пользователю Б, он шифрует его, используя открытый ключ Б.
4) Пользователь Б при получении сообщения расшифровывает его своим личным ключом.
2. Перечислите сферы применения криптографии с открытым ключом. Приведите примеры соответствующих алгоритмов.
Криптография с открытым ключом может применяться:
- для обеспечения конфиденциальности для шифрования/расшифрования
- в алгоритмах распределения и управления ключом
- для создания цифровых подписей; можно применить ко всему сообщению, к части или к части и ко всему сообщению
Алгоритмы: DSA, ECDSA - для генерации цифровых подписей; Диффи - Хеллмана - для управления ключами; RSA - подходит для всех трёх областей применения.
3. Каковы основные недостатки асимметричных алгоритмов по сравнению с традиционным шифрованием?
Недостатки:
- медленные
- уязвимы к атакам на основе подобранного открытого текста (если известен шифр-текст У и существуют n возможных открытых текстов, то достаточно все зашифровать и сравнить с шифр-текстом).
4. Какая функция называется однонаправленной? Приведите примеры.
Односторонняя (однонаправленная) функция - функция, отображающая свои аргументы в некотором диапазоне значений так, что каждое значение функции имеет уникальное обратное значение, при этом значение функции вычислить легко, а обратное - практически невозможно.
Примерами однонаправленных функций могут быть:
- целочисленная функция N=P*Q - произведение 2 больших чисел (разложить на множители обратно очень трудно)
- модульная экспонента с фиксированным основанием и модулем
- однонаправленная функция "с лазейкой".
5. Какие требования предъявляются к числам P и Q в алгоритме RSA? В каком числовом диапазоне должны находиться их значения?
P и Q должны быть случайными большими простыми числами с разницей в несколько разрядов; N должно быть больше кода символа открытого текста.
6. Какие длины ключей применяются в алгоритме RSA?
В настоящее время используется длина ключа 512, 1024, 2048 бит.
7. Когда целые числа a и b называются взаимно простыми?
Если НОД(a,b) = 1, то числа a и b называются взаимно простыми.
8. Как на практике генерируются простые числа?
I способ:
- сгенерировать случайное n-битовое число p.
- установить старший и младший биты равными 1. (Старший бит гарантирует требуемую длину простого числа, а младший - обеспечивает его нечетность).
- убедиться, что p не делится на малые простые числа: 3, 5, 7, 11 и т. д. Во многих реализациях проверяется делимость p на все простые числа, меньшие 256
- выполнить тест Рабина-Миллера для некоторого случайного числа a. Если р проходит тест, необходимо сгенерировать другое случайное число а и повторить тест. Можно выполнить 5 тестов и если р не проходит один из тестов, нужно генерировать другое число р.
II способ:
не генерировать случайное число p в каждом тесте, а последовательно перебирать числа, начиная со случайно выбранного числа, пока не найдется простое число.
Документ
Категория
Рефераты
Просмотров
55
Размер файла
126 Кб
Теги
наш, отчет
1/--страниц
Пожаловаться на содержимое документа