2009-12-31 3 views
3

Кто-нибудь знает, как скрыть содержимое пароля в исходном коде программы j2me? то есть люди не могут видеть «DBT» в качестве пароля, который читает исходный код.Скрыть содержимое паролей в исходном коде

public void validateUser(String user, String Password) {  
    if (user.equals("N0203251") && Password.equals("DBT")) { 
    switchDisplayable(null, getContinue()); 
    } 
} 
+0

Возможный дубликат [Обработка паролей, используемых для auth в исходном коде] (http://stackoverflow.com/questions/12937641/handling-passwords-used-for-auth-in-source-code) – durron597

ответ

3

Вы можете хранить хэш (MD5/SHA1) пароля, а и сравнить это с хэш поставляемых паролей.

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

+0

Просто немного больше note - посмотрите на выполнение хэшей/дайджестов с архитектурой Java Cryptograpy http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#MessageDigest – Matt

+0

Вы противоречили себе. В параграфе 1 вы говорите, что храните хэш. В параграфе 2 вы говорите, вычисляете хэш. –

+0

@GregS: Здесь нет противоречия. Во время сборки вы вычисляете хэш из файла или другого источника, не входящего в исходный код, и генерируете код из этого вычисления, в котором хранится только хэш в исполняемом файле. Во время выполнения вы вычисляете хэш ввода пользователя и сравниваете его с правильным хешем, хранящимся в программе (возможно, в сегменте данных). – dmckee

1

Используйте функцию, которая hashes the password - сохранить хеш пароля в источнике, а не сам пароль.

Цитата из этой страницы:

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

0

Если вы сохраняете приложение на мобильном устройстве пользователя, лучше всего попытаться скрыть пароль. Я бы рекомендовал сделать какой-то алгоритм хеширования (возможно, SHA1) или алгоритм деривации ключей, такой как PBKDF2, и сохранить результат, а не сравнивать с открытым текстом.

6

Как и другие сказали. Храните хэш, хотя вам все равно нужно использовать сильный пароль, или автоматическое угадывание найдет тот, который вы используете.

Но, имейте в виду:

Если злоумышленник имеет доступ к исходному коду, он/она/оно может изменить сохраненный хэш пароля или просто удалить проверку пароля.

Так что этот метод мало полезен, если вы не можете проверить целостность выполняемого кода, который является hard.

-1

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

Ответ на эти вопросы всегда один и тот же. Вы не можете добиться какой-либо измеримой безопасности, если вы используете жестко кодированные секреты на стороне клиента, независимо от того, что вы делаете. Лучшее, что вы можете сделать, это достаточно запутывать, пока вы не почувствуете теплое нечеткое ощущение, что оно достаточно хорошее.

+0

Если ввод пароля пользователя хэширован, зная желаемый хеш, вы абсолютно не пользуетесь (если исходный пароль «достаточно силен»). Высказывание «хеширование покупает вас ничего» просто неверно. Если пользователь может изменить код, вы, очевидно, будете закрыты, но просто знание правильного хэша не означает, что вы можете просто предоставить это, как вы подразумеваете. –

+0

Пользователь может * всегда * изменять код, запущенный на своем компьютере или устройстве, и почти всегда очень легко. Хешинг покупает вам неизмеримое повышение безопасности, только неизмеримое теплое нечеткое чувство ложной безопасности. –

+0

В скомпилированных программах (которые, я думаю, будет jar в javaese), немного легче читать простой текстовый пароль, чем найти тест и взломать его. Очень скромная защита, подходящая для детских сестер. – dmckee

3

Когда дело доходит до этого, вы написали заднюю дверь в программу. Это плохая вещь - не делай этого.

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

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

Смежные вопросы