Безопасность транспортного уровня (TLS) протокол является основным средством защиты сетевых коммуникаций через Интернет. Эта статья представляет собой краткое руководство, которое поможет вам настроить безопасный сервер в соответствии с текущими требованиями. TLS стандарты.
Введение
Ассоциация Безопасность транспортного уровня (TLS) Протокол является основным средством защиты сетевых коммуникаций через Интернет. Он (и его предшественник, Уровень защищенных сокетов или SSL) десятилетиями использовались во многих приложениях, но особенно в браузерах, когда они посещают HTTPS веб-сайтов. TLS обычно работает тихо на заднем плане, но вопреки тому, что можно подумать, TLS это не черный ящик, который просто работает. Скорее, безопасность TLS обеспечивает вытекает из сотрудничества различных криптографических алгоритмов. Более того, TLS, как и SSL до него, постоянно развивается вместе с отраслью безопасности - новые технологии и бизнес-требования должны быть удовлетворены, а новейшие угрозы безопасности должны быть устранены. Алгоритмы со временем могут устареть, или от практик можно отказаться, при этом каждое изменение влияет на общую безопасность TLS экземпляр (как тот, который защищает ваше соединение прямо сейчас).
Эта волатильность побудила различные организации по стандартизации публиковать руководящие документы, так что минимальный базовый уровень для TLS безопасность может быть установлена на конкретном рынке, в секторе или услуге. К сожалению, существует множество таких стандартов, причем разные секторы требуют соблюдения различных применимых документов, в то время как сами стандарты причислены развиваться с течением времени, приспосабливаясь к изменениям в секторе, для защиты которого они были предназначены
Понятно, что переходя через это море стандартов, чтобы создать современный TLS Экземпляр может стать настоящей головной болью для администраторов. Эта статья представляет собой краткое руководство, которое поможет вам настроить безопасный сервер в соответствии с ожидаемыми TLS стандартов в 2021 году. (Для дополнительной помощи мы также привели примеры конфигураций самых популярных решений веб-серверов в приложение.)
Стандарты
Есть несколько организаций, которые поддерживают руководящие принципы для TLS в отношении сетевой безопасности, например, Департамент здравоохранения и социальных служб США (HHS) или Национальный институт стандартов и технологий (NIST). В данной статье для краткости будут изучены только три наиболее принятых документа:
- Ассоциация Медицинское страхование Портативность и Акт об ответственности (ХИПАА)
- НИСТ Рекомендации SP 800-52r2
- Ассоциация Стандарт безопасности данных индустрии платежных карт (PCI-DSS)
HIPAA
HIPAA - это постановление, принятое правительством США в 1996 году, касающееся безопасного обращения с Защищенная информация о здоровье (ФИ). PHI относится к любой цифровой информации о пациенте, такой как результаты анализов или диагнозы. HIPAA руководящий документ опубликовано в 2013 году, говорится следующее:
Допустимые процессы шифрования для данных в движении - это те, которые соответствуют, при необходимости, специальным публикациям NIST 800-52, Руководству по выбору и использованию безопасности транспортного уровня (TLS) Реализации; 800-77, Руководство по IPsec VPN; или 800-113, Руководство по SSL VPN, или другие утвержденные Федеральные стандарты обработки информации (FIPS) 140-2.
Стандарты NIST
В 2005 году NIST опубликовал специальную публикацию (SP) 800-52, в которой описаны правильные рабочие процедуры для безопасной настройки TLS экземпляр для государственных серверов. SP 800-52 был заменен версиями SP 800-52r1 (2014) и SP 80052r2 (2019). Эта статья соответствует рекомендациям SP 800-52r2, который в настоящее время является стабильным.
PCI-DSS
PCI-DSS - это стандарт соответствия, поддерживаемый Советом безопасности (SSC) по стандартам индустрии платежных карт, который устанавливает порядок обработки информации о платежах и картах на веб-сайтах электронной коммерции. Относительно правильной конфигурации TLS экземпляры PCI-DSS заявляют:
«Обратитесь к отраслевым стандартам и передовым методам для получения информации о надежной криптографии и безопасных протоколах (например, NIST SP 800-52 и SP 800-57, OWASP и т. Д.)»
TLS стандарты: собрать все это вместе
К настоящему времени следует отметить, что каждый стандарт влияет на разные системы в зависимости от их функций и обрабатываемых данных. Например, сервер электронной почты больницы может подпадать под действие правил HIPAA, поскольку передаваемые сообщения могут содержать информацию о пациентах, а система CRM больницы может подпадать под действие стандарта PCI-DSS, поскольку может содержать данные кредитной карты и другие данные о клиентах. Соответствие всем трем стандартам потребует использования общих TLS Параметры присутствуют во всех документах.
К счастью, очевидно, что все стандарты соответствуют рекомендациям NIST по выбору TLS параметры. Это означает, что на момент написания этой статьи совместимость с SP 800-52r2 должна сделать сервер также совместимым с HIPAA и PCI-DSS. (Хорошо, это не точно, правда, но в следующем разделе все прояснится.)
конфигурируемый TLS параметры
Уровень безопасности, который TLS обеспечивает наиболее пострадавших от версия протокола (т.е. 1.0, 1.1 и т. д.) и разрешенные наборы шифров, Шифры - это алгоритмы, которые выполняют шифрование и дешифрование. Тем не менее, набор шифров представляет собой набор алгоритмов, включая шифр, алгоритм обмена ключами и алгоритм хеширования, которые используются вместе для установления безопасного TLS подключение. Наиболее TLS клиенты и серверы поддерживают несколько альтернатив, поэтому им приходится договариваться при установлении безопасного соединения, чтобы выбрать общий TLS версия и комплект шифров.
TLS версия протокола
Относительно TLS Поддержка версий, NIST SP 800-52r2 заявляет следующее:
Серверы, поддерживающие правительственные приложения должен быть настроенным на использование TLS 1.2 и должен быть настроенным на использование TLS 1.3 тоже. Эти серверы не следует быть настроенным на использование TLS 1.1 и не должны использование TLS 1.0, SSL 3.0 или SSL 2.0.
...
Серверы, поддерживающие гражданские или бизнес-приложения (т. Е. Клиент может не быть частью государственной ИТ-системы) должен быть настроенным на переговоры TLS 1.2 и должен быть настроенным на переговоры TLS 1.3. Использование TLS версии 1.1 и 1.0 обычно не рекомендуются, но эти версии могут быть настроены при необходимости для обеспечения взаимодействия с гражданами и предприятиями ... Эти серверы не должны разрешить использование SSL 2.0 или SSL 3.0.
Агентства должен поддержка TLS 1.3 до 1 января 2024 г. После этой даты серверы должен поддержка TLS 1.3 как для правительственных, так и для гражданских или бизнес-приложений. В общем, серверы, поддерживающие TLS 1.3 должен быть настроенным на использование TLS 1.2 тоже. Тем не мение, TLS 1.2 может быть отключен на серверах, поддерживающих TLS 1.3, если было установлено, что TLS 1.2 не требуется для взаимодействия.
В то время как TLS 1.0 запрещена и TLS 1.1 не рекомендуется для государственных сайтов, в рекомендациях NIST говорится, что для совместимости со сторонними сервисами, серверами, контролируемыми государством май осуществлять TLS 1.0 и 1.1 при необходимости. Под PCI-DSS 3.2.1 (текущая версия), совместимые серверы должен отказаться от поддержки для TLS 1.0 и «перейти как минимум на TLS 1.1, предпочтительно TLS 1.2. » HIPAA технически позволяет использовать все версии TLS. Таким образом, минимум обычно поддерживаемых TLS версия 1.1; однако PCI-DSS и NIST настоятельно рекомендуют использовать более безопасный TLS 1.2 (и, как видно выше, NIST рекомендует принять TLS 1.3 и планирует потребовать поддержки к 2024 году).
Наборы шифров
TLS 1.2 и ранее
SP 800-52r2 определяет множество приемлемых наборов шифров для TLS 1.2 и ранее. Стандарт не требует поддержки каких-либо конкретных наборов шифров, но предлагает рекомендации по выбору более сильных:
- Предпочитайте эфемерные ключи статическим (т. Е. Предпочитайте DHE вместо DH и предпочитайте ECDHE над ECDH). Эфемерные ключи обеспечивают идеальную прямую секретность.
- Предпочитайте режимы GCM или CCM режиму CBC. Использование режима аутентифицированного шифрования предотвращает несколько атак (дополнительную информацию см. В разделе 3.3.2 [SP 800-52r2]). Обратите внимание, что они недоступны в версиях до TLS 1.2.
- Предпочитайте CCM над CCM_8. Последний содержит более короткий тег аутентификации, который обеспечивает более низкую надежность аутентификации.
Кроме того, хотя это разрешается наборы шифров, если ваш TLS Сервер не работает с большим количеством различных платформ и клиентов, поэтому рекомендуется использовать только небольшое подмножество этих алгоритмов. Добавление большего количества комплектов шифров может расширить поверхность атаки на ваш сервер только в том случае, если (или когда) обнаружена новая уязвимость протокола.
Наборы шифров для сертификатов ECDSA | ||
---|---|---|
TLS 1.2: | ||
IANA | Значение | OpenSSL |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 |
0xC0, 0x2B |
ECDHE-ECDSA-AES128-GCM-SHA256 |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 |
0xC0, 0x2C |
ECDHE-ECDSA-AES256-GCM-SHA384 |
TLS_ECDHE_ECDSA_WITH_AES_128_CCM |
0xC0, 0xAC |
ECDHE-ECDSA-AES128-CCM |
TLS_ECDHE_ECDSA_WITH_AES_256_CCM |
0xC0, 0xAD |
ECDHE-ECDSA-AES256-CCM |
TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 |
0xC0, 0xAE |
ECDHE-ECDSA-AES128-CCM8 |
TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 |
0xC0, 0xAF |
ECDHE-ECDSA-AES256-CCM8 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 |
0xC0, 0x23 |
ECDHE-ECDSA-AES128-SHA256 |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 |
0xC0, 0x24 |
ECDHE-ECDSA-AES256-SHA384 |
TLS 1.2, 1.1 или 1.0: | ||
IANA | Значение | OpenSSL |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA |
0xC0, 0x09 |
ECDHE-ECDSA-AES128-SHA |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA |
0xC0, 0x0A |
ECDHE-ECDSA-AES256-SHA |
Наборы шифров для сертификатов RSA | ||
TLS 1.2: | ||
IANA | Значение | OpenSSL |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |
0xC0, 0x2F |
ECDHE-RSA-AES128-GCM-SHA256 |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 |
0xC0, 0x30 |
ECDHE-RSA-AES256-GCM-SHA384 |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 |
0x00, 0x9E |
DHE-RSA-AES128-GCM-SHA256 |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 |
0x00, 0x9F |
DHE-RSA-AES256-GCM-SHA384 |
TLS_DHE_RSA_WITH_AES_128_CCM |
0xC0, 0x9E |
DHE-RSA-AES128-CCM |
TLS_DHE_RSA_WITH_AES_256_CCM |
0xC0, 0x9F |
DHE-RSA-AES256-CCM |
TLS_DHE_RSA_WITH_AES_128_CCM_8 |
0xC0, 0xA2 |
DHE-RSA-AES128-CCM8 |
TLS_DHE_RSA_WITH_AES_256_CCM_8 |
0xC0, 0xA3 |
DHE-RSA-AES256-CCM8 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
0xC0, 0x27 |
ECDHE-RSA-AES128-SHA256 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 |
0xC0, 0x28 |
ECDHE-RSA-AES256-SHA384 |
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 |
0x00, 0x67 |
DHE-RSA-AES128-SHA256 |
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 |
0x00, 0x6B |
DHE-RSA-AES256-SHA256 |
TLS 1.2, 1.1 или 1.0: | ||
IANA | Значение | OpenSSL |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA |
0xC0, 0x13 |
ECDHE-RSA-AES128-SHA |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA |
0xC0, 0x14 |
ECDHE-RSA-AES256-SHA |
TLS_DHE_RSA_WITH_AES_128_CBC_SHA |
0x00, 0x33 |
DHE-RSA-AES128-SHA |
TLS_DHE_RSA_WITH_AES_256_CBC_SHA |
0x00, 0x39 |
DHE-RSA-AES256-SHA |
Наборы шифров для сертификатов ECDSA | ||
TLS 1.2: | ||
IANA | Значение | OpenSSL |
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 |
0x00, 0xA2 |
DHE-DSS-AES128-GCM-SHA256 |
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 |
0x00, 0xA3 |
DHE-DSS-AES256-GCM-SHA384 |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 |
0x00, 0x40 |
DHE-DSS-AES128-SHA256 |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 |
0x00, 0x6A |
DHE-DSS-AES256-SHA256 |
TLS 1.2, 1.1 или 1.0: | ||
IANA | Значение | OpenSSL |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA |
0x00, 0x32 |
DHE-DSS-AES128-SHA |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA |
0x00, 0x38 |
DHE-DSS-AES256-SHA |
Наборы шифров для сертификатов DH | ||
DSA-подписанный, TLS 1.2: | ||
IANA | Значение | OpenSSL |
TLS_DH_DSS_WITH_AES_128_GCM_SHA256 |
0x00, 0xA4 |
DH-DSS-AES128-GCM-SHA256 |
TLS_DH_DSS_WITH_AES_256_GCM_SHA384 |
0x00, 0xA5 |
DH-DSS-AES256-GCM-SHA384 |
TLS_DH_DSS_WITH_AES_128_CBC_SHA256 |
0x00, 0x3E |
DH-DSS-AES128-SHA256 |
TLS_DH_DSS_WITH_AES_256_CBC_SHA256 |
0x00, 0x68 |
DH-DSS-AES256-SHA256 |
DSA-подписанный, TLS 1.2, 1.1 или 1.0: | ||
IANA | Значение | OpenSSL |
TLS_DH_DSS_WITH_AES_128_CBC_SHA |
0x00, 0x30 |
DH-DSS-AES128-SHA |
TLS_DH_DSS_WITH_AES_256_CBC_SHA |
0x00, 0x36 |
DH-DSS-AES256-SHA |
RSA-подписано, TLS 1.2: | ||
IANA | Значение | OpenSSL |
TLS_DH_RSA_WITH_AES_128_GCM_SHA256 |
0x00, 0xA0 |
DH-RSA-AES128-GCM-SHA256 |
TLS_DH_RSA_WITH_AES_256_GCM_SHA384 |
0x00, 0xA1 |
DH-RSA-AES256-GCM-SHA384 |
TLS_DH_RSA_WITH_AES_128_CBC_SHA256 |
0x00, 0x3F |
DH-RSA-AES128-SHA256 |
TLS_DH_RSA_WITH_AES_256_CBC_SHA256 |
0x00, 0x69 |
DH-RSA-AES256-SHA256 |
RSA-подписано, TLS 1.2, 1.1 или 1.0: | ||
IANA | Значение | OpenSSL |
TLS_DH_RSA_WITH_AES_128_CBC_SHA |
0x00, 0x31 |
DH-RSA-AES128-SHA |
TLS_DH_RSA_WITH_AES_256_CBC_SHA |
0x00, 0x37 |
DH-RSA-AES256-SHA |
Наборы шифров для сертификатов ECDH | ||
ECDSA-подписано, TLS 1.2: | ||
IANA | Значение | OpenSSL |
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 |
0xC0, 0x2D |
ECDH-ECDSA-AES128-GCM-SHA256 |
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 |
0xC0, 0x2E |
ECDH-ECDSA-AES256-GCM-SHA384 |
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 |
0xC0, 0x25 |
ECDH-ECDSA-AES128-SHA256 |
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 |
0xC0, 0x26 |
ECDH-ECDSA-AES256-SHA384 |
ECDSA-подписано, TLS 1.2, 1.1 или 1.0: | ||
IANA | Значение | OpenSSL |
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA |
0xC0, 0x04 |
ECDH-ECDSA-AES128-SHA |
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA |
0xC0, 0x05 |
ECDH-ECDSA-AES256-SHA |
RSA-подписано, TLS 1.2: | ||
IANA | Значение | OpenSSL |
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 |
0xC0, 0x31 |
ECDH-RSA-AES128-GCM-SHA256 |
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 |
0xC0, 0x32 |
ECDH-RSA-AES256-GCM-SHA384 |
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 |
0xC0, 0x29 |
ECDH-RSA-AES128-SHA256 |
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 |
0xC0, 0x2A |
ECDH-RSA-AES256-SHA384 |
RSA-подписано, TLS 1.2, 1.1 или 1.0: | ||
IANA | Значение | OpenSSL |
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA |
0xC0, 0x0E |
ECDH-RSA-AES128-SHA |
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA |
0xC0, 0x0F |
ECDH-RSA-AES256-SHA |
TLS 1.3
TLS 1.3 имеет гораздо более короткий список наборов шифров:
TLS_AES_128_GCM_SHA256 (0x13, 0x01)
TLS_AES_256_GCM_SHA384 (0x13, 0x02)
TLS_AES_128_CCM_SHA256 (0x13, 0x04)
TLS_AES_128_CCM_8_SHA256 (0x13, 0x05)
Заключение
Мы надеемся, что это краткое руководство поможет вам лучше понять TLSи помочь вам при настройке TLS на вашем собственном сервере. Что касается стандартов и рекомендаций, которые мы обсудили, следующий раздел содержит пример конфигурации, которую вы сможете применить к наиболее популярным решениям веб-серверов. Если у вас есть какие-либо вопросы о том, как обеспечить соблюдение нормативных требований в сети, свяжитесь с нами по электронной почте. Support@SSL.com или нажав кнопку живого чата внизу этого экрана.
Приложение: Пример TLS Конфигурации
Собирая правила, указанные в трех документах спецификации, современный защищенный сервер должен реализовать TLS 1.2 и / или TLS 1.3, с коротким, но разнообразным списком избранных наборов шифров. В качестве краткого справочника ниже приведены примеры конфигураций наиболее популярных веб-серверов на рынке. Это «промежуточные» (универсальные) конфигурации, созданные с помощью Mozilla Генератор конфигурации SSL:
HTTP-сервер Apache
... SSLProtocol все -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-GCM384- SHA20: ECDHE-RSA-AES1305-GCM20- SHA1305 POLY128: ECDHE-RSA-CHACHA256-POLY256: DHE-RSA-AES384-GCM-SHAXNUMX: DHE-RSA-AESXNUMX-GCM-SHAXNUMX SSLHonorCipherOrder off SSLSessionTickets off
Nginx
... ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off;
лайтпд
... ssl.openssl.ssl-conf-cmd = ("Протокол" => "ВСЕ, -SSLv2, -SSLv3, -TLSв1, -TLSv1.1 ") ssl.cipher-list =" ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-GCM SHA384: ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256-GCM-SHA384 "ssl.honor-cipher" отключить ssl.honor-cipher
HAProxy
... ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-bind-options предпочитают-client-ciphers no-sslv3 no-tlsv10 нет-tlsv11 нет-tls-tickets ssl-default-server-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 ssl-default-server-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-server-options no-sslv3 no-tlsv10 нет-tlsv11 нет-tls-Билеты
АМС ЭЛБ
... Политики: - Имя политики: Mozilla-intermediate-v5-0 Тип политики: Атрибуты SSLNegotiationPolicyType: - Имя: Протокол-TLSv1.2 Значение: true - Имя: Определяемый сервером-Cipher-Order Значение: false - Имя: ECDHE-ECDSA-AES128-GCM-SHA256 Значение: true - Имя: ECDHE-RSA-AES128-GCM-SHA256 Значение: true - Имя: ECDHE-ECDSA-AES256-GCM-SHA384 Значение: true - Имя: ECDHE-RSA-AES256-GCM-SHA384 Значение: true - Имя: DHE-RSA-AES128-GCM-SHA256 Значение: true - Имя: DHE-RSA -AES256-GCM-SHA384 Значение: true