Current section
Files
Jump to
Current section
Files
lib/cmdb/l2_court.ex
defmodule CA.L2.Court do
@moduledoc """
Level 2: Sectoral Security Profile (Галузевий профіль безпеки Судової Системи)
Цей профіль розширює базовий (L1) додатковими вимогами, які адаптовано для
специфіки сучасних мобільних пристроїв, багатофакторної автентифікації та
використання сертифікованих апаратних засобів криптографічного захисту (КЗІ).
1. Сучасні мобільні екосистеми (Apple iPhone, Face ID, Passkeys):
* `IA-5(12)`, `IA-5(17)`: Забезпечення надійності біометрики та захист від спуфінгу (увага до екрана Face ID).
* `IA-2(12)`: Підтримка PIV Credentials та технології Passkeys (FIDO2) для безпарольного доступу.
* `AC-7(2)`, `AC-19(4)`: Відповідність політикам MDM (обмеження для засекреченої інформації, стирання пристрою після невдалих спроб входу).
2. Апаратні криптографічні модулі (ІІТ Сайфер, Автор ПК КЗІ, HSM):
* `IA-5(11)`, `IA-5(15)`: Підтримка апаратних токенів та використання виключно сертифікованих уповноваженим органом продуктів.
* `IA-7`: Строга автентифікація самого криптографічного модуля.
* `SC-49`, `SC-51`: Примусове апаратне забезпечення виконання та апаратний захист (запобігання витягуванню ключів).
* `SC-12`, `SC-17`, `SC-28(1)`: Криптографічне управління ключами, PKI-сертифікати та шифрування даних у стані спокою.
3. Судді (робота на MacBook та BYOD):
* `AC-19(1)`, `AC-19(2)`: Контроль доступу для портативних та персональних пристроїв зберігання даних.
* `MP-6`: Знищення інформації на носіях (підтримка Remote Wipe / Activation Lock).
4. Офісний персонал (Використання ВКЗ / Відеоконференцій):
* `SC-44`: Екрановані камери (захист від несанкціонованого відеоспостереження).
* `SC-15` (успадковано з базового L1): Захист спільних обчислювальних пристроїв та засобів ВКЗ.
5. Електронний документообіг:
* `AU-10`, `AU-10(5)`: Неспростовність та використання цифрових підписів для гарантії авторства документів.
* `SI-7`: Забезпечення цілісності інформації та програмного забезпечення.
6. Службова та таємна інформація (Матеріали справ):
* `AC-15`, `AC-16`: Автоматизоване маркування документів та управління атрибутами безпеки (Classification & Labeling).
* `MP-8(4)`: Безпечне зниження категорії безпеки для таємної інформації (Downgrading).
* `PE-22`: Маркування компонентів та обладнання, де обробляються засекречені дані.
"""
@doc """
IA-5(2) (Автентифікація на основі відкритого ключа) — для підтримки ECC (PKI).
IA-5(11) (Автентифікація на основі апаратних токенів) — для апаратних OTP-токенів та ключів.
SC-28(1) (Захист інформації в стані спокою | Криптографічний захист) — згідно з твоїм запитом.
SC-12 (Криптографічне управління ключами) — додав як логічне підсилення, що покриває життєвий цикл управління цими ж апаратними та ECC ключами (генерація, розповсюдження, зберігання, відкликання).
"""
def dump do :lists.map fn x -> {:maps.get(:id, x, []),:maps.get(:title,x,[])} end, CA.TeX.unfold controls() end
def controls do
CA.L1.controls() ++
[
CA.SPE.oid(:"id-spe-ia-2-1"),
CA.SPE.oid(:"id-spe-ia-2-2"),
CA.SPE.oid(:"id-spe-ia-5-2"),
CA.SPE.oid(:"id-spe-ia-5-11"),
CA.SPE.oid(:"id-spe-ia-5-12"),
CA.SPE.oid(:"id-spe-ia-5-15"),
CA.SPE.oid(:"id-spe-ia-5-17"),
CA.SPE.oid(:"id-spe-ia-7"),
CA.SPE.oid(:"id-spe-ia-2-1"),
CA.SPE.oid(:"id-spe-ia-2-3"),
CA.SPE.oid(:"id-spe-ia-2-4"),
CA.SPE.oid(:"id-spe-ac-4-1"),
CA.SPE.oid(:"id-spe-ac-4-3"),
CA.SPE.oid(:"id-spe-ac-4-4"),
CA.SPE.oid(:"id-spe-ac-4-5"),
CA.SPE.oid(:"id-spe-ac-4-6"),
CA.SPE.oid(:"id-spe-ac-4-7"),
CA.SPE.oid(:"id-spe-ac-4-7"),
CA.SPE.oid(:"id-spe-ac-4-19"),
CA.SPE.oid(:"id-spe-ac-4-21"), # PHYSICAL OR LOGICAL SEPARATION OF INFORMATION FLOWS
CA.SPE.oid(:"id-spe-ac-4-22"),
CA.SPE.oid(:"id-spe-ac-4-29"),
CA.SPE.oid(:"id-spe-ac-5"),
CA.SPE.oid(:"id-spe-ac-15"),
CA.SPE.oid(:"id-spe-ac-16"),
CA.SPE.oid(:"id-spe-ac-19-1"),
CA.SPE.oid(:"id-spe-ac-19-2"),
CA.SPE.oid(:"id-spe-ac-19-4"),
CA.SPE.oid(:"id-spe-au-4"),
CA.SPE.oid(:"id-spe-au-4-1"),
CA.SPE.oid(:"id-spe-au-5-1"),
CA.SPE.oid(:"id-spe-au-6-1"),
CA.SPE.oid(:"id-spe-au-10"),
CA.SPE.oid(:"id-spe-au-10-5"),
CA.SPE.oid(:"id-spe-mp-6"),
CA.SPE.oid(:"id-spe-mp-8-4"),
CA.SPE.oid(:"id-spe-pe-22"),
CA.SPE.oid(:"id-spe-sc-8-1"),
CA.SPE.oid(:"id-spe-sc-12"),
CA.SPE.oid(:"id-spe-sc-17-1"),
CA.SPE.oid(:"id-spe-sc-17-2"),
CA.SPE.oid(:"id-spe-sc-28-1"),
CA.SPE.oid(:"id-spe-sc-28-2"),
CA.SPE.oid(:"id-spe-sc-44"),
CA.SPE.oid(:"id-spe-sc-45"),
CA.SPE.oid(:"id-spe-sc-49"),
CA.SPE.oid(:"id-spe-sc-51"),
CA.SPE.oid(:"id-spe-si-7")
]
end
@doc """
Визначає, чи є захід технічним (потребує налаштування параметрів або змін у коді).
"""
def technical?(oid) do
case oid do
{1, 2, 804, 3, 1, 2, 1, 100, 1, 1} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 1, 21} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 1, 22} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 1, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 1, _, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 2, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 2, _, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 3, 1} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 3, 6} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 3, 6, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 3, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 3, _, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 4, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 4, _, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 5, 2} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 5, 6} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 5, 7} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 5, 7, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 5, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 5, _, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 6, 9} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 6, 9, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 6, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 7, 1} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 7, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 7, _, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 8, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 8, _, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 9, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 9, _, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 10, 6} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 10, 6, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 10, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 10, _, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 11, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 11, _, _} -> false
{1, 2, 804, 3, 1, 2, 1, 100, family, _} when family in [12, 13, 14, 15, 18] -> false
{1, 2, 804, 3, 1, 2, 1, 100, family, _, _} when family in [12, 13, 14, 15, 18] -> false
{1, 2, 804, 3, 1, 2, 1, 100, 16, 1} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 16, 44} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 16, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 16, _, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 17, 1} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 17, 5} -> false
{1, 2, 804, 3, 1, 2, 1, 100, 17, _} -> true
{1, 2, 804, 3, 1, 2, 1, 100, 17, _, _} -> true
_ -> false
end
end
end
defmodule CA.L2.CourtTech do
@moduledoc """
Level 2: Sectoral Technical Security Profile (Галузевий технічний профіль безпеки Судової Системи)
Містить суто технічні заходи безпеки з профілю L2 Court, що потребують
модифікації коду або налаштування технічних параметрів системи та засобів безпеки.
"""
def controls do
CA.L2.Court.controls()
|> Enum.filter(&CA.L2.Court.technical?/1)
end
end
defmodule CA.L2.CourtOrg do
@moduledoc """
Level 2: Sectoral Organizational Security Profile (Галузевий організаційний профіль безпеки Судової Системи)
Чисто організаційний профіль безпеки, де руками здійснюється ручний моніторинг,
аудит, лекції з обізнаності (AT), контроль кадрової безпеки, фізичного доступу тощо.
"""
def controls do
CA.L2.Court.controls()
|> Enum.reject(&CA.L2.Court.technical?/1)
end
end