Bite the Byte @bitethebyte Channel on Telegram

Bite the Byte

@bitethebyte


Соловйов здорової людини!

🌐solovyov.net
🐦twitter.com/asolovyov
🔴youtube.com/asolovyov

Архів каналу: solovyov.net/channel

Без реклами

Bite the Byte (Ukrainian)

Привіт, шановні читачі! Сьогодні ми хочемо представити вам канал з назвою "Bite the Byte". Цей канал зареєстрований під ім'ям користувача @bitethebyte. Якщо ви шукаєте джерело інформації про здоровий спосіб життя, то вам точно потрібно відвідати цей канал. Власник каналу пропонує вам відірватися від щоденних проблем та зануритися у світ корисних порад та рекомендацій. Заходьте на сайт solovyov.net, слідкуйте за автором каналу на Twitter за посиланням twitter.com/asolovyov, а також переглядайте відео на YouTube каналі youtube.com/asolovyov. Весь архів каналу також доступний за посиланням solovyov.net/channel. Не пропустіть можливість отримати корисні поради без реклами! Підписуйтесь на канал "Bite the Byte" вже сьогодні!

Bite the Byte

22 Nov, 07:57


А давайте за газлайтерів поговоримо? 😁

Минулого тижня Монобанк присилає нотіфікашечку, де каже “ой, а в нас тепер є Visa, можеш перевипустити картку на неї, це ж так прикольно буде!” Подумав, що може Віза бюджет на маркетинг їм якийсь дуже кльовий дала?.. Ну да ладно, мені воно не тре, я тіки півроку тому перевипустив свою картку, навіть номер залишив той самий — і все одно ж наївся гемору з оновленням даних всюди.

Кілька днів по тому нова нотифікашка “ну перевипусти на Візу, а то ми на Мастер не зможемо нараховувати кешбек!” Ого, думаю, це трохи інша ситуація. Я з кешбеком більше не граюся, бо впадло, але в середньому ситуація ж напевно не така, і виглядає трошки серйозніше, аніж просто гроші на рекламу. Ну поверх зображення картки з’явився напис “Перевипустити”, уф, оце жесть, прям дуже пушать.

А в понеділок друг пише: “прикинь, натиснув на той напис почитать, що за умови тощо, а воно сходу перевипустило картку, без підтверджень, без нічого”. Розумію, робили в паніці, але ж а якщо людина десь посеред ніхера і ви її тіки шо лишили пластику і грошей просто миттєво? Ну молодці! Пообговорювали ще, і там в якомусь місці вони пояснюють, що мастери не тільки перестануть отримувати кешбек з 25 листопада, а й взагалі перестануть працювати з 1 січня. Вау, це щось прям серйозно відбувається!

Але людина хоч натиснула цю кнопку своїми руками, може й недостатньо свідомо, але якесь виправдання є. А тут я у вівторок тикаю на кнопочку донейту у Donate1024 (рекомендую, доречі), відкривається апка Монобанку із сторінкою “благаю тебе, перевипусти картку на Візу!” Ну а шо я, зайнята дуже людина (от тільки зараз добрався пост написать), потім якось займуся, і тикаю на хрестик закриття того скріна. З’являється екран переказу грошів на донейт, я їх відправляю, виходжу на головний екран і бачу своїми очами напис ПЕРЕВИПУЩЕНА.

Сказать що я здивувався - це нічо не сказать. Я думаю, що може навіть кілька нецензурних слов використав вголос. 😁

Нашо я стіки написав: панове Монобанк, газлайтінг — це відстій. Якщо ви поругалися з мастером наглухо, не треба мені продавати Візу, я розумію, бувають складні ситуації, скажіть мені про це чесно. Щось типу “вибачте будь ласка, у нас жопа, ми потребуємо вашого розуміння і підтримки, але мастер здохне через півтора місяці, перевипустіть картку за цей час, щоб ми могли продовжувати працювати”. Або що там насправді всередині. Мені це буде коштувати якоїсь незручності, але у всіх бувають пройоби і я не збираюся вас через це покинути чи ще щось — але я дуже не люблю, коли мене обманюють.

Ви так багато правильних рішень приймали. Будь ласка, не треба в наші відносити приносити булщіт. А ще давайте потроху виправляйте новий інтерфейс. 😁

Bite the Byte

07 Nov, 08:10


Новини світового єкомерсу! 😁 За останні пару років з’явився і виріс маркетплейс Temu, який ну прям дико дешевий. Дешевий він кількома способами: по-перше, вони відправляють з Китаю до США (США цікаве як ринок, на який вони в першу чергу намагаються зайти) так, щоб попасти до 800$, які ще не оподатковуються. По-друге, вони щімлять мерчантів, так, щоб ціни були обов’язково нижчі, аніж на такий самий товар на Аліекспресі (хз нашо мерчантам на це погоджуватися, це ж новий гравець, чому ви їм допомагаєте?… не певен). По-третє, Wired каже, що на кожному замовленні в середньому Temu втрачає 30$ — якісь абсолютно безумні гроші.

Очевидно, що історія схожа з підходом китайський автовиробників: вкидуємо дикі гроші, аби зайти на ринок і знищити місцеву конкуренцію, а потім ці гроші повернуться. Імхо, з цим треба щось робити, бо це тупо рейдерство, але цікаво інше!

Чуваки знаходять одного продавця на Амазоні і на Тему, замовляють і там, і там: на Амазоні виходить 90$, а на Тему — 16$. Амазонівська посилка приїжджає на наступний день і нею можна користуватися, а з Тему приїжджає за три тижні і її можна повернути на Амазон — бо товар-то один і той самий. Double strike по китайських інвестиціях! 🤣

Bite the Byte

31 Oct, 13:21


Подивився тут фантастичну абсолютно демку, де пан Альберт демонструє, які неймовірні можливості можна мати з інтерактивним оточенням розробника. Він у кінці відео каже, що в нього жодних оригінальних ідей в демці нема (ну, може окрім їх комбінування), але це взагалі неважливо: для мене більшість з них була новою і доволі свіжою, а їх комбінація — це взагалі.

Нажаль, що воно — просто демка, але яка ж красива!

Bite the Byte

24 Oct, 08:24


Панове, ви шось сидите на своїх 5 точках рівно, а Метабейз несамовито наймає. Ми чергу резюме бекендщиків вже привели в нормальний стан, а у фронтендщиків майже, тому будь ласка, якщо ви шукаєте роботу, або думали шукати — велкам. Воно складне — що співбесіда непроста, що код теж буде челленджити (не стільки завдяки легасі, скільки через доменну область), але ж це й треба, вірно?

Для бекенду досвід на кложі не вимагається, але очевидно треба мати хоча б бажання, бо бекенд весь повністю на кложі. Для фронтенду, я думаю, досвід із Реактом потрібен, бо це простіше вимагати.

Одразу попереджаю, якщо ви пару років як почали програмувати і нема як продемонструвати, шо результати розривають, то шансів не дуже багато, нажаль. І загалом співбесіди нетривіальні, хоча й фанові — через це середній вік розробників в Метабейзі помітно за 30 років. 😁 Це я не відпугнути намагаюся, а заманити, насправді. 🤣

Комунікація більше орієнтована на писемний стиль, аніж на зустрічі, ментально переїжджати в часову зону США не треба, зустрічей в тиждень у програміста зазвичай мало, продакти дуже круті і дуже технічні. І весь продукт - open source! Велкам. :)

Bite the Byte

23 Oct, 06:00


Монобанк релізнув (тільки у новому інтерфейсі, правда) маркетплейс. Поки що дуже рудіментарний — три магазини, мало товарів, не дуже кльовий пошук, каталогу поки що нема, але вже рапортують більше 20к замовлень (це я так інтерполюю, ггг). Що заважало стільки замовлень людям приносити напряму до того самого Moyo? Напевно, відсутність Живчика. 😁

Цікаво, що зовнішньо виглядає абсолютно по тому самому рецепту, що й маркетплейс у Приваті — наче і зрозуміло, але якось і різноманіття хочеться, придумайте щось нове? 😁

Я наразі бачу дві серйозні різниці — Монобанк значно менше захаращений фічами відносно Привата і тому “Маркет” буквально легше побачити, плюс — він (Монобанк) банально модний. Не варто, авжеж, недооцінювати дистрибуцію, і на модності самого Монобанку якась аудиторія скоріш за все складеться і в їх маркетплейса. Але треба щось цікаве робити, бо ринок-то не пустий. 😁

Bite the Byte

11 Oct, 07:08


Я шось думав над інтро і якась фігня виходить, тому просто йдіть дивіться новий 1-2-3 Techno, із Сергієм Ковалем. Інтро, як ми познайомилися 22 роки тому, є всередині, не буду повторюватися. 😁

По назві відео і позавчорашньому посту може здатися, що це заплановано, але ні, це неймовірний збіг обставин. Або просто консистентність у підходах. 🤣

Bite the Byte

09 Oct, 10:11


Вчора прогулювався по вулиці і натрапив на випуск “Опівночних Балачок” про Golang Madness, про те, як в Го погано. Я люблю пнути Го як і будь-який інший свідомий не-луддит (вибачте, панове гограмісти, ви самі обрали своє життя), але… претензії якось такі поверхневі, що я образився за мову.

Чесне слово, fmt - погане скорочення? Ви взагалі C бачили? Чи очікуєте від старих сішників (буквально старих, наймолодшому із лідів проєкта — Робу Пайку — на момент релізу було 55 років), що вони почнуть давати назви на кшталт SingletonBuilderFactory та beginGeneratingDeviceOrientationNotifications? Чи може ти просто любиш Пайтон, який прям “золота середина”, за .format(), що не помічаєш import sys? 😁

Короч, більшість претензій рівня “в пайтоні індентація впливає на виконання” або “в ліспах скобка перед назвою функції”, дуже поверхнево. Соромно, пацани! І трохи смішно за переживання, що масив — обмеженої довжини. А як інакше, якщо ти хоч бути ефективною не-високорівневою мовою програмування?

Ладно, за згадку про абсолютно тупий підхід до форматування дат — не соромно. Я пам’ятаю в мене був іспанський сором за цю херню ще коли я перший раз з кимось Го обговорював в 2010 році, і нікуди воно не поділося. Замість використати сішну %d.%m.%y або джавну dd.MM.yy, вони вигадали нову неймовірну схему із використанням реальної дати як приклада (Jan 1 03:04:05 2006 GMT+7). Про це можна сказати дві речі: по-перше, використання реальних даних як мови для опису даних - відстій. Помилися в тих даних і напиши там 2024 — і не помітиш, і всюди буде 2024. По-друге, це теж поверхнева проблема, тому що strftime є як ліба і все, забудь про свої проблеми.

От спосіб хендлити помилки нікуди не дівся і він досі абсолютно кончаний. Погано в ньому і те, що if err ≠ nil захламляє код, і те, що він абсолютно неструктурний: errors.New(string) приймає рядок, який потім шо, як в коді визначити, яка це саме помилка? Так, ти сам собі можеш організувати структурні помилки, але в бібліотеках, які ти використовуєш, їх не буде, бо це не системна тема, і знач треба шо, в рядок дивитися? Як гограмісти вирішують як хендлити помилку — я не знаю. В джаві є різні типи в помилок, в кложі кожна помилка — несе структуровані дані, всі інструменти для роботи з цим є. Го? такоє…

Але є більша проблема, а саме — неструктурована конкаренсі. Коли ти відкриваєш новий проєкт, в якому насобачили каналів і обробки цих каналів, а канали передають кудись невідомо куди (найкращий варіант — канал каналів), то знайти, хто тобі прислав ці дані — іноді дуже важко. Авжеж, можна тримати себе в руках і не передавати канали занадто глибоко (або робити очевидним, що ти робиш), але хто це себе в руках буде тримати?

Короч, те що конкаренсі в Го дуже легко робиться — це плюс, на відміну від інших мов — змушує всіх навчитися цим користуватися. Те, як воно зроблене, і те, що нічого ніхто не змінює і не покращує — це мінус. Ви можете спитати, а де краще? В Джаві краще, авжеж, всі ці ThreadPoolExecutor’и — це і є структурна конкаренсі. Писать не дуже зручно, трохи багатословно, але для того і придумали Кложу, щоб JVM було приємніше користуватися.

Висновки які взагалі? Го — прекрасна мова для написання невеликих програм, де не треба особливої бізнес-логіки, бо вона губиться за всіма if err'ами: консольні утіліти там, якісь невеличкі мікросервіси тощо. А для серйозної роботи є Clojure. ☝️

Bite the Byte

04 Oct, 08:06


Дірява телега

Телеграм ламають як дурний. Приходить тобі лінка від когось з контактів “проголосуй за мою донечку” чи ще якась лабудень, клацаєш — і в тебе крадуть аккаунт. Викидають всі твої сесії, і навіть якщо ти логінишся з підтвердженням телефону — телеграм вважає, що сессія нова і не дає викинути взломщиків. А вони через секунду-другу, схоже, в циклі перевіряють, які є сесії, і викидають тебе. Дочекатися поки твоя сессія “подорослішає” не виходить.

А через кілька днів, напевно коли вони всім твоїм контактам відправлять спаму, вони забивають на цей акаунт, то можна залогінитися, дочекатися “дорослішання” і викинуть їх сесію.

Фантастичний юзкейс, правда? Телеграм, очевидно, робить з цим абсолютно нічого — сапорта ніякого нема, зробити нічого не можливо, твій акаунт не твій і взагалі йди в дупу. Встановлення пароля, я так розумію, допомагає від цього, але хто з людей, які клацають на раптову “проголосуй” його встановив?.. Хоча я оце думаю, що я б на якийсь bitly без передперегляду і з описом “блін, заціни шо постгрес творить” і сам би натиснув без проблем 🤣

Що в цій всій історії цікаво — це власне як вони акаунт крадуть? Я не розумію, яким чином натиснення на посилання дозволяє забрати акаунт в телеграмі? Ну це якось тупо, що це взагалі можливо? Візьміть може та й закрийте цю діру?

Ладно б це було щось супер-нове, так ні ж, кілька місяців вже відбувається. Пане Павєл, ну що за бардак у вас тут? 🙄

Bite the Byte

06 Sep, 08:02


Забувсі написать, але я тут сходив на подкаст fwdays! Теми відносно для мене звичайні, мікросервіси/моноліти, AWS vs залізо, я думаю що мою думку ви всі знаєте, але обговорення вийшло непоганим. :)

P.S. Куди б ще сходити? Покличьте мене! 😁

Bite the Byte

30 Aug, 10:44


Прочитав кльову статтю про величезні преси, супер-цікаво. Історія про те, як німцям прийшлося робити преси на 20000 тон тиску і більше, через це в них були кращі можливості будувати літачки. А коли США після війни витратили майже 4 млрд доларів (в теперішніх грошах) на програму по їх побудові, вони одразу окупилися на здешевінні при виробництві B-52.

Більше того, пишуть, що якби не такі неймовірні преси (а вони висотою по кілька десятків метрів), то літаків із баками в крилах просто фізично не було б.

А тема продовжилася, коли Тесла замість збирання підрамників побудувала собі гіга-машину для відливання цілого підрамника за раз — економлячі на цьому купу грошей.

Короч, цікава стаття. І змушує в черговий раз задуматися, як же ж заплетена (будь-яка) індустрія — уряд (ну, військові) США ледве вмовив компанії будувати ці преси, бо боялися, що не буде достатньо попиту.

Bite the Byte

29 Aug, 07:23


Лок-файли (yarn.lock, poetry.lock тощо) виглядають такою зайвою ідеєю, просто не можу змиритися з їх існуванням. Треба оновити пакет, редагую package.json, пишу туди ”@slack/web-api”: “^6.12.1”, відправляю на CI, все здихає. Здихає, авжеж, бо там yarn --frozen-lockfile використовується, тобто типу “не оновлюй локфайл під час CI”. Логічно, логічно.

Не логічно тільки те, що він існує. Чому жаба змогла 20 років назад просто написати версії в pom.xml, а всі інші не змогли і тепер придумують файли з версіями залежностей поруч з файлом з приблизними версіями залежностей? Всі ці системи (жс, пайтон, го як мінімум) з’явилися після Мавена, що їм заважало просто вивчити prior art?

Ладно .deb стрьомний всередині, так він перший був, фактично — і RPM вже значно простіший, об’єктивно: вочевидь люди вчилися одне в одного. А з системами залежностей в програмувані якийсь кошмар. Не знаю, чи новий підхід до пайтона (маю на увазі uv etc) виправить ситуацію, бо вона найгірша з усіх… але не заздрю всім користувачам поцоватих рішень (десятиріччями поцоватих, доречі, ось що вражає).

P.S. Всіх хто не вважає що існування лок-файлу — тупня, оголошую носіями стокгольмського синдрому. 😁

Bite the Byte

15 Aug, 07:49


Оу, завтикав вчора написати, але ж новий випуск 1-2-3 Techno, з Юрою Ткаченко! Трохи про те, як технарі прозрівають з того що реальний світ працює ще менш надійно, аніж компи, трохи про нормальні технічні теми, не буду спойлити. 😁

Bite the Byte

11 Aug, 05:15


Додивився подкаст Марка Андрісена і Бена Горовіца про створення графічного браузера (Mosaic, а потім Netscape) — я в принципі непогано знаю цю історію загалом, але деталі прям ну дуже цікаві, рекомендую. :) Але кілька моментів ретроспективно взагалі не очевидні.

Всі браузери на початку, в тому числі і перший, Тіма Бернерса-Лі (хоч і був створений на NeXTcube — який коштував $8k, тобто $19k в сучасних грошах), були текстовими: комп’ютери повільні, доступ в інтернет і того повільніший. Марк в той же момент працював в NCSA, де суперкомп’ютери і робочі станції SGI ($50k+ в грошах 92 року), і який був одним з головних вузлів інтернету — і там здавалося, що все стане швидким і графічним, і тому вони могли ментально собі дозволити робити графічний браузер. Я інтернет вперше побачив в середині 90-х, і це був IE 3, і тому lynx (який з’явився ще у 92, тобто до Мозаїки) здавався своєрідним жартом. 😁

Після універу — де створення браузеру було причиною прогулювати пари — Марк, як і всі нормальні люди, знайшов собі роботу і пішов програмувати. :) Знайшов, додавши оголошення, що шукає роботу, в About Мозаїки. 🤣 Трохи пізніше завдяки цьому оголошенню його познайомили з Джимом Кларком — якого якраз видавили із SGI. А Джим, я так думаю, шукав, як би вже купити яхту. 😁

Ідея створити комерційний браузер взагалі не була очевидною. Вони (Джим та Марк) спочатку рахували онлайн відео, потім думали зробити онлайн-сервіс для Нінтендо, потім ще якусь хрінь. Тобто думали над прикладними речами, не над інфраструктурою — але воно вочевидь не складалося, бо інфраструктура ще не була готова.

MSIE почався як ліцензія браузера компанії Spyglass, який, в свою чергу, почався як ліцензія NCSA Mosaic. Марк в подкасті кілька разів згадує відкритість Мозаїки, але це ж початок 90-х, опенсорс ще не дуже розвинений був, тому насправді це була пропрієтарна програма з опублікованим кодом. Вікіпедія ще каже, що Spyglass написали все з нуля, бо Мозаїку писали дикі студенти, її версії для різних ОС мали різний код і не завжди були сумісні, і взагалі. :)

Короч, цікава історія, все могло піти зовсім не тим шляхом.

Bite the Byte

05 Aug, 11:30


‍У Stack Overflow вийшов звіт по їх щорічному опиту розробників, і українські розробники на 5 місці по кількості відповідей. Зрозуміло, що це більшою частиною про активність, а не тільки кількість - але ж це і є круто! :)

Bite the Byte

29 Jul, 07:37


‍А давайте обговоримо CrowdStrike? 😁

Коротка версія того що сталося: купа бізнесів у всьому світу півтори тижні тому перестала працювати через BSoD, через софт для ідентифікації зламів! CrowdStrike, який працює як драйвер, на рівні ядра, викачав чергове оновлення баз, і почав на цьому здихати. В принципі, вони могли й сам драйвер так само оновлювати — нічого не вказує на те, що це було б чимось краще. :)

Найгірше те, що для спасіння кожен комп’ютер треба перегрузити руками у safe mode, і видалити .sys-файл. Фізичний доступ потрібен, короче, компанії з контракторами з Індії трошки в паніці. 😁

Ну й тут є два цікавих вектори: перший очевидний, про технології — в тебе така величезна відповідальність, а оновлення розкатуються одразу по всіх? Клауд Метабейза, малюсенької компанії в не-business-critical індустрії, і той обережніше оновлюють (протягом 3 днів). Тестування нікуди не годиться теж, як провтик такого левела (це ж не 1% користувачів постраждав) взагалі міг релізнутися? Дуже свіжа атака була, да? Добре, а чому взагалі код читання має таку дитячу помилку? Ниття про п’ятницю, доречі, нерелевантне, бо проблема почалася у четвер навіть по часу Каліфорнії.

Короче технічно це лажа на такій кількості рівнів, що боляче дивитися. Cybersecurity my ass, тупо якийсь гербалайф.

Але погляд з іншої сторони мені взагалі не подобається. Майже всі постраждавші бізнеси — з регульованих індустрій: авіаперевезення, фінанси, лікарні тощо. Фактично КраудСтрайк монополіст (виглядає так, я не знаю) цього ринку — простіше заплатити їм гроші, аніж доказувати регулятору, що ти не ішак. Це як з AWS і PCI-DSS — сертифікатор ставить галочку, якщо ти в AWS, або доказуй, що в тебе достатня захищенність.

Так от, в нас є монополія, від гербалайфу — компанії, яка не дуже може довести свою корисність (тобто отримати користувачів від нерегульованих індустрій). CEO цієї компанії відомий тим, що в час його бутності CTO McAfee вони випустили апдейт, який одномоментно вбив більше компів з Windows XP, ніж будь-який вірус. 🤣 Апдейт вилітає централізовано, абсолютно без будь-яких перевірок, і вбиває бізнес-активність величезної частки економіки більше аніж на день (моєму колезі відмінили суботній рейс через краудстрайк)…

Я тут навіть не намагаюся піти у конспірологію! Знаєте як вмерли всі цивілізації бронзової епохи? Вони працювали трохи як комунізм: централізовані палаци, куди стікалися всі добутки цивілізації (їжа, горщики, зброя, що там ще) — і потім розподілялися по людях. Без грошей, ринку тощо, і, здається, доволі непогано працювали. Аж допоки збіг критичних обставин — посуха, виснаження землі, зростання населення тощо — не призвели до загального колапсу дуже вже складної централізованної системи. Це була катастрофа гірша за розвал Західної Римської імперії.

Так от, CrowdStrike мені здається як ластівка можливих проблем. Дуже централізована система, мінімальна криза — і загальний колапс на два дні. Я не пропоную авіалініям перемикаться на використання блокчейна швиденько, але, здається, якусь адекватну реакцію побачити було б непогано.

Бо на сам CrowdStrike надії мало. Він за участь у рішенні проблеми своїм співробітникам і партнерам видав ваучери на $10 на UberEats. 🤣

Bite the Byte

21 Jun, 08:08


Як ви там, чекали новий випуск 1-2-3 Techno? 😁 Дмитро дуже крутий чувак, вражає сфокусованістю і різноплановістю, тому і поговорити цікаво було. :)

Bite the Byte

14 Jun, 07:39


Apple PCC

Я тут розгриз блог-пост про епловський Private Cloud Compute, і, чесно кажучи, підхід до проблеми вражає. Якщо ви не в темі — Епл робить сервіс для свого Apple Intelligence (отут я ржу капець), і щоб все було дуже приватно і сек'юрно. Але ж якщо просто зробити сек’юрний та приватний сервіс, як це довести? Є кілька проблем з доведенням цього факту:

• Конфігурацію сервера складно верифікувати зовні
• Визначити, який софт відповідає в якості сервісу, складно
• Що робити з адмінами, які можуть все споганити?

Вони використовують купу рішень, і вже існуючих, і нових, для того, щоб це забезпечити. Напишу все списком, бо так багато, що в тексті я сам почав заплутуватися:

1. Сильно звужений ланцюжок постачальників, щоби влізти в нього було дорожче і це було легше поміти.

2. Кожен сервер перед закриванням фоткається з високою роздільністю.

3. Коли сервер прибуває в датацентр, “we perform extensive revalidation” перед встановленням.

4. Для завантаження використовується Secure Boot, який завантажує тільки підписаний софт.

5. Інсталяція софта залишає записи десь? Це я так зрозумів фразу “approved for that specific PCC node”.

6. Що цікавіше, використовується Secure Enclave — так само як в айфонах. Забезпечує сек’юрність і незмінність розділу, де зберігається ОС та моделі. Стежить, щоби завантажений код неможливо було змінити чи підмінити під час виконання. Забороняє JIT, щоб новий код не виникав сам по собі.

7. Операційна система — це власне обрізана iOS/macOS, зі значно зменшеною поверхнею для атаки: наприклад, там немає ні ssh, ні будь-яких інших засобів віддаленого керування.

8. Увесь (новий) код написан на Swift’і, щоби не було питань із безпекою доступу до пам’яті.

9. Під час кожного завантаження Secure Enclave генерує новий випадковий ключ для шифрування диску (на який попадають користувацькі дані) і не зберігає цей ключ нікуди. Таким чином можна бути певним, що після перезавантаження дані на диску прочитати буде неможливо.

10. Окрім цього, кожен процес виконується у sandbox’і, з увімкненим Pointer Authentication Codes — це система, яка заважає підмінювати адреси функцій і адреси повернення (тобто крек для фотошопу в такому середовищі не спрацює 😁).

11. Після виконання дані стираються, а пам’ять, яка використовувалася для їх обробки, періодично очищається — щоб не залишалося якихось обривків тих самих даних.

12. Очевидно, e2e шифрування зробити неможливо — бо сервісу потрібно мати доступ до власне даних. Але кожен запис шифрується публічними (верифікованими під час виконання айфоном) ключами ноди PCC — таким чином жодна прокся/балансувальник їх прочитати не можуть. [Це вони https описали чи шо? Трохи не вистачає порівнянь із загально прийнятими практиками]

13. Всі запити проходять через незалежну OHTTP проксю, щоби епловські ноди не знали, від кого цей запит.

14. Ключі, доречі, не одні на всіх — перед власне запитом клієнт отримує від балансувальника вказівку, куди робити запит. Балансувальник при тому нічого не знає ні про клієнта, ні про характер його запиту — тому не може направляти упереджено.

15. Нагадаю, немає ssh чи ще чогось типу RDP — підписування коду і Secure Enclave теж завадили би запуску зайвого коду, але інтерактивний шел давав би значно більшу поверхню для атак на систему.

16. Інструментарій для спостереження за системою теж дуже обмежений. Скажімо, логи, які покидають машину, задаються заздалегідь, і проходять кілька рівнів незалежного рев’ю для апруву — де стежать, щоби в них не попадали користувацькі дані.

17. Кожен реліз софта для PCC публічний! Бінарна збірка мається на увазі, не джерельний код.

18. Клієнти шифрують свої запити за допомогою тільки тих сертифікатів, наявність яких можна перевірити у спеціальному публічному реєстрі релізів PCC.

Доповнюйте, якщо щось забув (або формулювання невдале) — пост трохи перенасичений повторенням одного і того самого з різних боків, тому я вже почав губитися і не певен, чи все цікаве перерахував. Але, як я вже сказав, масштабність підходу вражає.