Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.03.04;
Скачать: [xml.tar.bz2];

Вниз

Шифрование -- чем?   Найти похожие ветки 

 
Человек   (2011-10-11 19:12) [0]

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

Какие библиотеки использовать, чтобы работало и там и там? Буду особенно признателен за примеры.


 
Ega23 ©   (2011-10-11 19:25) [1]

Симметричное шифрование: http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
Алгоритмы: AES, DES, IDEA, тысячи их

Асимметричное шифрование: http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%BC_%D0%BA%D0%BB%D1%8E%D1%87%D0%BE%D0%BC
Алгоритмы: RSA, DSA, тоже тысячи их


 
Rouse_ ©   (2011-10-11 21:02) [2]

Может проще HTTPS - тогда самому на сервере ничего делать не придется...


 
Человек   (2011-10-11 22:21) [3]


> Rouse_ ©   (11.10.11 21:02) [2]

Спасибо, хорошая мысль. А это безопасно? Никакие снифферы/прокси не страшны? Есть ли еще какие-то отличия от шифрования вручную?


 
sniknik ©   (2011-10-11 22:39) [4]

> А это безопасно?
настолько, насколько вообще возможно... "вручную" наверняка будет хуже. а по сертификатам с КриптоПро так даже сертифицировано (ну что-то типа, т.е. правительство "отвечает").


 
Rouse_ ©   (2011-10-11 22:54) [5]


> А это безопасно? Никакие снифферы/прокси не страшны?

Прокси безопасно, снифферы - смотря какой сниффер, запущенный локально и написанный под заказ - данные сможет снять.


 
Человек   (2011-10-11 23:15) [6]

Для HTTPS, как я понял, требуется установка сертификата в систему. Это можно делать без прав администратора и незаметно для пользователя?


 
Человек   (2011-10-11 23:17) [7]


> Rouse_ ©   (11.10.11 22:54) [5]

А если все же шифровать вручную, какую библиотеку Delphi лучше использовать? Цель -- полная совместимость с PHP-шифрованием.

И еще, хранить ключ в виде строковой константы в программе -- безопасно?


 
sniknik ©   (2011-10-11 23:35) [8]

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

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


 
Ega23 ©   (2011-10-11 23:59) [9]


> И еще, хранить ключ в виде строковой константы в программе
> -- безопасно?


Открытый - вполне безопасно. :)


> Цель -- полная совместимость с PHP-шифрованием.


В PHP разве встроены функции симметричного и асимметричного шифрования?


 
Германн ©   (2011-10-12 00:36) [10]


> снифферы - смотря какой сниффер, запущенный локально и написанный
> под заказ - данные сможет снять.

<offtop>
Выглядит как предложение дать ТЗ и озвучить гонорар. :)
</offtop>


 
Омлет ©   (2011-10-12 08:41) [11]

> Ega23 ©   (11.10.11 23:59) [9]
> В PHP разве встроены функции симметричного и асимметричного
> шифрования?


А то. http://pear.php.net/packages.php?catpid=6&catname=Encryption


 
Омлет ©   (2011-10-12 08:41) [12]

Удалено модератором


 
Омлет ©   (2011-10-12 08:44) [13]

Плюс crypt() и Mcrypt.


 
Ega23 ©   (2011-10-12 09:07) [14]


> А то.


Когда я его "щупал" этого не было. Растут.


 
Rouse_ ©   (2011-10-12 10:27) [15]


> А если все же шифровать вручную, какую библиотеку Delphi
> лучше использовать? Цель -- полная совместимость с PHP-шифрованием.

Ну например вот эту: http://www.cityinthesky.co.uk/opensource/DCPcrypt
т.к. все алгоритмы стандартизированы подойдет любая сторонняя реализация.

> И еще, хранить ключ в виде строковой константы в программе
> -- безопасно?

Если используется асинхронные алгоритмы - безопасно (только длина должна быть достаточно большая, желательно от 2048 и выше)


 
Eraser ©   (2011-10-12 15:45) [16]

> [7] Человек   (11.10.11 23:17)


> А если все же шифровать вручную, какую библиотеку Delphi
> лучше использовать?

MS Crypto API. Правда там скорее всего придется с ключами возиться. Можно еще глянуть http://sourceforge.net/projects/tplockbox/ опять развивается.


 
Человек   (2011-10-12 17:58) [17]


Rouse_ ©   (12.10.11 10:27) [15]
> Ну например вот эту: http://www.cityinthesky.co.uk/opensource/DCPcryptт.
> к. все алгоритмы стандартизированы подойдет любая сторонняя
> реализация.

К сожалению, именно эту и пытался использовать, перед тем. как задать вопрос. Судя по всему, она для ранних, не-юникодных версий Delphi, т.к. их же демо после перекомпиляции не работает (строка, зашифрованная на Delphi, не расшифровывается на PHP, и наоборот).


> Eraser ©   (12.10.11 15:45) [16]


> Можно еще глянуть http://sourceforge.net/projects/tplockbox/
> опять развивается.

Пытался использовать и его, но он показался мне совсем непонятным. В деме куча непонятного мне кода, вызова кучи функций с кучей переменных. А хотелось бы просто чего-то вроде функций Decode(строка, ключ) и Encodе(строка, ключ). Или я многого хочу и надо разбираться и вникать во все эти алгоритмы?


 
Dennis I. Komarov ©   (2011-10-12 18:09) [18]

Любое создание программ использующих СКЗИ требует обязательного лицензирования. За такое дело могут не кисло погладить по голове, если кончено сочтут Вас достойными, чтобы обратить свое внимание...


 
plr   (2011-10-12 18:45) [19]

Добавлю свои 5 копеек про HTTPS, оно конечно решает вопросы при снифе в сети между приложением и сервером. Но при использовании, например, http://www.ieinspector.com/ мы видим весь трафик, что шлёт приложение.

Проверял на многих приложениях - прекрасный man in the middle.


 
Cobalt ©   (2011-10-13 10:06) [20]

Кейлоггер актуальнее ;-)


 
Eraser ©   (2011-10-13 18:59) [21]

> [17] Человек   (12.10.11 17:58)

там же примеры есть. по крайней мере раньше были, сейчас не проверял. очень просто в использовании.


 
DiamondShark ©   (2011-10-22 12:46) [22]

Удалено модератором


 
Человек   (2011-11-27 06:37) [23]

Итак, решил я использовать известный TurboPower LockBox.
Поставил последнюю версию отсюда: http://sourceforge.net/projects/tplockbox/
Скомпилировал их демку. Все в порядке, нормально кодирует-раскодирует любым алгоритмом.
Затем решил проверить возможность кодирования/раскодирования этого в PHP. Сначала сам написал пару функций, но вместо раскодирования получал кракозябры. Решив, что, возможно, что-то делаю неправильно, взял первую попавшуюся онлайн-тулзу для раскодирования и проверил на ней: http://www.tools4noobs.com/online_tools/decrypt/. Так вот, раскодирование строки, зашифрованной LockBox не работает ни для какого алгоритма ни в одном режиме. Поулчаются кракозябры.

Пожалуйста, объясните, что я делаю не так. И у кого проблема в шифровании: в TP LockBox, в PHP или во мне.


 
Человек   (2011-11-27 11:55) [24]

В общем, проблема в том, что резульатат шифрования строки с помощью TurboPower LockBox по любому алгоритму с любыми параметрами не совпадает с результатом шифрования на PHP с использованием этого же алгоритма с этими же параметрами. Хотя, теоретически, должен.
Куда копать -- не знаю, отладить алгоритм шифрования возможным не представляется.


 
Человек   (2011-11-27 11:55) [25]

Удалено модератором
Примечание: Обсуждения модерирования



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.03.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.003 c
6-1235561131
MALAN
2009-02-25 14:25
2012.03.04
Как перехватить API функции (Connect, Bind) и изменить их парамет


15-1321116538
Laguna
2011-11-12 20:48
2012.03.04
Пропал доступ к ресурсам из меню.


1-1285138133
O.O
2010-09-22 10:48
2012.03.04
Запись в таблицу OpenOffice


3-1272459836
mefodiy
2010-04-28 17:03
2012.03.04
Несоответствие между ADO и AnyDAC


15-1321278885
KilkennyCat
2011-11-14 17:54
2012.03.04
Хочешь заработать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский