Я программирую на 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, которые дофигища кода непонятного имеют?
Здравствуйте, 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]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Эйнсток Файр, Вы писали:
FDS>> задача написать свободное standalone приложение для домашней криптографии
ЭФ>Дома не нужна криптография, потому что у полиции есть бутылки.
ЭФ>А так — посмотри на Go и Rust.
Я же сказал, что язык не должен быть со собрщиком мусора и размер его пустого приложения не должен быть выше более 200 кб. А также контроль за кодом, по возможности, не должен быть в Британии/США/Канаде/Австралии/Новой Зеландии
У Rust, кроме этого, практически отсутствует документация, о чём я тоже упомянул.
Кроме этого, Go имеет один неприятный синтаксический элемент: фигурная скобка на той же строке.
Re[2]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
FDS>Я же сказал, что язык не должен быть со собрщиком мусора и размер его пустого приложения не должен быть выше более 200 кб. А также контроль за кодом, по возможности, не должен быть в Британии/США/Канаде/Австралии/Новой Зеландии
Единстявнный живой язык, код которого не происходит из перечисленых стран, который приходит мне в голову, это Ocaml.
Re: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
FDS>Язык должен быть без сборщика мусора (нужно обнулять память после использования) и иметь кроссплатформенную функцию типа VirtualAlloc для того, чтобы заблокировать в физической памяти страницы (последнее не обязательно).
В линухе надо быть рутом, чтобы тебе позволили заблокировать страницы в памяти. Так что отсутствие сборщика мусора тебя, увы, не спасет.
Re[2]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Эйнсток Файр, Вы писали:
Pzz>> У Go с гуем не очень. У Rust'а, подозреваю, тоже. ЭФ>Зачем ему гуй? Ему нужна криптография.
GUI нужен, например, для того, чтобы взять от пользователя случайный ввод мышкой. Никогда не видел программ, которые делают это из консоли. Даже как-то сейчас не соображу, возможно ли это вообще через хуки сделать.
Re[2]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Pzz, Вы писали:
Pzz>В линухе надо быть рутом, чтобы тебе позволили заблокировать страницы в памяти. Так что отсутствие сборщика мусора тебя, увы, не спасет.
Файл подкачки можно отключить. Это не так страшно.
А сборщик мусора данные в памяти гарантированно не перезапишет
Re[4]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Pzz, Вы писали:
FDS>>Я же сказал, что язык не должен быть со собрщиком мусора и размер его пустого приложения не должен быть выше более 200 кб. А также контроль за кодом, по возможности, не должен быть в Британии/США/Канаде/Австралии/Новой Зеландии
Pzz>Единстявнный живой язык, код которого не происходит из перечисленых стран, который приходит мне в голову, это Ocaml.
Ну, тот же Cosmos машинные коды генерирует сам. Хотя и использует Visual Studio для компиляции в MS IL
Так что исходыне коды, в большей части, находятся совсем не под контролем указанных стран. Там основной разработчик вообще ФБР разыскивается.
Re[5]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
FDS>Ну, тот же Cosmos машинные коды генерирует сам. Хотя и использует Visual Studio для компиляции в MS IL FDS>Так что исходыне коды, в большей части, находятся совсем не под контролем указанных стран. Там основной разработчик вообще ФБР разыскивается.
Мне что-то слабо верится во все эти истории про разработчика, которого разыскивает ФБР. Если бы я был ФБР, и захотел бы внедрить своего разработчика я бы, как раз, устроил публичный шум, про то, как этого бедного разработчика ФБР всячески преследует, а он, бедняга, от них отбивается, с трудом, но вполне успешно. Кстати, в США этим занимается, скорее, не ФБР, а ЦРУ или НСА.
С другой стороны, в опенсорсный проект трудно внедрить сознательные закладки. Не то, чтобы невозможно, но трудно. Слишком много глаз туда глядят. В т.ч., вполне профессиональных, в области закладок, глаз. Эти статьи не пишут, но глядеть — глядят.
Что такое Cosmos, я не знаю. Полагая, какая-то редкая маргинальщина.
Re[3]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
FDS>Файл подкачки можно отключить. Это не так страшно. FDS>А сборщик мусора данные в памяти гарантированно не перезапишет
Даже в garbage collected языке можно сделать так, чтобы критические данные обнулялись после использования. В том же Go вполне можно брать память через C.malloc(), ее garbage collector не будет освобождать.
Re[4]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Pzz, Вы писали:
Pzz>Даже в garbage collected языке можно сделать так, чтобы критические данные обнулялись после использования. В том же Go вполне можно брать память через C.malloc(), ее garbage collector не будет освобождать.
Ну и? Стандартные функции мне с этой памятью как вызывать?
Re[5]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
Pzz>>Даже в garbage collected языке можно сделать так, чтобы критические данные обнулялись после использования. В том же Go вполне можно брать память через C.malloc(), ее garbage collector не будет освобождать.
FDS>Ну и? Стандартные функции мне с этой памятью как вызывать?
Так же, как и с обычной.
Другой вопрос, что криптографическая библиотека может чего-нибудь внутри себя аллоцировать. Этим ты уже не сможешь управлять.
Re[5]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
FDS>GUI нужен, например, для того, чтобы взять от пользователя случайный ввод мышкой. Никогда не видел программ, которые делают это из консоли. Даже как-то сейчас не соображу, возможно ли это вообще через хуки сделать.
Тебе не нужно брать случайный ввод мышкой. Используй системный генератор круптографических случайных чисел. Там ввод мышкой уже учтен, как и много чего другого, до чего ты из своей программы не дотянешься.
Re[6]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Pzz, Вы писали:
Pzz>Тебе не нужно брать случайный ввод мышкой. Используй системный генератор круптографических случайных чисел. Там ввод мышкой уже учтен, как и много чего другого, до чего ты из своей программы не дотянешься.
Мне системный генератор не нужен. Иначе бы не спрашивал про мини ОС.
Re[6]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Pzz, Вы писали:
FDS>>Ну и? Стандартные функции мне с этой памятью как вызывать?
Pzz>Так же, как и с обычной.
Что значит, как с обычной?
Доступ к объекту в одном случае идёт через интерфейсы системы управления памятью, а в другом случае — напрямую. Ни одна стандартная функция языка с такими объектами работать не будет.
Pzz>Другой вопрос, что криптографическая библиотека может чего-нибудь внутри себя аллоцировать. Этим ты уже не сможешь управлять.
Не понял, как я не могу управлять тем, что сам выделяю?
Re[6]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Pzz, Вы писали:
Pzz>Мне что-то слабо верится во все эти истории про разработчика, которого разыскивает ФБР. Если бы я был ФБР, и захотел бы внедрить своего разработчика я бы, как раз, устроил публичный шум, про то, как этого бедного разработчика ФБР всячески преследует, а он, бедняга, от них отбивается, с трудом, но вполне успешно. Кстати, в США этим занимается, скорее, не ФБР, а ЦРУ или НСА.
Чем занимается? Розыском преступников?
Re[7]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
Pzz>>Тебе не нужно брать случайный ввод мышкой. Используй системный генератор круптографических случайных чисел. Там ввод мышкой уже учтен, как и много чего другого, до чего ты из своей программы не дотянешься.
FDS>Мне системный генератор не нужен. Иначе бы не спрашивал про мини ОС.
Это плохая идея. Твой самодельный генератор будет заведомо хуже, чем любой системный. Ключевое слово — "любой".
Re[8]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, FDSC, Вы писали:
Pzz>>>Тебе не нужно брать случайный ввод мышкой. Используй системный генератор круптографических случайных чисел. Там ввод мышкой уже учтен, как и много чего другого, до чего ты из своей программы не дотянешься.
FDS>>Мне системный генератор не нужен. Иначе бы не спрашивал про мини ОС.
Pzz>Это плохая идея. Твой самодельный генератор будет заведомо хуже, чем любой системный. Ключевое слово — "любой".
Это не так
Re[9]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
Pzz>>Это плохая идея. Твой самодельный генератор будет заведомо хуже, чем любой системный. Ключевое слово — "любой".
FDS>Это не так
Это так. И когда ты поймешь, что это так, ты сделаешь большой шаг в направлении "это не так".
Re[10]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, FDSC, Вы писали:
Pzz>>>Это плохая идея. Твой самодельный генератор будет заведомо хуже, чем любой системный. Ключевое слово — "любой".
FDS>>Это не так
Pzz>Это так. И когда ты поймешь, что это так, ты сделаешь большой шаг в направлении "это не так".
И это тоже не так
Re[8]: Подскажите кроссплатформенный язык или мини ОС
FDS>>Мне системный генератор не нужен. Иначе бы не спрашивал про мини ОС.
Pzz>Это плохая идея. Твой самодельный генератор будет заведомо хуже, чем любой системный. Ключевое слово — "любой".
Вообще, если бы вы интересовались историей криптографии, то слово "любой" вы бы оттуда убрали бы очень быстро
Re[9]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
Pzz>>Это плохая идея. Твой самодельный генератор будет заведомо хуже, чем любой системный. Ключевое слово — "любой".
FDS>Вообще, если бы вы интересовались историей криптографии, то слово "любой" вы бы оттуда убрали бы очень быстро
Я интересовался. И сайт твой тоже полистал. У тебя, кстати, в профиле опечатка в URL, поправь пожалуйста.
В DES'е, кстати, существенных уязвимостей так и не нашли. Просто у него битиков в ключе маловато, поэтому он и ломается на современном компьютере "в лоб". Но для своего времени он был, похоже, неплох.
И нет, я лично не возьмусь делать криптографический генератор случайных чисел даже за деньги. Только если после меня мой код внимательно просмотрит профессиональный криптограф, и возьмет на себя ответственность за результат.
Re[10]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Pzz, Вы писали:
Pzz>И нет, я лично не возьмусь делать криптографический генератор случайных чисел даже за деньги. Только если после меня мой код внимательно просмотрит профессиональный криптограф, и возьмет на себя ответственность за результат.
Я бы тоже от этого не отказался бы. От просмотра профессиональным криптоаналитиком.
Но на безрыбье и рак рыба.
Приходится браться. Как говорится, если не я, то кто?
Re[11]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
FDS>Я бы тоже от этого не отказался бы. От просмотра профессиональным криптоаналитиком. FDS>Но на безрыбье и рак рыба.
FDS>Приходится браться. Как говорится, если не я, то кто?
Аппендицит удалять я бы тоже не взялся. Последствия очень предсказуемы.
Re[12]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
Pzz>>Аппендицит удалять я бы тоже не взялся. Последствия очень предсказуемы.
FDS>Я бы тоже. Но аппендицит и криптография — разные вещи
Угу. В криптографии проще не заметить свои ошибки.
Re[10]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Pzz, Вы писали:
Pzz>В DES'е, кстати, существенных уязвимостей так и не нашли. Просто у него битиков в ключе маловато, поэтому он и ломается на современном компьютере "в лоб". Но для своего времени он был, похоже, неплох.
Там есть группа плохих ключей. И есть подозрение, что она не одна.
Sapienti sat!
Re: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, FDSC, Вы писали:
FDS>Я программирую на C#, он мне очень нравится. Но сейчас мне нужна другая технология .
FDS>Есть задача написать свободное standalone приложение для домашней криптографии либо для Linux и Windows одновременно, либо приложение должно грузится с флешки с мини ОС.
FDS>Соответственно, нужен либо язык, который позволит писать под Windows и под Linux без заморочек. FDS>Либо операционная система с минимумом кода, которая позволит создать загрузочную флешку и запустить оттуда ТОЛЬКО криптографию.
Увы. Если хочется маленький и бинарник — то С и самому писать вызовы winapi/X
Если хочется с минимумом усилий — то python или java. И то, и другое бывает в embedded виде, чтобы можно было поместить на флешку.
Про питон не скажу, но java не запрещает безопасно аллоцировать память самому через VirtualAlloc и его аналоги.
Если хочется сделать что-то качественное и чтобы не выглядело как УГ — Qt. Флешки в наше время большие.
Насчет GUI — есть еще вариант сделать консольный интерфейс на псевдографике, как в 90х под дос.
Re[11]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, Cyberax, Вы писали:
Pzz>>В DES'е, кстати, существенных уязвимостей так и не нашли. Просто у него битиков в ключе маловато, поэтому он и ломается на современном компьютере "в лоб". Но для своего времени он был, похоже, неплох. C>Там есть группа плохих ключей. И есть подозрение, что она не одна.
Я хочу сказать, нет ощущения, что в DES'е специально оставлены "закладки".
Re[2]: Подскажите кроссплатформенный язык или мини ОС
Здравствуйте, scf, Вы писали:
scf>Увы. Если хочется маленький и бинарник — то С и самому писать вызовы winapi/X
Есть где-то дока по Linux вызовам? WinAPI — я знаю, а вот где лежат вызовы для Linux?
Причём желательно, чтобы было написано, как ассемблер компилировать с ними (как компоновку делать). А то там с асмом иногда с линковкой проблемы
scf>Если хочется сделать что-то качественное и чтобы не выглядело как УГ — Qt. Флешки в наше время большие.
Дело не во флешках, а в большом количестве заимствованного кода.
Re: Подскажите кроссплатформенный язык или мини ОС