> **Language / Dil**   > [EN English](#-english)  ·  [TR Türkçe](#-türkçe) # 🏗️ Architecture — Multi-Tier Enforcement Model Brave Omega uses a **three-tier enforcement model** that creates redundant, independent policy enforcement at each layer of the Windows + Brave + Omaha stack. --- ## Tier Overview ``` ┌─────────────────────────────────────────────────────────────┐ │ TIER 1 — HKCU (User Preference Layer) │ │ HKCU:\Software\BraveSoftware\Brave-Browser │ │ ↳ UsageStatsInSample = 0 │ │ Chromium user-level telemetry sampling disabled. │ │ Provides a fallback during policy propagation delays. │ ├─────────────────────────────────────────────────────────────┤ │ TIER 2 — HKLM (Enterprise Policy Layer / ADMX) │ │ HKLM:\SOFTWARE\Policies\BraveSoftware\Brave │ │ ↳ ADMX-validated enterprise policies (level-based), enforced. │ │ Appear gray and locked in browser Settings UI. │ │ Cannot be overridden by user interaction. │ ├─────────────────────────────────────────────────────────────┤ │ TIER 3 — Omaha Updater GUID Layer │ │ HKCU:\Software\BraveSoftware\Update\ClientState\{GUID} │ │ ↳ usagestats = 0 per application GUID │ │ Targets the update infrastructure's own telemetry, │ │ independently of all browser-level policies. │ └─────────────────────────────────────────────────────────────┘ ``` ## Hardening Levels (v2.0+) In addition to the three enforcement tiers, Brave Omega v2.0+ offers **five hardening levels** with cumulative inheritance. Each level includes all policies from the previous one: | Level | Policies | Scope | User Impact | | ------- | ---------- | ------- | ------------- | | **1. Brave Only** | 24 Brave-specific policies | HKLM | None | | **2. Essential** ⭐ | 24 + 27 = 51 | HKLM + HKCU + Omaha | None | | **3. Balanced** | 51 + 32 = 83 | + WebRTC, HTTPS, DNS | Low | | **4. Advanced** | 83 + 40 = 123 | + Sensors, Imports, Extensions, Profiles | Low | | **5. Strict** | 123 + 28 = 151 | + JIT, Cookies, Clipboard, FS, DevTools | Medium | Select your level interactively when running the script or use the `-Level` parameter: ```powershell PowerShell -ExecutionPolicy Bypass -File ".\BraveOmega.ps1" -Level Essential ``` --- ## Tier Details ### Tier 1 — HKCU (User Preference Layer) - **Registry Path:** `HKCU:\Software\BraveSoftware\Brave-Browser` - **Policy:** `UsageStatsInSample = 0` - **Effect:** Disables browser-level usage statistics sampling sent to Brave servers - **Role:** Fallback during policy propagation delays; user-level preference ### Tier 2 — HKLM (Enterprise Policy Layer / ADMX) - **Registry Path:** `HKLM:\SOFTWARE\Policies\BraveSoftware\Brave` - **Policies:** ADMX-validated enterprise policies (level-based) - **Behavior:** Appear **gray and locked** in browser Settings UI - **Enforcement:** Cannot be overridden by user interaction - **Scope:** Machine-wide, applies to all users ### Tier 3 — Omaha Updater GUID Layer - **Registry Path:** `HKCU:\Software\BraveSoftware\Update\ClientState\{GUID}` - **Policy:** `usagestats = 0` per application GUID - **Effect:** Targets the update infrastructure's own telemetry independently - **Independence:** Operates independently of all browser-level policies --- ## Policy Sources & Methodology > **Core Principle: Zero unofficial or speculative registry changes.** Every policy is traceable to one authoritative source: | Source | Policies Covered | | -------- | ----------------- | | **Brave Official ADMX Template Package** (`policy_templates.zip`) | `BraveRewardsDisabled`, `BraveWalletDisabled`, `BraveVPNDisabled`, `BraveAIChatEnabled`, `BraveStatsPingEnabled` | | **Chromium Enterprise Policy Documentation** | `MetricsReportingEnabled`, `SafeBrowsingExtendedReportingEnabled` | | **Google Omaha Updater Architecture** | `usagestats` (per GUID, in HKCU update layer) | | **Chromium Preferences Schema** | `UsageStatsInSample` (HKCU user preference) | > **Note:** `BraveShieldsDefault` is intentionally excluded — it does not exist in Brave's official ADMX templates. Brave manages Shields via URL-based policies (`BraveShieldsEnabledForUrls`, `BraveShieldsDisabledForUrls`). Global aggressive mode is applied through user profile preferences (Preferences JSON), not through an enterprise registry policy. --- ## Why Three Tiers? | Tier | Independence | Override Resistance | Propagation Speed | | ------ | -------------- | --------------------- | ------------------- | | HKCU (Tier 1) | User-level | Can be overridden by user | Immediate | | HKLM ADMX (Tier 2) | Machine-level | **Cannot be overridden by user** | Group Policy refresh | | Omaha GUID (Tier 3) | Update infra-level | Independent of browser | Update check cycle | **Redundancy ensures:** If one tier fails or is delayed, others continue enforcing privacy protections. **Hardening Levels (v2.0+):** The five levels above add additional granularity within Tier 2, letting you choose the number of ADMX policies to apply. --- ## Policy Application Flow ``` 1. Pre-flight Checks ├─ Administrator privileges? ├─ Brave running? (prompt continue/cancel) ├─ Level selection (interactive or -Level parameter) └─ Version compatibility check 2. Backup └─ Export HKLM:\SOFTWARE\Policies\BraveSoftware\Brave → timestamped .reg 3. Apply Policies (per tier) ├─ Tier 1: HKCU user preferences ├─ Tier 2: HKLM ADMX enterprise policies └─ Tier 3: Omaha GUID usagestats = 0 4. Verification ├─ Per-policy success/failure counters └─ Summary report with rollback instructions 5. Completion └─ Exit code 0 on success, non-zero on failure ``` ### Why policies are written one at a time The apply step writes each policy with its own `New-ItemProperty` rather than staging a single `.reg` file and importing it in one pass. That is a deliberate choice, not an oversight. Measured on the full policy set with the destination key already present, three runs averaged **98 ms for all 151 writes — about 0.65 ms per policy**. The whole hierarchy is written in roughly a tenth of a second, so the batching argument does not buy anything a user can notice. What the per-policy form buys instead: - **Isolated failure.** One policy that cannot be written is reported by name. A bulk import fails as a unit and leaves the operator reading a single error for a batch of 151. - **`-WhatIf` accuracy.** The preview reports the same path, name, type and value the apply step will actually write, because both call the same function. A generated `.reg` file would be a separate description of the intended state that can drift from the data layer. - **Type fidelity.** `MultiString` policies need a value subkey. The per-policy branch handles that shape in place; a flat import would need the hierarchy pre-built in the generated text. ## Idempotency Guarantee - **Idempotent writes** (`New-Item* -Force` internally) enable safe re-execution - **`-WhatIf` parameter** previews changes without applying them - **`-Reset` parameter** reverts all applied policies — after exporting both hives, and aborting if that export fails - Running multiple times = **identical result** - No duplicate registry entries, no conflicts - Safe for automation / scheduled tasks --- ## Related Pages - [📋 Policy Reference](Policy-Reference.md) — Complete policy registry table - [🔧 Installation](Installation.md) — Prerequisites & step-by-step - [🛡️ Security](Security.md) — Safety model & threat model - [🔍 Troubleshooting](Troubleshooting.md) — Common issues --- --- # 🏗️ Mimari — Çok Katmanlı Zorunlu Kılma Modeli Brave Omega, Windows + Brave + Omaha yığınının her katmanında bağımsız politika zorunlu kılması oluşturan **üç katmanlı bir model** kullanır. --- ## Katmanlara Genel Bakış ``` ┌─────────────────────────────────────────────────────────────┐ │ KATMAN 1 — HKCU (Kullanıcı Tercihi Katmanı) │ │ HKCU:\Software\BraveSoftware\Brave-Browser │ │ ↳ UsageStatsInSample = 0 │ │ Chromium kullanıcı düzeyi veri aktarımı kapatıldı. │ │ Politika yayılma gecikmelerinde yedek güvence sağlar. │ ├─────────────────────────────────────────────────────────────┤ │ KATMAN 2 — HKLM (Kurumsal İlke Katmanı / ADMX) │ │ HKLM:\SOFTWARE\Policies\BraveSoftware\Brave │ │ ↳ ADMX doğrulamalı kurumsal ilke (seviye-tabanlı), zorunlu kılındı. │ │ Tarayıcı Ayarlar arayüzünde gri/kilitli görünür. │ │ Kullanıcı etkileşimiyle değiştirilemez. │ ├─────────────────────────────────────────────────────────────┤ │ KATMAN 3 — Omaha Güncelleyici GUID Katmanı │ │ HKCU:\Software\BraveSoftware\Update\ClientState\{GUID} │ │ ↳ Her uygulama GUID'i için usagestats = 0 │ │ Güncelleme altyapısının kendi veri aktarımını, │ │ tarayıcı düzeyi ilkelerden bağımsız olarak kapatır. │ └─────────────────────────────────────────────────────────────┘ ``` ## Sıkılaştırma Seviyeleri (v2.0+) Üç zorunlu kılma katmanına ek olarak, Brave Omega v2.0+ **beş sıkılaştırma seviyesi** sunar. Her seviye bir öncekinin tüm politikalarını kapsar: | Seviye | Politika | Kapsam | Kullanım Etkisi | | -------- | ---------- | -------- | ----------------- | | **1. Brave Yalnız** | 24 Brave'e özgü politika | HKLM | Yok | | **2. Temel** ⭐ | 24 + 27 = 51 | HKLM + HKCU + Omaha | Yok | | **3. Dengeli** | 51 + 32 = 83 | + WebRTC, HTTPS, DNS | Düşük | | **4. Gelişmiş** | 83 + 40 = 123 | + Sensörler, İçe Aktarmalar, Uzantılar, Profiller | Düşük | | **5. Katı** | 123 + 28 = 151 | + JIT, Çerezler, Pano, FS, DevTools | Orta | Betiği çalıştırırken seviyenizi etkileşimli olarak seçin veya `-Level` parametresini kullanın: ```powershell PowerShell -ExecutionPolicy Bypass -File ".\BraveOmega.ps1" -Level Temel ``` --- ## Katman Ayrıntıları ### Katman 1 — HKCU (Kullanıcı Tercihi Katmanı) - **Kayıt Defteri Yolu:** `HKCU:\Software\BraveSoftware\Brave-Browser` - **Politika:** `UsageStatsInSample = 0` - **Etki:** Brave sunucularına gönderilen tarayıcı düzeyi kullanım istatistiği örneklemesini devre dışı bırakır - **Rol:** Politika yayılma gecikmelerinde yedek güvence; kullanıcı düzeyi tercih ### Katman 2 — HKLM (Kurumsal İlke Katmanı / ADMX) - **Kayıt Defteri Yolu:** `HKLM:\SOFTWARE\Policies\BraveSoftware\Brave` - **Politikalar:** ADMX doğrulamalı kurumsal ilke (seviye-tabanlı) - **Davranış:** Tarayıcı Ayarlar arayüzünde **gri ve kilitli** görünür - **Zorunlu Kılma:** Kullanıcı etkileşimiyle değiştirilemez - **Kapsam:** Makine genelinde, tüm kullanıcılar için geçerlidir ### Katman 3 — Omaha Güncelleyici GUID Katmanı - **Kayıt Defteri Yolu:** `HKCU:\Software\BraveSoftware\Update\ClientState\{GUID}` - **Politika:** Her uygulama GUID'i için `usagestats = 0` - **Etki:** Güncelleme altyapısının kendi veri aktarımını bağımsız olarak hedefler - **Bağımsızlık:** Tüm tarayıcı düzeyi ilkelerden bağımsız çalışır --- ## Politika Kaynakları ve Yöntem > **Temel İlke: Sıfır gayri resmî veya spekülatif kayıt defteri değişikliği.** Her politika tek bir yetkili kaynağa izlenebilir: | Kaynak | Kapsanan Politikalar | | -------- | --------------------- | | **Brave Resmî ADMX Şablon Paketi** (`policy_templates.zip`) | `BraveRewardsDisabled`, `BraveWalletDisabled`, `BraveVPNDisabled`, `BraveAIChatEnabled`, `BraveStatsPingEnabled` | | **Chromium Kurumsal Politika Belgelendirmesi** | `MetricsReportingEnabled`, `SafeBrowsingExtendedReportingEnabled` | | **Google Omaha Güncelleyici Mimarisi** | `usagestats` (GUID başına, HKCU güncelleme katmanında) | | **Chromium Tercihler Şeması** | `UsageStatsInSample` (HKCU kullanıcı tercihi) | > **Not:** `BraveShieldsDefault` kasıtlı olarak dışarıda bırakıldı — Brave'in resmî ADMX şablonlarında bulunmamaktadır. Brave, kalkanları URL bazlı politikalarla (`BraveShieldsEnabledForUrls`, `BraveShieldsDisabledForUrls`) yönetir. Genel saldırgan mod, kurumsal kayıt defteri politikası değil; kullanıcı profil tercihleri (Preferences JSON) aracılığıyla uygulanır. --- ## Neden Üç Katman? | Katman | Bağımsızlık | Geçersiz Kılmaya Direnç | Yayılma Hızı | | -------- | ------------- | ------------------------ | -------------- | | HKCU (Katman 1) | Kullanıcı düzeyi | Kullanıcı tarafından geçersiz kılınabilir | Anlık | | HKLM ADMX (Katman 2) | Makine düzeyi | **Kullanıcı tarafından geçersiz kılınamaz** | Grup İlkesi yenileme | | Omaha GUID (Katman 3) | Güncelleme altyapısı düzeyi | Tarayıcıdan bağımsız | Güncelleme kontrol döngüsü | **Yedeklilik şunları sağlar:** Bir katman başarısız olursa veya gecikirse, diğerleri gizlilik korumalarını uygulamaya devam eder. **Sıkılaştırma Seviyeleri (v2.0+):** Yukarıdaki beş seviye, Katman 2'ye ek ayrıntı düzeyi ekleyerek kaç ADMX politikası uygulanacağını seçmenizi sağlar. --- ## Politika Uygulama Akışı ``` 1. Ön Kontroller ├─ Yönetici ayrıcalıkları? ├─ Brave çalışıyor mu? (devam/iptal istemi) ├─ Seviye seçimi (etkileşimli veya -Level parametresi) └─ Sürüm uyumluluk kontrolü 2. Yedekleme └─ HKLM:\SOFTWARE\Policies\BraveSoftware\Brave → zaman damgalı .reg 3. Politikaları Uygula (katman başına) ├─ Katman 1: HKCU kullanıcı tercihleri ├─ Katman 2: HKLM ADMX kurumsal ilkeler └─ Katman 3: Omaha GUID usagestats = 0 4. Doğrulama ├─ Politika başına başarı/hata sayaçları └─ Geri alma talimatlarıyla özet rapor 5. Tamamlama └─ Başarıda çıkış kodu 0, hatada sıfır değil ``` ### Neden politikalar tek tek yazılıyor? Uygulama adımı, politikaları hazırlanmış tek bir `.reg` dosyasıyla toplu içe aktarmak yerine her biri için kendi `New-ItemProperty` çağrısıyla yazar. Bu bilinçli bir tercihtir, bir gözden kaçma değil. Hedef anahtar zaten mevcutken tüm politik kümesi üzerinde yapılan üç koşunun ortalaması **151 yazım için 98 ms — politika başına yaklaşık 0.65 ms** çıktı. Tüm hiyerarşi kabaca onda bir saniyede yazılıyor, yani toplu yazmanın kazandırdığı hiçbir şey kullanıcının fark edebileceği bir kazanç değil. Bunun yerine politika başına yazma şunları sağlıyor: - **Hata yalıtımı.** Yazılamayan tek politika adıyla raporlanır. Toplu içe aktarma bir bütün olarak başarısız olur ve işleticiyi 151 politikalık bir yığın için tek bir hata mesajı okumaya bırakır. - **`-WhatIf` doğruluğu.** Önizleme, uygulama adımının gerçekten yazacağı yolu, adı, türü ve değeri raporlar; çünkü ikisi de aynı işlevi çağırır. Üretilmiş bir `.reg` dosyası ise veri katmanından ayrışabilen, amaçlanan durumun ayrı bir tarifidir. - **Tür sadakati.** `MultiString` politikaları bir değer alt anahtarı gerektirir. Politika başına dal bu biçimi yerinde ele alır; düz içe aktarma ise hiyerarşinin üretilen metin içinde önceden kurulmuş olmasını gerektirir. --- ## Kararsız Olmama Garantisi - **Idempotent yazmalar** (`New-Item* -Force` içeride) güvenli yeniden çalıştırmayı sağlar - **`-WhatIf` parametresi** değişiklikleri uygulamadan önizler - **`-Reset` parametresi** uygulanan tüm politikaları geri alır — önce iki kovanın da yedeğini alır, yedekleme başarısız olursa vazgeçer - Birden fazla çalıştırma = **özdeş sonuç** - Yinelenen kayıt defteri girişi yok, çakışma yok - Otomasyon / zamanlanmış görevler için güvenli --- ## İlgili Sayfalar - [📋 Politika Başvurusu](Policy-Reference.md#-türkçe) — Politika kayıt defteri tablosu - [🔧 Kurulum](Installation.md#-türkçe) — Ön gereksinimler ve adım adım - [🛡️ Güvenlik](Security.md#-türkçe) — Güvenlik modeli ve tehdit modeli - [🔍 Sorun Giderme](Troubleshooting.md#-türkçe) — Sık karşılaşılan sorunlar