- •История развития информатики
- •Информатика как единство науки и технологии
- •Информатика и кибернетика, общее и отличия
- •Сообщение, канал связи, источник информации, приемник информации
- •Непрерывная и дискретная информация. Носитель, сигнал, параметр сигнала
- •Единицы количества информации, вероятностный и объемный подход
- •Формула Хартли, вывод формулы Хартли
- •Кубит. Квантовые вычисления. Квантовый компьютер
- •Системы счисления. Позиционные и непозиционные системы счисления
- •Двоичная система счисления. Значение в вычислительной технике. Преобразование чисел с разными основаниями
- •Буква. Абстрактный алфавит. Код. Кодирование и декодирование
- •Источник. Кодировщик. Сообщение. Помехи. Декодеровщик. Приемник.
- •Понятие о теоремах шенона. Первая теорема шенона. Вторая теорема шенона.
- •Алгебра логики. Таблица истинности основных логических операций (и или не ине илине)
- •Нечеткая логика
- •17. Причины вирусной опасности. Рост числа опасностей в сфере информационных
- •Поколения эвм.
- •19. Понятие архитектуры. Принципы относящиеся к понятию архитектуры.
- •20. Основные положения архитектуры Фон-Неймана.
- •21. Причины появления материнской платы. Шинная архитектура.
- •22. Шины, центральный микропроцессор, монитор, системный блок, модем, флеш-диск, аудиокарта, сетевая карта.
- •23. Работа микропроцессора с переферийными устройствами.
- •24. Приведите основные показатели современных микропроцессоров.
- •25. Технологии simd.
- •26. Характеристики гнезд центрального процессора.
- •27. Характеристики оперативной памяти.
- •28. Характеристики материнских плат.
- •29. Характеристики видеокарт.
- •30. Промышленные интерфейсы. Isa. Pci. Pci-e 3.0. Lpt. FireWire.
- •31. Интерфейс usb 1.1, usb 2.0, usb 3.0, usb wireless.
- •32. Интерфейсы ata, sata, eSata, scsi.
- •33. Оптические диски: cd, dvd, Bluy-ray.
- •34. Корпус системного блока. Блок питания. Atx. Характеристики atx.
- •35. Жесткий диск. Характеристики жестких дисков.
- •36. Технологии записи жестких дисков. Метод параллельной записи. Метод перпендикулярной записи.
- •37. Консоль. Интерфейсы подключения монитора. Типы мониторов: элт, tft, oled.
- •38. Оптические вычисления. Информационные технологии в автомобилестроении. Технологии «Умный дом», «Умный город».
- •39. Клавиатура. Мышь. Принтер (матричный, струйный, сублимационный, барабанный, лепестковый, термический). Графопостроитель.
- •40. Сканер (планшетный, ручной, листопротяжный, планетарный, барабанный, штрих- кода). Характеристики сканеров. Web-камера.
- •41. Электронная одежда. Бытовая робототехника.
- •42. История появления операционных систем. Ос xenix, unix, freebsd, dos,
- •43. В каких случаях нужны операционные системы (ос). Из каких компонентов состоят ос. Что обеспечивает ос.
- •44. Понятие ресурса. Многозадачность. Многопользовательские ос. Суть режима
- •45. Операционные системы для мобильных устройств.
- •46. Процесс. Состояния процесса. Связь между состояниями процесса. Прерывания.
- •47. Bios. Bios setup. System Boot. Драйверы устройств. Базовый модуль. Утилиты.
- •48. Технология Plug and Play. Три составляющие технологии Plug and Play.
- •49. Офисные пакеты.
- •50. База данных (бд). Характеристики бд.
- •51. Функции субд.
- •52. Файловая система. Что обеспечивает файловая система. Поддержка файловой системы ос.
- •53. .Html. Примеры.
- •54. Элементы файловой системы. Права доступа в ос Linux.
- •55. Конфигурационная информация в Linux.
- •56. Конфигурационная информация в Windows. Конфигурационные файлы. Реестр. Ветви
- •57. Консольные команды posix ос для работы с файловой системой.
- •58. Прикладное программное обеспечение.
- •59. Традиционная модель osi. Упрощенная модель osi.
- •61. Математический пакет Maxima.
- •62. Среда LabView. Назначение, возможности. Понятие виртуального прибора.
- •63. Растровая графика. Информация запоминаемая в файлах с растровой графикой.
- •64. Векторная графика. Информация запоминаемая в файлах с векторной графикой.
- •65. Фрактальная графика. Индексированные цвета в растровой графике.
- •66. Форматы графических данных.
- •67. Формирование цвета в компьютерной графике. Три закона Грассмана.
- •68. Цветовые модели компьютерной графики.
- •69. Программы для работы с компьютерной графикой.
- •70. Программное обеспечение обработки текстовых данных (редактор VI).
- •71. Граф. Вершины графа. Концевые, внутренние вершины. Ориентированный неориентированный граф. Петли. Маршрут. Дерево. Лес.
- •72. Понятие алгоритма. Понятие исполнителя алгоритма. Ски. Формальное выполнение.
- •73. Свойства алгоритма. Дискретность. Детерминированность. Результативность. Массовость.
- •74. Понятие блок-схемы. Следование. Условный переход. Цикл с постусловием. Цикл с предусловием.
- •75. Терминальные команды в Linux.
- •76. Компьютерные вирусы. Основные виды вирусов.
- •77. Методы защиты от компьютерных вирусов. Профилактика заражения. Действия в случае заражения.
- •78. Контрольные суммы. Md5. Алгоритм md5.
- •79. Архивирование. Форматы Zip, Rar, 7-Zip, lzma.
- •80. Архивирование. Форматы lz77, lz78. Принцип скользящего окна. Механизм кодирования совпадений.
- •81. Криптография.
- •82. Ssh. Клиент, сервер ssh.
- •83. Ssl. Открытый ключ pki.
- •84. Гост 28147-89. Des. Тройной des. Aes. Преимущества и недостатки.
- •85. Перспективы развития информационных технологий.
78. Контрольные суммы. Md5. Алгоритм md5.
Контро́льная су́мма — некоторое значение, рассчитанное по набору данных путём применения определённого алгоритма и используемое для проверки целостности данных при их передаче или хранении. Так же контрольные суммы могут использоваться для быстрого сравнения двух наборов данных на неэквивалентность: с большой вероятностью различные наборы данных будут иметь неравные контрольные суммы. Это может быть использовано, например, для детектирования компьютерных вирусов. Несмотря на своё название, контрольная сумма не обязательно вычисляется путем суммирования.
MD5 и другие криптографические хеш-функции используются, например, для подтверждения целостности и подлинности передаваемых данных.
Сам алгоритм состоит из 5 шагов.
Шаг 1. Добавление битов.
Исходное сообщение дополняется до длины 512k+448, где k – любое натуральное число. Длина сообщения измеряется в битах. Для этого в конец сообщения (бит под номером N) добавляется бит, равный 1. Вслед за ним биты под номерами N+1, N+2, … заполняются нулями до тех пор, пока длина сообщения не достигнет необходимого. Таким образом, число добавляемых битов – от 1 до 512.
Шаг 2. Добавление длины сообщения.
Считаем длину исходного сообщения в двоичном представлении. Например, если длина составляла 1926 бит, то нам необходимо перевести 1926 в двоичную систему счисления: 11110000110. Полученную длину необходимо представить в 64-битном формате. То есть заполняем старшие биты нулями.
Полученное 64-битовое значение добавляется в конец результата шага 1 как два слова.
После этого размер сообщения станет кратен 512, и оно будет содержать целое количество блоков по 16 слов. Обозначим как M[0..L-1] слова полученного в результате сообщения. L кратно 16.
Шаг 3. Инициализация буфера.
Вводим 4 регистра для хранения промежуточных вычислений: A, B, C, D. Инициализируем их (16ричное представление, сначала идёт младший байт):
A: 01 23 45 67
B: 89 AB CD EF
C: FE DC BA 98
D: 76 54 32 10
Шаг 4. Обработка сообщения блоками по 16 слов.
Определим четыре дополнительных функции. На вход каждой из них подаётся 3 слова, на выходе получаем 1 слово.
F (X,Y,Z) = XY v not (X)Z
G(X,Y,Z) = XZ v not(Z)Y
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
Определим массив T[1..64], где T[i]=int(2^32*|sin(i)|). Здесь i задано в радианах.
Приступим к обработке исходного сообщения. Как мы помним, его длина кратна 512 и содержит целое количество блоков L по 16 слов: M[0..L-1].
В цикле проходим по массиву M, и каждое слово M[i] (блок) проходит 4 раунда из 16 операторов.
Предварительно сохраним значения, хранимые в регистрах A, B, C, D:
AA=A
BB=B
CC=C
DD=D
Теперь прогоним текущий блок по следующим раундам.
Раунд 1:
/*[abcd k s i] a = b + ((a + F(b,c,d) + M[k] + T[i]) <<< s). */
[ABCD 0 7 1][DABC 1 12 2][CDAB 2 17 3][BCDA 3 22 4]
[ABCD 4 7 5][DABC 5 12 6][CDAB 6 17 7][BCDA 7 22 8]
[ABCD 8 7 9][DABC 9 12 10][CDAB 10 17 11][BCDA 11 22 12]
[ABCD 12 7 13][DABC 13 12 14][CDAB 14 17 15][BCDA 15 22 16]
Раунд 2:
/*[abcd k s i] a = b + ((a + G(b,c,d) + M[k] + T[i]) <<< s). */
[ABCD 1 5 17][DABC 6 9 18][CDAB 11 14 19][BCDA 0 20 20]
[ABCD 5 5 21][DABC 10 9 22][CDAB 15 14 23][BCDA 4 20 24]
[ABCD 9 5 25][DABC 14 9 26][CDAB 3 14 27][BCDA 8 20 28]
[ABCD 13 5 29][DABC 2 9 30][CDAB 7 14 31][BCDA 12 20 32]
Раунд 3:
/*[abcd k s i] a = b + ((a + H(b,c,d) + M[k] + T[i]) <<< s). */
[ABCD 5 4 33][DABC 8 11 34][CDAB 11 16 35][BCDA 14 23 36]
[ABCD 1 4 37][DABC 4 11 38][CDAB 7 16 39][BCDA 10 23 40]
[ABCD 13 4 41][DABC 0 11 42][CDAB 3 16 43][BCDA 6 23 44]
[ABCD 9 4 45][DABC 12 11 46][CDAB 15 16 47][BCDA 2 23 48]
Раунд 4:
/*[abcd k s i] a = b + ((a + I(b,c,d) + M[k] + T[i]) <<< s). */
[ABCD 0 6 49][DABC 7 10 50][CDAB 14 15 51][BCDA 5 21 52]
[ABCD 12 6 53][DABC 3 10 54][CDAB 10 15 55][BCDA 1 21 56]
[ABCD 8 6 57][DABC 15 10 58][CDAB 6 15 59][BCDA 13 21 60]
[ABCD 4 6 61][DABC 11 10 62][CDAB 2 15 63][BCDA 9 21 64]
После прохода блока через раунды регистры суммируются с результатом работы предыдущего цикла:
A=A+AA
B=B+BB
C=C+CC
D=D+DD
Все числа в каждом раунде выбраны для увеличения криптостойкости алгоритма.
Шаг 5. Вывод хеша.
Последовательно выводим регистры A, B, C, D. То есть начинаем вывод с младшего байта A и заканчиваем старшим байтом D. Выведенное значение – хеш MD5
В следующей статье мы рассмотрим криптостойкость алгоритма MD5 и проанализируем возможные способы для его взлома.