Интегральная атака против блочного симметричного шифра Crypton

Основные требования к блочным симметричным шифрам как к механизмам, обеспечивающим конфиденциальность. Адаптация методики реализации интегральной атаки для расшифрования усеченного варианта Crypton. Использование криптографических способов защиты.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 05.06.2011
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

((u4byte*)(x))[3] = io_swap(in_blk[3])

#define put_block(x) \

out_blk[0] = io_swap(((u4byte*)(x))[0]); \

out_blk[1] = io_swap(((u4byte*)(x))[1]); \

out_blk[2] = io_swap(((u4byte*)(x))[2]); \

out_blk[3] = io_swap(((u4byte*)(x))[3])

#define get_key(x,len) \

((u4byte*)(x))[4] = ((u4byte*)(x))[5] = \

((u4byte*)(x))[6] = ((u4byte*)(x))[7] = 0; \

switch((((len) + 63) / 64)) { \

case 4: \

((u4byte*)(x))[6] = io_swap(in_key[6]); \

((u4byte*)(x))[7] = io_swap(in_key[7]); \

case 3: \

((u4byte*)(x))[4] = io_swap(in_key[4]); \

((u4byte*)(x))[5] = io_swap(in_key[5]); \

case 2: \

((u4byte*)(x))[0] = io_swap(in_key[0]); \

((u4byte*)(x))[1] = io_swap(in_key[1]); \

((u4byte*)(x))[2] = io_swap(in_key[2]); \

((u4byte*)(x))[3] = io_swap(in_key[3]); \

}

#endif

#define beg /*

#define en */

Файл <АTACK.H>

#ifndef ATACH.H_H #define ATACH.H_H

#define ENCRYPT 0 #define DECRYPT 1

¦include "StdAfx.h" #include "Resource.h" ¦include "winaesDlg.h"

¦define ROTL(x) ( ( (x) "7) | ( (x) "1) )

¦define R0TL8 (x) ( ( (x) "8) | ( (x) "24) ) ¦define R0TL16(x) ( ( (x) "16) I ( (x) "16) ) ¦define ROTL24 (x) ( ( (x) "24) | ( (x) "8) )

int KeyExpansion(CWinaesDlg* dig, int nb,int nk, BYTE* key); void Encrypt(CWinaesDlg* dig, BYTE* buff, BYTE* result); void InvDecrypt(CWinaesDlg* dig, BYTE* buff, BYTE* result); void EquDecrypt(CWinaesDlg* dig, BYTE* buff, BYTE* result);

int blockEncrypt(CWinaesDlg* dig, BYTE *input, int inputLen, BYTE* result, int cipher_mode); int blockDecrypt(CWinaesDlg* dig, BYTE *input, int inputLen, BYTE* result, int decrypt_mode, int cipher_mode);

¦endif

ATACH.H.CPP

¦include <stdio.h> ¦include <stdlib.h> ¦include "Rijndael.h" ¦include "service.h"

¦define BPOLY (BYTE) Oxllb ¦define MPOLY (BYTE) 0x101

BYTE Co[4]={0x3,0xl,0xl,0x2};

BYTE InvCo[4]={0xB,0xD,0x9,0xE};

int N, Nk, Nb, Nr;

DWORD fkey[120];

DWORD ikey[120]; // inverse key

DWORD ekey[120]; // equivalent key

BYTE subbytes[256] ; BYTE invsubbytes[256] ;

BYTE shfts[3][4];

static char strTmp[260], Tmp[260]; static DWORD s[8];

void ResetShifts() {

for (int i=0; i<3; i++)

for (int j=0; j<4; j++)

if (i==2 && j==3) shfts[i][j]=4; else shfts[i][j]=j;

void shiftrow(BYTE* row, int n, int direct)

BYTE t; int j ;

if (n)

for (int i=0; i<n; i++) switch (direct)

case ENCRYPT:

t=row[0];

for (j=l; j<Nb; j++) row[j-l]=row[j] ; row [Nb-1 In¬break;

case DECRYPT:

t=row[Nb-l];

for (j = Nb-1; j>0; j--) row[j]=row[j-1] ,

row[0]=t;

break;

void ShifRows(BYTE* s, int direct)

BYTE temp[8]; int i, j;

for (i=0;i<4;i++)

for (j=0;j<Nb;j++) temp[j]=s[j*4+i];

shiftrow( temp, shfts[Nb/2-2][i], direct),

for (j=0;j<Nb;j++) s[j*4+i]=temp[j]; }

static DWORD pack(BYTE *b)

{

return ( (DWORD)b[3]"24) | ( (DWORD)b [2] "16) | ( (DWORD) b [1 ] "8) | (DWORD)b[0],

static void unpack(DWORD a,BYTE *b) {

b[0] = (BYTE)a;

b[l] = (BYTE) (a"8) ;

b[2] = (BYTE) (a"16) ;

b[3] = (BYTE) (a"24) ; }

static BYTE xtime(BYTE a, BYTE mod) {

return ( ( a & 0x80) ? a"lAmod

static BYTE add (BYTE a, BYTE b) {return алЬ;}

static BYTE bmul(BYTE a,BYTE b, BYTE mod) {

BYTE t,s, u;

u=b; t=a; s=0;

while (u) {

if(u & 1) эл=Ь;

u"=l ;

t=xtime(t, mod);

return (s); }

static BYTE square(BYTE a, BYTE mod) {

return (bmul(a,a, mod)); }

static BYTE product(DWORD x,DWORD y, BYTE mod) {

BYTE xb [ 4 ] , yb [ 4 ] ;

unpack(x,xb);

unpack(y,yb);

return bmul(xb[0],yb[0], mod)лЬти1(xb[1],yb[1], mod)лЬти1(xb[2],yb[2], mod)лЬти1(xb[3],yb[3], mod) ; }

static BYTE finv(const BYTE x, BYTE mod) {

BYTE result = x;

for (int i=l; i<7; i++) result = bmul(square(result , mod), x, mod);

return square(result, mod); }

BYTE SBinvModulo; BYTE SBmulModulo; BYTE SBmulConstl; BYTE SBmulConst2; BYTE SBaddConstl; BYTE SBaddConst2;

static BYTE ByteSubOLD(BYTE x) BYTE result=x;

result = finv( result , SBinvModulo);

result = bmul( SBmulConstl, result, SBmulModulo);

result = add( result, SBaddConstl);

return result; }

static BYTE InvByteSubOLD(BYTE x) BYTE result=x;

result = bmul( SBmulConst2, result, SBmulModulo); result = add(result, SBaddConst2); result = finv( result, SBinvModulo); return result;

void FillTables(int mode)

for (int i=0; i<256;

if (mode & 1) subbytes[i]= ByteSubOLD(i);

if (mode & 2) invsubbytes[i]= InvByteSubOLD(i)

void ResetTables()

Encrypt(dig, iv, block);

for (1 = k; (1 < (k + OFB_bits)) && (1 < (Nb"5) ) ; 1++) {

result[1 " 3] = (block[0] & 0x80U) " (1 & 7);

for (j = 0; j < (Nb"2)-1; j++) {

iv[j] = <iv[j] " 1) | (iv[j + 1] " 7);

block[j] = (block[j] " 1) | (block[j + 17);

1] " 1) | ((block[0] & 0x80U) " 7 );

} }

if (OFB_Debug) {

CharStr2HexStr((BYTE*)input, Tmp, Nb*4); sprintf(strTmp," in[%04u]=%s", i, Tmp); dlg->m_eDebug.AddString(strTmp);

CharStr2HexStr((BYTE*)result, Tmp, Nb*4); sprintf(strTmp,"out[%04u]=%s", i, Tmp); dlg->m_eDebug.AddString(strTmp); }

result += Nb"2;

input += Nb"2; }

free(iv); break;

case MODE_CTR:

iv = (BYTE*) malloc(Nb"2) ; memcpy(iv, cipher_IV, Nb"2);

for (i = 1; i <= numBlocks; i++) {

if (CTR_Debug) {

//CharStr2HexStr((BYTE*)s, Tmp, Nb*4);

sprintf(strTmp,"= CTR AES Nb=%u Nk=%u, block %04u encrypt ======================", Nb, Nk, i);

dlg->m_eDebug.AddString(strTmp);

CharStr2HexStr((BYTE*)iv, Tmp, Nb*4); sprintf(strTmp," IV[%04u]=%s", i, Tmp); dlg->m_eDebug.AddString(strTmp); }

Encrypt(dig, iv, result);

for (j=0; j < Nb; j++) ((DWORD*)result)[j] л= ((DWORD*)input)[j];

increase_counter ( iv, Nb"2);

if (CTR_Debug) {

CharStr2HexStr((BYTE*)input, Tmp, Nb*4);

sprintf(strTmp," in[%04u]=%s", i, Tmp);

dlg->m_eDebug.AddString(strTmp);

CharStr2HexStr((BYTE*)result, Tmp, Nb*4); sprintf(strTmp,"out[%04u]=%s", i, Tmp); dlg->m_eDebug.AddString(strTmp); }

input += Nb"2; result += Nb"2; }

free(iv); break; default:

return BAD_CIPHER_STATE; }

return 128*numBlocks;

Размещено на Allbest.ru


Подобные документы

  • Теоретические основы, адаптация и практическое применение методики интегральной атаки для использования против усеченного варианта блочного симметричного шифра Crypton. Основные требования к механизмам системы, обеспечивающим конфиденциальность.

    дипломная работа [642,7 K], добавлен 19.06.2011

  • Алгоритм ГОСТ 28147-89 симметричного шифрования на основе сети Фейстеля, основные режимы его работы. Атаки на системы защиты информации. Метод грубой силы. Атаки класса "встреча посередине". Характеристики ГОСТ 28147-89 и американского шифра Rijndael.

    курсовая работа [510,7 K], добавлен 17.01.2012

  • Описание и предназначение протокола DNS. Использование файла host. Особенности и описание способов атак на DNS: ложный DNS-сервер, простой DNS-флуд, фишинг, атака посредством отраженных DNS-запросов. Защита и противодействие атакам на протокол DNS.

    реферат [324,3 K], добавлен 15.12.2014

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

    курсовая работа [971,6 K], добавлен 30.01.2018

  • Исследование наиболее распространенных видов сетевых атак. Сетевая разведка. Характеристика способов защиты от сетевых атак с использованием специальных программ. Изучение преимуществ и недостатков сетевых экранов. Переполнение буфера. Вирусные программы.

    реферат [329,2 K], добавлен 23.12.2014

  • История криптографии и ее основные задачи. Основные понятия криптографии (конфиденциальность, целостность, аутентификация, цифровая подпись). Криптографические средства защиты (криптосистемы и принципы ее работы, распространение ключей, алгоритмы).

    курсовая работа [55,7 K], добавлен 08.03.2008

  • Исследование элементов эллиптических кривых, необходимых для реализации криптографических протоколов. Изучение алгоритмов арифметики точек эллиптической кривой и способов генерации кривых для криптографических алгоритмов. Описание алгоритмов шифрования.

    курсовая работа [371,2 K], добавлен 07.08.2012

  • Классификации атак на отказ, их характеристики: тип, направление, схема и способ. Отраженные распределенные атаки на отказ. Назначение и проведение непрямой компьютерной атаки, функции IRC-ботнетов. Виды прямых атак (HTTP Flood, SYN Flood и прочие).

    реферат [122,2 K], добавлен 22.01.2014

  • Принятые на конкурс алгоритмы: CAST-256 (Канада), CRYPTON (Южная Корея), DEAL (Норвегия, Канада), DFC или Decorrelated Fast Cipher (Франция). Основные этапы конкурса на Advanced Encryption Standard. Финалист и победитель конкурса, сравнение шифров.

    курсовая работа [439,9 K], добавлен 07.07.2012

  • Современные физические и законодательные методы защиты информации. Внедрение системы безопасности. Управление доступом. Основные направления использования криптографических методов. Использование шифрования, кодирования и иного преобразования информации.

    реферат [17,4 K], добавлен 16.05.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.