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



Скачать 157.39 Kb.
Дата25.07.2014
Размер157.39 Kb.
ТипЗадача
Оглавление

Введение...............................................................................................................3

Глава 1. Существующие методы решения задачи............................................4

1.1 Обзор существующих стеганографических алгоритмов.......................4

Глава 2. Реализация методов решения задачи..................................................7

2.1. Разделение секрета...................................................................................7 2.2. Восстановление секрета..........................................................................8

2.2.1 Алгоритм Гаусса................................................................................8

2.3. Встраивание стегосообщения в изображение........................................9

2.4. Извлечение стегосообщения из изображения......................................10

Глава 3. Демонстрация работы программы....................................................11

3.1. Запись стегосообщения.........................................................................11

3.2. Чтение стегосообщения........................................................................12

3.3 Просмотр младших битов изображения...............................................14

Заключение........................................................................................................17

Список использованной литературы...............................................................18

Введение


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

Постановка задачи

Создать программное обеспечение, которое:


  1. использует китайскую теорему об остатках для создания пороговой схемы разделения секрета;

  2. встраивает стегасообщение в изображение таким образом, чтобы максимально снизить вероятность обнаружения факта встроенной информации;

  3. сохраняет способность восстановления сообщения при повреждении изображения.


Глава 1. Существующие методы решения задачи



    1. Обзор существующих стеганографических алгоритмов

В настоящее время различаются два основных направления методов компьютерной стеганографии:

  1. методы, основанные на использовании специальных свойств компьютерных форматов;

  2. методы, основанные на избыточности визуальной информации.[7]

      1. Методы, основанные на использовании специальных свойств компьютерных форматов.

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

      1. Методы, основанные на избыточности визуальной информации.

Младшие разряды бит мультимедийных файлов малоинформативны и внесение в них изменений практически не сказывается на качестве передаваемого изображения или звука. Это дает возможность использования их для кодирования конфиденциальной информации. Но при введении дополнительной информации искажаются статистические характеристики передаваемого файла. Поэтому для повышения устойчивости к обнаружению применяют методы коррекции статистических характеристик. Преимуществами данных методов является возможность скрытой передачи большого объема информации. Ниже приведены некоторые методы этого направления.

  1. Встраивание в наименьшие значащие биты(Least Significant Bit).

Цифровые изображения представляют собой матрицу пикселов. Младший значащий бит изображения несет в себе меньше всего информации. Известно, что человек обычно не способен заметить изменение в этом бите. Фактически, он является шумом. Поэтому его можно использовать для встраивания информации. Достоинства рассматриваемого метода заключаются в его простоте и сравнительно большом объеме встраиваемых данных [4].

  1. Алгоритм Куттера.

Пусть изображение имеет RGB-кодировку. Встраивание выполняется в канал синего цвета, так как к синему цвету система человеческого зрения наименее чувствительна. Пусть — встраиваемый бит, — контейнер, — псевдослучайная позиция, в которой выполняется вложение. Секретный бит встраивается в канал синего цвета путем модификации яркости : ,

где — константа, определяющая энергию встраиваемого сигнала. Ее величина зависит от предназначения схемы. Чем больше , тем выше робастность вложения, но тем сильнее его заметность. Максимальное отклонение синей цветовой составляющей при условии неизменности двух других цветов составляет 9–26%. Цветовая компонента каждого пиксела описывается одним байтом. Изменение происходит по маске , то есть модификации подлежат 4, 5 или 6 биты. Отклонение интенсивности цвета в данном случае не превышает 6,3%, а общее изменение яркости пиксела не превышает 1% [5].



  1. Алгоритм Лангелаара.

Алгоритм работает с блоками . Вначале создается псевдослучайная маска нулей и единиц такого же размера . Далее каждый блок делится на два субблока и , в зависимости от значения маски. Для каждого субблока вычисляется среднее значение яркости, и . Далее выбирается некоторый порог , и бит ЦВЗ встраивается следующим образом:

.

Если это условие не выполняется, мы изменяем значение яркости пикселов субблока . Для извлечения бита ЦВЗ вычисляются средние значения яркости субблоков — и . Разница между ними позволяет определить искомый бит:



[5].

  1. Алгоритм Питаса.

ЦВЗ представляет собой двумерный массив бит размером с изображение, причем число единиц в нем равно числу нулей. Существует несколько версий алгоритма, предложенного Питасом. Вначале предлагалось встраивать бит ЦВЗ в каждый пиксел изображения, но позже было решено использовать для этой цели блоки размером или пиксела, что делает алгоритм более робастным к сжатию или фильтрации. ЦВЗ складывается с изображением: . В случае использования для внедрения блоков детектор ЦВЗ вычисляет среднее значение яркости этого блока. Отсюда появляется возможность неравномерного внедрения ЦВЗ в пикселы, то есть величина. Таким образом можно получить ЦВЗ, оптимизированный по критерию робастности к процедуре сжатия алгоритмом JPEG. Для этого в блоке элементов заранее вычисляют «емкость» каждого пиксела (с учетом ДКП и матрицы квантования JPEG). Затем ЦВЗ внедряют в соответствии с вычисленной емкостью. Эта оптимизация производится раз и навсегда, и найденная маска применяется для любого изображения [5].

  1. Алгоритм Ронгена.

Также, как и в предыдущем алгоритме, ЦВЗ представляет собой двумерную матрицу единиц и нулей с примерно равным их количеством. Пикселы, в которые можно внедрять единицы (то есть робастные к искажениям), определяются на основе некоторой характеристической функции (характеристические пикселы). Эта функция вычисляется локально, на основе анализа соседних пикселов. Характеристические пикселы составляют примерно от общего числа, так что не все единицы ЦВЗ встраиваются именно в эти позиции. Для повышения количества характеристических пикселов в случае необходимости предлагается осуществлять небольшое предыскажение изображения. Детектор находит значения характеристических пикселов и сравнивает с имеющимся у него ЦВЗ. Если в изображении ЦВЗ не содержится, то в характеристических пикселах количество единиц и нулей будет примерно поровну [5].

Глава 2. Реализация методов решения задачи

2.1 Разделение секрета

В криптографии под разделением секрета понимают любой метод распределения секрета среди группы участников, каждому из которых достается доля секрета [3].

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

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

Разделение секрета реализовано в классе ThresholdScheme.ChinessTheorem.Sharing. Конструктор класса получает на вход стегосообщение, число теней и значение порога. Функции getDividerMassive и getReminderMassive возвращают массивы делителей и остатков соответственно. Стегосообщение и элементы массивов являются экземплярами класса java.math.BigInteger.

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

2.2 Восстановление секрета

Восстановление секрета реализовано в классе ThresholdScheme.ChinessTheorem.Joining. В функцию класса getSecret передается массив делителей, массив остатков, количество доступных частей и используемый алгоритм. Элементы массивов являются экземплярами класса java.math.BigInteger. В функциях GetSecretAlgorithmGauss и GetSecretAlgorithmGarner реализовано восстановление секрета по методу Гаусса и по методу Гарнера соответственно. Функция getSecret возвращает вычисленный секрет. По умолчанию восстановление секрета производится с помощью алгоритма Гарнера. На маленьких числах скорость восстановления различается незначительно, но при увеличении чисел алгоритм Гарнера работает быстрее.

2.2.1 Алгоритм Гаусса

Алгоритм основан на формуле данной в китайской теореме об остатках. ,

где

На входе алгоритм получает массив взаимно простых чисел и массив целых чисел . На выходе – число . Первым шагом алгоритма вычисляется число . Вторая часть алгоритма вычисляет секрет. На каждой итерации алгоритма вычисляется коэффициент и пересчитывается значение . Рассмотрим одну итерацию алгоритма. Определяем и для него ищем обратное по модулю число . Стоит отметить, что и взаимно простые, поэтому находится расширенным алгоритмом Евклида. И затем пересчитывается по формуле , где . После всех итераций в находится искомый секрет [6].


2.2.2 Алгоритм Гарнера.

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

Обозначим через число, являющееся обратным для по модулю : .

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







Подставляя в третье уравнение, аналогичным образом получаем:









Уже достаточно ясно видна закономерность. Итак, мы научились вычислять коэффициенты за время , сам же ответ — число — можно восстановить по формуле: .

2.3 Встраивание стегосообщения в изображение

Программа работает с изображениями в формате BMP и PNG.

Для обеспечения независимости алгоритма встраивания от формата изображения, создан абстрактный класс image.Image. Его наследники image.BMPImage и image.PNGImage переопределяют методы получения основной информации об изображении и метод получения частей изображения, в которые происходит встраивание.

Пользователем задается количество частей, на которое разбивается секрет, на такое же количество частей логически разделяется изображение. Логическая часть изображения является экземпляром класса image.chunks.ViewChunk — это абстрактный класс, наследниками являются классы image.chunks.PngViewChunk и image.chunks.BmpViewChunk. Контейнером для каждой доли секрета являются части изображения хранящиеся в списке, по каждой из которых осуществляет проход итератор, реализованный в классе image.chunks.ViewChunkIterator. Встраивание осуществляется в один младший значащий бит.

Непосредственно запись в изображение осуществляется в классе ImageStego.Embedding. В конструктор класса передается экземпляр класса image.Image. В функцию writeSharesToImage() передается объект Shares. Создается список экземпляров класса image.chunks.ViewChunk и в каждую часть изображения в цикле записывается соответствующая доля. Информация, необходимая для восстановления секрета, экспортируются в файл. Для случая встраивания в PNG предусмотрена возможность сохранения дополнительной информации в метаданных этого файла. Информация представлена в виде «ключ»-«значение». При извлечении идет анализ метаданных на содержание параметров встраивания.

Для того чтобы стегосообщение было равномерно распределено по контейнеру используется линейный конгруэнтный метод. Этот метод позволяет генерировать последовательность псевдослучайных чисел. Преимуществом этого метода перед рядом других методов, таких как метод Блюма-Блюма-Шуба(BBS) или метод Фибоначчи с запаздываниями, является то, что он осуществляет генерирование псевдослучайной последовательности на заданном интервале. Алгоритм заключается в итеративном использовании следующей формулы:, где – некоторые целочисленные константы. Для реализации этого метода константы в программе определяются следующим образом: , равно количеству байт в RGB массиве, (чтобы и имели одинаковые делители) и константа находится с помощью расширенного алгоритма Евклида, как взаимно простое к . При таком выборе констант генерируется различных чисел [1]. Этот генератор реализован в функции nextLCNumber в классе image.chunks.ViewChunkIterator.




    1. Извлечение стегосообщения из изображения

Извлечение сообщения реализовано в классе imageStego.Extraction. Функция getSharesFromImage() принимает на вход значение порога, ширину и высоту логической части изображения. Алгоритм извлечения начинается с поиска маски в контейнере. Если маска найдена, то создается логическая часть с известными шириной и высотой части и сравнивается значение хеш-функции с сохраненными значениями. Если совпадает, то часть добавляется в список логических частей. Если нет, то последовательность бит совпала с маской и часть не содержит кода. Переход к следующей найденной маске. Пройдя таким образом все изображение, мы получим список частей, содержащих доли секрета. Получив число долей не меньшее, чем значение порога в пороговой схеме, созданной при встраивании стегасообщения, можно восстановить с помощью алгоритма Гаусса или алгоритма Гарнера, представленных выше. Если маска не найдена, или частей меньше чем порог, то алгоритм заканчивает работу. Код восстановить невозможно и выбрасывается исключение.

Для вычисления хеша используется алгоритм криптографического хеширования SHA-1.

Глава 3. Стегоанализ.

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

3.1 Обзор.

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

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

Общий недостаток статистических методов стегоанализа состоит в том, что построение математической модели «естественного изображения», является сложной задачей.

Известны методы стегоанализа, направленные против конкретных стегоалгоритмов или работающие для конкретных форматов данных. Например, методы стегоанализа изображений, в которых производится внедрение в наименьший значащий бит, исследуют распределение этих бит.[8]
3.2 Визуальная атака.

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


3.3 Описание атаки на основе анализа статистики Хи-квадрат.

3.3 Результаты атаки.

3.4 Вывод.
Глава 4. Демонстрация работы программы


    1. Запись стегосообщения

Для записи секретного сообщения, необходимо открыть изображение в котором пользователь хочет скрыть свое сообщение. При этом изображение появится в главном окне программы. Выбрать пункт меню Code → WriteMessage..., в открывшемся диалоге от пользователя требуется ввести сообщение, количество теней, значение порога и количество младших бит, которые будут использоваться для модификации (см. рис. 1). При успешной записи пользователь извещается о том, что секретное сообщение успешно встроено в контейнер (см. рис. 2).

Для того чтобы сохранить картинку со встроенным стегосообщением пользователь должен выбрать пункт меню File → Save Image.... В открывшемся окне необходимо ввести имя сохраняемого изображения.

Рис. 1. Запись секретного сообщения в изображение.

Рис. 2. Извещение об успешном встраивании стегосообщения


3.2 Чтение стегосообщения

Чтение стегосообщения возможно как после открытия изображения со встроенным стегосообщением, так и сразу же после записи этого секретного сообщения. Чтобы получить секретное сообщение нужно выбрать пункт меню Code → Read Code..., в открывшемся диалоге пользователь должен задать значение порога и число младших бит которые были модифицированы при записи стегосообщения (см. рис. 3). Если выбранное значение порога будет меньше значения, заданного пользователем при записи стегосообщения, или введено другое количество бит, откуда будет извлекаться стегосообщение, то получить верное секретное сообщение не удастся (см. рис. 4). Если все данные введены корректны, то в открывшемся окне будет искомое секретное сообщение (см. рис. 5).

Рис. 3. Чтение стегосообщение из контейнера.
Рис. 4. Извлеченный секрет с неправильно заданными параметрами.

Рис. 5. Извлеченное секретное сообщение.


3.3 Просмотр младших битов изображения

В программе реализована возможность просмотра младших бит изображения, с помощью сдвига бит картинки от 0 до 7 бит. Если контейнером является цветное изображение, то по нижним битам сложно визуально определить, есть ли там код (см. рис. 6).

Сделаем изображение состоящее только полос красного, зеленого и синего цвета. И будем встраивать секретное сообщение с одинаковыми параметрами(количество теней – 100, порог – 50, число модифицируемых младших бит – 4), но в байты разных цветовых каналов. При сдвиге бит в полученных изображениях со стегосообщениями наглядно наблюдается, что при встраивании в канал синего цвета стегосообщение обнаружить сложнее. При встраивании в канал красного цвета стегосообщение обнаруживается уже при сдвиге на 1 бит (см. рис. 6), так же и при встраивании в канал зеленого цвета (см. рис. 7), а если выбрать канал синего цвета для встраивания, то стегосообщение становится заметным лишь при сдвиге на 3 бита (см. рис. 8).

Р
ис. 6. Сдвиг на 1 бит изображения со встроенным стегосообщением в канал красного цвета.

Р
ис. 7. Сдвиг на 1 бит изображения со встроенным стегосообщением в канал зеленого цвета.

Р
ис. 8. Сдвиг на 2 бит изображения со встроенным стегосообщением в канал синего цвета.

Заключение

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

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

Список использованной литературы.



  1. Кнут Д. Э. Искусство программирования. Том 2. Получисленные алгоритмы / Кнут Д. : Вильямс, 2007, 832 с.

  2. Коутинхо С. Введение в теорию чисел. Алгоритм RSA / Куляшева С.А., Ландо С.К.: Постмаркет, 2001. С. 197–203.

  3. Шнайер Б. Прикладная криптография. Протоколы, алгоритмы. Исходные тексты на языке Си / Шнайер Б. : Триумф, 2002, 816 с.

  4. Встраивание сообщений в незначащие элементы контейнера. URL: http://crypts.ru/novosti/1-2-vstraivanie-soobshhenij-v-neznachashhie-elementy-kontejnera.html (дата обращения: 02.06.10).

  5. Грибунин В. Г. Цифровая стаганография / Грибунин В. Г., Оков И. Н., Туринцев И. В.: Солон-Пресс, 2002, 272 с.

  6. Алгоритм Гаусса – китайская теорема об остатках. URL: http://www.cyberguru.ru/cpp-sources/algorithms/kitajskaya-teorema-ob-ostatkakh-page2.html (дата обращения: 14.05.09).

  7. КОМПЬЮТЕРНАЯ СТЕГАНОГРАФИЯ ВЧЕРА, СЕГОДНЯ, ЗАВТРА, Барсуков В.С., Романцов А.П., 2000 http://st.ess.ru/publications/articles/steganos/steganos.htm

  8. Журнал "Information Security/ Информационная безопасность" #5, 2006

http://www.itsec.ru/articles2/Oborandteh/stegoanaliz_kak_poisk


Похожие:

Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день iconЗащита от несанкционированного доступа к информации термины и определения
Настоящий документ устанавливает термины и определения понятий в области защиты средств вычислительной техники и автоматизированных...
Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день iconСмирнова Инна Тайная история креста Все о древнем мистическом символе человечества
Истории креста, древнего мистического знака, простого и таинственного одновременно, посвящена уникальная книга И. Смирновой. Здесь...
Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день iconПерспективы развития аппаратных средств защиты от несанкционированного доступа к информации
Таким образом, это привело к осознанию необхо­димости использования в системах защиты информации от нсд аппаратных средств со встроенными...
Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день icon«Не наш» Кавказ
На протяжении многовековой истории, за реализацию своих национальных интересов Россия, как ни одно государство в мире, платила и...
Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день iconКриптографические методы защиты информации от несанкционированного доступа
Нсд, подделки и модификации приобретает особую актуальность и значимость, а изучение современных методов противодействия указанным...
Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день iconСборник руководящих документов по защите информации от несанкционированного доступа. Гостехкомиссия России, 1998 г
Защита информации в контрольно-кассовых машинах и автоматизированных кассовых системах
Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день iconОсновные направления реализации стохастической информационной технологии
Существующие технологии защиты информации от нсд базируются на использование существующих стандартов и методов шифрования и имеют...
Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день iconОткрытая конференция ап кит
На первом этапе мы проанализировали, какие вопросы волнуют больше всего, что мы хотим видеть в дальнейшем в решении. Задача разбилась...
Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день iconНа сегодняшний день нанотехнология и производство наноматериалов становится одним из основных направлений научного и технологического развития во всем мире
Поэтому переход от "микро" к "нано" это уже не количественный, а качественный переход скачок от манипуляции веществом к манипуляции...
Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день icon1. Информация и управление. Назначение и функции обратной связи
Решение задачи, встающей перед человеком в любом виде его деятельности, также процесс преобразования исходной информации в информацию,...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org