Güven Zinciri (Chain of Trust)

Açık Kaynak,
Tamamen Doğrulanabilir.

"Bize güvenin" demiyoruz. Kullandığınız mobil uygulamanın ve verilerinizi işleyen sunucunun, GitHub'da gördüğünüz kodla birebir aynı olduğunu kendiniz doğrulayabilirsiniz.

1. Enclave Doğrulaması

Sunucularımızda çalışan kodun değiştirilmediğini kanıtlamak için Remote Attestation teknolojisini kullanıyoruz.

Adım: PCR Değerleri

GitHub'daki kod derlendiğinde ortaya "PCR0" denilen eşsiz bir parmak izi çıkar. Kodda tek bir karakter değişse bu parmak izi tamamen farklı olur.

Adım: Donanım Kanıtı

AWS Nitro donanımı, çalışan kodu tarar ve altına kendi dijital imzasını atarak bir "Attestation Document" (Doğrulama Belgesi) üretir.

Kendi Başınıza Nasıl Kontrol Edersiniz?

  1. 1GitHub depomuzu klonlayın ve Dockerfile üzerinden kendi imajınızı derleyin.
  2. 2Derleme sonucunda çıkan PCR0 değerini not edin.
  3. 3Canlı Attestation Document'i indirin ve içindeki PCR0 değeriyle karşılaştırın. Eşleşiyorsa, kod birebir aynıdır.

Bağlantı Kanıtı: Public Key Binding

Peki ya birisi size başka bir Enclave'e ait eski bir dökümanı gösterirse? İşte burada Public Key Binding devreye girer.

Enclave her oturumda yeni bir anahtar üretir ve bu anahtarı AWS Nitro'ya göndererek Attestation Belgesinin içine "mühürlettirir".

Telefonunuz, dökümanın içindeki anahtar ile kendisine gönderilen bağlantı anahtarını karşılaştırır. Mühür uyuşmuyorsa, bağlantıyı anında kopartır.

2. Android Kod Şeffaflığı

Android tarafında VerifyBlind, Belirlenimci Derleme (Deterministic Build) altyapısı kullanır. Telefonunuzdaki uygulamanın kodlarının, açık kaynak depodaki kodlarla bayt seviyesine kadar aynı olduğunu kanıtlıyoruz.

Çevrimdışı Kriptografik Mühür

GitHub'da derlenen Android paketi, Google Play'e yüklenmeden önce izole ortamımızda 3072-bitlik bir şeffaflık imzasıyla mühürlenir. Kodlara müdahale edilirse bu mühür anında kırılır.

Birebir Çıktı Karşılaştırması

Github Action raporlarındaki derleme hash'lerini bizzat telefonunuzdaki dosyaların hash'leriyle kıyaslayarak güven zincirini doğrulayabilirsiniz.

# Telefonunuzdaki kodları doğrulamak için:
$ java -jar bundletool.jar check-transparency --mode=connected_device --package-name=com.verifyblind.mobile
Code transparency verified: code related file contents match the code transparency file.
# VerifyBlind Şeffaflık Anahtarı:
A9 89 BA D4 84 4E 36 AC D2 E4 76 8C 86 B4 59 A2 87 7D F7 90...

3. iOS Kod Doğrulama

iOS tarafında Apple'ın FairPlay şifrelemesi, uygulamayı cihazdan bayt-bayt yeniden üretip karşılaştırmayı engeller (tüm Apple uygulamaları için geçerli platform kısıtı). Bunun yerine, Apple üzerinden dağıtılan (App Store/TestFlight) sürümün GitHub'daki açık koddan derlendiğini kriptografik bir köken kanıtıyla (build provenance) doğruluyoruz.

İmzalı Köken (Sigstore)

Her sürüm, GitHub Actions iş akışında üretilirken Sigstore/cosign ile imzalanır; bu imza, dağıtılan yapıyı tam olarak hangi commit'ten ve hangi iş akışından çıktığına bağlar. Mac'inizde verify-ios.sh ile çevrimdışı doğrulayabilirsiniz.

Apple İmzası + App Attest

Stok iOS yalnızca Apple imzalı kopyayı çalıştırır; ayrıca her kayıtta uygulamanın gerçekliği Apple App Attest ile sunucumuza kanıtlanır. Bu üç halka birlikte 'çalışan uygulama = yayımlanan kod' zincirini kurar.

# Apple sürümünü kaynağa bağlamak için (Mac):
$ ./verify-ios.sh
Build provenance verified: Sigstore attestation matches the published source commit.
# Doğrulanan köken:
commit: a1b2c3d4 · workflow: ios-prod.yml@refs/tags/build-N