DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Формування цифрового підпису згідно стандарту DSS

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2006
Тип роботи:
Лабораторна робота
Предмет:
Проектування комп’ютерних засобів захисту
Група:
КСМ-5
Коротко про документ

Про що ця робота

У цій лабораторній роботі реалізовано демонстраційну програму формування та перевірки цифрового підпису згідно зі стандартом DSS. Наведено теоретичні відомості про криптографічні перетворення та програмний код на мові Сі.

У роботі розглядаються

  • Цифровий підпис
  • Стандарт DSS
  • Криптографічні алгоритми
  • Хеш-функції
  • Програмування на Сі
  • Захист інформації

Зміст і розділи

  1. Мета роботи
  2. Теоретичні відомості
  3. Лістинг програми
  4. Результати роботи програми
  5. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають комп'ютерну безпеку.
Викладачі:Не вказано

Ключові поняття

цифровий підписстандарт DSSвідкритий ключсекретний ключхеш-значенняпрості числаалгоритмпрограмамодульна арифметика

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ Звіт з лабораторної роботи №2 Формування цифрового підпису згідно стандарту DSS Львів – 2006 Мета роботи: реалізувати демонстраційну програму формування цифрового підпису вхідного повідомлення згідно стандарту DSS. Теоретичні відомості Відправник і отримувач електронного документа використовують при обчисленні великі цілі числа:  EMBED Equation.3  і  EMBED Equation.3  – прості числа,  EMBED Equation.3  біт кожне  EMBED Equation.3 ;  EMBED Equation.3  – просте число довжиною 160 розрядів (дільник числа EMBED Equation.3 ). Числа  EMBED Equation.3 ,  EMBED Equation.3 ,  EMBED Equation.3  є відкритими і можуть бути спільними для всіх користувачів мережі. Відправник вибирає випадкове ціле число  EMBED Equation.3 ( EMBED Equation.3 ). Число  EMBED Equation.3  – секретний ключ відправника для формування електронного цифрового підпису. Наступним кроком відправник обчислює значення  EMBED Equation.3 . Число  EMBED Equation.3  – відкритий ключ для перевірки підпису відправника. Це число передається всім отримувачам документів. Для того, щоб підписати документ  EMBED Equation.3 , відправник хешує його в ціле хеш-значення  EMBED Equation.3 :  EMBED Equation.3 , після цього відправник генерує випадкове ціле число  EMBED Equation.3  при умові, що  EMBED Equation.3 , і обчислює число  EMBED Equation.3 :  EMBED Equation.3 . Обчисливши число  EMBED Equation.3  відправник обчислює за допомогою секретного ключа  EMBED Equation.3  ціле число  EMBED Equation.3 :  EMBED Equation.3 . Пара чисел  EMBED Equation.3  і  EMBED Equation.3  утворюють цифровий підпис  EMBED Equation.3  під документом  EMBED Equation.3 . Таким чином, підписане повідомлення складається з трьох чисел  EMBED Equation.3 . Отримувач підписаного повідомлення  EMBED Equation.3  перевіряє виконання умов  EMBED Equation.3 ,  EMBED Equation.3  і відкидає підпис, якщо хоча б одна з умов не виконується. Потім отримувач обчислює значення  EMBED Equation.3 , хеш-значення  EMBED Equation.3  і числа  EMBED Equation.3  Після цього отримувач за допомогою відкритого ключа  EMBED Equation.3  обчислює значення  EMBED Equation.3  і перевіряє виконання умови  EMBED Equation.3 . Якщо умова  EMBED Equation.3  виконується, тоді підпис  EMBED Equation.3  під документом  EMBED Equation.3  визнається отримувачем як справжній. Можна строго математично довести , що рівність  EMBED Equation.3  буде виконуватися тоді і тільки тоді, коли підпис  EMBED Equation.3  під документом  EMBED Equation.3  отриманий за допомогою того секретного ключа  EMBED Equation.3 , з якого був обчислений відкритий ключ  EMBED Equation.3 . Таким чином, можна твердо переконатися , що відправник повідомлення володіє даним секретним ключом  EMBED Equation.3  (не розкриваючи при цьому значення ключа  EMBED Equation.3 ) і що відправник підписав даний документ  EMBED Equation.3 . Лістинг програми # include <stdio.h> # include <conio.h> # include <math.h> # include <stdlib.h> int N=200;char text[200];unsigned short h[4];unsigned long h_e;int text_l;unsigned long p;unsigned long q;unsigned long g;unsigned long k_ a;unsigned long x;unsigned long r;unsigned long s;unsigned long y;int h_g;long easy[10000];int E=10000; void take_string(void){int i; printf("Please write string to signature.\n"); scanf("%s",text);for(i=0;i<N;i++)if(text[i]!='\0') text_l++;else i=N; } void take_H (void){ int i; int j; if((text_l%4)!=0){i=4-(text_l%4);for(j=text_l;j<text_l+i;j++) text[j]=0;text[j]='\0';} for(i=0;i<4;i++)for(j=0;j<text_l;j+=4){h[i]=h[i]^text[j+i];} h_e=(unsigned long)h[0]<<24|(unsigned long)h[1]<<16|(unsigned long)h[2]<<8|(unsigned long)h[3];} void take_p_q(void){ int i=1; int j=0; int l=0; int k; int lable; int r; for(;(i<4294000000)&&(j<E);i++){lable=1;for(k=2;k<=(int)sqrt((double)i);k++){if((i%k)==0) { k=(int)sqrt(i)+1;lable=0;}} if(lable){ easy[j++]=i;}}l=j; r = (int) ((float)(5000) * (float)rand() / (float)RAND_MAX)+200; p=easy[r]; k=p-1; for(i=r-1;i>=0;i--){ if((k%easy[i])==0) {q=easy[i];i=-1;}}j=(p-1)/q; h_g = (int) ((float)(10) * (float)rand() / (float)RAND_MAX)+1; g=((int)(pow((double)h_g,(double)j)))%p; p=8039; q=4019; h_g=5; g=25; k_a=25; x=12; y = (unsigned long )pow(g,x )% p ;} void take_key(void){ r = (g*k_a % p) % q; s = ( (unsigned long )((double)(1.0/(double)k_a) *(double)(h_e + x*r)) ) % q;printf("%X %X\n",r,s);} void test(void){ouble w;unsigned long u1;unsigned long u2;unsigned long v;w = (unsigned long)((double)(1.0/(double)s) )% q; u1 =(unsigned long) ((double) h_e* w ) % q;u2 = (unsigned long)((double)r* w ) % q;v = ((unsigned long) (pow(g,u1)*s* pow(y,u2)) % p ) % q; printf("%X %X %X %X %X\n",v,r,w,u1,u2); void main(void){srand( (unsigned)time( NULL ) );take_string();take_H();take_p_q(); take_key();printf("Program working.\n");} Результати роботи програми  Висновок: в результаті виконання лабораторной роботи я реалізувала демонстраційну програму формування цифрового підпису вхідного повідомлення згідно стандарту DSS.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!