Блокнот с функцией шифрования


Недавно решил найти удобный и качестаенный блокнот с функцией шифрования. Никаких дополнительных функций от него не требовалось, он нужен для повседневных записей. До недавнего времени я пользовался блокнотом TigerPad (http://dimonius.ru/mysoft.html), там огромный выбор алгоритмов шифрования и хэширования. Но недавно я обаружил, что зашифрованные файлы сжимаются rar'ом, примерно до 70-80% от начального объема, что совсем не характерно для шифротекста. Ситуация была одинакова для любога крипто- и хэш-алгоритма. Первая мысль была о том, что в зашифрованном файле есть большая хорошо сжимаемая сигнатура, для признания TigerPad'ом *.enc файла как своего, а сам шифротекст был небольшим. Действительно в файле оказалась сигнатура "Crypted by Dimonius Notepad", но после её удаления, либо после увеличения объема шифротекста ситуация не менялась. Сравнив размер исходного и закриптованного файла, я обнаружил, что зашифрованный файл несколько больше своего файла-"прародителя". Зачем в шифротекст добавлена такая избыточность непонятно, т.к. например никаких функций восстановления поврежденного криптофайла в программе нет. Спрашивать у автора думаю нет смысла, так как разработка TigerPad приостановлена, а модуль шифрования к программе писал не автор.
Решил поискать другой блокнот, скачал около 15 различных с функцией шифрования. Среди них оказались программы начиная шифроалгоритмов без описания вобще (многие из шифротекстов, сделанными ими сжимались, так же хорошо, как и нешифрованные тексты), заканчивая программами с "собственным алгоритмом обеспечивающим, непревзойденную стойкость шифрования military-encription" :). Правда попался один блокнот с алгоритмом RC4XOR в модифицированном виде (!) (там так написано было), но доверия он никакого не вызвал.
В конце-концов была найдена open-source программа Steganos LockNote (http://sourceforge.net/projects/locknote/) с криптоалгоритмом AES. Программа portable и представляет из себя один exe-файл при сохранении текста создаюший клона, с шифротекстом в теле exe-файла. Понятно что такой подход больше удобен например для передачи шифровки, юзеру не имеющему а компьютере никаких средств шифрования, а для моих целей не очнь удобна, т.к. не может перезаписовать сама себя (в файл с тем же именем), и предыдущий файл приходится удалять вручную. Кроме того "клон" при создании еще одного "клона", прибавляет размер своего шифротекста в новый клон, т.е. вероятно после каждой шифровки добавляет в конец файла новый шифротекст, соответственно вероятно можно, зная пароль, прочесть не только последний вариант зашифрованного текста, но и предыдущие.
А собственно вопрос, может кто-то посоветует еще другой блокнотик?

Комментарии
— serzh (11/12/2006 16:36)   
Лучше всего скачать себе GnuPG (можно не инсталировать, а запускать просто с папки) и выучить пару ключей к нему или написать два скрипта.
Плюсы: провереная праграмма, строгое соответствие стандартам, универсальность.
Минусы: поначалу может быть не очень удобно илм скорее непревычно.
— spinore (12/12/2006 10:43)   
Нет, дело в том, что после создания квантовых компов gpg пойдёт по одному месту напару со всеми алгоритмами асимметричного шифрования, а вот блокнот... не пойдёт. Не говоря уже о том, что блокнот относится к типу симметричного шифрования как японимаю (размер текста равен размеру ключа).
— spinore (12/12/2006 10:53)   
Хотя симметричное крипто можно и с помощью gpg строить, хотя у меня не получилось сделать совсем чисто:

$ gpg -c --cipher-algo RIJNDAEL256 temp.asc
$ gpg --decrypt temp.asc.gpg
gpg: Данные зашифрованы алгоритмом AES256
Введите пароль:

Вот мне и не нравится наличие допсигнатур у зашифрованного файла. Можно ли сделать так, чтоб посторонний не мог отличить зашифрованный файл от файла с просто с шумом? Я пока в опциях gpg не нашёл.
Кстати, аналогичный вопрос по поводу подписи:
Если подпись делается как
$ gpg --clearsign --no-emit-version myfile
то можно определить ОС и версию системы по подписанному сообщению или нет? Явно в подписи после указанных опций эти данные не фигурируют.
— SATtva (12/12/2006 11:40)   
Нет, дело в том, что после создания квантовых компов gpg пойдёт по одному месту напару со всеми алгоритмами асимметричного шифрования, а вот блокнот... не пойдёт

По-моему, автор темы спрашивал ни о шифроблокноте (схеме Вернама), а о простом текстовом редакторе типа Блокнота со встроенной функцией шифрования.

Если подпись делается как
$ gpg clearsign --no-emit-version myfile
то можно определить ОС и версию системы по подписанному сообщению или нет? <!
escaped></blockquote><!escaped-->
ОС — нельзя. Версию PGP/GnuPG — косвенно можно (есть нюансы в способах форматирования пакетов OpenPGP), но не слишком точно.
Гость (12/12/2006 19:51)   
По-моему, автор темы спрашивал ни о шифроблокноте (схеме Вернама), а о простом текстовом редакторе типа Блокнота со встроенной функцией шифрования.

Именно так. Хочется найти простой тектовый редактор под win32 с функцией шифрования для различных повседневных записей и пометок, отсюда появляется важное требование – удобство повседневного использования.
— unknown (12/12/2006 22:16, исправлен 12/12/2006 22:19)   
Можно ли сделать так, чтоб посторонний не мог отличить зашифрованный файл от файла с просто с шумом?

Можно удалять скриптом первые двенадцать байтов, описывающие формат gnupg сообщения, чисто визуально может показаться после этого, что файл случайный. Но при статистическом анализе он не будет случайным. А при возникновении подозрения можно дописать 12 байтов в начало файла и даже не зная пароля и типа программы gnupg, доказать, что это именно файл gpg.

Всё дело в формате OpenPGP пакетов, которые сочетают шифрование с аутентификацией и несут в себе служебную информацию.

Получить чистый, неотличимый от "шума", шифртекст можно программой mcrypt под Unix.

правда, кроме как для стеганографии это особенно ни для чего не нужно.
— spinore (13/12/2006 02:46)   
Спасибо за разъяснения, unknown.
— spinore (13/12/2006 02:50)   


а как можно вообще жить без стеганографии? Или чего-то её хоть не много заменяющего? Не от соседа же диски обычно шифруют... А от "очень сильных оппонентов ..." (здесь вспоминаются слова про опускание оперативки в жидкий азот...)
— Игорь (04/02/2009 12:37)   
вот неплохой блокнотик, ношу на флешке
http://www.donationcoder.com/Software/Other/fSekrit/
— Сандер (04/02/2009 13:41)   
PolyEdit вам в помощь.
— k10 (07/02/2009 08:35)   
Пользуюсь Mars Notebook. Куча разных возможностей и довольно удобна в использовании. Несколько симметричных алгоритмов шифрования. Даже купил лицензионную версию :) Но имхо тяжеловата, хотелось бы что-нибудь маленькое и быстрое с необходимым минимумом функционала...
— k10 (07/02/2009 08:41)   
Да, хотелось бы внести ясность что имеется ввиду, чтобы не предлагали всякие PolyEdit.
Программа для хранения и редактирования быстрых заметок. Все записи сохраняются в одном файле. Иерархическая огранизация записей с неограниченным уровнем вложенности. Желательна возможность вставки картинок и других произвольных файлов.
— SATtva (07/02/2009 08:45, исправлен 07/02/2009 08:47)   
При желании с такой целью можно использовать Password Safe или KeePass. Второй имеет возможность прикрепления вложений к записям.
— Сандер (07/02/2009 11:40)   
"Чтобы не предлагали всякие PolyEdit"
Попробуйте в таком случае EverNote
— KastusK (08/02/2009 15:32)   
TreeLine (http://www.bellz.org/treeline/index.html) хорош с т.з. функционала. Шифрует.
The encryption uses the SHA hash function as a stream cipher – it should be fairly secure.
. Насколько аккуратно реализовано – вопрос другой. Собснна программка на Питоне, исходники имеются.
— SATtva (09/02/2009 11:37)   
Потоковые шифры на хэш-функциях считаются дурной практикой.
— ринат (09/02/2009 17:52)   
KastusK

ты на письма не отвечаешь ни ДА ни НЕТ
это у тебя принцип такой?
— KastusK (10/02/2009 01:03)   
2 ринат: если письма в стиле script-kiddie, то не отвечаю. Принцип такой.

2SATtva: Это в связи с предсказуемостью вырабатывамой на базе пароля ключевой гаммы, или? Но, если я правильно понимаю, и ключи для блочных шифров в серьёзных продуктах вырабатываются так же. Просвети плз.
— SATtva (10/02/2009 09:43)   
Хэш-функции (по крайней мере, до конкурса SHA-3) разрабатывались для узкой области — вычисления дайджестов из больших входных данных, но не их использования в конструкциях шифров и гамма-генераторов, накладывающих свои специфические требования.
— unknown (11/02/2009 09:09)   
Соверешено верно. Хэш функия должна быть устойчива ко всем видам криптоанализа, специфичным именно для хэш-функции, но она может провалить простейший дифференциальный криптоанализ, если её использовать в другом режиме. Потому что она не идеальна и не универсальна по конструкции.

Пример с генерацией ключа из пароля не показатель. Тут заведомо отсекаются многие виды атак на манипуляции с исходным текстом.

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

А максимально строгие доказательства устойчивости к общим атакам типа IND-CCA (неразличимости в условиях подобраных шифртекстов, адаптивно-подобранных и так далее, большой список) – это сложные и часто нетривиальные теоретические работы, несмотря на то, что с точки зрения логики задача на первый взгляд простая.
— KastusK (15/02/2009 16:00)   
как я понял, канонический способ получения гаммы – инициализация ПСП-генератора и дальнейшее использование его выхода. ИМХО, инициализация хешем пароля не будет хуже, чем собственно паролем.

По поводу treeline я не уверен на 100%, но похоже автор использовал стандартную реализацию RC4 из питоньих библиотек. Она там через ГПСЧ сделана. То есть чисто теоретически для личных заметок вполне достаточная стойкость будет.

В принцыпе проект развивается и даже попал в дебиановский репозиторий, можно автору написать, думаю, что он сможет прикрутить что-то блочное.
— SATtva (15/02/2009 18:04)   
как я понял, канонический способ получения гаммы – инициализация ПСП-генератора и дальнейшее использование его выхода. ИМХО, инициализация хешем пароля не будет хуже, чем собственно паролем.

Против хэша пароля возражений нет. Возражения вызывает использование SHA-1 в качестве ГПСЧ. Если в качестве ГПСЧ (вернее, генератора гаммы) там всё-таки RC4 — это лучше, но имеет свои сложности, недостатки и уязвимости, если не реализовано самым аккуратным образом. Я бы не доверял реализациям, использующим RC4. Если нужен именно поточный шифр, ничто не мешает использовать блочный в режиме генерации гаммы.
— KastusK (16/02/2009 01:39)   
ну значит или аффтару напишу или сам прикручу. как время будет
— k10 (17/02/2009 20:21)   
KastusK
Питон – это конечно несерьезно, имеется ввиду полноценная программа на АПИ, без всяких QT/GTK/. NET и пр...
— SATtva (17/02/2009 20:24)   
Питон – это конечно несерьезно

Это ещё почему?
— k10 (17/02/2009 21:02)   
SATtva
Интерпретируемый язык
— SATtva (17/02/2009 21:24)   
Это не аргумент.
— k10 (17/02/2009 22:07)   
???
Ну если это не аргумент, то я тогда не знаю что по Вашему вообще может быть аргументом...
Нативный код – есть нативный код, и никакие сценарии и байт-код его не заменят.
— SATtva (17/02/2009 22:23)   
В данном конкретном случае каковы минусы использования интерпретируемого языка? Скорость? Нет управления памятью (шанс утечки секретных данных через ОЗУ/своп)? Для данного приложения это, на мой взгляд, некритично.
Гость (17/02/2009 22:23)   
Разница в скорости. Но только зачем она тут?
Да и компиляторы питона тоже есть.
зы
А в самом процессоре многие команды нативного кода, страшно сказать, интерпретируются!
Гость (17/02/2009 23:46)   
Шанс утечки секретных данных можно уменьшить с помощью виртуализирующего интерпретатора PyPy sandbox[link1]
— Илья (10/02/2010 14:21)   
Простой блокнотик с возможностью шифрования
http://kvrsoft.com/index.php? O.....iewcategory&catid=16[link2]
— Migel (10/02/2010 19:18)   
Скачал этот TigerPad: никаких алгоритмов шифрования не нашел, только кодировки, но зато нашел троян :)
— unknown (11/02/2010 09:01)   
По-хорошему, в программах вида "простенький текстовый редактор с шифрованием" при каждом использовании функции "сохранить на диск" необходимо стереть с диска предыдущий файл и создать новый, полностью перешифрованный заново на случайно сгенерированный вектор инициализации.

Может есть и ещё какие-то тонкости, притом что чисто технически прикрутить библиотеку шифрования к блокноту очень легко и масса желающих сделать это как попало всегда найдётся.
— Uegen (11/02/2010 12:17)   
Панове, обратите внимание на vim / gvim с PGP плагином. Всё опенсорсное, есть под любую платформу – ну почти.

Ссылки
[link1] http://codespeak.net/pypy/dist/pypy/doc/sandbox.html

[link2] http://kvrsoft.com/index.php?option=com_jdownloads&Itemid=3&task=viewcategory&catid=16