Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[93]

(25, 3, 0)

(46, 8, 5, 3, 2, 1, 0)

(26, 6, 2, 1, 0)

(47, 5, 0)

(27, 5, 2, 1, 0)

(48, 9, 7, 4, 0)

(28, 3, 0)

(48, 7, 5, 4, 2, 1, 0)

(29, 2, 0)

(49, 9, 0)

(30, 6, 4, 1.0)

(49, 6, 5, 4, 0)

(31, 3, 0)

(50, 4, 3, 2, 0)

(31, 6, 0)

(51, 6, 3, 1, 0)

(31, 7, 0)

(52, 3, 0)

(31, 13, 0)

(53, 6, 2, 1, 0)

(32, 7, 6, 2, 0)

(54, 8, 6, 3, 0)

(32, 7, 5, 3, 2, 1, 0)

(54, 6, 5, 4, 3, 2, 0)

(33, 13, 0)

(55, 24, 0)

(33, 16, 4, 1, 0)

(55, 6, 2, 1, 0)

(34, 8, 4, 3, 0)

(56, 7, 4, 2, 0)

(34, 7, 6, 5, 2, 1, 0)

(57, 7, 0)

(35, 2, 0)

(57, 5, 3, 2, 0)

(135, 11, 0)

(58, 19.0)

(135, 16, 0)

(58, 6, 5, 1, 0)

(135, 22, 0)

(59, 7, 4, 2, 0)

(136, 8, 3, 2, 0)

(59, 6, 5, 4, 3, 1, 0)

(137, 21, 0)

(60, 1, 0)

(138, 8, 7, 1, 0)

(61, 5, 2, 1, 0)

(139, 8, 5, 3, 0)

(62, 6, 5, 3, 0)

(140, 29, 0)

(63, 1, 0)

(141, 13, 6, 1, 0)

(64, 4, 3, 1, 0)

(142, 21, 0)

(65, 18, 0)

(143, 5, 3, 2, 0)

(65, 4, 3, 1, 0)

(144, 7, 4, 2, 0)

(66, 9, 8, 6, 0)

(145, 52, 0)

(66, 8, 6, 5, 3, 2, 0)

(145, 69, 0)

(67, 5, 2, 1, 0)

(146, 5, 3, 2, 0)

(152, 6, 3, 2, 0)

(147, 11, 4, 2, 0)

(153, 1, 0)

(148, 27, 0)

(153, 8, 0)

(149, 10, 9, 7, 0)

(154, 9, 5, 1, 0)

(150, 53, 0)

(155, 7, 5, 4, 0)

(151, 3, 0)

(156, 9, 5, 3, 0)

(151, 9, 0)

(157, 6, 5, 2, 0)

(151, 15, 0)

(158, 8, 6, 5, 0)

(151, 31, 0)

(159, 31, 0)

(151, 39, 0)

(159, 34, 0)

(151, 43, 0)

(159, 40, 0)

(151, 46, 0)

(160, 5, 3, 2, 0)

(151, 51, 0)

(161, 18, 0)

(151, 63, 0)

(161, 39, 0)

(151, 66, 0)

(161, 60, 0)

(151, 67, 0)

(162, 8, 7, 4, 0)

(151, 70, 0)

(163, 7, 6, 3, 0)

(36, 11, 0)

(164, 12, 6, 5, 0)

(36, 6, 5, 4, 2, 1, 0)

(165, 9, 8, 3, 0)

(37, 6, 4, 1, 0)

(166, 10, 3, 2, 0)

(37, 5, 4, 3, 2, 1, 0)

(167, 6, 0)

(38, 6, 5, 1, 0)

(170, 23, 0)

(39, 4, 0)

(172, 2, 0)

(40, 5, 4, 3, 0)

(174, 13, 0)

(41, 3, 0)

(175, 6, 0)

(42, 7, 4, 3, 0)

(175, 16, 0)

(42, 5, 4, 3, 2, 1, 0)

(175, 18, 0)

(43, 6, 4, 3, 0)

(175, 57, 0)

(44, 6, 5, 2, 0)

(177, 8, 0)

(45, 4, 3, 1, 0)

(177, 22, 0)

(46, 8, 7, 6, 0)

(1 77, 88, 0)

(68, 9, 0)

(225, 88, 0)

(68, 7, 5, 1, 0)

(225, 97, 0)

(69, 6, 5, 2, 0)

(225, 109, 0)

(70, 5, 3, 1, 0)

(231, 26, 0)

(71, 6, 0)

(231, 34, 0)

(71, 5, 3, 1, 0)

(234, 31, 0)

(72, 10, 9, 3, 0)

(234, 103, 0)

(72, 6, 4, 3, 2, 1, 0)

(236, 5, 0)

(73, 25, 0)

(250, 103, 0)

(73, 4, 3, 2, 0)

(255, 52, 0)

(74, 7, 4, 3, 0)

(255, 56, 0)

(75, 6, 3, 1, 0)

(255, 82, 0)

(76, 5, 4, 2, 0)

(258, 83, 0)

(77, 6, 5, 2, 0)

(266, 47, 0)

(78, 7, 2, 1, 0)

(97, 6, 0)

(79, 9, 0)

(98, 11, 0)

(79, 4, 3, 2, 0)

(98, 7, 4, 3, 1, 0)

(80, 9, 4, 2, 0)

(99, 7, 5, 4, 0)

(80, 7, 5, 3, 2, 1, 0)

(100, 37, 0)

(81, 4, 0)

(100, 8, 7, 2, 0)

(82, 9, 6, 4, 0)

(101, 7, 6, 1, 0)

(82, 8, 7, 6, 1, 0)

(102, 6, 5, 3, 0)

(83, 7, 4, 2, 0)

(103, 9, 9)

(84, 13, 0)

(104, 11, 10, 1, 0)

(84, 8, 7, 5, 3, 1, 0)

(105, 16, 0)

(85, 8, 2, 1, 0)

(106, 15, 0)

(86, 6, 5, 2, 0)

(107, 9, 7, 4, 0)

(87, 13, 0)

(108, 31, 0)

(87, 7, 5, 1, 0)

(109, 5, 4, 2.0)

(88, 11, 9, 8, 0)

(110, 6, 4, 1, 0)

(88, 8, 5, 4, 3, 1, 0)

(111, 10, 0)

(89, 38, 0)

(111, 49, 0)

(89, 51, 0)

(113, 9, 0)

(89, 6, 5, 3, 0)

(113, 15, 0)

(90, 5, 3, 2, 0)

(113, 30, 0)

(91, 8, 5, 1, 0)

(114, 11, 2, 1, 0)

(91, 7, 6, 5, 3, 2, 0)

(115, 8, 7, 5, 0)

(92, 6, 5, 2, 0)

(116, 6, 5, 2, 0)

(93, 2, 0)

(117, 5, 2, 1, 0)

(94, 21, 0)

(118, 33, 0)

(94, 6, 5, 1, 0)

(119, 8, 0)

(95, 11, 0)

(119, 45, 0)

(95, 6, 5, 4, 2, 1, 0)

(120, 9, 6, 2, 0)

(96, 10, 9, 6, 0)

(121, 18, 0)

(96, 7, 6, 4, 3, 2, 0)

(122, 6, 2, 1, 0)

(178, 87, 0)

(123, 2, 0)

(183, 56, 0)

(124, 37, 0)

(194, 87, 0)

(125, 7, 6, 5, 0)

(198, 65, 0)

(126, 7, 4, 2, 0)

(201, 14, 0)

(127, 1, 0)

(201, 17, 0)

(127, 7, 0)

(201, 59, 0)

(127, 63, 0)

(201, 79, 0)

(128, 7, 2, 1, 0)

(202, 55, 0)

(129, 5, 0)

(207, 43, 0)

(130, 3, 0)

(212, 105, 0)

(131, 8, 3, 2, 0)

(218, 11, 0)

(132, 29, 0)

(218, 15, 0)

(133, 9, 8, 2, 0)

(218, 71, 0)

(134, 57, 0)

(218.83, 0)

(270, 133, 0)

(225, 32, 0)

(282, 35, 0)

(225, 74, 0)

(282, 43, 0)


(286, 69, 0) (286, 73, 0)

(294, 61, 0)

(322, 67, 0) (333, 2, 0) (350, 53, 0) (366, 29, 0)

(378, 43, 0)

(378, 107, 0)

(390, 89, 0) (462, 73, 0)

(521, 32, 0) (521, 48, 0) (521, 158, 0)

(521, 168, 0) (607, 105, 0) (607, 147, 0)

(607, 273, 0)

(1279, 216, 0) (1279, 418, 0) (2281, 715, 0)

(2281, 915, 0) (2281, 1029, 0) (3217, 67, 0) (3217, 576, 0) (4423, 271, 0)

(9689, 84, 0)

Обратите внимание, что у всех элементов таблицы нечетное число коэффициентов . Я привел такую длинную таблицу, так как LFSR часто используются для криптографии с потоковыми шифрами, и я хотел, чтобы разные люди могли подобрать различные примитивные многочлены. Если p(x) примитивен, то примитивен и xn/;(1/x), поэтому каждый элемент таблицы на самом деле определяет два примитивных многочлена .

Например, если (a, b, 0) примитивен, то примитивен и (a, a - b, 0). Если примитивен (a, b, c, d, 0), то примитивен и (a, a - d, a - c, a - b, 0). Математически:

если примитивен xa + xb + 1, то примитивен и xa + xa - b + 1

если примитивен x + x + x + x + 1, то примитивен и x + x + x + x + 1

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

Генерировать плотные примитивные многочлены по модулю 2 нелегко . В общем случае для генерации примитивных многочленов степени k нужно знать разложение на множители числа 2 k-1. Примитивные многочлены можно найти в следующих трех хороших работах: [652, 1285, 1287].

Сами по себе LFSR являются хорошими генераторами псевдослучайных последовательностей, но они обл а-дают некоторыми нежелательными неслучайными свойствами . Последовательные биты линейны, что делает их бесполезными для шифрования. Для LFSR длины n внутреннее состояние представляет собой предыдущие n выходных битов генератора. Даже если схема обратной связи хранится в секрете, она может быть определена по 2n выходным битам генератора с помощью высоко эффективного алгоритма Berlekamp-Massey [1082,1083]: см. раздел 16.3.

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

Программная реализация LFSR

Программные реализации LFSR медленны и быстрее работают, если они написаны на ассемблере, а не на C. Одним из решений является использование параллельно 16 LFSR (или 32, в зависимости от длины слова вашего компьютера). В этой схеме используется массив слов, размер которого равен длине LFSR, а каждый бит слова массива относится к своему LFSR. При условии, что используются одинаковые многочлены обратной связи , это может дать заметный выигрыш производительности . Вообще, лучшим способом обновлять сдвиговые регистры является умножение текущего состояния на подходящие двоичные матрицы [901].

Схему обратной связи LFSRможно модифицировать. Получающийся генератор не будет криптографически более надежным, но он все еще будет обладать максимальным периодом, и его легче реализовать программно [1272]. Вместо использования для генерации нового крайнего левого бита битов отводной последовательности выполняется XOR каждого бита отводной последовательности с выходом генератора и замена его результатом этого действия, затем результат генератора становится новым крайним левым битом (см. 11th). Иногда эту модификацию называют конфигурацией Галуа. На языке C это выглядит следующим образом:

#define mask 0x80000057

static unsigned long ShiftRegister=1; void seed LFSR (unsigned long seed)

if (seed == 0) /* во избежание беды */

seed = 1 ; ShiftRegister = seed;

int modified LFSR (void)


if (ShiftRegister & 0x00000001) {

ShiftRegister = (ShiftRegister л mask >> 1) 0x8000000 ; return 1; } else {

ShiftRegister >>= 1;

return 0;

Выходной бит

Рис. 16-5. LFSR Галуа.

Выигрыш состоит в том, что все XOR можно сделать за одну операцию. Эта схема также может быт распараллелена, а полиномы различных обратных связей могут быть различны . Такая конфигурация Галуа может дать выигрыш и при аппаратной реализации, особенно в виде СБИС . Вообще, при использовании аппаратуры, которая хорошо выполняет сдвиги применяйте конфигурацию Фиббоначи, если есть возможность использовать параллелизм, применяйте конфигурацию Галуа.

16.3 Проектирование и анализ потоковых шифров

Большинство реальных потоковых шифров основаны на LFSR. Даже в первые дни электроники построить их было несложно. Сдвиговый регистр не представляет из себя ничего большего, чем массив битов, а последов а-тельность обратной связи - набор вентилей XOR. Даже при использовании СБИС потоковый шифр на базе LFSR обеспечивает немалую безопасность с помощью нескольких логических вентилей .

Проблема LFSR состоит в том, что их программная реализация очень неэффективна . Вам приходится избегать разреженных многочленов обратной связи - они облегчают корреляционные вскрытия [1051, 1090, 350] - а плотные многочлены обратной связи неэффективны . Выход любого потокового шифра является побитовым, для шифрования того, что можно выполнить за одну итерацию DES, необходимо выполнить 64 итерации потоков ого алгоритма. Действительно, программная реализация простого алгоритма LFSR, подобного описываемому ниже сжимающему генератору, не быстрее, чем DES.

Эта отрасль криптографии быстро развивается и very politically charged. Большинство разработок засекреч е-ны - множество используемых сегодня военных систем шифрования основаны на LFSR. Действительно, у большинства компьютеров Cray (Cray 1, Cray X-MP, Cray Y-MP) есть весьма любопытная инструкция, обычно называемая как "счетчик совокупности" (population count). Она подсчитывает количество единиц в регистре и может быть использована как для эффективного вычисления расстояния Хэмминга между двумя двоичными словами и для реализации векторизированной версии LFSR. Я слышал, что эта инструкция считается канонич е-ской инструкцией NSA, обязательно фигурирующей почти во всех контрактах, касающихся компьютеров.

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

Линейная сложность

Анализировать потоковые шифры часто проще, чем блочные. Например, важным параметром, используемым для анализа генераторов на базе LFSR, является линейная сложность (linear complexity), или линейный интервал. Она определяется как длина n самого короткого LFSR, который может имитировать выход генератора. Любая последовательность, генерированная конечным автоматом над конечным полем, имеет конечную линейную сложность [1006]. Линейная сложность важна, потому что с помощью простого алгоритма, называ е-мого алгоритмом Berlekamp-Massey, можно определить этот LFSR, проверив только 2 n битов потока ключей [1005]. Воссоздавая нужный LFSR, вы взламываете потоковый шифр.

Эта идея можно расширить с полей на кольца [1298] и на случаи, когда выходная последовательность рассматривается как числа в поле нечетной характеристики [842]. Дальнейшее расширение приводит к вводу понятия профиля линейной сложности, который определяет линейную сложность последовательности по мере ее удлинения [1357, 1168, 411, 1582]. Другой алгоритм вычисления линейной сложности прост только в очень сп е-



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203]