Перейти к содержимому


Фотография

CryptedNote - защищенные заметки в OC


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 Онлайн   HeroBrine1st

HeroBrine1st
  • Пользователи
  • Сообщений: 80
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

           

Отправлено 06 Июль 2018 - 18:25

Не знаю, зачем я это написал. Но при смерти в планшете все будет надежно зашифровано..

 

Установка - pastebin get wmAj3hcP /bin/cryptednote.lua

Если не установлена библиотека сети Фейстеля (by Zer0Galaxy), вот она - pastebin get uDnh4RLi /lib/crypt.lua

 

Использование:

cryptednote file [-w;--rewrite]

Именно в таком порядке название файла и опции. Не перепутайте.

Опция всего тут одна, второй вариант - алиас к ней. Перезаписывает файл.

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

 

Насчет безопасности все сказано в описании, но я повторю: пароль и названия файлов прогоняются через функцию md5, содержимое - зашифровывается ключом (а он получается из пароля).

 

P.s. программа толком не протестирована (главная функция, - шифрование, работает, остальное не тестил), отловите баг - напишите

P.s.s. при вводе пароля видно только его длину, сами символы закрыты точками.

Код - https://pastebin.com/wmAj3hcP

 

И да, пароль в опенкомпах хорошо перебирается - от 70 до 120 хешей в секунду (и это на сервере), так что выбирайте сложные пароли.

P.s.s.s. все заметки в /usr/note/, путь указать не получится - он просто прогонится через md5 и сконкатируется со стандартной директорией


Сообщение отредактировал HeroBrine1st: 10 Июль 2018 - 21:42

  • Alex, Totoro, eu_tomat и еще 1 это нравится

#2 Оффлайн   Zed

Zed
  • Пользователи
  • Сообщений: 121
  • Уровень сигнала: 22,02%
  • В игре: 178 час. 14 мин.

Награды

                 

Отправлено 07 Июль 2018 - 13:16

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



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

Сообщение отредактировал Totoro: 07 Июль 2018 - 17:57
не надо цитировать стартовый пост целиком

  • Totoro это нравится

#3 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 910
  • Уровень сигнала: 6,17%
  • В игре: 49 час. 56 мин.

Награды

                          

Отправлено 08 Июль 2018 - 11:13

@HeroBrine1st, можешь пояснить назначение этого хитрого участка кода?
	print("Перезапись ключа в ОЗУ 35 раз")
	for i = 1, 35 do
		psk = string.random(psk:len())
	end
	print("Удаление ключа из ОЗУ")
	psk = nil
Насколько я знаю, достаточно последней строчки, если речь идёт об OpenComputers, а в контексте языков, приближенных к машинным, достаточно лишь один раз переписать находящийся в RAM ключ. Или есть иная информация?

#4 Онлайн   HeroBrine1st

HeroBrine1st
  • Автор темы
  • Пользователи
  • Сообщений: 80
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

           

Отправлено 09 Июль 2018 - 10:07

@HeroBrine1st, можешь пояснить назначение этого хитрого участка кода?

	print("Перезапись ключа в ОЗУ 35 раз")
	for i = 1, 35 do
		psk = string.random(psk:len())
	end
	print("Удаление ключа из ОЗУ")
	psk = nil

 

ОЗУ компа на хост-мащине хранится в ее ПЗУ. Для полной перезаписи с удалением информации нужно 35 итераций.

Если включена буферизация, это не поможет, но если отключена - вполне рабочая вещь.

 

К слову, о мануале при первом запуске утилиты и продолжению по клику. Я сделал.


Сообщение отредактировал HeroBrine1st: 09 Июль 2018 - 10:08


#5 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 740
  • Уровень сигнала: 0,27%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 09 Июль 2018 - 10:44

ОЗУ компа на хост-мащине хранится в ее ПЗУ. Для полной перезаписи с удалением информации нужно 35 итераций.

 

Откуда инфа?



#6 Онлайн   HeroBrine1st

HeroBrine1st
  • Автор темы
  • Пользователи
  • Сообщений: 80
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

           

Отправлено 09 Июль 2018 - 13:49

Откуда инфа?

Из какого-то канала Telegram. Подтвердить инфу не могу, увы(

Лишним не будет - выполняется моментально. os.sleep чисто для наблюдения процесса поставил, иначе ввел пароль и сразу к файлу



#7 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 763
  • Уровень сигнала: 48,64%
  • В игре: 393 час. 44 мин.

Награды

                 

Отправлено 09 Июль 2018 - 13:58

Откуда инфа?

из суеверных источников :)  



#8 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 910
  • Уровень сигнала: 6,17%
  • В игре: 49 час. 56 мин.

Награды

                          

Отправлено 09 Июль 2018 - 23:45

Из какого-то канала Telegram. Подтвердить инфу не могу, увы(

Сложно подтвердить инфу, которая легко опровергается. Всякий источник информации может оказаться полезным, но не всякую информацию стоит принимать на веру. Исключение составляют только случаи, когда в данный момент проверка информации не представляется возможной, а источник уже имеет хорошую репутацию. Это как с теориями физики, о которых здесь на форуме даже как-то спорили: теории, конечно, не идеальные, но лучших в данный момент всё равно нет.

Лишним не будет - выполняется моментально.

При такой логике любую операцию можно повторять 35 раз. Ну, а что, моментально же выполняется.

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

Любая локальная переменная доступна исключитлельно в области своей видимости. Соответственно, локальная переменная psk доступна только в предалах блока do ... end, внутри которого она была объявлена, а по окончанию его работы занимаемаемая ею память становится доступной для освобождения сборщиком мусора. Но и на этом этапе содержимое переменной не будет удалено. Оно будет затёрто лишь при инициализации новых переменных, если они, конечно, будут созданы на этом участке памяти. Операция psk = nil тоже не удаляет строку, а лишь указывает, что теперь значение переменной пустое, а ранее занятая переменной память может быть освобождена сборщиком мусора. И даже psk = string.random(psk:len()) не перезаписывает пароль в ОЗУ, а лишь создаёт новую строку, и присваивает ссылку на неё переменной psk, а сама же строка остаётся в неизименном виде до тех пор, пока до неё не доберётся сборщик мусора. Но и он, как говорилось выше, переменную не очищает.

Что мы имеем в итоге? 35 раз создаётся новая строка, а ссылка не неё присваивается переменной psk, каждый раз затирая предыдущую ссылку (не строку!). Потом ссылка (не строка!) очищается при выполнении psk = nil. А по окончании выполнения блока do ... end теряется доступ к самой переменной psk. Значение имеет только последнее действие: доступ к переменной потерян. Сам ключ и 35 экземпляров случайных строк продолжают висеть в памяти. Со временем сборщик мусора освободит память из-под этих переменных, а их значения так и останутся в памяти, пока на их месте не будут созданы и инициализированы новые переменные.

Конечно, интенсивное создание случайных строк ускорит использование сборщика мусора и в конечном итоге даже перезапись того участка памяти, где когда-то был ключ. Но возникают два вопроса. Почему 35 итераций достаточно для гарантированного удаления ключа? И какая в этом польза, если доступ к ключу внутри Lua всё равно уже потерян, а другого доступа в OpenComputers нет и не предвидится?
  • Alex, Totoro, vx13 и еще 1 это нравится

#9 Онлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 760
  • Уровень сигнала: 4,5%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 10 Июль 2018 - 09:18

по исследованию исходного кода ОС, gc вызывается при вызове computer.pullSignal, но я не специалист в скале потому могу ошибаться


Сообщение отредактировал NEO: 10 Июль 2018 - 13:06


#10 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 740
  • Уровень сигнала: 0,27%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 10 Июль 2018 - 11:13

Я называю такой код - "вуду-программирование".



#11 Онлайн   HeroBrine1st

HeroBrine1st
  • Автор темы
  • Пользователи
  • Сообщений: 80
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

           

Отправлено 10 Июль 2018 - 21:31

И какая в этом польза, если доступ к ключу внутри Lua всё равно уже потерян, а другого доступа в OpenComputers нет и не предвидится?

Я рассчитывал на то, что если админам понадобится ключ - они пойдут в кеш сервера и пойдут его искать там. Ну раз у луа такая логика, значит придется удалить этот участок кода..

P.s. и переменные можно вообще не обнулять получается? нет смысла?

Почему 35 итераций достаточно для гарантированного удаления ключа?

При выключенной буферизации все изменения переменных будут моментально записаны на диск сервера. Если это HHD, то 35 (уточняется) итераций как раз будет достаточно для полной перезаписи информации (как оказалось, не информация перезаписывается, а ссылка на нее). А если SSD, то Trim удалит остаточные данные.


Сообщение отредактировал HeroBrine1st: 10 Июль 2018 - 21:42





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных