Почему ж минивзрыв? Надо тогда уж максивзрыв, чтоб вывести из строя весь завод потенциального противника.
Ну и представьте себе, как дилер с покупателем будут убеждать таможню пропустить станок со взрывным устройством внутри. Если дилеру удастся перед этим убедить покупателя.
Прозевал в условии слово DWORD, простой перебор не подойдёт. Но можно узнать ключ, поксорив первый DWORD шифра и тела, пробовать расшифровывать этим ключом следующие DWORD-ы шифра и сравнивать результат с телом:
int main(void)
{
unsigned* original = (unsigned*)strdup("Hello, world!");
unsigned* encrypted = (unsigned*)strdup((char*)original);
int len = strlen((char*)original);
// Encrypt
int key = 232222329;
srand(key);
printf("Encryption:\nOriginal keystream encrypted\n");
for (int i = 0; i < len / sizeof(unsigned); i++) {
int x = rand();
encrypted[i] ^= x;
printf("%08x ^ %d = %08x\n", original[i], x, encrypted[i]);
}
printf("\n");
int candidate_key = original[0] ^ encrypted[0];
printf("Candidate key=%d\n\n", candidate_key);
srand(candidate_key);
printf("Decrypting the rest:\nCyphertext keystream decrypted\n");
for (int i = 1; i < len / sizeof(unsigned); i++) {
int x = rand();
printf("%08x ^ %d = %08x, expected %08x\n", encrypted[i], x, encrypted[i] ^ x, original[i]);
}
printf("\n");
return 1;
}
Если речь идёт о примере в самом конце, то ключ расшифровки нужен для того, чтобы определить, находится ли в памяти упомянутая программа. В памяти она хранится в зашифрованном виде, ключ неизвестен (и хорошо спрятан, лень искать).
Из-за слабости использованного шифрования вместо перебора всех возможных значений ключа (что слишком долго) достаточно перебрать 256 значений. Ещё быстрее зашифровать сигнатуру 256 ключами и искать эти зашифрованные строки алгоритмом Ахо-Корасика, который ищет все строки сразу, в один проход.
При шифровании используются последние 8 бит псеводслучайного числа. Переносы при уможнении и сложении идут влево, поэтому достаточно перебрать 256 возможных значений key — от 0 до 255, примерно так:
int main(void)
{
char *original = strdup("Hello, world!");
int len = strlen(original);
// Encrypt
int key = 232222329;
srand(key);
char *encrypted = strdup(original);
printf("Original:\t");
for (int i = 0; i < len; i++) {
int x = rand();
printf("%02x ", (unsigned)encrypted[i] & 0xff);
encrypted[i] ^= x;
}
printf("\n");
// Decrypt
for (int j = 0; j < 256; j++) {
printf("Attempt %d:\t", j);
srand(j);
bool success = true;
for (int i = 0; i < len; i++) {
int y = rand();
char d = encrypted[i] ^ y;
if (d != original[i]) {
success = false;
}
printf("%02x ", (unsigned)d & 0xff);
}
if (success) {
printf(" <-- this one!\n");
return 0;
}
printf("\n");
}
return 1;
}
Пример 1: Рекламщик приходит к статистику и говорит «надо протестировать влияние рекламной акции на объём продаж». Статистик задаёт наводящие вопросы и придумывает дизайн эксперимента — что с чем будем сравнивать, t-test между тестовой группой и контрольной до начала эксперимента, какие факторы надо контролировать и так далее. Проводится реклама, считаются результаты, сравниваются как было задумано, получается нормальный результат с доверительным интервалом.
Пример 2: Рекламщик приходит к статистику и говорит «мы тут провели рекламную акцию, как она повлияла на объём продаж?» Статистик придумывает, с чем можно было бы сравнить, сравнивает и офигивает — знак у результата не тот. Видать, что-то не так с контрольной группой. Начинаются поиски внешних факторов и прочие трюки, которые после проведения эксперимента уже делать поздно, и анализ данных продолжается до тех пор, пока не будет будет получен желаемый результат.
Чутьё мне подсказывает, что в статье описан второй пример. Если это так, то я аналогичным образом могу показать влияние чего угодно на что угодно. Это всё равно что выстрелить в стену амбара со ста метров, потом подойти к ней и нарисовать мишень вокруг попадания.
В Штатах заготовка для нижней половины ствольной коробки (lower receiver) стоит $100. Доделать можно на сверлильном станке, который стоит $150. Остальные компоненты неномерные. 223-ей статьи в УК США нет, если человек имеет право владеть оружием, то он имеет право сделать оружие себе сам.
Не один, а три. Это среднее количество выстрелов в обычном уголовном инциденте. Есть даже мнемоника про «три метра, три выстрела, три секунды». Не все из них заканчиваются убийством, но с другой стороны некоторые инциденты происходят внутри помещений и системой не засекаются.
Про четвёртое июля я даже не говорю. Там вообще одни ложные срабатывания будут.
Это бабушка надвое сказала. Если система откалибрована на звук выстрела без глушителя, то звук выстрела с глушителем может оказаться ниже порога срабатывания. А если понизить порог, то будет ещё больше лишних срабатываний.
И так большинство из этих 39000 выстрелов наверняка ложные срабатывания. 200 убийств в год * 8 лет * 3 выстрела = 4800 выстрелов, то есть почти на порядок меньше.
Кроме того, глушитель размазывает звук по времени, а это уменьшает точность измерения времени задержки (и локализации выстрела).
В США глушители законны, надо только заплатить $200 налога. Но город Вашигтон — не Америка, там до последнего времени были запрещены не только глушители, но и огнестрельное оружие вообще.
С другой стороны бандиты глушителями не пользуются. Слишком дорого.
SHA1 не поможет. Злоумышленник, сидящий посередине, может заменить text на eviltext и сделать sha1sum eviltext >> eviltext, на приёмной стороне всё сойдётся. Поэтому и нужен MAC, он же keyed hash.
Проблема передачи ключа остаётся как в симметричном шифровании, так и в случае с одноразовым блокнотом. Разница только в размере ключа, на математику это никак не влияет.
Линза обычная, плоско-выпуклая, с присущей ей продольной сферической аберрацией. Не то чтобы у неё совсем не было фокусного расстояния, просто их у неё много.
Ну и представьте себе, как дилер с покупателем будут убеждать таможню пропустить станок со взрывным устройством внутри. Если дилеру удастся перед этим убедить покупателя.
Из-за слабости использованного шифрования вместо перебора всех возможных значений ключа (что слишком долго) достаточно перебрать 256 значений. Ещё быстрее зашифровать сигнатуру 256 ключами и искать эти зашифрованные строки алгоритмом Ахо-Корасика, который ищет все строки сразу, в один проход.
Достаточно было написать, что надо перерезать синий провод. Или красный? Нет, наверное всё-таки синий.
Пример 1: Рекламщик приходит к статистику и говорит «надо протестировать влияние рекламной акции на объём продаж». Статистик задаёт наводящие вопросы и придумывает дизайн эксперимента — что с чем будем сравнивать, t-test между тестовой группой и контрольной до начала эксперимента, какие факторы надо контролировать и так далее. Проводится реклама, считаются результаты, сравниваются как было задумано, получается нормальный результат с доверительным интервалом.
Пример 2: Рекламщик приходит к статистику и говорит «мы тут провели рекламную акцию, как она повлияла на объём продаж?» Статистик придумывает, с чем можно было бы сравнить, сравнивает и офигивает — знак у результата не тот. Видать, что-то не так с контрольной группой. Начинаются поиски внешних факторов и прочие трюки, которые после проведения эксперимента уже делать поздно, и анализ данных продолжается до тех пор, пока не будет будет получен желаемый результат.
Чутьё мне подсказывает, что в статье описан второй пример. Если это так, то я аналогичным образом могу показать влияние чего угодно на что угодно. Это всё равно что выстрелить в стену амбара со ста метров, потом подойти к ней и нарисовать мишень вокруг попадания.
Как предполагалось измерять результат «попробовать»?
Но это всё на федеральном уровне, отдельные штаты и города могут принимать свои законы, которым тоже надо следовать.
Про четвёртое июля я даже не говорю. Там вообще одни ложные срабатывания будут.
И так большинство из этих 39000 выстрелов наверняка ложные срабатывания. 200 убийств в год * 8 лет * 3 выстрела = 4800 выстрелов, то есть почти на порядок меньше.
Кроме того, глушитель размазывает звук по времени, а это уменьшает точность измерения времени задержки (и локализации выстрела).
Там есть сложности, связанные с отражением от зданий, но с ними можно бороться.
На пистолет для скрытного ношения глушитель никто не ставит, но на домашней винтовке это вполне разумно.
С другой стороны бандиты глушителями не пользуются. Слишком дорого.