Подскажите кроссплатформенный язык или мини ОС
От: FDSC Россия consp11.github.io блог
Дата: 11.01.20 00:03
Оценка: :)))
Я программирую на C#, он мне очень нравится. Но сейчас мне нужна другая технология .

Есть задача написать свободное standalone приложение для домашней криптографии либо для Linux и Windows одновременно, либо приложение должно грузится с флешки с мини ОС.


Соответственно, нужен либо язык, который позволит писать под Windows и под Linux без заморочек.
Либо операционная система с минимумом кода, которая позволит создать загрузочную флешку и запустить оттуда ТОЛЬКО криптографию.



--------------------------------------------------------------------------
Если Windows или Linux

Нужно, чтобы была кросплатформенная как можно более маленькая GUI-библиотека. В идеале, пустая форма и пустое приложение должны занимать вместе не более 200 кб в дистрибутиве.

Qt не подходит, так как большая. Кода в библиотеке должно быть очень мало (меньше кода — меньше уязвимостей и закладок)

GTK — хрен знает. Не смотрел.
Вообще, желательно, чтобы было как можно меньше C/C++ кода.

Mono и Java не подходят, так как нужна установка стороннего кода. Кроме этого, они большие.
Нужно, чтобы система была как можно более чистая, в том числе от Майкрософтовского кода.

Библиотека должна быть относительно хорошо известная, поддерживаемая, с открытыми кодами. В идеале, контроль кода не из США/Канады/Британии/Австралии/Новой Зеландии


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

Хорошо документирован (C# или Free Pascal хорошо документированы; Java — уже нет)

Без глюков в IDE (Lazarus постоянно глючит). Хотя хрен знает, может стоит его попробовать?

Язык должен проверять, что индекс в границах массивов

Язык должен быть живой.
Статически типизированный, компилируемый в машинные код или во что-то низкоуровневое.

В идеале, должна быть возможность взаимодействия с компилятором для получения какого-то простого скомпилированного образа программы (простого для анализа другим автоматическим инструментом).


--------------------------------------------------------------------------
Если мини ОС

Нужно, чтобы в ОС были реализованы исключения, файловый ввод-вывод хотя бы на FAT32, русские шрифты и UTF-8 (желательно), возможность загрузки с USB и ввода-вывода на USB-носители. И возможность простого исключения лишних модулей тоже не повредит (скажем, сетевых).

В принципе, есть Cosmos, однако там не реализованы исключения (но есть клон, где реализованы) и вообще он постоянно падает на ровном месте. Страшно.

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

P.S. Кто-нибудь знает простые начальные загрузчики? А не syslinux и GRUB, которые дофигища кода непонятного имеют?
Отредактировано 11.01.2020 0:09 FDSC . Предыдущая версия .
Re: Подскажите кроссплатформенный язык или мини ОС
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 11.01.20 02:42
Оценка: 1 (1) +1 -1
FDS> задача написать свободное standalone приложение для домашней криптографии

Дома не нужна криптография, потому что у полиции есть бутылки.

А так — посмотри на Go и Rust.
Re: Подскажите кроссплатформенный язык или мини ОС
От: kov_serg Россия  
Дата: 11.01.20 11:06
Оценка: 22 (2) +1
Здравствуйте, FDSC, Вы писали:

FDS>Я программирую на C#, он мне очень нравится. Но сейчас мне нужна другая технология .


FDS>Есть задача написать свободное standalone приложение для домашней криптографии либо для Linux и Windows одновременно, либо приложение должно грузится с флешки с мини ОС.



FDS>Соответственно, нужен либо язык, который позволит писать под Windows и под Linux без заморочек.

C/C++
FDS>Либо операционная система с минимумом кода, которая позволит создать загрузочную флешку и запустить оттуда ТОЛЬКО криптографию.
slitaz.org -- тут любой язык на выбор, какой закатаешь в образ
Или просто uefi приложение
И еще в uefi есть виртуальная машина. Можно под неё писать и пускаться на всём.


FDS>Нужно, чтобы была кросплатформенная как можно более маленькая GUI-библиотека. В идеале, пустая форма и пустое приложение должны занимать вместе не более 200 кб в дистрибутиве.

linux dialog и xdialog

FDS>Qt не подходит, так как большая. Кода в библиотеке должно быть очень мало (меньше кода — меньше уязвимостей и закладок)

U++ но там тоже большие файлы получаются.

FDS>GTK — хрен знает. Не смотрел.

да gtk слегонца суров https://developer.gnome.org/gtk3/stable/gtk-getting-started.html
tcl/tl смотри когда привыкнешь норм

FDS>Вообще, желательно, чтобы было как можно меньше C/C++ кода.

o_O bash наше усё?

FDS>Mono и Java не подходят, так как нужна установка стороннего кода. Кроме этого, они большие.

Тогда lua — 230kb

FDS>Нужно, чтобы система была как можно более чистая, в том числе от Майкрософтовского кода.


FDS>Библиотека должна быть относительно хорошо известная, поддерживаемая, с открытыми кодами. В идеале, контроль кода не из США/Канады/Британии/Австралии/Новой Зеландии


FDS>Язык должен быть без сборщика мусора (нужно обнулять память после использования) и иметь кроссплатформенную функцию типа VirtualAlloc для того, чтобы заблокировать в физической памяти страницы (последнее не обязательно).

C/C++

FDS>Хорошо документирован (C# или Free Pascal хорошо документированы; Java — уже нет)

man-ы

FDS>Без глюков в IDE (Lazarus постоянно глючит). Хотя хрен знает, может стоит его попробовать?

vim

FDS>Язык должен проверять, что индекс в границах массивов

lua

FDS>Язык должен быть живой.

python

FDS>Статически типизированный, компилируемый в машинные код или во что-то низкоуровневое.

haxe, zig, nim ...

FDS>В идеале, должна быть возможность взаимодействия с компилятором для получения какого-то простого скомпилированного образа программы (простого для анализа другим автоматическим инструментом).

llvm

FDS>--------------------------------------------------------------------------

FDS>Если мини ОС

FDS>Нужно, чтобы в ОС были реализованы исключения, файловый ввод-вывод хотя бы на FAT32, русские шрифты и UTF-8 (желательно), возможность загрузки с USB и ввода-вывода на USB-носители. И возможность простого исключения лишних модулей тоже не повредит (скажем, сетевых).

slitaz(linux), uefi

FDS>В принципе, есть Cosmos, однако там не реализованы исключения (но есть клон, где реализованы) и вообще он постоянно падает на ровном месте. Страшно.


FDS>Плюс, там сборщик мусора обязателен (это не страшно, но нужно будет его переписывать) и проект не очень активный.


FDS>P.S. Кто-нибудь знает простые начальные загрузчики? А не syslinux и GRUB, которые дофигища кода непонятного имеют?

https://github.com/KNNSpeed/Simple-UEFI-Bootloader
Re[2]: Подскажите кроссплатформенный язык или мини ОС
От: FDSC Россия consp11.github.io блог
Дата: 11.01.20 12:24
Оценка: -2 :))
Здравствуйте, Эйнсток Файр, Вы писали:

FDS>> задача написать свободное standalone приложение для домашней криптографии


ЭФ>Дома не нужна криптография, потому что у полиции есть бутылки.


ЭФ>А так — посмотри на Go и Rust.



Я же сказал, что язык не должен быть со собрщиком мусора и размер его пустого приложения не должен быть выше более 200 кб. А также контроль за кодом, по возможности, не должен быть в Британии/США/Канаде/Австралии/Новой Зеландии

У Rust, кроме этого, практически отсутствует документация, о чём я тоже упомянул.


Кроме этого, Go имеет один неприятный синтаксический элемент: фигурная скобка на той же строке.
Re[2]: Подскажите кроссплатформенный язык или мини ОС
От: FDSC Россия consp11.github.io блог
Дата: 11.01.20 12:48
Оценка:
Спасибо. Много незнакомых слов, но, кажется, многие из ни по делу. Очень интересно
Re[3]: Подскажите кроссплатформенный язык или мини ОС
От: kov_serg Россия  
Дата: 11.01.20 16:34
Оценка: 2 (2)
Здравствуйте, FDSC, Вы писали:

FDS>Спасибо. Много незнакомых слов, но, кажется, многие из ни по делу. Очень интересно


https://wiki.osdev.org/UEFI
https://habr.com/ru/post/201954/ https://weekly-geekly.github.io/articles/201954/index.html
https://habr.com/ru/post/212363/

Еще можно прогу прямо в биос закатать https://habr.com/ru/post/211574/
Отредактировано 11.01.2020 16:46 kov_serg . Предыдущая версия .
Re[2]: Подскажите кроссплатформенный язык или мини ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.01.20 22:59
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>А так — посмотри на Go и Rust.


У Go с гуем не очень. У Rust'а, подозреваю, тоже.
Re[3]: Подскажите кроссплатформенный язык или мини ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.01.20 23:01
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Я же сказал, что язык не должен быть со собрщиком мусора и размер его пустого приложения не должен быть выше более 200 кб. А также контроль за кодом, по возможности, не должен быть в Британии/США/Канаде/Австралии/Новой Зеландии


Единстявнный живой язык, код которого не происходит из перечисленых стран, который приходит мне в голову, это Ocaml.
Re: Подскажите кроссплатформенный язык или мини ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.01.20 23:03
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Язык должен быть без сборщика мусора (нужно обнулять память после использования) и иметь кроссплатформенную функцию типа VirtualAlloc для того, чтобы заблокировать в физической памяти страницы (последнее не обязательно).


В линухе надо быть рутом, чтобы тебе позволили заблокировать страницы в памяти. Так что отсутствие сборщика мусора тебя, увы, не спасет.
Re[2]: Подскажите кроссплатформенный язык или мини ОС
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 11.01.20 23:24
Оценка:
Pzz> В линухе надо быть рутом, чтобы тебе позволили заблокировать страницы в памяти.

Разве нельзя сервис запустить под рутом через systemd?
https://serverfault.com/questions/806617/configuring-systemd-service-to-run-with-root-access
Re[3]: Подскажите кроссплатформенный язык или мини ОС
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 11.01.20 23:26
Оценка:
Pzz> У Go с гуем не очень. У Rust'а, подозреваю, тоже.
Зачем ему гуй? Ему нужна криптография.
Re[4]: Подскажите кроссплатформенный язык или мини ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.01.20 23:32
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

Pzz>> У Go с гуем не очень. У Rust'а, подозреваю, тоже.

ЭФ>Зачем ему гуй? Ему нужна криптография.

Гуй он тоже просил.
Re[4]: Подскажите кроссплатформенный язык или мини ОС
От: FDSC Россия consp11.github.io блог
Дата: 12.01.20 13:01
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

Pzz>> У Go с гуем не очень. У Rust'а, подозреваю, тоже.

ЭФ>Зачем ему гуй? Ему нужна криптография.

GUI нужен, например, для того, чтобы взять от пользователя случайный ввод мышкой. Никогда не видел программ, которые делают это из консоли. Даже как-то сейчас не соображу, возможно ли это вообще через хуки сделать.
Re[2]: Подскажите кроссплатформенный язык или мини ОС
От: FDSC Россия consp11.github.io блог
Дата: 12.01.20 13:03
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>В линухе надо быть рутом, чтобы тебе позволили заблокировать страницы в памяти. Так что отсутствие сборщика мусора тебя, увы, не спасет.


Файл подкачки можно отключить. Это не так страшно.
А сборщик мусора данные в памяти гарантированно не перезапишет
Re[4]: Подскажите кроссплатформенный язык или мини ОС
От: FDSC Россия consp11.github.io блог
Дата: 12.01.20 13:07
Оценка:
Здравствуйте, Pzz, Вы писали:

FDS>>Я же сказал, что язык не должен быть со собрщиком мусора и размер его пустого приложения не должен быть выше более 200 кб. А также контроль за кодом, по возможности, не должен быть в Британии/США/Канаде/Австралии/Новой Зеландии


Pzz>Единстявнный живой язык, код которого не происходит из перечисленых стран, который приходит мне в голову, это Ocaml.


Ну, тот же Cosmos машинные коды генерирует сам. Хотя и использует Visual Studio для компиляции в MS IL
Так что исходыне коды, в большей части, находятся совсем не под контролем указанных стран. Там основной разработчик вообще ФБР разыскивается.
Re[5]: Подскажите кроссплатформенный язык или мини ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 12.01.20 13:23
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Ну, тот же Cosmos машинные коды генерирует сам. Хотя и использует Visual Studio для компиляции в MS IL

FDS>Так что исходыне коды, в большей части, находятся совсем не под контролем указанных стран. Там основной разработчик вообще ФБР разыскивается.

Мне что-то слабо верится во все эти истории про разработчика, которого разыскивает ФБР. Если бы я был ФБР, и захотел бы внедрить своего разработчика я бы, как раз, устроил публичный шум, про то, как этого бедного разработчика ФБР всячески преследует, а он, бедняга, от них отбивается, с трудом, но вполне успешно. Кстати, в США этим занимается, скорее, не ФБР, а ЦРУ или НСА.

С другой стороны, в опенсорсный проект трудно внедрить сознательные закладки. Не то, чтобы невозможно, но трудно. Слишком много глаз туда глядят. В т.ч., вполне профессиональных, в области закладок, глаз. Эти статьи не пишут, но глядеть — глядят.

Что такое Cosmos, я не знаю. Полагая, какая-то редкая маргинальщина.
Re[3]: Подскажите кроссплатформенный язык или мини ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 12.01.20 13:25
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Файл подкачки можно отключить. Это не так страшно.

FDS>А сборщик мусора данные в памяти гарантированно не перезапишет

Даже в garbage collected языке можно сделать так, чтобы критические данные обнулялись после использования. В том же Go вполне можно брать память через C.malloc(), ее garbage collector не будет освобождать.
Re[4]: Подскажите кроссплатформенный язык или мини ОС
От: FDSC Россия consp11.github.io блог
Дата: 12.01.20 13:51
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Даже в garbage collected языке можно сделать так, чтобы критические данные обнулялись после использования. В том же Go вполне можно брать память через C.malloc(), ее garbage collector не будет освобождать.


Ну и? Стандартные функции мне с этой памятью как вызывать?
Re[5]: Подскажите кроссплатформенный язык или мини ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 12.01.20 16:27
Оценка:
Здравствуйте, FDSC, Вы писали:

Pzz>>Даже в garbage collected языке можно сделать так, чтобы критические данные обнулялись после использования. В том же Go вполне можно брать память через C.malloc(), ее garbage collector не будет освобождать.


FDS>Ну и? Стандартные функции мне с этой памятью как вызывать?


Так же, как и с обычной.

Другой вопрос, что криптографическая библиотека может чего-нибудь внутри себя аллоцировать. Этим ты уже не сможешь управлять.
Re[5]: Подскажите кроссплатформенный язык или мини ОС
От: Pzz Россия https://github.com/alexpevzner
Дата: 12.01.20 16:29
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>GUI нужен, например, для того, чтобы взять от пользователя случайный ввод мышкой. Никогда не видел программ, которые делают это из консоли. Даже как-то сейчас не соображу, возможно ли это вообще через хуки сделать.


Тебе не нужно брать случайный ввод мышкой. Используй системный генератор круптографических случайных чисел. Там ввод мышкой уже учтен, как и много чего другого, до чего ты из своей программы не дотянешься.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.