VD Net

27 сентября 2011, 04:50

MySQL.com взломан и продан за 3000$

Взломан сайт MySQL.com! Кроме получения доступа к сайту хакеры выложили на него заражённый скрипт, который без ведома пользователя и в большинстве случаев независимо от ОС устанавливает на компьютер посетителя сайта вредоносное ПО.

Кроме того, было найдена информация о том, что на одном русском хакерском форуме продаётся доступ к сайту минимум за 3000 долларов.

Поэтому категорически не советуется посещать заражённый сайт! Подробнее обо всём по ссылке.
27 июля 2011, 09:43

Записки начинающего криптолога. Часть вторая.

!!! Сообщение со старого блога !!!

Здравствуй дорогой друг! Прошло достаточно продолжительное время с момента публикации первой части статьи о AES, и настало время написать собственно о самом процессе шифрование. Итак, давайте начнем.
Все шифрование, по сути, сводится к работе над блоками данных размером ровно в 16 байт, по 1 байту на символ. Это легко представить в виде матрицы размером 4x4 (рисунок 1).

Рисунок 1 – Единичный блок данных.
Для большой наглядности будем представлять числа в блоке в шестнадцатеричном виде. Над таким вот блоком и определены 4 преобразования, о которых будет рассказано ниже.
1) Сложение с раундовым ключом (AddRoundKey)
2) Замена байтов (SubBytes)
3) Сдвиг строк (ShiftRows)
4) Перемешивание столбцов (MixColumns)
1) Сложение с раундовым ключом (AddRoundKey)
Самая простая операция над блоком, которая заключается в сложении по модулю 2 (XOR) обрабатываемого блока с Раундовым ключом, об алгоритме выработки которого будет рассказано в следующей статье. Операция сложения определена аналогично операции сложения матриц. Пример сложения представлен на рисунке 2.

Рисунок 2 – Операция сложения блока с раундовым ключом.
2) Замена байтов (SubBytes)
Данное преобразование представляет собой замену всех 16 значений блока данных значениями из константной таблицы, сформированной по определенному правилу. Будем называть данную таблицу замен S-Блок, принцип формирования которой я оставляю за рамками данной статьи. Заинтересованный читатель может найти данную информацию в книге-источнике, название которой в финале цикла статей. Сама константная таблица представлена на рисунке 3:

Рисунок 3 – S-блок.
Принцип замены значений из этой таблицы довольно прост, чем то он мне напомнил таблицу умножения.

  • Из блока данных поочередно берутся значения ячеек
  • Числовое значение в каждой ячейке блока можно представить как пару XY, где Y –значение первого разряда числа, X- значение второго разряда числа.
  • В S-блоке мы ищем число, стоящее на пересечении  X строки и Y колонки
  • Найденное число ставиться на место числа XY
Допустим, в ячейке хранится число 19. В таблице S-блока ищем число, стоящее на пересечении 1ой строки и 9ого столбцы. Таким числом оказывается d4.Заменяем число 19 в блоке данных на d4 и так со всеми числами блока. Пример преобразования блока на рисунке 4:

Рисунок 4 – Преобразование SubBytes.
3)   Сдвиг строк (ShiftRows)
Данная трансформация представляет собой операцию циклического сдвига строк блока на определенное количество позиций влево. Операция циклического сдвига продемонстрирована на рисунке 5.

Рисунок 5 – Преобразование ShiftRows.
И на десерт осталась самая сложная трансформация. В матричном виде трансформацию можно представить следующим образом:

  • Исходный блок данных запишем в виде матрицы 
  • Будим работать со столбцами матрицы 
  • Введем операцию умножения в поле Галуа
  • Преобразование можно описать следующей формулой:

Данное умножение можно расписать в виде:

Здесь  - операция сложения по модулю 2 (XOR), а  - операция умножения  в  конечном поле (поле Галуа GF(28)), о которой будет рассказано ниже.
Значение в каждой ячейке блока можно рассматривать как 1 байт. Следовательно, этот байт можно мыслить как многочлен седьмой степени:

Умножая данный многочлен на x получим:

Приводя полученный многочлен по модулю  (Запись  обозначает, что присутствует «лишний» девятый бит). Для этого при  достаточно вычесть (применить операцию поразрядного XOR)  из полученного выше многочлена. Если же , то результат уже получается приведенным. В итоге умножение на x (т.е. {00000010} в двоичной или {02} в шестнадцатеричной форме) получается сдвигом влево и возможно последующим применением XOR c .
Для любого ненулевого многочлена  также справедливо .
Уравнение можно переписать в виде:

Ниже на рисунке 6 показано как отработает MixColumns:

Рисунок 6 – Преобразование MixColumns.
Так, с трансформациями вроде разобрались :). Теперь будем разбираться с Т-Таблицами.
Все преобразования, выполняемые за один раунд шифрования, могут быть объединены в несколько обращений к вычисляемым таблицам замены (Т-таблицам), что позволяет добиться значительной эффективности при программной реализации алгоритма.
Если обозначить через матрицу  выходные данные, получающиеся на выходе одного раунда преобразования (иначе говоря, одной итерации цикла преобразований) блока открытого текста, тогда имеем следующие соотношения для AddRoundKey() и
MixColumns(), записанные в матричной форме:

где  – результат преобразования MixColumns(),  - результат преобразования ShiftRows().
Для преобразований ShiftRows() и SubBytes() записать следующее отношение:

где  – результат преобразования SubBytes(), 
Подставляя последовательно промежуточные результаты в формулу выходных данных, получим:

Данное выражение может быть переписано в следующем виде:


где  – подстановка соответствующих байт, получаемых из таблицы замен S-Блока.
Таким образом, мы можем определить четыре Т-таблицы подстановки:


Путем использования этих таблиц один раунд процедуры зашифрования может быть выражен следующим образом:

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

Criptos(входной блок)
{
    AddRoundKey(входной блок,0);
    for(short i=1;i<10;i++)
    {
        Ttables(входной блок,i);
    }
    SubBytes(входной блок);
    ShiftRows(входной блок);
    AddRoundKey(входной блок,10);
}
Исходный файл в простейшем случае разбивается на блоки, и каждый его блок шифруется данным алгоритмом независимо. Последний блок файла, в случае если его длина не равна 16, дополняется нулями.
9 июня 2011, 09:56

Записки начинающего криптолога. Часть первая.

!!! Сообщение со старого блога !!!

VladDev: Сегодня знаменательный день в истории моего блога. Сегодня впервые здесь появится гостевая статья! Надеюсь, что данная практика не завершится одной этой записью, а будет продолжаться и продолжаться. Как я уже говорил в разделе «О сайте», вы можете присылать мне свои статьи, если хотите, чтобы они появились в моём блоге. А теперь сама статья!
Mozg90: Дорогой друг, сегодня я решил начать публиковать на данном блоге цикл статей под общим названием «Записки начинающего криптолога». Данный цикл, по моему скромному мнению, будет интересен широкому кругу читателей заинтересованных в безопасности своих личных данных.
Бумажные носители информации теряют свою лидирующую роль, все переходит в цифровые форматы, объем хранимых файлов также растет. В противоположность этому современные люди начинают проявлять все меньшую заботу о своих личных файлах. Появление облачных сервисов хранения данных все больше этому способствует. Если задуматься, а кто собственно нам гарантирует, что наши данные там никто не просматривает и не проверяет на наличие пиратских файлов? Я не читал никакие пользовательские соглашения, но разумно полагать, что данные проверки происходят по договорам с компаниями-дистрибьюторами лицензионного контента. Согласитесь, неприятно бы было получить потом счет на пару сотен тысяч рублей. Но мы же с вами законопослушные граждане и нас вроде как не должны интересовать подобные проверки, но сам факт того, что файлы могут быть очень легко просмотрены внушает опасения.
Нельзя забывать также забывать о все большем, нарастающем интересе государства к личным данным пользователей. Между прочим, такое право гарантировано нам Конституцией РФ. Приведу статью 23 из нее:

Статья 23
1. Каждый имеет право на неприкосновенность частной жизни, личную и семейную тайну, защиту своей чести и доброго имени.
2. Каждый имеет право на тайну переписки, телефонных переговоров, почтовых, телеграфных и иных сообщений. Ограничение этого права допускается только на основании судебного решения.
Наша жизнь все больше напоминает суровое будущее фантастических фильмов. «Большой брат» следит за тобой, и это уже не шутки. Пришло время серьезно задуматься о своей безопасности! Конечно, тягаться с государством, обладающим практически безграничными ресурсами, было бы безрассудно. Но от произвола отдельных личностей защититься вполне по силам. И в этом нам поможет криптография, а в частности симметричные блочные шифры. Используя их для шифрования своих личных файлов, мы можем сильно усложнить или вовсе сделать неосуществимой задачу их просмотра.
В качестве такого блочного шифра я решил взять удобный в реализации, хорошо изученный и быстрый Rijndael, также известный в наше время как AES (Advanced Encryption Standard). Национальный институт стандартов и технологий опубликовал спецификацию AES 26 ноября 2001 года после пятилетнего периода, в ходе которого были созданы и оценены 15 кандидатур. 26 мая 2002 года AES был объявлен стандартом шифрования. По состоянию на 2009 год AES является одним из самых распространённых алгоритмов симметричного шифрования. Поддержка AES (и только его) введена фирмой Intel в семейство процессоров x86 начиная с Intel Core i7-980X Extreme Edition, а затем на процессорах Sandy Bridge.
Казалось бы, существует большое количество статей о данном алгоритме, о принципах его работы, реализации на различных языках программирования. Также существует официальный стандарт FIPS 197, в котором все подробно написано. Да, это действительно так, и быстрый поиск по интернету даст нам огромное количество ссылок. Просмотрев многие из них, я убедился, что ни в одной из них (по крайней мере на русском языке) не упоминается о быстром методе реализации с использованием так называемых таблиц подстановки «Т-таблиц». Я решил исправить данный недостаток и подробно написать о нем, и этому будет посвящена моя следующая статья под названием «AES: Быстрое зашифрование». До встречи на страницах интернета дорогой читатель, надеюсь, скорой.
1
Копирование и использование материалов сайта разрешается только при указании активной прямой ссылки без rel=nofollow на страницу с копируемым материалом. Если какие-то условия не выполнены или не могут быть выполнены, то разрешение можно получить по электронной почте vladislav.kochemaev@gmail.com с указанием цели использования. При копировании материалов сайта вы автоматически соглашаетесь с этими условиями.