Интегральная атака против блочного симметричного шифра 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