id: Гость   вход   регистрация
текущее время 16:50 28/10/2021
Автор темы: Гость, тема открыта 15/05/2012 18:11 Печать
Категории: криптография, софт, симметричное шифрование
создать
просмотр
ссылки

крипто плагин


Здравствуйте.
В интернет мессенджере Miranda есть возможность шифрования данных, сохраняемых в свою БД.
Шифрование вынесено в отдельный плагин. Существующий плагин производит шифрование самопальным поточным алгоритмом Athena.
Мало того, что шифр самопальный, так еще применен неправильно и шифрует одной гаммой все сохраняемые значения.
Я хочу сделать плагин с нормальным шифрованием, но существующий интерфейс плагина предоставляет зашифрованным данным ровно такой же размер, как до шифрования.
Можно ли что нибудь сделать в этом случае?


 
На страницу: 1, 2 След.
Комментарии
— Гость (15/05/2012 18:52)   <#>
При шифровании данные необходимо сжимаются, оставшееся место можно забивать нулями/рандомом.
— Гость (15/05/2012 18:53)   <#>
Но лучше не изобретать велосипед, а воспользоваться полнодисковым шифрованием. В случае винды это DiskCryptor.
— K10 (15/05/2012 19:43)   <#>
"При шифровании данные необходимо сжимаются, оставшееся место можно забивать нулями/рандомом."
В общем случае неприменимо. Неизвестно насколько сожмутся данные и хватит ли полученно разницы. Кроме того данные могут быть например размером всего в несколько байт. Как такие сжимать?

"Но лучше не изобретать велосипед, а воспользоваться полнодисковым шифрованием. В случае винды это DiskCryptor."
Полнодисковое шифрование это отдельный класс защиты. Здесь интересует конкретно шифрование данных в БД.
— Гость (15/05/2012 23:09)   <#>
Здесь интересует конкретно шифрование данных в БД.

Это крайне нерекомендуемая полумера. Если вы понимаете, что следы на диске потенциально остаются несмотря на шифрование, вам это должно быть очевидно.
Цитаты ставятся так: <[текст цитаты]>
— K10 (16/05/2012 01:44)   <#>
Полнодисковое шифрование используется. Но у него имееются свои векторы атаки, так скажем. Интересует шифрование записей в БД. В общем случае, можно ли сделать нормальное шифрование, если выходной размер должен быть не больше входного.
— unknown (16/05/2012 12:59, исправлен 16/05/2012 14:33)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

[humor]


Напомнило:


filePhillip Rogaway, Thomas Shrimpton "The SIV Mode of Operation for Deterministic Authenticated-Encryption (Key Wrap) and Misuse-Resistant Nonce-Based Authenticated-Encryption"


P. Rogaway, T. Shrimpton "Deterministic Authenticated-Encryption A Provable-Security Treatment of the Key-Wrap Problem"



F Key Rap
Mihir Bellare has asked why key wrap needs that apparently superfluous w, inspiring this appendix.
Yo! We'z gonna' take them keys
an' whatever you pleaze
We gonna' wrap 'em all up
looks like some ran'om gup
Make somethin' gnarly and funky
won't fool no half-wit junkie
So the game's like AE
but there's one major hitch
No coins can be pitched
there's no state to enrich
the IV's in a ditch
dead drunk on cheap wine
Now NIST and X9
and their friends at the fort
suggest that you stick it
in a six-layer torte
S/MIME has a scheme
there's even one more
So many ways
that it's hard to keep score
And maybe they work
and maybe they're fine
but I want some proofs
for spendin' my time
After wrappin' them keys
gonna' help out some losers
chronic IV abusers
don't read no directions
risk a deadly infection
If a rusty IV's drippin' into yo' veins
and ya never do manage
to get it exchanged
Then we got ya somethin'
and it comes at low cost
When you screw up again
not all 'ill be lost

[/humor]


А если серьёзно, то по теме можете ещё погуглить видео лекции "Deterministic Encryption:SIV and wide PRP (21 min)". Есть и с субтитрами.

— K10 (18/05/2012 01:52)   <#>
unknown
эээ... а можно как нибудь своими словами?
Я так понимаю, что ничего в такой ситуации не сделать?
— unknown (18/05/2012 09:53, исправлен 18/05/2012 10:06)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Ну если совсем на пальцах на уровне фольклорной схемы...


Посчитайте хэш-функцию всех блоков открытого текста, кроме первого. Используйте это число в качестве вектора инициализации. Поскольку такой вектор инициализации не из рэндома, то он синтетический — SIV. Зашифруйте весь открытый текст в режиме CBC с использованием SIV вместо IV. Поскольку такое шифрование не рэндомизированное, то оно детерминистское. Дописывать этот SIV в начало шифртекста не нужно, поэтому размер шифртекста не растёт. Последний блок открытого текста обычно не кратен блоку шифра, но это стандартная тривиально решаемая проблема: ещё раз пошифровать предыдущий блок и с его итерации получить нужное количество битов гаммы для ксора с открытым текстом; или использовать ciphertext stealing.


Расшифровывается всё в обратном порядке. Зная ключ, текущий и предыдущий блоки шифртекста, получаем текущий блок открытого текста. Так расшифровываем весь открытый текст, кроме первого блока, из него (всего открытого текста кроме первого блока) хэшированием вычисляем SIV и при помощи него расшифровываем первый блок.


Это примитивная иллюстрация принципа SIV/Deterministic encryption. Может быть, это лучше чем ничего. По-настоящему требуется нечто более сложное (не ради сложности, а ради соблюдения множества критериев безопасности и практичности), подо что пытается подвести доказуемое решение Рогувэй, Шримптон и др. и то, это пока ещё слишком сырое решение. Готового и доверяемого режима, который можно было бы взять для этой цели из какой-либо библиотеки, скорее всего нет.

— K10 (20/05/2012 00:20)   <#>
unknown

Более менее понятно.
А что делать, если размер данных меньше размера блока?
— unknown (20/05/2012 23:30)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
В детерминированном шифровании основной недостаток напрямую вытекает из принципа работы — извлечения энтропии из открытого текста. А она при прочих равных тем меньше, чем меньше размер этого текста и будет существенно малой, если размер открытого текста меньше размера блока.

Существуют ещё и т.н. режимы "length preserving encryption", позволяющие в т.ч. получать псевдослучайную перестановку (PRP) произвольно малого размера по отношению к блоку стандартного шифра (напр. из AES). И недостаток здесь такой же: PRP размером в 1 байт м.б. неотличима от идеально случайной, но её стойкость будет ограничиваться тем, что против неё можно осуществить брутфорс — перебрать 256 вариантов.

Если соединить SIV, Deterministic Encryption, Length Preserving Encryption и ещё Tweakable Encryption (чтобы кроме ключа и IV подавать на вход шифра, например, номер записи в базе), то теоретически можно получить то, что нужно.

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

Оно точно вам нужно? Или проще переписать программу под работу с базой другого формата, который бы использовал только простые стандартные режимы шифрования — без экономии размера полей и с полной рэндомизацией?
Обычно для компьютерного софта выбирают такой путь. А сверхэкономный эксклюзив проектируют спецы для каких-нибудь сверхминиатюрных устройств, смарт-карт и т.д. Как-то использовать такие прецизионные режимы шифрования для обычных программ — это как забивать гвозди микроскопом.
— Гость (21/05/2012 10:52)   <#>
по-взрослому копья ломаются вокруг Миранды..
— Genosse (21/05/2012 14:10)   профиль/связь   <#>
комментариев: 101   документов: 0   редакций: 3
Для Thunderbird не помешало бы. Искал – не нашёл. Казалось бы, чего сложного шифровать мастер-паролем не только пароли, но и всю почтовую базу. Да что там базу – всю папку профиля. При запуске запрашивается пароль, выбираешь профиль (кстати!) и загружаешь. Вроде всё необходимое для этого в программе присутствует.
— Гость (21/05/2012 14:50)   <#>
Для Thunderbird
у Бата есть. ну а почему вообще в контейнер не разместить Thunderbird или Миранду? отпадет необходимость шифрования профиля..
— unknown (21/05/2012 15:25)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Если можно было бы перешифровывать всю базу (при каждой записи или хотя бы при каждом сеансе), то тогда другое дело. Это было бы просто реализуемым решением.
— K10 (21/05/2012 19:13)   <#>
unknown
Просто хотелось ограничиться только крипто плагином, но видимо все же придется переделывать драйвер БД...
На страницу: 1, 2 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3