Поделиться через


Рамки безопасности: криптография | Устранение

Продукт или служба Статья
Веб-приложение
База данных
Устройство Интернета вещей
Облачный шлюз Интернета вещей
Мобильный клиент Dynamics CRM
Клиент Dynamics CRM Outlook
Сервер удостоверений

Использовать только утвержденные симметричные шифры и длины ключей

Название Сведения
Компонент Веб-приложение
Этап SDL Строить
Применимые технологии Общий
Атрибуты Не применимо
Ссылки Не применимо
Шаги

Продукты должны использовать только те симметричные блочные шифры и связанные длины ключей, которые были явно утверждены криптографическим консультантом в вашей организации. Утвержденные симметричные алгоритмы в Корпорации Майкрософт включают следующие блочные шифры:

  • Для нового кода AES-128, AES-192 и AES-256 допустимы
  • Для обратной совместимости с существующим кодом можно принять три ключа 3DES.
  • Для продуктов с использованием шифров симметричного блока:
    • Для нового кода требуется расширенный стандарт шифрования (AES)
    • Тройной стандарт шифрования данных (3DES) допускается в существующем коде для обратной совместимости.
    • Все остальные шифры блоков, включая RC2, DES, 2 Key 3DES, DESX и Skipjack, могут использоваться только для расшифровки старых данных и должны быть заменены при использовании для шифрования.
  • Для алгоритмов шифрования симметричного блока требуется минимальная длина ключа 128 бит. Единственным рекомендуемым алгоритмом шифрования блоков для нового кода является AES (AES-128, AES-192 и AES-256 считаются приемлемыми)
  • Три ключа 3DES в настоящее время приемлемы, если он уже используется в существующем коде; Рекомендуется перейти на AES. DES, DESX, RC2 и Skipjack больше не считаются безопасными. Эти алгоритмы могут использоваться только для расшифровки существующих данных ради обратной совместимости, и данные должны быть повторно зашифрованы с помощью рекомендуемого шифра блоков

Обратите внимание, что все шифры симметричного блока должны использоваться с утвержденным режимом шифра, который требует использования соответствующего вектора инициализации (IV). Соответствующее IV обычно является случайным числом и никогда не константным значением

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

Разрешены алгоритмы .NET для гибкости управляемого шифрования (в порядке предпочтения)

  • AesCng (соответствующий стандартам FIPS)
  • AuthenticatedAesCng (соответствует стандартам FIPS)
  • AESCryptoServiceProvider (соответствие FIPS)
  • AESManaged (не соответствует FIPS)

Обратите внимание, что ни один из этих алгоритмов не может быть указан с помощью SymmetricAlgorithm.Create методов или CryptoConfig.CreateFromName без внесения изменений в файл machine.config. Кроме того, обратите внимание, что AES в версиях .NET до .NET 3.5 именуется как RijndaelManaged, а AesCng и AuthenticatedAesCng доступны через CodePlex и требуют CNG в базовой ОС.

Использование утвержденных режимов шифров блоков и векторов инициализации для симметричного шифра

Название Сведения
Компонент Веб-приложение
Этап SDL Строить
Применимые технологии Общий
Атрибуты Не применимо
Ссылки Не применимо
Шаги Все шифры симметричного блока должны использоваться с утвержденным режимом симметричного шифра. Единственными утвержденными режимами являются CBC и CTS. В частности, следует избежать режима работы электронной кодовой книги (ECB); Для использования ЕЦБ требуется обзор Совета шифрования вашей организации. Все использование OFB, CFB, CTR, CCM и GCM или любого другого режима шифрования должны быть проверены Советом по шифрованию вашей организации. Повторное использование того же вектора инициализации (IV) с блочными шифрами в "режимах потокового шифрования", таких как CTR, может привести к обнаружению зашифрованных данных. Все симметричные шифры блоков также должны использоваться с соответствующим вектором инициализации (IV). Соответствующий IV является криптографически сильным, случайным числом и никогда не константным значением.

Используйте утвержденные асимметричные алгоритмы, длины ключей и заполнение

Название Сведения
Компонент Веб-приложение
Этап SDL Строить
Применимые технологии Общий
Атрибуты Не применимо
Ссылки Не применимо
Шаги

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

  • RSA может использоваться для шифрования, обмена ключами и подписи. Шифрование RSA должно использовать только режимы заполнения OAEP или RSA-KEM. Существующий код может использовать режим заполнения PKCS #1 версии 1.5 только для обеспечения совместимости. Использование заполнения null явно запрещено. Ключи >= 2048 бит требуются для нового кода. Существующий код может поддерживать ключи < 2048 бит только для обратной совместимости после проверки советом по шифрованию вашей организации. Ключи < 1024 бит могут использоваться только для расшифровки или проверки старых данных, и их необходимо заменить при использовании для операций шифрования или подписывания.
  • ECDSA может использоваться только для подписи. ECDSA с 256-битными ключами требуется для нового кода. Подписи на основе ECDSA должны использовать одну из трех утвержденных кривых NIST (P-256, P-384 или P521). Кривые, которые были тщательно проанализированы, могут использоваться только после согласования с криптографическим комитетом вашей организации.
  • ECDH — может использоваться только для обмена ключами. ECDH с >256-битными ключами требуется для нового кода. Обмен ключами на основе ECDH должен использовать одну из трех утвержденных кривых NIST (P-256, P-384 или P521). Кривые, которые были тщательно проанализированы, могут использоваться только после согласования с криптографическим комитетом вашей организации.
  • DSA- может быть приемлемым после проверки и утверждения от совета по шифрованию вашей организации. Обратитесь к своему помощнику по безопасности, чтобы запланировать обзор Совета шифрования вашей организации. Если использование DSA утверждено, обратите внимание, что вам потребуется запретить использование ключей менее 2048 бит в длину. CNG поддерживает 2048-разрядную и большую длину ключей в Windows 8.
  • Diffie-Hellman может использоваться только для управления ключами сеанса. Длина >ключа = 2048 бит требуется для нового кода. Существующий код может поддерживать длину < ключей 2048 бит только для обратной совместимости после проверки советом по шифрованию вашей организации. Ключи длиной < 1024 бит не могут использоваться.

    Использование утвержденных генераторов случайных чисел

    Название Сведения
    Компонент Веб-приложение
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Не применимо
    Шаги

    Продукты должны использовать утвержденные генераторы случайных чисел. Псевдорандомные функции, такие как функция rand среды выполнения C, класс System.Random в .NET Framework или системные функции, такие как GetTickCount, никогда не должны использоваться в таком коде. Использование алгоритма генератора случайных чисел (DUAL_EC_DRBG) двойной эллиптической кривой запрещено

    • CNG- BCryptGenRandom(использование флага BCRYPT_USE_SYSTEM_PREFERRED_RNG рекомендуется, если вызывающий процесс может выполняться на любом уровне IRQL выше 0 [т. е. PASSIVE_LEVEL])
    • CAPI- cryptGenRandom
    • Win32/64- RtlGenRandom (новые реализации должны использовать BCryptGenRandom или CryptGenRandom) * rand_s * SystemPrng (для режима ядра)
    • . NET- RNGCryptoServiceProvider или RNGCng
    • Приложения Магазина Windows— Windows.Security.Cryptography.CryptographicBuffer.GenerateRandom или . GenerateRandomNumber
    • Apple OS X (10.7+)/iOS(2.0+)- int SecRandomCopyBytes (SecRandomRef random, size_t count, uint8_t *bytes )
    • Apple OS X (<10.7)— использование /dev/random для получения случайных чисел
    • Java(включая код Java для Google Android)- класс java.security.SecureRandom. Обратите внимание, что для Android 4.3 (Jelly Bean) разработчики должны следовать предложенному компанией Android обходному решению и обновлять свои приложения, чтобы явно инициализировать PRNG с помощью энтропии из /dev/urandom или /dev/random.

    Не используйте шифры симметричного потока

    Название Сведения
    Компонент Веб-приложение
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Не применимо
    Шаги Шифры симметричного потока, такие как RC4, не должны использоваться. Вместо шифров симметричного потока продукты должны использовать блочный шифр, в частности AES с длиной ключа не менее 128 бит.

    Используйте утвержденные алгоритмы MAC/HMAC/хэширования с ключом

    Название Сведения
    Компонент Веб-приложение
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Не применимо
    Шаги

    Продукты должны использовать только утвержденный код проверки подлинности сообщений (MAC) или хэш-код проверки подлинности сообщений (HMAC).

    Код проверки подлинности сообщения (MAC) — это часть информации, присоединенной к сообщению, которая позволяет получателю проверить подлинность отправителя и целостность сообщения с помощью секретного ключа. Использование MAC на основе хэша (HMAC) или блочного шифрования на основе MAC допускается, если все базовые хэш-алгоритмы или симметричные алгоритмы шифрования также утверждены для использования; В настоящее время это включает функции HMAC-SHA2 (HMAC-SHA256, HMAC-SHA384 и HMAC-SHA512) и CMAC/OMAC1 и OMAC2 на основе шифров (они основаны на AES).

    Использование HMAC-SHA1 может быть допустимым для совместимости платформ, но вам потребуется подать исключение в эту процедуру и пройти проверку шифрования вашей организации. Сокращение HMACs до менее чем 128 бит запрещено. Использование методов клиента для хэширования ключа и данных не утверждено и должно пройти проверку совета шифрования вашей организации перед использованием.

    Использование только утвержденных функций шифрования хэша

    Название Сведения
    Компонент Веб-приложение
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Не применимо
    Шаги

    Продукты должны использовать семейство хэш-алгоритмов SHA-2 (SHA256, SHA384 и SHA512). Если требуется более короткий хэш, например 128-разрядная длина выходных данных для соответствия структуре данных, разработанной с учетом более короткого хэша MD5, группы продуктов могут усечь один из хэшей SHA2 (обычно SHA256). Обратите внимание, что SHA384 — это усеченная версия SHA512. Усечение криптографических хэшей до менее чем 128 бит в целях безопасности запрещено. Новый код не должен использовать алгоритмы хэша MD2, MD4, MD5, SHA-0, SHA-1 или RIPEMD. Хэш-столкновения являются вычислимо достижимыми для этих алгоритмов, что фактически ломает их.

    Разрешены хэш-алгоритмы .NET для гибкости управляемого шифрования (в порядке предпочтения):

    • SHA512Cng (соответствие FIPS)
    • SHA384Cng (соответствие FIPS)
    • SHA256Cng (соответствие FIPS)
    • SHA512Managed (не соответствует FIPS) (используйте SHA512 в качестве имени алгоритма в вызовах HashAlgorithm.Create или CryptoConfig.CreateFromName)
    • SHA384Managed (не соответствует FIPS) (используйте SHA384 в качестве имени алгоритма в вызовах HashAlgorithm.Create или CryptoConfig.CreateFromName)
    • SHA256Managed (не соответствует FIPS) (используйте SHA256 в качестве имени алгоритма в вызовах HashAlgorithm.Create или CryptoConfig.CreateFromName)
    • SHA512CryptoServiceProvider (соответствие FIPS)
    • SHA256CryptoServiceProvider (соответствие FIPS)
    • SHA384CryptoServiceProvider (соответствие FIPS)

    Использование надежных алгоритмов шифрования для шифрования данных в базе данных

    Название Сведения
    Компонент База данных
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Выбор алгоритма шифрования
    Шаги Алгоритмы шифрования определяют преобразования данных, которые не могут быть легко отменены несанкционированными пользователями. SQL Server позволяет администраторам и разработчикам выбирать из нескольких алгоритмов, включая DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, 128-битный RC4, DESX, 128-битный AES, 192-битный AES и 256-битный AES

    Пакеты служб SSIS должны быть зашифрованы и цифрово подписаны

    Название Сведения
    Компонент База данных
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Определение источника пакетов с помощью цифровых подписей, минимизация угроз и уязвимостей (службы интеграции)
    Шаги Источник пакета — это отдельный или организационный объект, создавший пакет. Запуск пакета из неизвестного или ненадежного источника может быть рискованным. Чтобы предотвратить несанкционированное изменение пакетов служб SSIS, следует использовать цифровые подписи. Кроме того, чтобы обеспечить конфиденциальность пакетов во время хранения и передачи, необходимо шифровать пакеты служб SSIS.

    Добавление цифровой подписи в критически важные защищаемые базы данных

    Название Сведения
    Компонент База данных
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки ДОБАВИТЬ ПОДПИСЬ (Transact-SQL)
    Шаги В случаях, когда необходимо проверить целостность защищаемой базы данных, следует использовать цифровые подписи. Защищаемые базы данных, такие как хранимая процедура, функция, сборка или триггер, могут быть цифрово подписаны. Ниже приведен пример того, когда это может быть полезно: предположим, что поставщик программного обеспечения (независимый поставщик программного обеспечения) предоставил поддержку программному обеспечению, предоставленному одному из своих клиентов. Перед предоставлением поддержки ISV хотел бы убедиться, что безопасность базы данных в программном обеспечении не была нарушена ни по ошибке, ни в результате вредоносных действий. Если защищаемый объект имеет цифровую подпись, isV может проверить цифровую подпись и проверить ее целостность.

    Использование EKM SQL Server для защиты ключей шифрования

    Название Сведения
    Компонент База данных
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Управление расширяемыми ключами SQL Server (EKM), расширяемое управление ключами с помощью Azure Key Vault (SQL Server)
    Шаги Управление расширяемыми ключами SQL Server позволяет хранить ключи шифрования, которые защищают файлы базы данных, на внешнем устройстве, например таком как смарт-карта, USB-устройство или модуль EKM/HSM. Это также обеспечивает защиту данных от администраторов базы данных (за исключением членов группы sysadmin). Данные можно шифровать с помощью ключей шифрования, к которым имеет доступ только пользователь базы данных во внешнем модуле EKM/HSM.

    Используйте функцию AlwaysEncrypted, если ключи шифрования не должны быть показаны в ядре СУБД

    Название Сведения
    Компонент База данных
    Этап SDL Строить
    Применимые технологии SQL Azure, локальные
    Атрибуты Версия SQL — версия 12, MsSQL2016
    Ссылки Always Encrypted (ядро СУБД)
    Шаги Always Encrypted — это функция, предназначенная для защиты конфиденциальных данных, таких как номера кредитных карт или национальные или региональные идентификационные номера (например, номера социального страхования США), хранящиеся в базе данных SQL Azure или базах данных SQL Server. Always Encrypted позволяет клиентам шифровать конфиденциальные данные в клиентских приложениях и никогда не раскрывать ключи шифрования ядра СУБД (база данных SQL или SQL Server). В результате Always Encrypted обеспечивает разделение между теми, кто владеет данными (и может просматривать их) и тех, кто управляет данными (но не должен иметь доступа).

    Безопасное хранение криптографических ключей на устройстве Интернета вещей

    Название Сведения
    Компонент Устройство Интернета вещей
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Ос устройства — Windows IoT Core, подключение к устройствам — пакеты SDK для устройств Интернета вещей Azure
    Ссылки TPM в Windows IoT Core, Настройка TPM в Windows IoT Core, SDK для устройств Интернета вещей Azure TPM
    Шаги Симметричные или закрытые ключи сертификатов безопасно хранятся в защищённом аппаратном хранилище, например, TPM или микросхемы смарт-карт. Windows 10 IoT Core поддерживает использование доверенного платформенного модуля (TPM), и существует несколько совместимых TPM, которые можно использовать: дискретный TPM (dTPM). Рекомендуется использовать встроенное ПО или дискретный TPM. Платформенный модуль программного обеспечения должен использоваться только для разработки и тестирования. После того как TPM станет доступной, и ключи будут в ней подготовлены, код, генерирующий токен, должен быть написан без жестко закодированной в нем конфиденциальной информации.

    Пример

    TpmDevice myDevice = new TpmDevice(0);
    // Use logical device 0 on the TPM 
    string hubUri = myDevice.GetHostName(); 
    string deviceId = myDevice.GetDeviceId(); 
    string sasToken = myDevice.GetSASToken(); 
    
    var deviceClient = DeviceClient.Create( hubUri, AuthenticationMethodFactory. CreateAuthenticationWithToken(deviceId, sasToken), TransportType.Amqp); 
    

    Как видно, первичный ключ устройства отсутствует в коде. Вместо этого он хранится в TPM в слоте 0. Устройство TPM создает кратковременный маркер SAS, который затем используется для подключения к Центру Интернета вещей.

    Создание случайного симметричного ключа достаточной длины для проверки подлинности в Центре Интернета вещей

    Название Сведения
    Компонент Облачный шлюз Интернета вещей
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Выбор шлюза: Центр Интернета вещей Azure
    Ссылки Не применимо
    Шаги Центр Интернета вещей содержит реестр удостоверений устройства и при подготовке устройства автоматически создает случайный симметричный ключ. Рекомендуется использовать эту функцию реестра удостоверений Центра Интернета вещей Azure для создания ключа, используемого для проверки подлинности. Центр Интернета вещей также позволяет указать ключ при создании устройства. Если ключ создается вне Центра Интернета вещей во время подготовки устройств, рекомендуется создать случайный симметричный ключ или по крайней мере 256 бит.

    Убедитесь, что политика управления устройствами использует ПИН-код и разрешает удаленную очистку.

    Название Сведения
    Компонент Мобильный клиент Dynamics CRM
    Этап SDL Развертывание
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Не применимо
    Шаги Убедитесь, что политика управления устройствами использует ПИН-код и разрешает удаленную очистку.

    Убедитесь, что политика управления устройствами установлена, которая требует ПИН-код/пароль, автоматическую блокировку и шифрует все данные (например, BitLocker).

    Название Сведения
    Компонент Клиент Dynamics CRM Outlook
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Не применимо
    Шаги Убедитесь, что политика управления устройствами установлена, которая требует ПИН-код/пароль, автоматическую блокировку и шифрует все данные (например, BitLocker).

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

    Название Сведения
    Компонент Сервер удостоверений
    Этап SDL Развертывание
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Не применимо
    Шаги Убедитесь, что ключи подписи обновляются при использовании IdentityServer. Ссылка в разделе ссылок объясняет, как это следует планировать без сбоя приложений, использующих сервер удостоверений.

    Убедитесь, что используются криптографически надежные идентификатор клиента и секрет клиента в сервере идентификации.

    Название Сведения
    Компонент Сервер удостоверений
    Этап SDL Строить
    Применимые технологии Общий
    Атрибуты Не применимо
    Ссылки Не применимо
    Шаги

    Убедитесь, что в Identity Server используются криптографически надежные идентификатор клиента и секрет клиента. При создании идентификатора клиента и секрета следует использовать следующие рекомендации.

    • Создайте случайный GUID в качестве идентификатора клиента
    • Создание криптографически случайного 256-разрядного ключа в качестве секрета