vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Похоже, что желание создать нормальное Free Software, в смысле, такое, которое пользователь действительно свободен модифицировать, потому что способен понять, таки начинает у народа возникать.

Вот, например, Tomb, юзер-френдли инструмент для создания криптованных дисков, написанный на shell. Под лозунгом complexity hides insecurity.

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

Но в общем и целом подход вполне заслуживает внимания.

Date: 2015-07-25 07:45 am (UTC)
From: [identity profile] mc6312.livejournal.com
> И именно поэтому код на нем получается компактным и обозримым.

Угу, и состоит из вызовов внутренностей *sh (писанных скорее всего на сях) и внешних программ, писанных на черт знает чём. Т.е. просто заметание мусора под ковёр.

Date: 2015-07-25 09:35 am (UTC)
From: [identity profile] cross-join.livejournal.com
Безопасность - это компромисс между языковыми возможностями и умелыми руками.
К концу прошлого века эти компромиссы оформились в виде Ады и Оберона.

Date: 2015-07-25 10:15 am (UTC)
From: [identity profile] max630.livejournal.com
По-моему, шелл в части безопасности хуже чем даже C, проблемы которого легко обойти, и автоматически проконтролировать что нигде ничего не упущено. Вообще безопасность в первую очередь зависит от того что можно чегко увидеть что делает код и быть уверенным что он делает именно это всегда. С C по моим ощущениям большинство уязвимостей связано с переполнением целых, и это как раз то место где он ведёт себя неочевидно. Шелл же ведёт себя неочевидно примерно везде. Вот там printf в коде. Вы насколько уверены что он именно напечатает строку, а не пошлёт пароль рута в интернет?

Ещё хорошо что они bash не использовали, тот вообще до недавнего времени выполнял произвольные команды из окружения при запуске, да и сейчас механизм импорта функций из окружения такой что в общем случае вообще ничего нельзя передавать из пользовательского ввода, потому что любая переменная может оказаться с тем же именем что и используемая в скрипте команда. Но и zsh тоже такой комбайн что не удивлюсь что там что-то найдётся.

Date: 2015-07-25 12:13 pm (UTC)
From: [identity profile] qkowlew.livejournal.com
С C по моим ощущениям большинство уязвимостей связано с переполнением целых, и это как раз то место где он ведёт себя неочевидно

facepalm.jpg

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

Порождены и упомянутый Вами, и эти спецэффекты именно низкоуровневостью изначальной архитектуры и нежелании (на начальных этапах существования языка) потратить на средства контроля хоть копейку имеющихся ресурсов КАК на этапе исполнения, ТАК и на этапе компиляции.

Зато мне неоднократно удавалось написать содержательный код на Си, который компилировался в не менее эффективную программу, нежели тот же самый алгоритм, реализованный на ассемблере той же машины.

Date: 2015-07-25 02:32 pm (UTC)
From: [personal profile] leotsarev
Зато мне неоднократно удавалось написать содержательный код на Си, который компилировался в не менее эффективную программу, нежели тот же самый алгоритм, реализованный на ассемблере той же машины.
Вроде как сейчас считается, что опытный программист проигрывает современным компиляторам в попытке написать столь же эффективный ассемблерный код в подавляющем большинстве случаев, и эта попытка в принципе не имеет смысла (а вот посмотреть что компилятор сгенерил и попробовать улучшить в критическом цикле — может иметь смысл).

Кстати, в связи с этим крайне интересен язык Rust. Сохраняя идею «нулевого рантайма» (в смысле ни капли ресурсов на контроль во время исполнения), он пытается проверить и доказать корректность использования указателей на этапе компиляции.

Date: 2015-07-26 04:08 pm (UTC)
From: [identity profile] qkowlew.livejournal.com
сейчас считается, что опытный программист проигрывает современным компиляторам в попытке написать столь же эффективный ассемблерный код в подавляющем большинстве случаев

Я лично считаю, что опытный программист способен написать и ОТЛАДИТЬ одинаково эффективный код на низкоуровневом языке МЕДЛЕННЕЕ, чем сколь угодно опытный на языке высокого (в смысле контроля) уровня.

И современный рынок программного обеспечения попросту изжил "медленных" программистов как значимое явление.

Date: 2015-07-25 05:55 pm (UTC)
From: [identity profile] max630.livejournal.com
> арифметика указателей

Вот для арифметики указателей как раз наибольшие проблемы доставляет переполнение всяких смещений. Остальные ошибки как я понимаю, тривиальны и ловятся при минимальном тестировании.

Date: 2015-07-26 04:04 pm (UTC)
From: [identity profile] qkowlew.livejournal.com
Остальные ошибки как я понимаю, тривиальны

Вашими бы устами...

Date: 2015-07-25 10:00 pm (UTC)
From: [personal profile] ramendik
Шелл же ведёт себя неочевидно примерно везде.
+1024

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

May 2025

S M T W T F S
    1 2 3
4 56 7 8 9 10
11 12 131415 1617
1819202122 2324
252627 282930 31

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 31st, 2025 06:50 am
Powered by Dreamwidth Studios