İmzayı kaybetmeden ifşa etmek

İmzayı kaybetmeden ifşa etmek

Bir ürün pasaportunu okuyan herkes aynı kamuya açık verileri alır; bazıları ise buna ek olarak korumalı alanlara da erişebilir. Asıl soru ise, bu ek alanların geçerliliğinin kanıtlanıp kanıtlanmadığıdır. Her alanı tek tek imzalarız; böylece kamuya açık bir alan bile, bize danışmaya gerek kalmadan çevrimdışı olarak bir açık anahtarla doğrulanabilir.

Dijital Ürün Pasaportu herkese aynı bilgileri göstermez. Bir alıcı, kamuya açık verileri görür. Bir tamir atölyesi veya yeniden işleme tesisi daha fazlasını görür. Bir piyasa denetim kurumu ise her şeyi görür. Bu durum netleşmiştir ve Avrupa standartları artık bunu açıkça belirtmektedir.

Asıl ilginç soru ise daha ince bir noktaya değiniyor: Birine kamuya açık verilerin ötesinde, gizli alanlar da açığa çıkarılırsa, bu kişinin tam da bu alanların gerçek olduğunu kanıtlayabilmesi mümkün mü? Yoksa platformun bu verileri doğru bir şekilde seçip, değiştirmeden aktardığına güvenmek zorunda mı?

Çoğu platformda dürüst cevap şudur: Güven. Bizim platformumuzu ise cevabın “kanıt” olduğu şekilde tasarladık - sadece kamuya açık alanlar için değil, ancak ifşa edildiğinde eklenen her alan için de. Bu farkın neden önemli olduğu ve bunun için neden daha zahmetli yolu seçtiğimiz.

Erişim kuralını herkes aynı şekilde yerine getirir

DPP’de erişim hakları, güvenlik ve gizlilikle ilgili Avrupa standardı olan EN 18239, her veri öğesi için ayrı erişim denetimi gerektirir: Her alan için kimin görebileceğine dair bir kural vardır. Bu doğru bir gerekliliktir ve yerine getirilmesi zor değildir. Bu standartların genel olarak hangi statüye sahip olduğunu uyumlaştırılmış standartlar başlığı altında ayrıntılı olarak açıkladık.

Bunu sağlamanın genel yolu, sunucu tarafında filtreleme yapmaktır. Sunucu, kimin sorgu yaptığını bilir, bu kişinin neyi görebileceğini kontrol eder ve tam olarak bu bölümü geri döndürür. Erişim kontrolü: halledildi. Standart bundan fazlasını talep etmez.

Ancak, standardın ele almadığı bir sorun vardır: Görüntü, imzalanmamış olarak ulaşır. Okuyucu, kendisi için derlenmiş bir görünüm alır ve sunucunun seçimi dürüstçe yaptığını ve aktarım sırasında hiçbir değişiklik yapmadığını varsaymak zorundadır. Halka açık bir bilgilendirme notu için bu durum sorun değildir. Ancak, bir veri işleyicinin ikinci el bir pilin fiyatını belirlerken dayandığı bir değer söz konusu olduğunda, bu çok fazla güven gerektirir.

Tek bir imzanın sınırlarına ulaştığı nokta

En mantıklı çözüm, verileri imzalamaktır. Ölçeğin her iki ucu için de sıradan bir imza iyi sonuç verir: kamuya açık görünümü imzalamak, tam veri setini imzalamak ve her ikisini de bir sunucu araya girmeden açık anahtarla doğrulamak. Bunun ayrıntılı olarak nasıl işlediği DPP’de İmzalar ve Sertifikalar başlıklı yazıda açıklanmaktadır.

Sorun ortada ortaya çıkıyor. Belgenin tamamı üzerinde yapılan bir imza, tam olarak bir dizi alanı kapsar; yani imza atıldığı sırada mevcut olan alanları. Yetkili bir okuyucuya korumalı bir alanı ek olarak açarsanız, bu alan imzalanmış kümenin dışında kalır ve okuyucuya korumasız olarak ulaşır. Bunun yerine baştan itibaren tam veri setini imzalarsanız, imza her şeyi kapsar, ancak o zaman herkese her şeyi göstermeniz gerekir.

Aradaki aşamalar bu sistemde gözden kaçar: tamir atölyesi, sigorta şirketi, geri dönüşümcü. “Kim neyi görür” konusundaki her olası kombinasyonu önceden imzalamak isteseydik, her kombinasyon için ayrı bir imzalı belgeye ihtiyaç duyulurdu ve kombinasyon sayısı her yeni erişim grubuyla birlikte katlanarak artar. Kimse bunu yapmaz. İmzasız sunucu filtresine geri dönülür ve ara aşama yine güvene dayalı hale gelir.

Her alanı tek tek imzalamak

Daha iyi bir yapı var ve platformumuzu bu yapı üzerine kuruyoruz. Hazır belgeyi tek bir blok olarak imzalamak yerine, imzalayan kişi tek bir imza işleminde her bir alanı ayrı ayrı belirler (standartlara aşina olanlar için: seçici ifşa için W3C belgesi ecdsa-sd-2023).

Her görünüm, genel anahtarla başlar

Her görünüm, aynı genel alanlarla ### başlar. Bir okuyucunun bunun ötesinde gördükleri, alan alan eklenir ve bu alanların her biri, yine düzenleyicinin genel anahtarına geri döner - çevrimdışı olarak, yeniden imzalamaya gerek kalmadan ve görünümü derleyen kuruma güvenmeye gerek kalmadan. Hak talebi olmayan alanlar basitçe yoktur. Karartılmamış, hiç yoktur ve bunlarla ilgili hiçbir bilgi sızmaz.

Neden «kesintisiz» olması bu kadar önemli

Mektubu bir bütün olarak değil, her paragrafı tek tek tasdik eden bir noter düşünün. Herkes kamuya açık mektubu alır. Daha fazlasına hakkı olan kişi, ek paragrafları da alır ve bunların her biri yine aynı noterin mührünü taşır. Alışılagelmiş uygulamada ise platform bu paragrafları sizin adınıza kopyalar ve size ulaşan metin sadece platformun sözünü taşır.

Bunda “bozulmamış” olmasının neden önemli olduğu, bir cümle daha açıklamaya değer. Bozulmamış bir mühür, içeriğin doğru olduğunu söylemez. Şunu söyler: Düzenleyen kişi tam olarak bunu yazmıştır ve o zamandan beri kimse üzerinde tek bir işaret bile değiştirmedi. Böylece, belgeyi sadece ileten herkes - ara depo, ağ, arşiv, biz - güven meselesinin dışında kalır. Pasaportu size kimin verdiği artık önemsizdir.

Ve bir mühür ikilidir. Ya sağlamdır ya da değildir; yarı kırık bir mühür yoktur. Mühür kırılırsa, hangi cümlenin değiştirildiğini öğrenemezsiniz; sadece belgenin tamamına artık güvenemeyeceğinizi anlarsınız. Bu nedenle, ek alanların mühürle birlikte mi yoksa mühürsüz mü size ulaştığı arasında kademeli bir fark yoktur: Mühürsüz olduklarında, bu alanlar biraz daha zayıf bir şekilde doldurulmuş değildir; hiç doldurulmamıştır.

Her iki yöntemi de inceleyebilirsiniz

Bunu herkes kendisi kontrol edebilir. Transpareo Time Machine, ürün pasaportları için geliştirdiğimiz açık kaynaklı görüntüleme uygulamamızdır: Bir pasaportun sürüm geçmişini gözden geçirir ve bu sırada bizim sunucumuza sormadan, izleyicinin tarayıcısında her imzayı yeniden hesaplar. Uygulamada iki örnek sertifika halka açık olarak çalışmaktadır. Bir tişörtün sertifikası belgenin tamamını kapsayan bir imzaya sahipken, bir pilin sertifikası alan bazında açıklamaları içermektedir.

Her ikisi de açık W3C spesifikasyonlarıdır: belge genelinde imza için eddsa-jcs-2022, alan bazında açıklama için ecdsa-sd-2023. İsteyen herkes bunları uygulayabilir. Bunun için gereken çaba, birçok kişinin bunu yapmamasının nedenidir: Belgenin tamamını kapsayan imza, oluşturulması ve işletilmesi açısından çok daha ucuzdur ve yalnızca kamuya açık verileri sağlayanlar için bu yeterlidir.

Time Machine’in her iki yöntemi de desteklemesi kasıtlıdır ve bu şekilde kalacaktır. Time Machine, hiçbir platforma ait değildir. Yalnızca daha pahalı yöntemi kabul eden bir denetçi, bizim için bir araç olur, başka hiç kimse için değil.

Korunan alanlar kime ifşa edilir?

Kamuya açık verilerin ötesinde, kime herhangi bir bilgi ifşa edildiğini sormakta fayda var. Tesadüfen gelen alıcıya değil; o, kamuya açık raporu alır. Bunlar, kullanılmış bir pil paketinin değerini değerlendiren işleyici, riski fiyatlandıran sigortacı, kimyasalları ayıran geri dönüşümcü ve bir davayı hazırlayan resmi makamdır. Bunlar, kararları paraya veya güvenliğe bağlı olan okuyuculardır.

Ve bunlar, geleneksel yaklaşımda tam da açıkta kalan alanlardır. Kriptografik bir kanıt istemek için en fazla nedeni olan kişi, kararını etkileyen alanlar için tam da bu kanıtı alamıyor.

Bize göre, bir denetim mührü herkes için aynı anlama gelmelidir. Bir tamir atölyesinin genişletilmiş görünümünde yer alan “Transpareo tarafından denetlenmiştir” ibaresi, bir alıcının kamuya açık sertifikasındaki ile aynı anlama gelir: Gösterilen her alan, sertifika veren kurumdan gelmektedir ve o andan itibaren üzerinde herhangi bir değişiklik yapılmamıştır. Yalnızca kamuya açık alanlar için geçerli olan bir mühür, yarım bir mühürdür.

Standartların gerektirdiğinden fazlası

Açıkça söylüyoruz: Bunların hiçbiri zorunlu değildir. EN 18239 standardı, erişimin kontrol edilmesini gerektirir ve sunucu tarafındaki bir filtre, erişimi kusursuz bir şekilde kontrol eder. Açıklanan alanları da kriptografik olarak doğrulanabilir hale getirmek, bizim ek olarak yaptığımız bir şeydir; yönetmeliğin bizden talep ettiği bir zorunluluk değildir.

İşte tam da bu nedenle bunu yazmaya değer. Standartın lafzını yerine getirmek, sunucu filtresini sunmak ve bu aşamayı tamamlanmış saymak kolay olurdu. Bizim tercihimiz ise, mühürün göründüğü her yerde bu taahhüdün geçerli olmasıdır. Çünkü imzalı bir geçiş belgesinin tüm anlamı, kimsenin platforma güvenmek zorunda olmamasıdır. Orta seviyeyi bir istisna olarak hariç tutmak, imzanın ortadan kaldırması gereken güveni tam da geri getirir.

Aynı ilke, bir alanın göz ardı edilmesine yol açar

Her bir alana ayrı ayrı karar vermek, ikinci bir özelliği de beraberinde getirir ve bu, Avrupa hukuku tarafından gerçekten de talep edilmektedir. Genel Veri Koruma Yönetmeliği, kişilere kişisel verilerinin silinmesini talep etme hakkı verir. Tek bir blok olarak imzalanmış bir veri seti, kendi imzasını bozmadan bu talebi yerine getiremez.

Burada her alan bağımsız olduğundan, tek bir alan kaldırılabilirken geri kalan her şey doğrulanmaya devam eder. Kişisel veriler yanlışlıkla bir pasaporta girerse, temiz bir şekilde çıkarılır ve pasaport geçerliliğini korur: yeniden düzenleme gerekmez, geçmişi bozulmaz. Yasanın saklanmasını gerektirdiği düzenleyici alanlar yerinde kalır; silinebilenler ise talep üzerine, yıllar sonra bile silinebilir.

Yine de tamamen sıradan bir pasaport

Bunların hiçbiri pasaportu, yalnızca bizim araçlarımızın açabildiği özel bir nesne haline getirmez. Pasaport, web standartları dünyasının benimsediği ve BM Şeffaflık Protokolü ile diğer W3C ortamlarının da kullandığı format olan JSON-LD’de bir Doğrulanabilir Kimlik Bilgisi olarak kalır.

Bir alıcının tarayıcısında taradığı pasaport, bir veri odası ortağının okuyabileceği nesneyle aynıdır ve standartlara uygun her denetçi bunu doğrulayabilir, sadece bizimkiler değil. Ek güvenlik, okuyucuya hiçbir maliyet getirmez ve kimseyi bize bağlamaz.

Bunun teknik olarak neden zor olduğu

Öncelikle, yanlış bir izlenim oluşmaması için şunu belirtelim: Bu yöntemi biz icat etmedik. ecdsa-sd-2023, halka açık bir W3C spesifikasyonudur; arkasındaki kriptografi bize ait değildir ve bunu uygulamak isteyenler ilgili belgeleri inceleyebilir. Zor olan, fikri bulmak değildir. Zor olan, bir şifreleme sistemini on yıl sonra bile bir şifreleme belgesi hâlâ doğrulama yapabilecek şekilde kurmaktır. Asıl iş burada yatıyor ve bu konuda faydalı şeyler söylenebilir.

Fark küçük gibi görünebilir, ancak temeli değiştirir: Sıradan bir imza, bir belgenin baytları üzerinden hesaplama yapar. Seçici ifşa ise ifadelere dayalı hesaplama yapar. Pasaport, imzalanmadan önce her bir bilginin kendi başına bağımsız bir cümle olarak yer aldığı standart bir biçime getirilir. Ancak bu sayede, geri kalan cümlelere zarar vermeden bir cümle çıkarılabilir.

Böylece, bir bayt imzasının sahip olmadığı bir sorun ortaya çıkar: Aynı standartlaştırılmış biçimin on yıl sonra da tam olarak aynı şekilde ortaya çıkması gerekir. Yaklaşık olarak değil, karakter karakter, aksi takdirde kanıt artık geçerli olmaz. Bunun önünde üç engel vardır ve üçü de göze çarpmayan unsurlardır.

Sayılar türlerini yitirir. Bir sayıyı sadece JSON olarak yazarsanız, yol boyunca hangi sayı olduğu kaybolur. 2.0 gibi bir değer, JSON’dan bir tur geçtikten sonra 2 olarak geri gelir. Bir insan için aynı şey olsa da, standartlaştırılmış biçim için farklı bir cümle olur ve doğrulama başarısız olur.

Adlar henüz bir anlam ifade etmez. Standartlaştırılmış biçimin oluşabilmesi için her alan adının benzersiz bir anlama karşılık gelmesi gerekir. Bir anlam eksikse, dönüştürme sırasında alan sessizce ortadan kaybolur. Bu durumda belge üzerinde yer alır, ancak kanıt bunu kapsamaz ve kimse farkına varmaz.

Anlamlar genellikle internette bulunur. Bu eşleştirme, çoğu aracın denetim sırasında internet üzerinden yeniden yüklediği bir sözlükte yer alır. Bunu yapan kişi, pasaportunun doğrulanabilirliğini, on yıl sonra bile bir yabancı adresin hala yanıt vermesine ve üstelik değişmeden kalmasına bağlamış olur.

Biz bunu nasıl çözdük

Üç noktayı daha sonra yakalamak yerine, kaynağında kapattık.

Türler. Her değer kendi türüyle yazılır ve standartlaştırılmış biçimde tek bir türsüz sayı bile ortaya çıkar çıkmaz yayın işlemi kesilir. Böylece hata, yıllar sonra açıklanamayan bir doğrulama ihlali olarak ortaya çıkmak yerine, sadece bir satırlık bir kayıp olarak tespit edilir.

Sözlükler. Bir pasaportun atıfta bulunduğu her sözlük, sistemimizde yerel olarak bulunur ve asla internet üzerinden getirilmez. Bilinmeyen bir adres, imzalama sırasında kesin bir kesintiye neden olur; boş bir sonuca sessizce geri dönülmez.

Tanımlayıcılar. Belgedeki her düğüm, standartlaştırılmış biçimin tekrarlanabilir kalması için sabit bir tanımlayıcıya sahiptir; böylece her geçişte yeni yardımcı adlar atanması gerekmez.

En hassas kısım “Kendi Anahtarını Getir” (Bring Your Own Key) sistemindedir. Her düzenleme için, açıklanabilir alanların tek tek imzalanmasında kullanılacak ek ve kısa ömürlü bir anahtar gereklidir. Bu anahtarı düzenleyici kendisi oluşturur ve imha eder. Eğer anahtar bizde olsaydı, tek tek alanları sonradan uydurabilirdik ve yayınlayanın imzasının bağımsızlığı sadece bir iddia olarak kalırdı. Geri gelen kanıtı, ona güvenmeden önce kayıtlı açık anahtarla karşılaştırarak doğrularız.

Her bir pasaportta bu tür iki kanıt bulunur: biri yayıncıya, diğeri Transpareo’ya aittir ve her ikisi de okuyucunun gözünde birbirinden bağımsız olarak türetilir. Tek bir açıklanan alan için bile iki imza, birbirinden bağımsız iki otorite.

Bizim için bu çaba, tam da olması gereken yerde. Doğrulanabilirliği sonradan eklemedik; platform, ilk sürümünden itibaren bu ilke etrafında oluşturuldu. Her pasaport yayınlandığında imzalanır ve bir önceki sürüme zincirlenir. Değiştirilemez on yıllık arşiv oluşturulmuştur ve pasaportlar AB-DPP Kayıt Defteri ‘e kaydedilir kaydedilmez devreye girer. Tüm bloğun yerine her bir alanı imzalamak, bu çekirdeğin bir uzantısıdır; asla bu amaçla tasarlanmamış bir şeye sonradan eklenmiş bir özellik değildir.

Şu anki durumumuz

İşin özüne indirgersek, seçim basittir. Korunan alanları açığa çıkarabilir ve okuyucudan filtrenize güvenmesini isteyebilirsiniz - bu, standardı karşılar. Ya da bunları açığa çıkarabilir ve kanıtı da hemen sunabilirsiniz - bu, bizim görüşümüze göre bu alanların hak ettiği daha yüksek bir standardı karşılar.

Her okuyucu için kanıtı tercih ettik, çünkü bir mühür, kim bakarsa baksın tek bir anlama gelmelidir. Nasıl çalıştığını görmek isteyenler için: Yukarıda bağlantısı verilen iki demo, tarayıcıda doğrudan, çevrimdışı olarak, yalnızca bir açık anahtarla doğrulanır.

Erişim düzeyleri ve kanıtlarla ilgili güncellemeler

Seçici Açıklama, İmzalar ve DPP Standartlarının Gelişimi - her ay özet halinde e-posta kutunuza.