LINUX.ORG.RU

Продемонстрирована возможность разработки частей Linux на Rust

 , ,


4

9

Французский программист написал статью, в которой рассмотрел возможность переписывания ядра Linux на Rust.

В статье отмечено, что данный язык хорошо подходит для системного программирования, будучи достаточно низкоуровневым и при этом лишённым многих недостатков C, и уже используется для написания новых ОС. Однако автор не считает создание ОС с нуля перспективным для серьёзного применения, и последовательный перенос отдельных частей Linux на Rust для решения различных проблем безопасности кажется ему более целесообразным.

В качестве «Proof of Concept» была приведена реализация системного вызова, содержащая вставки на Assembler внутри unsafe-блоков. Код компилируется в объектный файл, не связанный с библиотеками и интегрируемый в ядро во время сборки. Работа производилась на основе исходного кода Linux 4.8.17.

>>> Статья



Проверено: Shaman007 ()
Последнее исправление: sudopacman (всего исправлений: 5)
Ответ на: комментарий от anonymous

Тащемто, можно провести формальную верификацию криптографических протоколов (а на языках с зависимыми типами, например, можно еще быстрее)

Проведи, кто-ж мешает.

но раст не имеет никакой подоплеки в области формальной верификации и кажется языком с прошлого тысячелетия, в котором ввели линейные типы.

Ну вот такие мы, простые люди, живём в прошлом тысячелетии.

А почему такие протоколы не используют? Я вижу заговор спецслужб.

Потому, что ты не написал :)

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Всегда считал, что это просто код для ускорения за счет встроенных аппаратных конструкций шифрования.

anonymous
()
Ответ на: комментарий от Quasar

Только умственно отсталый будет переписывать ядро ОС на Rust, так как Rust нестабильный by design.

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

Esper
()
Ответ на: комментарий от anonymous

Неправильно считал. Вручную оттюненный код на ассемблере всегда будет быстрей сгенерированного компилятором кода. А криптография должна быть очень быстрой. Это раз. Компилятор генерирует непойми что, выкидывает куски кода и тд. При этом из результирующего машинного кода можно методами атаки на побочные каналы извлекать секретные данные. Например твой браузер шифрует данные, а рядом программка считывает с биоса напряжение на процессора и на основе его изменений делает какие-то выводы о твоих данных, ну про анализ времени выполнения даже писать не буду, это уже боян. Если ты пишешь на ассемблере, у тебя хотя бы шанс есть написать код так, чтобы исключить эти атаки. Если ты пишешь на C, ты просто не контролируешь, что там в итоге получится. Т.е. логически результат будет правильный, юнит-тесты будут зелёные, но в криптографии это самое простое.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Неправильно считал. Вручную оттюненный код на ассемблере всегда будет быстрей сгенерированного компилятором кода. А криптография должна быть очень быстрой. Это раз. Компилятор генерирует непойми что, выкидывает куски кода и тд. Бла-бла-ба...

Пруфы-то, пруфы будут про SSL, написанный на асме?

anonymous
()
Ответ на: комментарий от anonymous

Вот щас читают тебя всякие веб-девелоперы, ничего кроме html и пыхопэ не пробовавшие, и преисполняются гордости - мы не быдлокодеры, быдлокодеры не мы! А пасту схоронил, хорошая паста.

LittleKawaiiNeko ★★
()
Ответ на: комментарий от RazrFalcon

Любая прога на C/C++ небезопасна по определению. Количество уязвимостей тому доказательство.

Раз уязвимостей так много - почему до сих пор все линуксовые сервера не попереломаны?

Siado ★★★★★
()
Ответ на: Объясните от Camel

Большая часть не запускающегося под Вайном, не запускается из-за всяких .Net, DirectX и омских хаков при написании софта под Вынь.

LittleKawaiiNeko ★★
()

Потренировался бы сначала на Хурде. Уже лет десять как умер.

Stalin ★★★★★
()

I do not write code for a living. Nor do I study computer science in university. And you know why this is great? Because it allows me to code completely stupid and useless things without anybody being on my back to tell me I shouldn’t. And what I am about to talk is precisely one of these codes…

и вы серьезно думаете, что это тянет на новость на главной ?

kto_tama ★★★★★
()
Ответ на: комментарий от anonymous

Я выше скидывал ссылки на криптографию из openssl/boringssl, там для всех часто используемых алгоритмов есть реализации на ассемблере под популярные платформы.

Если ты именно про реализацию протокола TLS, а не про саму криптографию, её можно и на Rust-е написать. Вроде 2 или 3 проекта есть. Проблема криптографических библиотек в том, что доверие есть только к тем, которые анализировали многие люди. Ставки слишком высоки. Местечковая библиотека на Rust-е хоть теоретически и может быть лучше, но практически все будут использовать какой-нибудь BoringSSL, просто потому, что это гугл и там всё засмотрено до дыр, хоть и на C.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

Ужас. Тем не менее, большая часть там на сишке, о чём и речь.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от mersinvald

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

Ну да. А еще проще будет оставить все как есть. Ведь оно уже «готовенькое и отлаженное»?

segfault ★★★★★
()
Ответ на: комментарий от RazrFalcon

Новости почитайте.

Книжки почитайте

Siado ★★★★★
()

Разработчики каждого нового языка намереваются переписать на нём чуть ли не всю вселенную, а ограничиваются максимум компилятором себя. Ядро необходимо переписать на проверенном временем, используемом огромным сообществом профессиональных программистов языке JavaScript. Темпы внесения полезных новшеств в ядро резко возрастут. Положительный опыт использования node.js в systemd это подтверждает. Для начала необходимо встроить интерпретатор в тот-же grub. Если взлетит, обязать производителей встраивать интерпретатор JavaScript в BIOS.

anonymous
()
Ответ на: комментарий от Legioner

У Мозиллы состояние прекрасное как никогда.

Настолько прекрасное, что даже Firefox приходится переводить на чужие технологии, ага.

Quasar ★★★★★
()
Ответ на: комментарий от Legioner

Я выше скидывал ссылки на криптографию из openssl/boringssl, там для всех часто используемых алгоритмов есть реализации на ассемблере под популярные платформы.

Ты гуманитарий? Скажи имена файлов и функций. «Выше» значит «нигде».

Если ты именно про реализацию протокола TLS, а не про саму криптографию, её можно и на Rust-е написать. Вроде 2 или 3 проекта есть. Проблема криптографических библиотек в том, что доверие есть только к тем, которые анализировали многие люди.

Себе-то не ври. В этой сфере гугл никак не авторитет, а скорее антиреклама. Будут готовые проекты, и если они действительно будут годны, кто-нибудь из команды OpenBSD даст положительную оценку - взлетят проекты ракетой вверх. Но результатов пока нет. Вот такие-никакие успехи у руста.

anonymous
()
Ответ на: комментарий от nezamudich

В 70-е и 80-е годы была совсем другая ситуация. Как по железу, так и по языкам программирования.

Quasar ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Я вот чего не понял, в принципе, ведь можно взять любой компилируемый язык и что-то переписать на нём. Да хоть бы и всё ядро гипотетически. Например на FreePascal, в чём тогда новость?

Новость в том что современные лоровцы, взращенные на python, lua и прочих JS, открыли для себя мир компилируемых языков.

segfault ★★★★★
()
Последнее исправление: segfault (всего исправлений: 1)
Ответ на: комментарий от LittleKawaiiNeko

Вот щас читают тебя всякие веб-девелоперы, ничего кроме html и пыхопэ не пробовавшие, и преисполняются гордости - мы не быдлокодеры, быдлокодеры не мы! А пасту схоронил, хорошая паста.

Пыхаписты обычно, в отличие от сишников, прекрасно осознают, что они быдлокодеры и ни на что особо не претендуют.

anonymous
()
Ответ на: комментарий от kirill_rrr

Так память то компилятор выделяет, а не программер.

Скажем так - утверждение неполное, а потому не совсем корректное. Программер просит и компилятор выделяет (точнее - резервирует) память для статических объектов (по крайней мере в C и C++). Для динамических объектов программер просит и память выделяет (точнее - пытается выделить) ОС (грубо говоря).

TI_Eugene ★★
()
Ответ на: комментарий от spec_po_kiskam

Нит это у тибя батурдинав лалка

anonymous
()

Французский программист написал статью...

при этом лишённым многих недостатков C

Это он ещё не видел компилятор Си под Эльбрус.

devilinside
()
Ответ на: комментарий от prox

А что с ним?

То, что сможет скомпилиться под любым сишным компилятором, не скомпилится под эльбрусным, потому, что он начнёт тыкать программиста в код, утверждая, что пол кода тут не безопасно, память сворует грабитель и вообще ты быдло, а не программист.

devilinside
()
Ответ на: комментарий от prox

Ну, если он обоснованно это делает, то это хорошо

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

Эльбрусы в массы!

devilinside
()

Хорошая новость, годная. Видно, что Rust и Redox двигаются в верном направлении со своим микроядром. А видно это по температуре воздуха нагретого анусной тягой большинства комментирующих.

Martein
()
Ответ на: комментарий от Martein

Тормозное микроядро без формальной верификации с устаревшей концепцией url. Отлично. чего.

anonymous
()
Ответ на: комментарий от Legioner

А криптография должна быть очень быстрой.

Поэтому появились специальные инструкции в cpu.

Со всем остальным оно конечно так, но на асме это чудить никто не хочет в том числе и дядко djb https://groups.google.com/forum/m/#!msg/boring-crypto/48qa1kWignU/o8GGp2K1DAAJ

anonymous
()
Ответ на: комментарий от Latynyna

Вы пологаете сейчас 12309 еще не достаточно стабильна?

anonymous
()
Ответ на: комментарий от anonymous

Поэтому появились специальные инструкции в cpu.

Только для AES, который уже в общем-то потихоньку устаревает. Современные шифры работают быстрее даже этого AES-а. Посмотри в тот же OpenSSL, там практически для всех популярных шифров и архитектур есть ассемблер.

Со всем остальным оно конечно так, но на асме это чудить никто не хочет в том числе и дядко djb https://groups.google.com/forum/m/#!msg/boring-crypto/48qa1kWignU/o8GGp2K1DAAJ

Ну сделать из компилятора C макроассемблер (точнее вернуть его на 30 лет назад) можно, но это решит вопрос только с предсказуемостью. Дядьке DJB на асме может быть лень писать, но когда у гугла встаёт вопрос — покупать 10 000 серверов или переписать на асме и купить 8500, они таки перепишут. Тем более, что такой boring c compiler явно не будет блистать производительностью. Но хз, это моё дилетантское мнение.

Legioner ★★★★★
()
Ответ на: комментарий от RazrFalcon

Как минимум, хардварные инструкции никакой компилятор генерить никогда не будет. Но так у Heartbleed проблема была совсем не в ассемблерной части, а как раз в месте, где была чистая сишка.

anonymous
()
Ответ на: комментарий от Legioner

DJB ахеренный говнокодер. пруф - его Constant Database.

ckotinko ☆☆☆
()
Ответ на: комментарий от anonymous

в проекте unikernel Mirage OS написали же свой SSL на Ocaml, да и tcp/ip протокол там реализован из DSL с RFC ascii-графикой (модули как функторы, DSL как функции высшего порядка, ну и т.п.)

можно 1-в-один на ржавчину с ocaml переложить.

anonymous
()
Ответ на: комментарий от kirill_rrr

что придётся написать весь код с нуля

только низкороуровневый, остальной придется отлько перекомпилировать

да и переписывать придется не совсем с нуля-то, я бы это скорее назвал портирование

actionless ★★★★★
()
Ответ на: комментарий от Quasar

Вот как по-вашему, проект FreeBSD можно отнести к академическим?

Infra_HDC ★★★★★
()
Ответ на: комментарий от Legioner

считывает с биоса напряжение на процессора и на основе его изменений делает какие-то выводы о твоих данных

Ох уж эти параноики.

anonymous
()
Ответ на: комментарий от prox

Для этого есть статические анализаторы. Компилятор должен работать по стандарту.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.