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

Требования, предъявляемые к криптографической защите информации. Шифры простой замены: полибианский квадрат, система Цезаря, таблицы Трисемуса, биграммный шифр Плейфейра. Использование комбинации шифров простой и сложной замены для телефонной сети.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 16.08.2010
Размер файла 709,7 K

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

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

Рис. 9. Банк роторов

При повороте ротора из одного положения в другое подстановка, которую он осуществляет в приходящем сигнале, будет изменяться. В общем случае эту подстановку можно записать в виде

T = C j p C -j, (4.9)

где p - подстановка, реализуемая ротором в его начальном положении;

С - циклический сдвиг на одну позицию;

C j - циклический сдвиг на j позиций.

Например, если начальная подстановка ротора p(А) = G и ротор сдвигается на три позиции (j = 3) (рис.10), то открытый текст D будет против того контакта ротора, который используется

Рис. 10. Схема формирования подстановки при сдвиге ротора (j =3)

для представления открытого текста А, а шифрованный текст J окажется против того контакта ротора, который используется для представления шифрованного текста G , и результирующая подстановка Т(D) = G при j = 3. Алгебраически это записывается в виде

Т (D) = С3-3 (D) = С3 p (А) = С3 (G) = J. (4.10)

Роторы можно объединить в банк роторов таким образом, чтобы выходные контакты одного ротора касались входных контактов следующего ротора. При этом электрический импульс от нажатой клавиши с буквой исходного текста, входящий с одного конца банка роторов, будет переставляться каждым из роторов, до тех пор, пока не покинет банк (рис. 9).

Математически работу банка роторов можно описать в виде

(4.11)

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

Роторная машина состоит из банка роторов и механизма для изменения положения роторов с каждым зашифрованным знаком, объединенного с устройствами ввода и вывода, такими как устройство считывания с перфоленты и печатающее устройство.

Простейшее из возможных движений ротора - это движение по принципу одометра; оно использовалось в немецкой машине Enigma во время второй мировой войны. При шифровании одного знака правое крайнее колесо поворачивается на одну позицию. Когда это (и любое другое) колесо переместится на m позиций и совершит полный оборот, колесо, расположенное слева от него, передвинется на одну позицию, и процесс будет повторяться. Этот процесс проведет банк роторов сквозь все его возможные положения, прежде чем цикл повторится. Поскольку все роторы перемещаются с разными скоростями, период n-роторной машины составляет 26n (при m = 26).

Для закона движения ротора желательны следующие характеристики:

* период должен быть большим;

* после шифрования каждого знака все роторы или большая их часть должны повернуться друг относительно друга.

Движение по принципу одометра оптимально в смысле первого требования, но совершенно неудовлетворительно в отношении второго требования. Улучшение движения по принципу одометра можно получить, если поворачивать каждый ротор более чем на одну позицию. Если смещения каждого ротора не имеют общих множителей с объемом алфавита m, то период останется максимальным.

Другое решение заключается в ограничении числа допустимых остановочных мест для каждого ротора за счет введения внешнего фиксирующего кольца, на котором определенным способом зафиксированы места остановок. При использовании латинского алфавита можно заставить машины поворачиваться и останавливаться следующим образом. Первому колесу разрешается останавливаться в каждой из 26 позиций, второму колесу - только в 25 позициях, третьему колесу - только в 23 позициях, и так далее до шестого колеса, которому разрешается останавливаться только в 17 позициях. Период такой роторной машины теперь составляет 101 млн, а не 266»309 млн, как в случае движения по принципу одометра. Потеря в длине периода с успехом окупается полученной сложностью движения роторов. Теперь второе требование удовлетворяется довольно хорошо, поскольку каждое из колес перемещается после шифрования каждого знака и многие колеса могут двигаться друг относительно друга.

Роторная машина может быть настроена по ключу изменением любых ее переменных:

*роторов;

*порядка расположения роторов;

*числа мест остановки на колесо;

*характера движения и т.д.

Поскольку перекоммутировать роторы трудно, то обычно на практике машины обеспечивали комплектом роторов, в котором находилось больше роторов, чем можно одновременно поместить в машину. Первичная настройка по ключу производилась выбором роторов, составляющих комплект. Вторичная настройка по ключу производилась выбором порядка расположения роторов в машине и установкой параметров, управляющих движением машины. С целью затруднения расшифрования шифртекстов противником роторы ежедневно переставляли местами или заменяли. Большая часть ключа определяла начальные положения роторов (2б3=17576 возможных установок) и конкретные перестановки на коммутационной доске, с помощью которой осуществлялась начальная перестановка исходного текста до его шифрования (26!= 4·1026 возможностей).

Роторные машины были самыми важными криптографическими устройствами во время второй мировой войны и доминировали по крайней мере до конца 50-х годов.

4.Расчетная часть

В настоящее время проблема конфиденциальности телефонных переговоров приобретает особое значение в связи с необходимостью защиты бизнес-интересов и личной свободы граждан. Современные методы обеспечения конфиденциальности связи для телефонных сетей общего пользования реализуется на основе различных криптографических алгоритмов. Наиболее криптостойкими алгоритмами являются DES, IDEA, ГОСТ 28147-89 и ряд других, которых не так уж и много. Некоторые из этих алгоритмов как, например, ГОСТ 28147-89 и DES закреплены стандартами своих стран - Россией и США соответственно.

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

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

Алгоритм представляет собой сбалансированную сеть Файстеля с начальной и конечной битовыми перестановками, конечная перестановка является обращением начальной. Схема преобразования данных при зашифровании блока изображена на рисунке 11, схема соответствующего алгоритма - на рисунке 12.

Рис. 11. Цикл шифрования DES - схема преобразования данных.

Рис. 12. Цикл шифрования DES - схема алгоритма.

Зашифрование 64-битового блока данных T (входной параметр алгоритма, рис.2, шаг 0) начинается с начальной перестановки битов в нем (IP, шаг 1). Затем шифруемый блок разделяется на две 32-битовые части (шаг 2) (Эта процедура необходима для обратимости сети Файстеля, то есть для шифрования и дешифрования потребуется один и тот же алгоритм), с которыми выполняются 16 раундов преобразования в соответствии с архитектурными принципами сети Файстеля. Через Hin(X) и Lon(X) обозначены функции, возвращающие в качестве результата соответственно n старших или младших битов своего аргумента. На каждом раунде старшая половина блока модифицируется путем побитового прибавления к ней по модулю 2 (операция "") результата вычисления функции шифрования (f), зависящей от младшей половины блока (Li-1) и 48-битового ключевого элемента (ki). Между раундами старшая и младшая половины блока меняются местами. Таким образом, на каждом раунде кроме последнего младшая половина блока становится старшей, а модифицированная с помощью функции шифрования старшая - младшей половиной блока (шаг 3). На последнем раунде происходит то же самое за исключением обмена значениями половин блока. Затем полублоки объединяются в полный блок (шаг 4), в котором выполняется конечная битовая перестановка (IP-1, шаг 5), обратная начальной. Результат последней операции и является выходным значением цикла шифрования - зашифрованным блоком T' (шаг 6). Шестнадцать 48-битовых ключевых элементов ki, 1i16, используемых в цикле шифрования, являются параметрами алгоритма и вырабатываются из 56-битового ключа в ходе рассмотренной ниже процедуры генерации ключевой последовательности. Процедура расшифрования блока данных идентична процедуре зашифрования с тем отличием, что ключевые элементы в ней используются в порядке, обратном порядку их использования при зашифровании. Таким образом, если при зашифровании ключевые элементы используются в "естественном" порядке возрастания номеров

k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16,

то при расшифровании они должны использоваться в обратном порядке:

k16, k15, k14, k13, k12, k11, k10, k9, k8, k7, k6, k5, k4, k3, k2, k1.

Начальная и обратная ей конечная битовые перестановки алгоритма DES задаются в приведенных ниже таблицах. Каждая ячейка таблицы соответствует определенному биту блока данных, номер которого указан в ней мелкими цифрами более бледным по сравнению с основным текстом цветом. Каждая таблица приведена в двух вариантах, соответствующих двум используемым способам нумерации битов в блоках. В левой части приводится вариант нумерации битов, принятый в оригинале стандарта - начиная с единицы от старших битов к младшим. Учитывая распространенность архитектуры Intel x86, в правой части таблицы приводится принятый для нее вариант нумерации, - начиная с нуля от младших битов к старшим. При описании перестановки в ячейках указывается номер бита исходного блока, который при перестановке помещается на место бита, соответствующего ячейке. Например, согласно таблице начальной перестановки на место самого старшего бита результата (N1 в левой таблице и N63 в правой) помещается бит N58 (N6 в правой таблице) исходного блока, на место бита N2(N62) бит N50(N14), и т.д..

Начальная битовая перестановка (IP).

158

250

342

434

526

618

710

82

старший байт

636

6214

6122

6030

5938

5846

5754

5662

960

1052

1144

1236

1328

1420

1512

164

 

554

5412

5320

5228

5136

5044

4952

4860

1762

1854

1946

2038

2130

2222

2314

246

 

472

4610

4518

4426

4334

4242

4150

4058

2564

2656

2748

2840

2932

3024

3116

328

 

390

388

3716

3624

3532

3440

3348

3256

3357

3449

3541

3633

3725

3817

399

401

 

317

3015

2923

2831

2739

2647

2555

2463

4159

4251

4343

4435

4527

4619

4711

483

 

235

2213

2121

2029

1937

1845

1753

1661

4961

5053

5145

5237

5329

5421

5513

565

 

153

1411

1319

1227

1135

1043

951

859

5763

5855

5947

6039

6131

6223

6315

647

младший байт

71

69

517

425

333

241

149

057

Нумерация битов в оригинале DES

 

Нумерация битов в Intel x86

Конечная битовая перестановка (IP-1).

140

28

348

416

556

624

764

832

старший байт

6324

6256

6116

6048

598

5840

570

5632

939

107

1147

1215

1355

1423

1563

1631

 

5525

5457

5317

5249

519

5041

491

4833

1738

186

1946

2014

2154

2222

2362

2430

 

4726

4658

4518

4450

4310

4242

412

4034

2537

265

2745

2813

2953

3021

3161

3229

 

3927

3859

3719

3651

3511

3443

333

3235

3336

344

3544

3612

3752

3820

3960

4028

 

3128

3060

2920

2852

2712

2644

254

2436

4135

423

4343

4411

4551

4619

4759

4827

 

2329

2261

2121

2053

1913

1845

175

1637

4934

502

5142

5210

5350

5418

5558

5626

 

1530

1462

1322

1254

1114

1046

96

838

5733

581

5941

609

6149

6217

6357

6425

младший байт

731

663

523

455

315

247

17

039

Нумерация битов в оригинале DES

 

Нумерация битов в Intel x86

В алгоритме DES используется сравнительно простая функция шифрования. Соответствующая схема преобразования данных приведена на рисунке 13, а схема алгоритма - на рисунке 14.

Рис. 13. Функция шифрования - схема преобразования данных.

Рис. 14. Функция шифрования - схема алгоритма.

На вход функции шифрования поступает 32-битовая половина шифруемого блока X, и 48-битовый ключевой элемент k (рис. 4, шаг 0). Сначала 32-битовый блок данных расширяется до 48 битов дублированием некоторых двоичных разрядов согласно приведенной ниже таблице (E, шаг1). Затем полученный расширенный блок побитово суммируется по модулю 2 с ключевым элементом (операция "", шаг 2). Полученный в результате суммирования 48-битовый блок данных разделяется на восемь 6-битовых элементов данных, обозначенных h1,h2,…,h8 соответственно, причем h1 содержит шесть самых старших битов 48-битового блока, h2 - шесть следующих по старшинству битов и т.д., наконец, h8 - шесть самых младших битов блока. Далее каждое из значений hi преобразуется в новое 4-битовое значение ti с помощью соответствующего узла замен (Si, шаг 3). После этого полученные восемь 4-битовых элементов данных вновь объединяются в 32-битовый блок T' в том же самом порядке их старшинства (шаг 4). Наконец, в полученном 32-битовом блоке выполняется перестановка битов (P, шаг 5), заданная в приведенной ниже таблице. Результат последней операции и является выходным значением функции шифрования.

Расширение 32-битового блока до 48 бит (E).

132

21

32

43

54

65

h1

470

4631

4530

4429

4328

4227

74

85

96

107

118

129

h2

4128

4027

3926

3825

3724

3623

138

149

1510

1611

1712

1813

h3

3524

3423

3322

3221

3120

3019

1912

2013

2114

2215

2316

2417

h4

2920

2819

2718

2617

2516

2415

2516

2617

2718

2819

2920

3021

h5

2316

2215

2114

2013

1912

1811

3120

3221

3322

3423

3524

3625

h6

1712

1611

1510

149

138

127

3724

3825

3926

4027

4128

4229

h7

118

107

96

85

74

63

4328

4429

4530

4631

4732

481

h8

54

43

32

21

10

031

Нумерация битов в оригинале DES

 

Нумерация битов в Intel x86

Данная схема расширения просто дублирует пары битов (32-1, 4-5, 8-9,…,28-29) и может быть представлена следующим выражением:

xi = Lo6(4i+1(X)),

где Lon(X) определено выше, а n(X) обозначает функцию, возвращающую в качестве результата свой аргумент X, циклически сдвинутый на n битов влево (в сторону старших разрядов).

Замена в битовых группах(Si).

Замена 6-битовых блоков на 4-битовые выполняется следующим образом: каждый узел замен представляется таблицей (матрицей) размера 416, содержащей 4-битовые элементы, все элементы в каждой из строк - различные. Заменяемое 6-битовое значение разделяется на две части: из старшего и младшего битов блока составляется двухбитовое целое, принимающее значение от 0 до 3, оно используется в качестве номера строки, средние четыре бита интерпретируются как целое число в диапазоне 0..15, они задают номер столбца. Из найденной таким образом ячейки таблицы выбирается 4-битовый элемент, который и является результатом операции замены. Узлы замен алгоритма определяются таблицами (приложение 1), в которых 4-битовые заменяющие коды для краткости приведены в десятичной системе.

Указанный способ представления процедуры подстановки раскрывает некоторые достаточно тонкие свойства узлов замен, однако для программной реализации операция может быть описана более просто: каждый узел замены представляется в виде линейного массива (вектора) из 64 4-битовых элементов: Si = (si,0,si,1,si,2,…,si,63), |si,j| = 4, si,j{0,1,2,…,15}.

Замена состоит в простой выборке элемента массива по его индексу, в качестве которого выступает заменяемый 6-битовый элемент данных, интерпретируемый как целое от 0 до 63: Si(x) = si,x.

В этом случае нет необходимости проводить дополнительные манипуляции с битами, конструируя номер строки и номер столбца узла замены. Узлы замен алгоритма, представленные в форме, удобной для программной реализации, определяются таблицами (приложение 1).

Выходная битовая перестановка функции шифрования (P).

116

27

320

421

529

612

728

817

старший байт

3116

3025

2912

2811

273

2620

254

2415

91

1015

1123

1226

135

1418

1531

1610

 

2331

2217

219

206

1927

1814

171

1622

172

188

1924

2014

2132

2227

233

249

 

1530

1424

138

1218

110

105

929

823

2519

2613

2730

286

2922

3011

314

3225

младший байт

713

619

52

426

310

221

128

07

Нумерация битов в оригинале DES

 

Нумерация битов в Intel x86

В алгоритме DES ключевые элементы вырабатываются из ключа с использованием сдвигов и битовых выборок-перестановок. Таким образом, - и это очень важно, - ключевые элементы состоят исключительно из битов исходного ключа, "перетасованных" в различном порядке. Ключ имеет размер 64 бита, однако реально для выработки ключевых элементов используются только 56 из них. Самые младшие биты каждого байта ключа (NN8,16,…,64 или NN0,8,…,56 в x86) не попадают в ключевые элементы и служат исключительно для контроля четности - требуется, чтобы сумма битов каждого байта ключа была нечетной. Функциональная схема выработки ключевых элементов из ключа изображена на рисунке 15, а схема соответствующего алгоритма - на рисунке 16.

Рис. 15. Функциональная схема выработки ключевых элементов DES.

Рис. 16. Схема алгоритма выработки ключевых элементов.

Выработка ключевых элементов из ключа (K, рис 6, шаг 0) начинается со входной выборки-перестановки битов (PC1, шаг 1) которая отбирает 56 из 64 битов ключа и располагает их в другом порядке. Далее полученный блок данных разделяется на две 28-битовые части: старшую (С0) и младшую (D0, шаг 2). Далее 16 раз выполняется следующая процедура: в зависимости от номера итерации обе части циклически сдвигаются на 1 или 2 бита влево (шаг 3), из полученных блоков с помощью выходной битовой выборки-перестановки (PC2, шаг 4) отбираются 48 битов, которые и формируют очередной ключевой элемент.

Ниже приведены основные "примитивы" схемы выработки ключевых элементов:

Входная битовая выборка-перестановка (PC1).

C0

 

C0

157

249

341

433

525

617

79

старший байт

557

5415

5323

5231

5139

5047

4955

81

958

1050

1142

1234

1326

1418

 

4863

476

4614

4522

4430

4338

4246

1510

162

1759

1851

1943

2035

2127

 

4154

4062

395

3813

3721

3629

3537

2219

2311

243

2560

2652

2744

2836

 

3445

3353

3261

314

3012

2920

2828

D0

 

D0

2963

3055

3147

3239

3331

3423

3515

 

271

269

2517

2425

2333

2241

2149

367

3762

3854

3946

4038

4130

4222

 

2057

192

1810

1718

1626

1534

1442

4314

446

4561

4653

4745

4837

4829

 

1350

1258

113

1011

919

827

735

5021

5113

525

5328

5420

5512

564

младший байт

643

551

459

336

244

152

060

Нумерация битов в оригинале DES

 

Нумерация битов в Intel x86

Количество сдвигов на шагах выработки ключевых элементов ().

i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

pi

1

1

2

2

2

2

2

2

1

2

2

2

2

2

2

1

Выходная битовая выборка-перестановка (PC2).

114

217

311

424

51

65

x1

4742

4639

4545

4432

4355

4251

73

828

915

106

1121

1210

x2

4153

4028

3941

3850

3735

3646

1323

1419

1512

164

1726

188

x3

3533

3437

3344

3252

3130

3048

1916

207

2127

2220

2313

242

x4

2940

2849

2729

2636

2543

2454

2541

2652

2731

2837

2947

3055

x5

2315

224

2125

2019

199

181

3130

3240

3351

3445

3533

3648

x6

1726

1616

155

1411

1323

128

3744

3849

3939

4056

4134

4253

x7

1112

107

917

80

722

63

4346

4442

4550

4636

4729

4832

x8

510

414

36

220

127

024

Нумерация битов в оригинале DES

 

Нумерация битов в Intel x86

Заключение

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

В ходе проделанной работы был рассмотрен алгоритм DES, предназначенный для абонентов телефонной сети общего пользования. Алгоритм представляет собой сбалансированную сеть Файстеля с начальной и конечной битовыми перестановками, конечная перестановка является обращением начальной.

Для шифрования цифровых данных алгоритм DES в программно-аппаратной реализации очень сложен, но благодаря 16-кратному использованию этапов шифрования была достигнута необходимая криптостойкость.

Список использованных источников

1. Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке С/ Брюс Шнайер, - Триумф, 2002. - 432 с.

2. Романец Ю.В., Тимофеев П. А., Шаньгин В.Ф. Защита информации в компьютерных системах и сетях, - М.: Радио и связь, 1999.

3. Рябко Б. Я., Фионов А. Н. Криптографические методы защиты информации : Учебное пособие для вузов. - М : Горячая линия- Телеком, 2005.

4. Барычев С. Г., Гончаров В. В., Серов Р. Е. Основы современной криптографии: Учебный курс.- 2-е изд.,М.: Горячая линия- Телеком, 2002.

5. В. Г. Кулаков, М. В. Гаранин, А. В.Заряев, О. Н. Новокшанов, А. Н. Обухов, С. В. Скыль :Информационная безопастность телекоммуникационных систем. (Технические аспекты) : Учеб, пособие для вузов-М: Радио и связь, 2004.

6. Хоффман Л.Дж. Современные методы защиты информации - М.: Радио и связь, 1980.

7. Введение в криптографию Под общей ред. Ященко В.В. - М.: МЦНМО,«ЧеРо», 1998.

8. www.enlight.ru/crypto


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

  • Понятие шифров сложной замены. Шифры сложной замены называют многоалфавитными. Данная подстановка последовательно и циклически меняет используемые алфавиты. Понятие схемы шифрования Вижинера. Стойкость шифрования методом гаммирования и свойство гаммы.

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

  • Простейшие шифры и их свойства. Криптостойкость шифра как его основной показатель эффективности. Шифратор Ч. Уитстона. Размер ключа перестановки. Алгоритм сложной замены – шифр Гронсфельда. Ассиметричная криптографическая система с открытым ключом.

    курсовая работа [512,3 K], добавлен 18.01.2013

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

    лабораторная работа [1,1 M], добавлен 26.08.2009

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

    курсовая работа [556,8 K], добавлен 14.01.2013

  • Принцип работы и программная реализация однозвучного, одноалфавитного и полиграммного шифра. Шифрование по методу подстановки, замены и кодового слова. Безопасность шифровки простой замены. Частотные характеристики текстовых сообщений и дешифрация.

    контрольная работа [1,1 M], добавлен 02.02.2012

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

    курсовая работа [2,8 M], добавлен 14.01.2014

  • Основные методы криптографической защиты информации. Система шифрования Цезаря числовым ключом. Алгоритмы двойных перестановок и магические квадраты. Схема шифрования Эль Гамаля. Метод одиночной перестановки по ключу. Криптосистема шифрования данных RSA.

    лабораторная работа [24,3 K], добавлен 20.02.2014

  • Схема работы и требования к программам шифрования и дешифрования. Алгоритмы и тексты программы шифрования и программы дешифрования, выполненные на языке программирования C/C++. Содержание файла с исходным текстом, с шифротекстом, с дешифрованным текстом.

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

  • Ознакомление с различными способами шифрования информации. Рассмотрение кодов Цезаря, Гронсфельда, Тритемиуса, азбуки Морзе, цифровые, табличные и шифров перестановки. Книжный, компьютерный коды и шифр Масонов. Изучение алгоритма сложных протоколов.

    реферат [1,8 M], добавлен 14.05.2014

  • Изучение понятия и основных задач стеганографии - науки, изучающей способы и методы сокрытия информации. Характеристика метода замены наименее значащих битов для bmp файлов. Реализация метода замены НЗБ для bmp файлов на языке программирования Java.

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

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