Шрифт:
□ Writing Secure Code, Second Edition by Michael Howard and David C. LeBlanc (Microsoft Press, 2002), Chapter 8, «Cryptographic Foibles»
□ Writing Secure Code, Second Edition by Michael Howard and David C. LeBlanc (Microsoft Press, 2002), Chapter 9, «Protecting Secret Data»
□ Windows Access Control:library/en–us/secauthz/security/access_control.asp
□ Windows Data Protection:library/en–us/dnsecure/html/windataprotection–dpapi.asp
□ «How To: Use DPAPI (Machine Store) from : by J.D. Meier, Alex Mackman, Michael Dunner, and Srinath Vasireddy:Hbrary/en–us/dnnetsec/html/SecNetHT08.asp
□ Threat Mitigation Techniques:secbp/security/threat_mitigation_techniques.asp
□ Implementation of SecureZeroMemory:en–us/dncode/html/securel0102002.asp
□ «Making String More Secure»:2004/05/27/143254.aspx
□ «Secure Programming for Linux and Unix HOWTO – Creating Secure Soft–ware» by David Wheeler: www.dwheeler.com/secure–programs
□ Java Security, Second Edition by Scott Oaks (O\'Reilly, 2001), Chapter 5, «Key Management, pp. 79–91
□ Jad Java Decompiler: http://kpdus.tripod.com/jad.html
□ Class KeyStore (Java 2 Platform 5.0):api/java/security/KeyStore.html
□ «Enabling Secure Storage with Keychain Services»:com/d оси me ntation/S ecu rity/Conceptual/keychainServ Concepts/ keychainServConcepts.pdf
□ Java KeyStore Explorer: http://www.lazgosoftware.com/kse/
□ «Enabling Secure Storage With Keychain Services»:apple, com / documentation/Security/Reference/keychainservices/index.html
□ introduction to Enabling Secure Storage With Keychain Services»: developer.apple.com/documentation/Security/Conceptual/keychainServ Concepts/03tasks/chapter_3_section_2.html
□ Knowledge Base Article 329290: «How to use ASP.NET utility to encrypt credentials and session state connection strings»:default.aspx? scid=kb;en–us;329290
□ «Safeguard Database Connection Strings and Other Sensitive Settings in Your Code» by Alek Davis:ProtectYourData/default.aspx
□ Reflector for .NET: http://www.aisto.com/roeder/dotnet/
Резюме
Рекомендуется
□ Думайте, какие элементы управления доступом ваше приложение применяет к объектам явно, а какие наследует по умолчанию.
□ Осознайте, что некоторые данные настолько секретны, что никогда не должны храниться на промышленном сервере общего назначения, например долгосрочные закрытые ключи для подписания сертификатов Х.509. Их следует хранить в специальном аппаратном устройстве, предназначенном исключительно для формирования цифровой подписи.
□ Используйте средства, предоставляемые операционной системой для безопасного хранения секретных данных.
□ Используйте подходящие разрешения, например в виде списков управления доступом (ACL), если приходится хранить секретные данные.
□ Стирайте секретные данные из памяти сразу после завершения работы с ними.
□ Очищайте память прежде, чем освобождать ее.
Не рекомендуется
□ Не создавайте объектов, доступных миру для записи, в Linux, Mac OS X и UNIX.
□ Не создавайте объектов со следующими записями АСЕ: Everyone (Full Control) или Everyone (Write).
□ He храните материал для ключей в демилитаризованной зоне. Такие операции, как цифровая подпись и шифрование, должны производиться за пределами демилитаризованной зоны.
□ Не «зашивайте» никаких секретных данных в код программы. Это относится к паролям, ключам и строкам соединения с базой данных.
□ Не создавайте собственных «секретных» алгоритмов шифрования.
Стоит подумать
□ Об использовании шифрования для хранения информации, которую нельзя надежно защитить с помощью ACL, и о подписании ее, чтобы исключить неавторизованное манипулирование.
□ О том, чтобы вообще не хранить секретные данные. Нельзя ли запросить их у пользователя во время выполнения?
Грех 13. Утечка информации
В чем состоит грех