Перелік умовних позначень, символів, одиниць, скорочень і термінів
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

КУРСОВА РОБОТА

СПЕЦІАЛЬНОСТІ 7.160105

"Захист інформації в комп’ютерних системах і мережах"

Тема: Програмна реалізація криптографічного алгоритму RC5

 

 

Київ 2010

 



Зміст

 

Перелік умовних позначень, символів, одиниць, скорочень і термінів

Вступ

1. Опис об'єкту, що потребує захисту: операційне середовище, тип програмного забезпечення, інші характеристики комп'ютерної системи

2. Аналіз існуючого стану захисту та теоретичне обґрунтування необхідності підвищення рівня безпеки

3. Аналіз типів можливих погроз інформаційної безпеці та визначення рівня можливостей порушника

4. Клас засобів КЗІ

5. Блок-схема алгоритму функціонування прикладної програми криптозахисту

6. Листінг тесту програми

7. Інструкція зі користування програмою

Висновки та рекомендації

Список використаної літератури

 



Перелік умовних позначень, символів, одиниць, скорочень і термінів

Advanced Encryption Standard - "Лучший" алгоритм шифрования;

Delphi 6.0 – середовище розробки програм, корпорації Borland;

DES – алгоритм шифрування;

FEAL – алгоритм шифрування;

Object Pascal – мова програмування в середовищі Delphi;

RC5 – алгоритм шифрування;

Rijndael – алгоритм шифрування;

КЗІ – комплекс захисту інформації;

СОД – система оброблення даних.

 



Вступ

 

В даній курсовій роботі розроблена програмна реалізація криптографічного алгоритму RC5. Написана програма-шифрувальник на підставі криптографічного алгоритму RC5.

Готове до передачі інформаційне повідомлення, спочатку відкрите і незахищене, зашифровується програмою-шифрувальником і тим самим перетвориться в шифрограму, тобто в закритий текст або графічне зображення документа. У такому вигляді повідомлення передається по каналу зв'язку, навіть і не захищеному. Санкціонований користувач після отримання повідомлення дешифрує його (тобто розкриває) за допомогою зворотного перетворення криптограми, унаслідок чого виходить початковий, відкритий вид повідомлення, доступний для сприйняття санкціонованим користувачам.

Методу перетворення в криптографічній системі відповідає використання спеціального алгоритму. Дія такого алгоритму запускається унікальним числом (послідовністю битий), зазвичай званим шифруючим ключем.

Для більшості систем схема генератора ключа може бути набором інструкцій і команд або вузол апаратури, або комп'ютерної програмою, або все це разом, але у будь-якому випадку процес шифрування (дешифрування) реалізується тільки цим спеціальним ключем. Щоб обмін зашифрованими даними минав успішно, як відправникові, так і одержувачеві, необхідно знати правильну ключову установку і зберігати її в таємниці.

Стійкість будь-якої системи закритого зв'язку визначається ступенем секретності використовуваного в ній ключа. Проте, цей ключ має бути відомий іншим користувачам мережі, щоб вони могли вільно обмінюватися зашифрованими повідомленнями. У цьому сенсі криптографічні системи також допомагають вирішити проблему аутентифікації (встановлення достовірності) прийнятої інформації. Зломщик у разі перехоплення повідомлення матиме справу тільки із зашифрованим текстом, а дійсний одержувач, приймаючи повідомлення, закриті відомим йому і відправникові ключем, буде надійно захищений від можливої дезінформації.

Програми-шифрувальники виконують тільки одну функцію - шифрування даних: файлів, каталогів і дисків по ключу, що вводиться користувачем. Застосовуються найрізноманітніші алгоритми шифрування: від криптографічний стійких DES і FEAL до тривіальних алгоритмів побітового складання з ключем. Прикладів таких програм достатні багато. До переваг програмних засобів захисту можна віднести їх невисоку вартість, простоту розробки. Недоліком таких систем є невисокий ступінь захищеності інформації. Для посилення захисту можна запропонувати використання декількох програмних засобів одночасно.

Наприклад, використовувати пароль при вході, систему розмежування доступу і режим прозорого шифрування. При цьому виникнуть певні незручності в роботі, але разом з тим зросте надійність.

 



Клас засобів КЗІ

 

Розглянутий комплекс захисту інформації можна віднести до комплексу не нижче 3 класу захищеності систем, що визначений шляхом співставлення:

Ø цілей безпеки з функціональних послуг безпеки НК;

Ø функцій сервісів безпеки об’єкту експертизи (ОЕ) з функціональними послугами безпеки НК.

Для співставлення з функціональним програмним забезпеченням функціонального профілю захищеності (ФПЗ) об’єкту експертизи (ОЕ) у якості базового профілю визначено стандартний ФПЗ 2.КЦД.2а, який згідно НД ТЗІ 2.5-008-2002 [12] встановлює мінімально необхідний перелік функціональних послуг безпеки та рівнів їх реалізації у комплексах засобів захисту інформації в системах класу безпеки 2 при обробці конфіденційної інформації під час застосування технології, що вимагає підвищених вимог до забезпечення конфіденційності, цілісності та доступності оброблюваної інформації.

 

Листінг тесту програми

unit RC5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TRC5Block = array[1..2] of LongWord;

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

StaticText1: TStaticText;

StaticText2: TStaticText;

Button1: TButton;

Button2: TButton;

Button3: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const

Rounds = 12;

BlockSize = 8;

BufferSize = 2048;

KeySize = 64;

KeyLength = 2 * (Rounds + 1);

P32 = $b7e15163;

Q32 = $9e3779b9;

var

Form1: TForm1;

Key : string;

KeyPtr : PChar;

S : array[0..KeyLength-1] of LongWord;

///////////////////////////////////////////////////////////////////////////////

Додаткові функції

procedure Initialize(AKey: string); // Інійіалізація

procedure CalculateSubKeys; // Підготовлення підключей

function EncipherBlock(var Block): Boolean; // Шифрування блока (8 байт)

function DecipherBlock(var Block): Boolean; // Дешифрування блока

///////////////////////////////////////////////////////////////////////////////

Головні функції

function EncryptCopy(DestStream, SourseStream : TStream; Count: Int64;

Key : string): Boolean; // Зашифрувати дані з одного потоку в іншій

function DecryptCopy(DestStream, SourseStream : TStream; Count: Int64;

Key : string): Boolean; // Розшифрувати дані з одного потоку в іншій

function EncryptStream(DataStream: TStream; Count: Int64;

Key: string): Boolean; // Зашифрувати вміст потоку

function DecryptStream(DataStream: TStream; Count: Int64;

Key: string): Boolean; // Розшифрувати вміст потоку

implementation

{$R *.dfm}

////////////////////////////////////////////////////////////////////////////////

function ROL(a, s: LongWord): LongWord;

asm

mov ecx, s

rol eax, cl

end;

////////////////////////////////////////////////////////////////////////////////

function ROR(a, s: LongWord): LongWord;

asm

mov ecx, s

ror eax, cl

end;

////////////////////////////////////////////////////////////////////////////////

procedure InvolveKey;

var

TempKey : string;

i, j : Integer;

K1, K2 : LongWord;

begin

// Розгортання ключа до довжини 64 символи

TempKey := Key;

i := 1;

while ((Length(TempKey) mod KeySize) <> 0) do

begin

TempKey := TempKey + TempKey[i];

Inc(i);

end;

// Зараз скоротіть ключ знизу до одного KeySize блоку об'єднуючи байти

i := 1;

j := 0;

while (i < Length(TempKey)) do

begin

Move((KeyPtr+j)^, K1, 4);

Move(TempKey[i], K2, 4);

K1 := ROL(K1, K2) xor K2;

Move(K1, (KeyPtr+j)^, 4);

j := (j + 4) mod KeySize;

Inc(i, 4);

end;

end;

////////////////////////////////////////////////////////////////////////////////

procedure Initialize(AKey: string);

begin

Key := AKey;

GetMem(KeyPtr, KeySize);

FillChar(KeyPtr^, KeySize, #0);

InvolveKey;

end;

////////////////////////////////////////////////////////////////////////////////

{$R-,Q-}

procedure CalculateSubKeys;

var

i, j, k : Integer;

L : array[0..15] of LongWord;

A, B : LongWord;

begin

// Copy the key into L

Move(KeyPtr^, L, KeySize);

// Зараз ініціалізуйте S

S[0] := P32;

for i := 1 to KeyLength-1 do

S[i] := S[i-1] + Q32;

// Зараз видирається таблиця S з ключем

i := 0;

j := 0;

A := 0;

B := 0;

for k := 1 to 3*KeyLength do

begin

A := ROL((S[i] + A + B), 3);

S[i] := A;

B := ROL((L[j] + A + B), (A + B));

L[j] := B;

i := (i + 1) mod KeyLength;

j := (j + 1) mod 16;

end;

end;

////////////////////////////////////////////////////////////////////////////////

function EncipherBlock(var Block): Boolean;

var

RC5Block : TRC5Block absolute Block;

i : Integer;

begin

Inc(RC5Block[1], S[0]);

Inc(RC5Block[2], S[1]);

for i := 1 to Rounds do

begin

RC5Block[1] := ROL((RC5Block[1] xor RC5Block[2]), RC5Block[2]) + S[2*i];

RC5Block[2] := ROL((RC5Block[2] xor RC5Block[1]), RC5Block[1]) + S[2*i+1];

end;

Result := TRUE;

end;

////////////////////////////////////////////////////////////////////////////////

function DecipherBlock(var Block): Boolean;

var

RC5Block : TRC5Block absolute Block;

i : Integer;

begin

for i := Rounds downto 1 do

begin

RC5Block[2] := ROR((RC5Block[2]-S[2*i+1]), RC5Block[1]) xor RC5Block[1];

RC5Block[1] := ROR((RC5Block[1]-S[2*i]), RC5Block[2]) xor RC5Block[2];

end;

Dec(RC5Block[2], S[1]);

Dec(RC5Block[1], S[0]);

Result := TRUE;

end;

////////////////////////////////////////////////////////////////////////////////

// Реалізація головних функції

function EncryptCopy(DestStream, SourseStream : TStream; Count: Int64;

Key : string): Boolean;

var

Buffer : TRC5Block;

PrCount : Int64;

AddCount : Byte;

begin

Result := True;

try

if Key = '' then

begin

DestStream.CopyFrom(SourseStream, Count);

Exit;

end;

Initialize(Key);

CalculateSubKeys;

PrCount := 0;

while Count - PrCount >= 8 do

begin

SourseStream.Read(Buffer, BlockSize);

EncipherBlock(Buffer);

DestStream.Write(Buffer, BlockSize);

Inc(PrCount, 8);

end;

AddCount := Count - PrCount;

if Count - PrCount <> 0 then

begin

SourseStream.Read(Buffer, AddCount);

DestStream.Write(Buffer, AddCount);

end;

except

Result := False;

end;

end;

////////////////////////////////////////////////////////////////////////////////

function DecryptCopy(DestStream, SourseStream : TStream; Count: Int64;

Key : string): Boolean;

var

Buffer : TRC5Block;

PrCount : Int64;

AddCount : Byte;

begin

Result := True;

try

if Key = '' then

begin

DestStream.CopyFrom(SourseStream, Count);

Exit;

end;

Initialize(Key);

CalculateSubKeys;

PrCount := 0;

while Count - PrCount >= 8 do

begin

SourseStream.Read(Buffer, BlockSize);

DecipherBlock(Buffer);

DestStream.Write(Buffer, BlockSize);

Inc(PrCount, 8);

end;

AddCount := Count - PrCount;

if Count - PrCount <> 0 then

begin

SourseStream.Read(Buffer, AddCount);

DestStream.Write(Buffer, AddCount);

end;

except

Result := False;

end;

end;

////////////////////////////////////////////////////////////////////////////////

function EncryptStream(DataStream: TStream; Count: Int64; Key: string): Boolean;

var

Buffer : TRC5Block;

PrCount : Int64;

begin

Result := True;

try

if Key = '' then

begin

DataStream.Seek(Count, soFromCurrent);

Exit;

end;

Initialize(Key);

CalculateSubKeys;

PrCount := 0;

while Count - PrCount >= 8 do

begin

DataStream.Read(Buffer, BlockSize);

EncipherBlock(Buffer);

DataStream.Seek(-BlockSize, soFromCurrent);

DataStream.Write(Buffer, BlockSize);

Inc(PrCount, 8);

end;

except

Result := False;

end;

end;

////////////////////////////////////////////////////////////////////////////////

function DecryptStream(DataStream: TStream; Count: Int64; Key: string): Boolean;

var

Buffer : TRC5Block;

PrCount : Int64;

begin

Result := True;

try

if Key = '' then

begin

DataStream.Seek(Count, soFromCurrent);

Exit;

end;

Initialize(Key);

CalculateSubKeys;

PrCount := 0;

while Count - PrCount >= 8 do

begin

DataStream.Read(Buffer, BlockSize);

DecipherBlock(Buffer);

DataStream.Seek(-BlockSize, soFromCurrent);

DataStream.Write(Buffer, BlockSize);

Inc(PrCount, 8);

end;

except

Result := False;

end;

end;

// Завершення головних функції ...

////////////////////////////////////////////////////////////////////////////////

{$R+,Q+}

procedure TForm1.Button1Click(Sender: TObject);

var

SourseStream : TFileStream;

begin

SourseStream := TFileStream.Create(Edit1.Text, fmOpenReadWrite);

EncryptStream(SourseStream, SourseStream.Size, Edit2.Text);

SourseStream.Free;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

SourseStream : TFileStream;

begin

SourseStream := TFileStream.Create(Edit1.Text, fmOpenReadWrite);

DecryptStream(SourseStream, SourseStream.Size, Edit2.Text);

SourseStream.Free;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Close

end;

end.

 

Висновки та рекомендації

 

В даній курсовій роботі була розроблена програмна реалізація криптографічного алгоритму RC5. Була написана програма-шифрувальник на підставі криптографічного алгоритму RC5 у середовищі Delphi.

Але завжди Проблеми забезпечення збереження значно ускладнюються при організації машинної обробки інформації в умовах колективного користування, де зосереджена, обробляється і накопичується інформація різного призначення і приналежності.

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

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

У системах колективного користування, що мають розвинену мережу терміналів, основна складність забезпечення безпеки полягає в тому, що потенційний порушник є (може бути) повноправним абонентом системи.

Тому під терміном "захист" мається на увазі спосіб забезпечення безпеки в СОД. Захист інформації зазвичай зводиться до вибирання засобів контролю за виконанням програм, що мають доступ до інформації (файлів), що зберігається в системі обробки даних (СОД).

 



КУРСОВА РОБОТА

СПЕЦІАЛЬНОСТІ 7.160105

"Захист інформації в комп’ютерних системах і мережах"

Тема: Програмна реалізація криптографічного алгоритму RC5

 

 

Київ 2010

 



Зміст

 

Перелік умовних позначень, символів, одиниць, скорочень і термінів

Вступ

1. Опис об'єкту, що потребує захисту: операційне середовище, тип програмного забезпечення, інші характеристики комп'ютерної системи

2. Аналіз існуючого стану захисту та теоретичне обґрунтування необхідності підвищення рівня безпеки

3. Аналіз типів можливих погроз інформаційної безпеці та визначення рівня можливостей порушника

4. Клас засобів КЗІ

5. Блок-схема алгоритму функціонування прикладної програми криптозахисту

6. Листінг тесту програми

7. Інструкція зі користування програмою

Висновки та рекомендації

Список використаної літератури

 



Перелік умовних позначень, символів, одиниць, скорочень і термінів

Advanced Encryption Standard - "Лучший" алгоритм шифрования;

Delphi 6.0 – середовище розробки програм, корпорації Borland;

DES – алгоритм шифрування;

FEAL – алгоритм шифрування;

Object Pascal – мова програмування в середовищі Delphi;

RC5 – алгоритм шифрування;

Rijndael – алгоритм шифрування;

КЗІ – комплекс захисту інформації;

СОД – система оброблення даних.

 



Вступ

 

В даній курсовій роботі розроблена програмна реалізація криптографічного алгоритму RC5. Написана програма-шифрувальник на підставі криптографічного алгоритму RC5.

Готове до передачі інформаційне повідомлення, спочатку відкрите і незахищене, зашифровується програмою-шифрувальником і тим самим перетвориться в шифрограму, тобто в закритий текст або графічне зображення документа. У такому вигляді повідомлення передається по каналу зв'язку, навіть і не захищеному. Санкціонований користувач після отримання повідомлення дешифрує його (тобто розкриває) за допомогою зворотного перетворення криптограми, унаслідок чого виходить початковий, відкритий вид повідомлення, доступний для сприйняття санкціонованим користувачам.

Методу перетворення в криптографічній системі відповідає використання спеціального алгоритму. Дія такого алгоритму запускається унікальним числом (послідовністю битий), зазвичай званим шифруючим ключем.

Для більшості систем схема генератора ключа може бути набором інструкцій і команд або вузол апаратури, або комп'ютерної програмою, або все це разом, але у будь-якому випадку процес шифрування (дешифрування) реалізується тільки цим спеціальним ключем. Щоб обмін зашифрованими даними минав успішно, як відправникові, так і одержувачеві, необхідно знати правильну ключову установку і зберігати її в таємниці.

Стійкість будь-якої системи закритого зв'язку визначається ступенем секретності використовуваного в ній ключа. Проте, цей ключ має бути відомий іншим користувачам мережі, щоб вони могли вільно обмінюватися зашифрованими повідомленнями. У цьому сенсі криптографічні системи також допомагають вирішити проблему аутентифікації (встановлення достовірності) прийнятої інформації. Зломщик у разі перехоплення повідомлення матиме справу тільки із зашифрованим текстом, а дійсний одержувач, приймаючи повідомлення, закриті відомим йому і відправникові ключем, буде надійно захищений від можливої дезінформації.

Програми-шифрувальники виконують тільки одну функцію - шифрування даних: файлів, каталогів і дисків по ключу, що вводиться користувачем. Застосовуються найрізноманітніші алгоритми шифрування: від криптографічний стійких DES і FEAL до тривіальних алгоритмів побітового складання з ключем. Прикладів таких програм достатні багато. До переваг програмних засобів захисту можна віднести їх невисоку вартість, простоту розробки. Недоліком таких систем є невисокий ступінь захищеності інформації. Для посилення захисту можна запропонувати використання декількох програмних засобів одночасно.

Наприклад, використовувати пароль при вході, систему розмежування доступу і режим прозорого шифрування. При цьому виникнуть певні незручності в роботі, але разом з тим зросте надійність.

 



Дата: 2019-07-24, просмотров: 189.