Pull to refresh
313
0
Николай Шлей@CodeRush

Firmware Security Engineer

Send message
Зато на ARM получается отлично:
subs w8, w0, w1 # вычесть из w0 (a) w1 (b), положить результат в w8 (a-b)
csel w0, wzr, w8, lo # сравнить содержимое wzr (ноль) с w8 (a-b), если строго меньше, то положить в w0 (возвращаемое из функции значение) wzr (ноль), иначе w8 (a-b)
ret
Несложно проверить через Compiler Explorer.

GCC (O2):
mov eax, edi
mov edx, 0
sub eax, esi
cmp edi, esi
cmovb eax, edx
ret

Clang (O2):
xor eax, eax
sub edi, esi
cmovae/cmovge eax, edi (ae for uint32_t, ge for int32_t)
ret

Остальные компиляторы можете попробовать по аналогии там же.
В стандартных пока что нет (работы по добавлению ведутся), но в GCC и clang давно уже да.
Если верить документации, ответ кешируется на период от 8 часов до 10 дней, цитату и ссылку выше привел. Обновление ОС сбросило кеш, плюс у Akamai были проблемы с ответами из за перегрузки их CDN.
О том, как устроен и работает OCSP у Apple, написано вот в этом документе. Там же описана частота сбора информации:
The OCSP responses will have a validity interval between eight (8) hours and ten (10) days. For responses shorter than 16 hours, updates are available prior to one-half of the validity period before the nextUpdate. For responses equal or greater than 16 hours, updates are available at least eight hours prior to the nextUpdate, and no later than four days after the thisUpdate.
Вы перед использованием техники Apple добровольно принимаете политику приватности, и добровольно соглашаетесь в том числе с вот этим пунктом:
Collection and Use of Non-Personal Information
We also collect data in a form that does not, on its own, permit direct association with any specific individual. We may collect, use, transfer, and disclose non-personal information for any purpose. The following are some examples of non-personal information that we collect and how we may use it:
— We may collect information such as occupation, language, zip code, area code, unique device identifier, referrer URL, location, and the time zone where an Apple product is used so that we can better understand customer behavior and improve our products, services, and advertising.
— We may collect information regarding customer activities on our website, iCloud services, our iTunes Store, App Store, Mac App Store, App Store for Apple TV and iBooks Stores and from our other products and services. This information is aggregated and used to help us provide more useful information to our customers and to understand which parts of our website, products, and services are of most interest. Aggregated data is considered non‑personal information for the purposes of this Privacy Policy.
— We may collect and store details of how you use our services, including search queries. This information may be used to improve the relevancy of results provided by our services. Except in limited instances to ensure quality of our services over the Internet, such information will not be associated with your IP address.
— With your explicit consent, we may collect data about how you use your device and applications in order to help app developers improve their apps.
If we do combine non-personal information with personal information the combined information will be treated as personal information for as long as it remains combined.
Я прекрасно понимаю, что я написал. FileVault в Big Sur отличается от FileVault в Catalina потому, что раньше им было накрыто оба раздела, а сейчас — только раздел с данными, потому что раздел с системой накрывать не нужно — он уже накрыт SSV. Это позволяет применять к системному разделу обновления при помощи APFS-снапшотов без перешифрования. Да, теперь SSV требуется для FileVault, потому что безопасность FileVault теперь обеспечивается в том числе и SSV.
Давайте останемся при своих тогда, и со своим очевидно неправильным и вредным мнением я в комментарии к подобным статьям просто не стану приходить. Я совершенно искренне уверен, что OCSP не используется для отслеживания пользователей, и не будет использоваться таким образом, более того, я доверяю Apple достаточно, чтобы использовать уже существующий механизм отзыва сертификатов в том виде, в котором он находится в Big Sur прямо сейчас.
Тот факт, что он позволяет его построить, ничего не говорит о том, что таковой профиль строится и\или используется для отслеживания кого-бы или чего-бы то ни было, кроме сертификатов отозванных. «Судите еще и за изнасилование, аппарат же есть!»
Я вам предлагаю это утверждения прочитать как «выключенный SSV несовместим с включенным FileVault», потому что это так и есть. Называйте свинством, если хотите, но теперь системный раздел выведен из под FileVault, и его безопасность обеспечивается SSV, поэтому при отключенном SSV невозможно обеспечить целостность и защиту пользовательских данных, и потому FileVault вам включить и не дают.
Я искренне не понимаю, в чем проблема с тем, что «абсолютное большинство остальных программ разработаны разными разработчиками и подписаны разными сертификатами», и Apple или кто-либо еще в сети узнает, какой именно подписанный софт запускает вот этот IP-адрес? Какую персональную идентифицирующую пользователя информацию можно получить отсюда? Как эта информация вредит пользователю? Как эта информация вредит кому-либо еще? Почему она считается настолько ценной, что ради нее нужно отключить механизм, который по вашим же словам отлично работает примерно в 99% случаев?
FileVault не будет работать при отключенном SSV, это описано, например, в manpage для bputil:
-s, --disable-ssv
The Signed System Volume is a mechanism to digitally sign and verify all data from the System volume (where the primary macOS software is stored). The result is that malware cannot directly manipulate executables there in order to achieve persistent execution, or manipulate the data stored there in order to try to exploit programs. This option disables Signed System Volume integrity enforcement, to allow customers to modify the System volume. SSV cannot be disabled while FileVault is enabled. Customer modifications to the System volume are not expected to persist across software updates.
Отвратительная дрянь, а не статья, отраслевой стандарт OCSP (RFC 6960) оказался каким-то образом жуткой неотключаемой телеметрией, которую злобный Apple яростно собирает для того, чтобы PRISMу было чем заниматься в свободное от работы время. Вот этот ответ на статью гораздо более информативный и правдивый, а тут очередной раунд FUDа и «Великий и Открытый Линукс Не Собирает Телеметрию!» (и потому его разработчики ничего не знают о том, как именно используется их продукт, потому что делают его не для пользователей, а для собственного удовольствия в первую очередь, а если не нравится кому — пусть заткнется и хакает).
КГ\АМ, к переводчику претензий нет, Apple в очередной раз говно, т.к очередной культист путает хер с трамвайной ручкой.
Принципалы роняют фабрику
Вот вам документация Intel, просвещайтесь.
Procedure for Runtime Microcode Update
To load an update during runtime, software should synchronize all logical processors within the system (perform a rendezvous) to load the update in a coordinated manner.

Once all logical processors have been synchronized, one logical processor in each core should load the update while sibling logical processors wait in a spin loop of only basic instructions. Some guidelines are:

The spin loop should not contain MWAIT or HLT. PAUSE or LFENCE may be used to throttle the loop.
Software may load microcode on each core in parallel.
To help improve performance, software should check that the microcode is newer than what is already loaded immediately prior to doing the write. This may avoid redundant microcode updates, especially on processors where a microcode update also updates microcode on other cores.
You can see an example of the microcode update procedure below:
microcode_update_sync() {
    primary_thread_done = 0
    check in to MCU_GO barrier
    wait for MCU_GO barrier
    if (primary_thread_of_core) { // always true if no HT
        cpuid
        rev_id = rdmsr(0x8b).edx
        if (update_id < 0 || update_id > rev_id) {
            load_update()
        }
        primary_thread_done = 1
    } else {  // other HW threads (if they exist)
        while (primary_thread_done == 0) {
            pause //lfence is also acceptable 
        }
        cpuid
        rev_id = rdmsr(0x8b).edx
        if (update_id != rev_id &&
            (update_id < 0 || update_id > rev_id)) {
            load_update()
        }
    }
    check in to MCU_DONE barrier
    wait for MCU_DONE barrier
}
Непонятно, зачем он нужен, этот наблюдаемый сайд-эффект? И кому именно? Если счастье приносит процесс прорешивания и чтения — нет причин бороться с этим.

У не-фигни-не-ерунды нет толком определения, и если таковая хоть каким-то критериям научности удовлетворяет — можно смело заниматься. Нельзя предсказать, что в будущем понадобится, и возможно какое-то ерундовое решение простой вроде бы задачи станет через 300 лет основанием новой научной дисциплины «на стыке кибернетики и математики».

В общем, я за то, чтобы писать просто потому, что не можешь не писать, и заниматься ресерчем и распространением его результатов просто потому, что не можешь не заниматься. Назвать это наукой или ерундой — пофиг вообще, лишь бы радость приносило.
Успехи нормально, никто пока не жаловался. Опять же непонятно, что именно считать мерилом успеха: известность, количество публикаций, количество цитирований, количество приглашений на конференции, попадание в учебники, признание от коллег, получение премий, еще что-то? Главное, чтобы человеку этому самому было сухо и комфортно, потому что он там в науке свое призвание реализует, а все эти внешние атрибуты успеха — кому они нужны, на самом деле?

Я считаю, что это все уже давно наука была и есть, и языки все эти хитрые, которые вы сейчас разрабатываете — это тоже наука практически чистая.
Навскидку из педивикии: George Green, Alexandre Théophile Vandermonde, Marjorie Rice и прочие adult late bloomers. Ситуацию, когда человек проработал в индустрии, уперся там в личный потолок, взял паузу и пошел получать PhD, а затем полностью ушел в науку и больше в индустрию не возвращался — наблюдал несколько раз уже лично.

Не обязательно входить сразу в профессиональный балет, или сразу хотеть в Nature печататься. Мы видимо, под занятиями «наукой» разные вещи понимаем…
Фаундеры и все такое — это вообще разговор отдельный и очень часто не про деньги. Мне самому непонятна до конца их мотивация, поэтому рассуждать о них не готов.

Не думаю, что 35-40 — это приговор, и мозги все еще работают (мне сейчас 33, жалобы есть, но не принципиальные). Многие ученые начинали значительно позже, и добились вполне себе успехов, да и без успехов тоже не так плохо, потому что наукой эти люди все равно занимаются для себя в первую очередь.
Потому что хозяевам балагана не хочется в другой штат, наверное, их и в Калифорнии неплохо кормят, а простые рабочие дроны стерпят все, в том числе и 60-80-100 часов абьюза в неделю, которые требуются для этой вот работы под миллион. Ну его в жопу, я считаю, лучше спокойно работать 10+ лет, чем сгореть дотла за 3-5, и дальше все деньги тратить на терапию.
Пару сложно заработать, потому что налоги 40%+, т.е. заработал два миллиона за 5 лет, а остался один, но даже на один можно вполне сносно жить практически вечно (если не смущает жизнь в дешевой глуши и хранение миллиона на фондовом рынке), и дальше двигать хоть науку, хоть опенсорс, хоть еще что. Еще и на всякий консалтинг и DIY время останется.

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Инженер встраиваемых систем, Системный инженер
Ведущий