Найти значения матрицы. Стойкость алгоритма.

Тема в разделе "WASM.CRYPTO", создана пользователем SZ, 9 янв 2011.

  1. SZ

    SZ New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2010
    Сообщения:
    30
    надеюсь найдутся спецы которые помогут проверить мой алго на стойкость.
    Задача сводится к следующему:
    [​IMG]
    найти все неизвестные a, b , c, d (знач.: [1-255]),
    при известных x5, x4, x3, x2, x1 (знач.: [0-255]).
    при этом должны выполнятся все условия внутри матрицы.
    Что-то я даже с подсчётом вариантов перебора запутался.
    И есть ли способ вычислить неизвестные по-быстрому без перебора ?
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    SZ
    я вообще в этом не шарю, но я не пойму, что тут будет ключом?
     
  3. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    http://ru.wikipedia.org/wiki/Магический_квадрат
     
  4. SZ

    SZ New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2010
    Сообщения:
    30
    spa
    Ключ значения - Xj.
    1. Я допустил что криптоаналитику стала известна часть ключа (x5,x4,x3,x2,x1).
    2. Также, он хорошо ладит с отладчиком, и он установил взаимосвязь между значениями.
    Чтобы открыть след байт ключа - x6, он должен определить a6,b6,c6,d6. Чтобы найти их придётся решить эту матрицу.
    Если это удастся - ай м фэйл :dntknw:

    Sunzer
    O_o оказывается проблеме не один век.
    спс будем примерять.
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SZ
    Какие ещё спецы? Это часто в школьный курс линейной алгебры входит. Не говоря уже о том, что в любом вузе первый семестр математики с этого начинается... если специальность хоть как-то связана с точными науками.

    Обычная СЛАУ. 9 уравнений, 20 неизвестных. Если хорошо присмотреться, можно заметить, что одно из уравнений линейно зависимо от других. Соответственно получаем 8 линейно независимых уравнений и 20 неизвестных, из которых 12 являются свободными. Выбираем свободными все комбинации из букв b,c,d с номерами 1,2,3 и 5 (т.е. 3*4=12 переменных).
    Тогда оставшиеся восемь выражаются следующим образом:
    b4 = b1+b2+b3+b5
    c4 = c1+c2+c3+c5
    d4 = d1+d2+d3+d5
    a1 = x1-(b1+c1+d1)
    a2 = x2-(b2+c2+d2)
    a3 = x3-(b3+c3+d3)
    a5 = x5-(b5+c5+d5)
    a4 = x4-(b1+b2+b3+b5+c1+c2+c3+c5+d1+d2+d3+d5)

    На основе приведенных диапазонов возможных значений с использованием бэктрэкинга очень быстро осуществляется перебор всех возможных решений, которых может быть от нуля до ...
     
  6. SZ

    SZ New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2010
    Сообщения:
    30
    до ?
    255^12 = 75 593 101 654 204 447 168 212 890 625 ?
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SZ
    Максимально возможное количество решений? Довольно сложная задача... для меня по крайней мере :). Согласно условию максимальное количество решений достигается при x1=x2=x3=x4=x5=255. А вот сколько именно... Чисто интуитивно прикидывая, максимальное число решений находится где-то между 10^15 и 2^96. :)
     
  8. SZ

    SZ New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2010
    Сообщения:
    30
    Как вы считаете, это посильная задача для брута ?
     
  9. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SZ
    Согласно Вашему условию подойдёт любое из них. Без всяких "брутов". Если же условие неполное, и на самом деле правильное решение только одно, то никакой "брут" не поможет, т.к. нет критериев для проверки правильности решения. За исключением случая, когда x1=x2=x3=x5=4, x4=13.
     
  10. SZ

    SZ New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2010
    Сообщения:
    30
    Прошу прощения если я не правильно сформулировал задачу.
    Но что значит
    критерий правильности решения: выполнение условий которые обозначены знаками +, -, =.
    берем произвольные числа [0-255] в качестве Xj. И находим такие числа Aj, Bj, Cj, Dj [1-255] при подстановке которых все условия выполнятся. Все числа байты, но поскольку Aj, Bj, Cj, Dj могут принимать значения только в диапазоне [1-255], то 255+1 != 0 , а = 1.
    Ну я правда не знаю что ещё добавить )
     
  11. SZ

    SZ New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2010
    Сообщения:
    30
    Я ещё упростил задачу в поисках решения )
    Допустим что числа (известные и неизвестные) только 0 или 1.
    получился вот такой дZен-кроссворд:
    [​IMG]
    Задача по прежнему найти все неизвестные (принимают значения 0 или 1).
     
  12. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SZ
    То и значит. Любое решение, взятое из тех — условно скажем — 10^15 решений, будет удовлетворять всем условиям Вашего квадрата.
    Ну вот возьмите произвольные x1,x2,x3,x4,x5, а так же произвольные b1,b2,b3,b5,c1,c2,c3,c5,d1,d2,d3,d5. Выбранные значения подставьте в решение из #5. При подстановке полученных значений все условия выполнятся.
    Эта подробность увеличивает число решений от "где-то между 10^15 и 2^96" до порядка 2^96.

    P.S. Да... с линейной зависимостью в #5 я прогнал. Т.е. свободных переменных не 12, а 11. Собственно, это мало что меняет: число правильных решений будет порядка 2^88, а не 2^96.
    P.P.S. Не... Таки не прогнал. Число свободных переменных всё-таки 12, и решение в #5 верное. Но! В случае, если условие x4 = x1+x2+x3+x5 для выбранных x1,x2,x3,x4,x5 не удовлетворяется, то решений нет вообще.
     
  13. SZ

    SZ New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2010
    Сообщения:
    30
    да, ерунда получается.
    явная связь между байтами ключа
    x1 = x2 + x3 + x4 + x5 , где все xj известны.
    А что если формула управляемая и между a,b,c,d (в строках) действия точно не известны (+/-).
    [​IMG]