DPP’ler için bir zaman makinesi

Elinizde bir ürün tuttuğunuzu ve üzerindeki QR kodunu taradığınızı hayal edin. Bir PDF dosyası yerine küçük bir uygulama açılır. Ürünü şu anda olduğu haliyle görürsünüz: nelerden oluştuğunu, nereden geldiğini, nelere dikkat edilmesi gerektiğini. Bir kaydırma hareketiyle zamanda geriye gidersiniz - şimdiye kadar yayınlanmış her sürümü inceleyebilirsiniz.

Bu, her Dijital Ürün Pasaportu için geliştirdiğimiz açık kaynaklı tüketici uygulamamız Transpareo Time Machine’dir. Kod, GPL v3 lisansı altında GitHub adresinde yer almaktadır.

Bunu geliştiriyoruz çünkü AB Dijital Ürün Pasaportu Yönetmeliği tüketiciler için yazılmıştır - ürünü elinde tutan kişi için. Çoğu sağlayıcı bunu, kimsenin iki kez taramayacağı bir uyumluluk formu haline getiriyor. Biz ise tüketicinin gerçekten açıp kullanacağı bir uygulama haline getiriyoruz.

Kendiniz görün

Örnek ürün pasaportları eksiksizdir ve hayali verilerle doldurulmuştur: Sürüm geçmişini inceleyin ve denetim etiketini açın - hesap oluşturmaya gerek kalmadan, doğrudan tarayıcınızda.

Uygulamanın işlevleri

Ürünü elinde tutan kişinin bakış açısından dört temas noktası. Giriş yapmaya gerek yok, uygulama yüklemeye gerek yok.

1
Tarama

Akıllı telefonunuzun kamerasıyla QR kodunu tarayın. Uygulama tarayıcıda açılır.

2
Güncel haberleri görüntüle

Ürün, “Şimdi”de karşımıza çıkıyor - bileşenler, malzemeler, menşe, bakım, geri dönüşüm.

3
Tarihi gözden geçirmek

Bir kaydırma hareketi ile zamanda geriye doğru ilerleyebilirsiniz. Her bir önceki sürümde, değişikliğin tarihi ve nedeni belirtilmiştir.

4
Paylaş

Her sürümün kendine ait bir bağlantısı vardır. Bir kişi, belirli bir sürümü arkadaşlarıyla veya resmi makamlarla paylaşır.

Neden ki?

AB’nin Dijital Ürün Pasaportu Yönetmeliği, son on yıllardır ürün şeffaflığı konusunda atılan en büyük adımdır. Temel metinleri dikkatle okunduğunda, bu yönetmeliğin açıkça tüketiciler için yazıldığı anlaşılmaktadır. Yetkili kurumlar, geri dönüşümcüleri ve tamirhaneler de bu sürece dahil olacak; ancak asıl hedef kitle, ürünü elinde tutan kişidir.

Rakamlar açısından durum oldukça net. Ortalama bir Avrupalı birey, on yılın sonunda her yıl onlarca hatta yüzlerce ürün pasaportunu tarayabilecek. 200 milyon haneye göre hesaplandığında, bu rakam yıllık milyarlarca tüketici etkileşimi anlamına geliyor. Buna kıyasla, resmi kurumlar ve geri dönüşümcülerin dünyası sayıca ihmal edilebilir düzeyde.

Yönetmeliğin tüketicilere ulaşması için tüketici tarafının iyi tasarlanmış olması gerekir - hızlı, güzel ve tutarlı. Aksi takdirde amacına ulaşamaz.

Bu tüketici sayfasını, tek bir sağlayıcıya bağımlı olmaması için açık kaynaklı olarak geliştirmeye karar verdik.

Süreç bir kuraldır, manifesto ise bize aittir

Bir ürün pasaportu değişir: bir onarım, yeni bir geri dönüşüm oranı, bir ürün geri çağırma. Bu nedenle, yönetmelikler önceki sürümlerin erişilebilir kalmasını şart koşar: Depolama standardı her sürümü dondurur, arayüz standardı ise her sürümün hedefli olarak okunabilmesini öngörür. Yönetmeliklerin açık bıraktığı kısım ise aradaki parçadır: bir pasaportun tüm sürümlerini bir hikayeye bağlayan bir liste. Transpareo, her pasaport için bunu imzalı bir manifesto olarak yayınlar; her sürüm, parmak izi ile bir önceki sürüme zincirlenir. Böylece zaman makinesi, bir ürünün tarihçesini gözden geçirir ve okuyucu, bir sürümün sadece gerçek olup olmadığını değil, aynı zamanda kesintisiz bir dizinin güncel sürümü olup olmadığını da kontrol eder.

Ancak uygulama buna bağlı değildir. Manifesto yerine, her sağlayıcının açık standartlara göre yayınladığı tek bir geçiş belgesini gösterirseniz, uygulama bu tek sürümü görüntüler, varsa imzasını doğrular ve zaman çizelgesini basitçe göstermez. İmzasız bir geçiş kartı hata olarak değerlendirilmez, sadece doğrulama mührü olmadan gösterilir. Aynı uygulama , Transpareo’da hiç kayıtlı olmayan geçiş kartlarını da bu şekilde görüntüler.

Kesintiye uğramadan sağlayıcı değişikliği

AB’nin Dijital Ürün Pasaportu Yönetmeliği, hizmetler ve sistemler arasında aktarılabilir ve tek bir sağlayıcıya bağlı olmayan, açık standartlara dayalı ve birbiriyle uyumlu ürün pasaportlarını zorunlu kılar. Dolayısıyla hizmet sağlayıcısından bağımsızlık bir ek özellik değil, yönetmeliğin bir parçasıdır.

Transpareo Time Machine, bu şartı somut hale getiren unsurdur. Her ürün pasaportu açık standartlara göre sunulduğundan (çözücüden bağımsız tanımlama, kanonik serileştirme, kamuya açık anahtarlar) ve görüntüleyici GPL v3 lisansı altında açık kaynak kodlu olduğundan, bir pasaportun görüntülenmesi hiçbir zaman platformumuza bağlı değildir.

Ürün pasaportu sorumlusu, bir iktisadi işletmecidir - üretici, ithalatçı veya yetkili temsilci. Transpareo’dan ayrılıp başka bir sağlayıcıya geçmeye karar verse bile, görüntüleme sabit kalır: Daha önce yayınlanmış sürümler ve geçmişi, aynı açık kaynaklı görüntüleyici tarafından değiştirilmeden gösterilmeye devam eder ve aynı açık standartları kullanan yeni bir sağlayıcı, tam olarak aynı uygulama tarafından görüntülenir.

Veriler de beraberinde taşınır, tüketiciler herhangi bir kesinti görmez ve kimse bir geçiş sürecini beklemek zorunda kalmaz.

Taşınma işlemi tek başına bir proje değildir. Transpareo Time Machine statik bir pakettir: bir kez oluşturulduktan sonra herhangi bir web sunucusuna kopyalanır ve işlem tamamlanır. Transpareo’da kartlarınız için ayarladığınız tasarım, yayınlanmış bir stil sayfası olarak her kartla birlikte aktarılır. Dolayısıyla, müşterilerinizin alıştığı kart görünümü, renkler, yazı tipi ve logo dahil olmak üzere kendi sunucunuzda da tamamen aynı şekilde görünür.

Tarayıcıda test edilmiştir, sunucumuzda değil

Her ürün pasaportunun üst kısmında “Transpareo tarafından doğrulanmıştır” yazan bir rozet yer alır. Bu rozet, sunucumuzda değil, ziyaretçinin tarayıcısında - yüklenen baytlar ve sertifika sahibinin açık anahtarları temel alınarak - gerçekleştirilen bir doğrulama işleminin sonucunu gösterir.

Her DPP sürümünü birbirinden bağımsız iki taraf imzalar: yayıncı ve Transpareo. Rozetin yeşile dönmesi için her iki imzanın da doğrulanabilir olması gerekir. “Kendi Anahtarını Getir” (BYOK) sistemi ile yayıncı kendi imza uç noktasını işletir; Transpareo hiçbir zaman özel anahtarı elinde tutmaz ve yalnızca bağımsız karşı imzayı ekler. Böylece, Transpareo’nun kendisinin oluşturamayacağı bir yayıncı imzası ortaya çıkar.

Güvenliği ihlal edilmiş bir sunucu, onay işaretini taklit edemez; çünkü doğrulama işlemi ziyaretçinin kendi cihazında gerçekleşir.

Ayrıntılı bilgi edinmek isteyenler, rozete tıklayabilir. Burada imza zincirini, hash değerlerini ve zincirlenmiş sürüm geçmişini görebilirsiniz. Sadece bilgiyi almak isteyenler ise bunu görmezden gelip ürün pasaportunu okumaya devam edebilir.

Aynı kontrol, bağımsız bir sayfa olarak da mevcuttur: DPP Doğrulaması adresine herhangi bir ürün pasaportunun manifest URL’sini girerek, pasaportu açmanıza gerek kalmadan kontrol sonucunun tamamını görebilirsiniz.

Kodu yayınlıyoruz

Transpareo Time Machine, GitHub’da GPL v3 lisansı altında yayınlanmaktadır. Yayınlanan değişikliklerin de GPL v3 lisansı altında olması gerekir; böylece her türlü geliştirme kamu yararına olur.

Klonlama, fork oluşturma, kendi sunucunuzda barındırma - hepsi serbesttir.

Uygulamayı nasıl entegre edeceğiniz - ister sayfaya bir satır ekleyerek, ister kendi uygulamanızda bir paket olarak, ister tamamen kendi sunucunuzda barındırarak - bu konudaki README dosyasında açıklanmıştır. Orada, DPP Doğrulaması adresinde canlı olarak çalışan, yalnızca imza doğrulamasına yönelik kardeş bileşeni de bulabilirsiniz.

Uygulamayı akıllıca kullananlar

Uygulama öncelikle tüketiciler için geliştirilmiştir. Ancak ürün verilerini bağımsız olarak incelemek veya doğrulamak isteyen herkes için de kullanılabilir.

  • Son tüketiciler tarar, inceler, sayfaları gezer, paylaşır. Giriş gerektirmez, izleme araçları yoktur.
  • Piyasa denetim kurumları ve resmi makamlar, kaynak kodu kamuya açık olarak denetlenebilen bir yazılımda ürün pasaportunu görebilir.
  • Tamirhaneler ve geri dönüşümcüleri, malzeme bileşimini ve sökme talimatlarını doğrudan ürün üzerinde görebilir.
  • Markalar ve Fork işletmecileri, paketi kendi markalarına göre özelleştirebilir - CSS belirteçleri, kendi bileşenleri, kendi sunucularında barındırma.

Transpareo artık olmazsa ne olur?

AB, kayıtlı bir ürün pasaportunun, düzenleyicinin iflası veya tasfiyesi sonrasında bile en az on yıl boyunca erişilebilir kalmasını şart koşmaktadır. Bir SaaS sağlayıcısının faaliyet süresi nadiren bu kadar uzun sürer. Bu nedenle platformu, en başından itibaren ürün pasaportlarının bizden bağımsız olarak kullanılabilir kalacağı şekilde tasarlıyoruz:

  • İmzalanmış her DPP sürümü, herkese açık bir depolama alanında bulunur. Baytlar ve yayınlanan açık anahtarlar, daha sonraki doğrulama işlemleri için yeterlidir.
  • Ürün pasaportları AB sicili’ne kaydedilir kaydedilmez, ikinci bir yazma korumalı depolama alanı her DPP sürümünü ve olay günlüğünü ek olarak on yıl boyunca yedekler. Hiç kimse - biz dahil - bu yedek kopyaları sonradan değiştiremez.
  • Sözleşmenin feshedilmesinden sonra, kısa ürün pasaportu URL’leri bir yönlendirme yoluyla Transpareo platformunda erişilebilir olmaya devam eder.
  • Transpareo Time Machine, arşivlenmiş veriler üzerinde de aynı şekilde çalışır. Paket, çalışma sırasında bize geri dönmez; sadece baytlara ve anahtarlara ihtiyaç duyar.

Transpareo platformu yarın ortadan kaybolsa bile, DPP sürümleri ve açık kaynaklı renderer kalır.

Teknolojiye meraklılar için

İşte arka planda neler oluyor. Ayrıntılara gerek duymayanlar bu bölümü atlayabilir - uygulama yine de çalışır.

  • GS1 Digital Link (ISO/IEC 18975): Ürün pasaportu URL’si, ürün kimliğini standart bir biçimde içerir; bu biçim, çözümleyiciden bağımsızdır ve tedarikçiler arasında değiştirilebilir.
  • JSON Canonicalization Scheme (RFC 8785): Deterministik bir serileştirme. Böylece hash, alan sırasından veya boşluklardan bağımsız olarak tekrarlanabilir hale gelir; herkes bunu kendisi hesaplayabilir.
  • W3C Veri Bütünlüğü Kanıtları (eddsa-jcs-2022): Kanonikleştirilmiş biçim (JCS) üzerinden Ed25519 imzası.
  • /.well-known/dpp-keys/ (RFC 8615): İhraççıların açık anahtarları standart bir yol altında bulunur - Transpareo’ya başvurmaya gerek yoktur, her doğrulayıcı bunları kendi başına bulabilir.

Her şey GitHub’daki README dosyasında belgelenmiştir - ön uç mimarisi (kendi reaktif çekirdeği, harici çerçeve yok) ve kendi sunucunuzda barındırma için derleme kılavuzu da dahil olmak üzere.

GitHub'da kodu görüntüle

Kaynağın tamamını, tüm sürümleri ve sorunla ilgili tartışmayı halka açık depoda bulabilirsiniz.