All streams
Search
Write a publication
Pull to refresh
-19
0

Пользователь

Send message
А мне вот не понятно: если планеты всё время «падают» на Солнце, но за счёт своего инерциального «прямолинейного» движения никак не «упадут» на него, оставаясь на своих орбитах, то с точки зрения энергетических затрат такое равновесие, наверное, можно объяснить консервативностью поля сил тяготения — работа в поле сил тяготения равна нулю (смещения нет, полная траектория орбиты «замкнутая»). Если же они уходят — удаляются от локального центра притяжения, то совершают работу против сил тяготения — за счет чего?
Вы выходите за границы массива, это явный UB, не относящийся к теме, поэтому я просто хочу уточнить, а здесь по-вашему будет UB?
int arr[5];
arr + 1;

По сходным причинам, кстати, union-style cast — тоже UB.
UB возникает только когда вы пишите по одному полю, а читаете из другого.
reinterpret_cast для указателей сам по себе не генерирует никакого кода; это чисто compile-time директива (так по крайней мере пишут в описаниях). Если у вас есть указатель на область памяти достаточного размера и правильно выровненную для приёма некоторого значения, то вы говорите, что запись этого значения по этому указателю — UB?
Доказательство UB or not UB очень простое — см. стандарт, остальное от лукавого компилятора.
union выравнивается по наиболее строгой границе своих членов как раз специально для правильного к ним доступа
Собственно, единственная причина, по которой можно создать такой указатель — нарушение strict aliasing'a :)
Бремя доказательства лежит на утверждающем. Хотя может быть это и так.
Собственно, единственная причина, по которой можно создать такой указатель — нарушение strict aliasing'a :)
Ну, не стал бы так категорично утверждать. И в любом случае кошерное обертывание в std::launder в таких случаях (не выровненный доступ) не спасёт.
Тут UB вызывается доступом по не выровненному указателю. Поучительный пример для x86 описывается здесь.
Вы можете сами сходить по ссылке и попробовать повключать. Это результат c -O3. Сформулируйте что вы подразумеваете здесь под UB. То, что по адресу переменной float пишется значение int — это ещё не момент UB. Оно туда вполне определенно тупо запишется коль скоро размер позволяет. UB наступит когда из float будет читаться значение. Я же говорю про алиасинг в коде ф-ции foo.
Компилятор генерирует такой код:
foo(float*, int*): # @foo(float*, int*)
mov dword ptr [rsi], 1
mov dword ptr [rdi], 2
mov eax, dword ptr [rsi]
ret
Это всё можно просто проверить. Если в уже приведённом примере
int foo( float *f, int *i ) { 
    *i = 1;               
    *f = 0.f;            
   
   return *i;
}

добавить лишь reinterpret_cast с float* на int*
int foo( float *f, int *i ) { 
    *i = 1;               
    *f = 0.f; 
           
    int *p = reinterpret_cast<int*>(f);
    *p = 2;

   return *i;
}

то будет генерироваться код без strict aliasing.

Таким образом, дополнительная обёртка reinterpret_cast'а в std::launder принципиально ничего не добавит в подобных случаях.
Есть еще много мифов, если статья понравится, я продолжу.
На самом деле хотелось бы не разбор и критику мифов, а ясный не предвзятый обзор того, что является проверенными на экспериментах моделями, а что — лишь теориями, будоражащими воображение неискушённой публики своей грандиозностью, неизведанностью, космической фундаментальностью.
Иначе всё это превратится в очередную типичную дискуссию участников собрания свидетелей Иеговы большого взрыва.
38. Вычислить сумму ( «Задачи для детей от 5 до 15 лет»)

image

(с ошибкой не более 1% от ответа)

Алгоритм для вычисления частичных сумм этого ряда на языке Scheme (Lisp) в среде drRacket (drRacket позволяет производить вычисления в обыкновенных дробях):

#lang racket
(define series_sum
 ( lambda (n)
  (if (= n 0) 0 
    (+ (/ 1 (* n (+ n 1))) (series_sum(- n 1)))
  ) ) )
(series_sum 10)
(series_sum 100)
(series_sum 1000)
(series_sum 10000)
(series_sum 100000)
(series_sum 1000000)

(define series_sum_1
 ( lambda (n)
  (if (= n 0) 0 
    (+ (/ 1.0 (* n (+ n 1.0))) (series_sum_1(- n 1.0)))
  ) ) )
(series_sum_1 10)
(series_sum_1 100)
(series_sum_1 1000)
(series_sum_1 10000)
(series_sum_1 100000)
(series_sum_1 1000000)

Два последних примера drRacket вычислил с ошибкой



Этот же алгоритм на Python
def series_sum(n):
	if n==0:
		return 0
	else:
		return 1.0/(n*(n+1.0))+series_sum(n-1.0)
 
print(series_sum(10))
print(series_sum(100))


Если посмотреть на код, то вызовы series_sum(100) считают на самом деле сумму
1/(1*2) + 1/(2*3) +… + 1/(99*100) + 1/(100*101)
Компания и государство — отличающиеся сущности. Сеть компании технически отличается от интернета только масштабом (и соответствующим этому применяемыми технологиями для создания/объединения таких сетей).
Прочитал законопроект. Как оказывается он не запрещает и не регулирует создание провайдерами новых точек обмена трафиком с другими операторами (в т.ч. точек обмена трафиком зарубеж которые увеличивают взаимосвязи с глобальным интернетом), не запрещает и не регулирует установление провайдерами соглашений о взаимном пропуске трафика через свои локальные линки (в т.ч. с зарубежными операторами), увеличивая таким образом связность сети. Единственное на что он направлен — это на то, что бы любой трансграничный линк был учтён в Роскомнадзоре и мог быть технически им или провайдером по команде из Роскомнадзора отключён. И чтобы это все не оборвало внутрироссийский трафик.

В кривом зеркале шульмановской интерпретации именно в этом видимо состоит
необдуманное решение, централизующее российский сегмент децентрализованной международной сети Интернет, и тем самым облегчающее проведение хакерских атак с целью дестабилизации работы российского сегмента интернета.
(Не знаю, как ещё можно эту жалобу технически грамотно интерпретировать.)

Я понимаю, что кто-то черпает информацию о проблеме из выступлений Шульман (кумира 18-летних либералов и приравненных к ним взрослых) в передачах Эхо-Москвы.
Я понимаю, что кто-то считает что все это просто прикрытие «режима» — для них любое действие властей — вызывающее крайнее отторжение и раздражение фактор (и самые оппозиционно-одарённые побегут минусовать).

Но. Все что описано (в корявых формулировках) в этом законе будет сделано, точно так же как это сделано в любой компании с мало-мальски грамотным админом, где любая точка доступа в сеть предприятия находится под контролем. C’est la vie.
Уберите это пожалуйста из хаба «Информационная безопасность», а то засоряет ленту.
Мне кажется что для любой достаточно короткой случайной таблицы чисел S-Box найдутся умные люди, которые найдут детерминированный алгоритм её генерации. И далеко не факт, что после анализа его свойств общий алгоритм шифрования с помощью этой таблицы замен окажется крптоустойчивым. Поэтому разработчики алгоритма шифрования должны знать и понимать свойства генерации S-Box.
В исследовательской статье сказано, что ранее уже были найдены два различных метода декомпозиции S-Box. Один из них основан на дискретных логарифмах. Они нашли третий — более простой способ, также связанный с логарифмами над конечными полями. Что собственно, я так предполагаю, и определяет алгебраическое свойство отображения мультипликативных классов в аддитивные, log (a*b) = log a + log b.
Возможно для специалистов раскрытие свойств способа генерации S-Box для ГОСТовского шифрования даст понимание его надёжности.
29 января 2019 года была опубликовано новое исследование «Partitions in the S-Box of Streebog and Kuznyechik», которое недвусмысленно намекает на теоретическую возможность бекдора в этих алгоритмах.
Посмотрел статью, ни каких особых намеков нет. Собственно результат явно описан в Abstract к статье.
Они нашли что в основе обоих алгоритмов лежит одна и та же определённая алгебраическая структура преобразований. Это было известно из более ранних работ, сейчас показана именно общность того как можно представить различные алгоритмы декомпозиции таблицы замен.
Вопрос как этот факт соотносится с заявлением о случайном выборе таблицы замен задавали и раньше, и он, как отмечается, остаётся открытым. Как и вопрос о том, как новая информация может быть использована для атаки на алгоритм. Не понятно, вы хотите чтоб S-Box был сгенерирован с помощью подбрасывания монетки что ли?

Ключевым свойством преобразования TKlog является то, что оно работает с так называемыми смежными классами (cosets). И сопоставляет одни другим.

Проблема в том, что эти смежные классы бывают мультипликативными, как во всех обычных алгоритмах. А бывают аддитивными.

Так вот, единственный известный случай, когда аддитивные смежные классы использовались в функции замены блочных шифров — специальное создание бекдора. Информация об этом находится в работе 2016 года.
Если выражаться более точно, то в статье лишь показано, что перестановки TKlog отображают мультипликативные классы смежности на аддитивные. Это как раз и есть то самое алгебраическое свойство, о котором говорилось ранее. Всё, больше ничего. Если вы утверждаете о чем-то большем, значит наверное, вам известно что-то большее.
Настольная печатная версия телепередачи «Пусть говорят».
Поскольку в стандартной поставке вопросы типа «что именно вам нравится в вашем любимом времени года» могут показаться кому-то немного тухлыми для праздника, издатели устроили небольшой краудфандинг в меру холиварных тем для последующих выпусков — Андрей Малахов кусает локти от зависти.
Ведущие стараются не банально презентовать «просто офигенную штуку для небольшой вечеринки».
Любой продукт, даже такой… «вырожденный», как и для аудитории популярного на 1-ом канале ток-шоу, найдёт своего благодарного потребителя.

Information

Rating
Does not participate
Registered
Activity