Skip to main content

V1.9.2 Communications Architecture

Requirement:#

Verify that application components verify the authenticity of each side in a communication link to prevent person-in-the-middle attacks. For example, application components should validate TLS certificates and chains.

Explanation:#

Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ опрСдСляСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ провСдСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подлинности ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· сторон Π² ΠΊΠ°Π½Π°Π»Π΅ связи для прСдотвращСния Π°Ρ‚Π°ΠΊ Ρ‚ΠΈΠΏΠ° "man-in-the-middle" (MitM). ОсновноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ здСсь удСляСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ сСртификатов TLS ΠΈ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ сСртификатов.

Authentication of Communication Parties:

  • ΠŸΡ€ΠΈ любом бСзопасном ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΎΠ±Π΅ΠΈΡ… сторон, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром.
  • АутСнтификация участников связи позволяСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ с Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½, Π° Π½Π΅ со Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠΌ, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΠΌΡΡ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠΈ.

Man-in-the-Middle (MitM) Attacks:

  • Атака MitM происходит, ΠΊΠΎΠ³Π΄Π° Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ нСгласно ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ измСняСт ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сторонами. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΊΡ€Π°ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρƒ ΠΈΠ»ΠΈ нСсанкционированному измСнСнию Π΄Π°Π½Π½Ρ‹Ρ….
  • АутСнтификация участников ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· основных способов Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ MitM-Π°Ρ‚Π°ΠΊ.

TLS Certificates and Chains:

  • Β Transport Layer Security (TLS) - это ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для установлСния Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… соСдинСний ΠΏΠΎ сСти. TLS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ сСртификаты для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подлинности Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сторон.Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚Ρ‹ Π²Ρ‹Π΄Π°ΡŽΡ‚ΡΡ Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°ΠΌΠΈ сСртификации ("CA") ΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ довСрия. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° этой Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ сСртификата

Data Integrity: АутСнтификация Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сторон Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Π»Π°Π½Ρ‹ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ.

Confidentiality: ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, гарантируя, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π° Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ.

Trustworthiness: УстановлСниС довСрия ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ сторонам ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, особСнно ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для Π²Ρ…ΠΎΠ΄Π° Π² систСму ΠΈΠ»ΠΈ финансовая информация.

MitM Attack Prevention: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° TLS сСртификатов ΠΈ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ являСтся Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ срСдством Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ MitM-Π°Ρ‚Π°ΠΊ, сущСствСнно затрудняя Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ requests для дСмонстрации ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сСртификатов TLS ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ HTTPS-запроса:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сСртификатов TLS
import requests
url = "https://example.com"
# Perform an HTTPS request with certificate validation
try:
response = requests.get(url, verify=True)
if response.status_code == 200:
print("Request successful")
else:
print(f"Request failed with status code {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"Error: {e}")

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ verify=True Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ requests.get обСспСчиваСт Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ TLS сСртификата . Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ сСртификатов ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ запроса, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ MitM-Π°Ρ‚Π°ΠΊΠΈ.

Remediation:#

Для выполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ трСбования слСдуСт Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

1.TLS Implementation: Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ TLS соСдинСниС.

2.Certificate Validation: Β Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ строгиС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сСртификатов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ:

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ сСртификат Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ CA.
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ срока дСйствия сСртификата.
  • ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ соотвСтствия сСртификата ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ хоста (CN=hostname).
  1. Certificate Pinning: РассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ "pinning" сСртификатов, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ довСряСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ сСртификатам ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ устойчивым ΠΊ MitM-Π°Ρ‚Π°ΠΊΠ°ΠΌ.

  2. Chain of Trust: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° всСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ сСртификатов, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСртификат Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ являСтся Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ подписан Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ сСртификации CA.

  3. Revocation Checking: РСализация ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ статуса ΠΎΡ‚Π·Ρ‹Π²Π° сСртификата с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Online Certificate Status Protocol (OCSP) ΠΈΠ»ΠΈ списков ΠΎΡ‚Π·Ρ‹Π²Π° сСртификатов (CRL).

OCSP stapling https://ssl-config.mozilla.org/
ssl_stapling on;
ssl_stapling_verify on;
  1. Logging and Alerts: Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ логирования ΠΈ оповСщСния для обнаруТСния ΠΈ рСагирования Π½Π° Π»ΡŽΠ±Ρ‹Π΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ, связанныС с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ сСртификатов.

How to check: https://www.ssllabs.com/ssltest/analyze.html?d=example.com

Additional:#