Düzenleyici Bağlam: eIDAS 1.0'dan eIDAS 2.0'a

Yönetmelik eIDAS 1.0 (EU 910/2014) Avrupa Birliği'nde dijital kimlik sistemlerinin birlikte çalışabilirliğinin temellerini atmıştır, ancak belirgin sınırlamalar gösterdi: üye devletlerin gönüllü olarak benimsemesi, mobil dünyaya pek uygun olmayan SAML 2.0 akışları ve dijital cüzdanın bulunmaması vatandaşlar için standartlaştırılmıştır. On yıl sonra Yönetmelik AB 2024/1183 — resmi olarak eIDAS 2.0 olarak bilinen — yürürlüğe girdi the 20 Mayıs 2024 Oyunun kurallarını yeniden yazmak.

Geliştiriciler için en alakalı haberler arasında şunlar yer alıyor: tüm üye devletlerin bir Avrupa Birliği Dijital Kimlik Cüzdanı (EUDI Cüzdanı) 2026 yılına kadar tanıtımı Elektronik Özellik Onayları (EAA), kavramı Nitelikli Elektronik Nitelik Doğrulaması (QEAA), ve düzenlemeye tabi sektörlerdeki İtimat Eden Tarafların (RP) cüzdanı 2027 yılına kadar kabul etme zorunluluğu.

eIDAS 2.0 Düzenleme Zaman Çizelgesi

  • 20 Mayıs 2024 – 2024/1183 Sayılı AB Yönetmeliğinin yürürlüğe girmesi
  • 2025 – Teknik Uygulama Kanunlarının yayınlanması (ARF, protokoller)
  • 2026 – Tüm AB devletleri vatandaşlarına EUDI Cüzdanları sunmalıdır
  • 2027 – Düzenlemeye tabi sektörlerdeki İtimat Eden Taraflar EUDI Cüzdanını kabul etmekle yükümlüdür

EUDI Cüzdan Mimarisi: Temel Bileşenler

EUDI Cüzdanının referans mimarisi şu şekilde tanımlanır:Mimari ve Referans Çerçevesi (ARF), teknik dokümantasyon Avrupa Komisyonu tarafından sürdürülmektedir. Sistem dört ana katmandan oluşur:

1. Sertifikayı Veren Katmanı – Kimlik Bilgilerini Kim Verir?

Gli İhraççılar doğrulanabilir sertifikalar vermeye yetkili kuruluşlardır. İki ana kategori vardır:

  • PID Sağlayıcıları: Devlet tarafından verilen temel kimlik belgesi olan Kişi Kimlik Verilerini (PID) düzenlerler (dijital kimlik belgesine eşdeğer).
  • Onay Sağlayıcıları: EAA (Elektronik Nitelik Onayları) düzenlerler - örneğin ehliyet, eğitim yeterliliği, sağlık kartı, mesleki yeterlilik.

Düzenlemeye ilişkin standart protokol şöyledir: OpenID4VCI (Doğrulanabilir Kimlik Bilgisi Verilmesi için OpenID)OAuth 2.0 akışını özel uç noktalarla genişleten Kimlik bilgileri istemek ve vermek için.

// Esempio: Token Request per OpenID4VCI
// POST /token

{
  "grant_type": "urn:ietf:params:oauth:grant-type:pre-authorized_code",
  "pre-authorized_code": "SplxlOBeZQQYbYS6WxSbIA",
  "user_pin": "493536"
}

// Risposta con Access Token
{
  "access_token": "eyJraWQiOiJrZXktMSJ9...",
  "token_type": "bearer",
  "expires_in": 86400,
  "c_nonce": "tZignsnFbp",
  "c_nonce_expires_in": 86400
}

// Credential Request
// POST /credential
// Authorization: Bearer eyJraWQiOiJrZXktMSJ9...

{
  "format": "vc+sd-jwt",
  "credential_definition": {
    "type": ["VerifiableCredential", "PersonIdentificationData"]
  },
  "proof": {
    "proof_type": "jwt",
    "jwt": "eyJraWQiOiJrZXktMiIsInR5cCI6Im9wZW5pZDR2Y2ktcHJvb2Yrand..."
  }
}

2. Cüzdan Katmanı — Vatandaşın Cüzdanı

Il EUDI Cüzdanı vatandaşın kimlik bilgilerini almak, saklamak ve sunmak için kullandığı bir uygulamadır (mobil veya web). Uygulama Yasaları (EUCC - Ortak Kriterler için AB Siber Güvenlik Sertifikasyon Programı) tarafından tanımlanan güvenlik standartlarına göre sertifikalandırılmış olmalıdır. Temel özellikler şunları içerir:

  • Güvenli kriptografik anahtar yönetimi (varsa donanım destekli)
  • SD-JWT VC Desteği (Seçici Açıklama JWT Doğrulanabilir Kimlik Bilgileri)
  • Mobil sürücü belgesi profili için ISO 18013-5 (mdoc) desteği
  • NFC/BLE aracılığıyla yakınlık sunumu (fiziksel kontroller için)
  • Tarayıcı aracılığıyla uzaktan sunum (HTTPS yönlendirmesi)

3. Doğrulayıcı/Bağlı Taraf Katmanı — Kimlik Bilgilerini Kim Alır?

I İtimat Eden Taraflar (RP) — VC ekosisteminde Doğrulayıcılar olarak da adlandırılır — kimlik doğrulama gerektiren hizmetlerdir veya vatandaşın niteliklerinin doğrulanması. Gönderim protokolü şu şekildedir: OpenID4VP (Doğrulanabilir Sunumlar için OpenID), sıklıkla birlikte kullanılır SIOPv2 (Kendiliğinden Yayınlanan OpenID Sağlayıcı v2) kendine egemen akışlar için.

4. Güven Altyapısı — Güven Zinciri

EUDI Cüzdanı bir temele dayanmaktadır: Avrupa Açık Anahtar Altyapısı (PKI). Komisyon tarafından koordine edilmektedir. Her İhraççının kayıtlı olması gerekir içindeEUDIW Güvenilir İhraççı Kaydıve Doğrulayıcılar İtimat Eden Taraflar olarak kaydolmalıdır. Kimlik bilgisi doğrulaması gerçekleşir Üye Devletin ulusal PKI'sına sabitlenmiş X.509 v3 sertifikaları aracılığıyla Düzenleyenin dijital imzasının doğrulanması yoluyla.

SD-JWT: Seçici Açıklama ve Gizlilik

eIDAS 2.0'ın en alakalı teknik yönlerinden biri, SD-JWT (Seçici Açıklama JSON Web Belirteçleri), tanımlanmış ilgili IETF RFC'de. Temel fikir, sahibinin yalnızca belirli bir işlem için gerekli olan nitelikleri ortaya çıkarmasına izin vermektir. kimlik belgesinin tamamını açığa çıkarmadan.

Veri Minimizasyonu Prensibi

SD-JWT ile bir vatandaş, kesin doğum tarihini açıklamadan yetişkin olduğunu kanıtlayabilir. Veya belirli bir belediyede ikamet ettiğinizi kanıtlamadan tam adresi görüntüle. Bu, GDPR ilkesinin kalbidir veri minimizasyonu dijital kimliğe uygulanır.

Bir SD-JWT üç bölümden oluşur:

// Struttura SD-JWT

// 1. JWT Header + Payload (con disclosures hashate)
{
  "iss": "https://issuer.example.gov.it",
  "sub": "user_12345",
  "iat": 1710000000,
  "exp": 1741536000,
  "_sd_alg": "sha-256",
  "_sd": [
    "YIk1uXcv7d9yT8rX4mZ1aA",   // hash di "given_name": "Mario"
    "kp3uX9vZ2d8rT7yX5mZ3bB",   // hash di "family_name": "Rossi"
    "Xp4uX8vZ3d9rT6yX6mZ4cC",   // hash di "birthdate": "1990-01-15"
    "Zp5uX7vZ4d0rT5yX7mZ5dD"    // hash di "age_over_18": true
  ]
}

// 2. Disclosure (payload completo, trasmesso separatamente)
// Ogni disclosure = base64url( salt || claim_name || claim_value )
// Esempio decoded:
["ynMvKGiQegTHCXkHkEL4aA", "given_name", "Mario"]
["qRpTaSvVlGnb9uOtCiKqGg", "age_over_18", true]

// 3. Presentazione selettiva al Verifier
// Il holder invia solo le disclosures che vuole rivelare
// In questo esempio: solo age_over_18, non given_name

eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwcz...~qRpTaSvVlGnb9uOtCiKqGg~

İtimat Eden Taraf EUDI Cüzdanını Uygulama

EUDI Cüzdan kimliğini kabul etmesi gereken bir dijital hizmet geliştiriyorsanız Doğrulayıcı/İtimat Eden Taraf. Ana adımlar şunlardır:

Adım 1: İtimat Eden Taraf Olarak Kayıt

Her RP, aracıların ulusal siciline kaydolmalı ve sözleşmeyi imzalamak için kullanılacak bir X.509 sertifikası almalıdır. Yetki Talepleri cüzdana gönderildi. İtalya'da kayıt defteri şu kişi tarafından yönetilir: AgID.

2. Adım: Yetkilendirme İsteği Oluşturun (OpenID4VP)

// Authorization Request OpenID4VP
// Il RP genera un signed JWT con i parametri di presentazione

// Header JWT del Request Object
{
  "alg": "ES256",
  "kid": "rp-key-2025",
  "typ": "oauth-authz-req+jwt"
}

// Payload JWT del Request Object
{
  "client_id": "https://my-service.comune.it/eudi-rp",
  "client_id_scheme": "x509_san_uri",
  "response_type": "vp_token",
  "response_mode": "direct_post",
  "response_uri": "https://my-service.comune.it/eudi-rp/callback",
  "nonce": "n-0S6_WzA2Mj",
  "state": "af0ifjsldkj",
  "presentation_definition": {
    "id": "pid-age-verification",
    "input_descriptors": [
      {
        "id": "pid_vc",
        "format": {
          "vc+sd-jwt": {
            "alg": ["ES256", "ES384"]
          }
        },
        "constraints": {
          "fields": [
            {
              "path": ["$.vct"],
              "filter": {
                "type": "string",
                "const": "PersonIdentificationData"
              }
            },
            {
              "path": ["$.age_over_18"],
              "intent_to_retain": false
            }
          ]
        }
      }
    ]
  }
}

3. Adım: VP Tokenının Doğrulanması

M-cüzdan bir yanıt verdiğinde vp_tokenİtimat Eden Taraf aşağıdaki kontrolleri yapmalıdır:

// Pseudo-codice Python per verifica VP Token

import jwt
import hashlib
import base64

def verify_vp_token(vp_token: str, expected_nonce: str) -> dict:
    # 1. Splitta SD-JWT in parti (~ come separatore)
    parts = vp_token.split("~")
    sd_jwt = parts[0]
    disclosures = parts[1:-1]  # ultime parte potrebbe essere KB-JWT
    key_binding_jwt = parts[-1] if len(parts) > 1 else None

    # 2. Decodifica e verifica il JWT principale
    header = jwt.get_unverified_header(sd_jwt)
    # Recupera il certificato dell'issuer dalla PKI europea
    issuer_cert = fetch_issuer_cert(header.get("x5c"))
    payload = jwt.decode(sd_jwt, issuer_cert, algorithms=["ES256"])

    # 3. Verifica nonce nel Key Binding JWT
    if key_binding_jwt:
        kb_payload = jwt.decode(key_binding_jwt, options={"verify_signature": False})
        assert kb_payload["nonce"] == expected_nonce, "Nonce mismatch"
        assert kb_payload["aud"] == "https://my-service.comune.it/eudi-rp"

    # 4. Risolvi le disclosures
    disclosed_claims = {}
    for disclosure in disclosures:
        # Verifica hash
        disclosure_hash = base64.urlsafe_b64encode(
            hashlib.sha256(disclosure.encode()).digest()
        ).rstrip(b"=").decode()
        if disclosure_hash in payload.get("_sd", []):
            decoded = json.loads(base64.urlsafe_b64decode(disclosure + "=="))
            # formato: [salt, claim_name, claim_value]
            disclosed_claims[decoded[1]] = decoded[2]

    return disclosed_claims

IT Wallet Italiano: Son Teknoloji

İtalya, EUDI Cüzdan ekosistemine kendi aracılığıyla yaklaşıyor BT Cüzdanı07/03/2024 tarihli Kanun Hükmünde Kararname ile sağlanmıştır. 31 ve geliştirildi PNRR'nin içinde. Sistem tarafından işletilmektedir PagoPA S.p.A. ve mevcut SPID ve CIE (Elektronik Kimlik Kartı) sistemlerini entegre eder.

BT Cüzdanı, EUDI uyumlu Cüzdana geçiş çözümü olarak tasarlandı ve 2025'in başından bu yana pilot aşamaya başladı. Mevcut ilk kimlik bilgileri olarak dijital ehliyet, sağlık kartı ve engellilik belgesi ile.

BT Cüzdan Kimlik Bilgileri (Pilot Aşama 2025)

  • mDL – Mobil Ehliyet (ISO 18013-5)
  • TS-CNS – Sağlık Kartı / Ulusal Hizmetler Kartı
  • Engelli Sertifikası – INPS sertifikası
  • PID – Kişi Kimlik Verileri (CIE'den türetilmiştir)

SIOPv2 ile OpenID4VP: Cihazlar Arası Akış

Yaygın bir senaryo, cihazlar arası akış: Kullanıcı masaüstündeki bir web sitesini ziyaret eder ve cüzdanda kimlik doğrulaması yapmak için akıllı telefonunu kullanır. Tipik akış, ilk iletişim kanalı olarak bir QR Kodu kullanır:

// Flusso cross-device EUDI Wallet

// 1. Il RP genera il Request Object e lo rende disponibile
GET /eudi/request.jwt HTTP/1.1
// Risposta: signed JWT con presentation_definition

// 2. Il RP mostra un QR code che contiene:
eudi-openid4vp://?
  client_id=https%3A%2F%2Fmy-service.comune.it%2Feudi-rp&
  request_uri=https%3A%2F%2Fmy-service.comune.it%2Feudi-rp%2Frequest.jwt&
  state=af0ifjsldkj

// 3. Il wallet dell'utente scansiona il QR:
//    - Risolve il request_uri
//    - Valida la firma del Request Object
//    - Mostra all'utente quale attributo viene richiesto
//    - Chiede il consenso

// 4. Il wallet invia la risposta via direct_post al response_uri:
POST /eudi-rp/callback HTTP/1.1
Content-Type: application/x-www-form-urlencoded

vp_token=eyJhbGciOiJFUzI1NiJ9...&
state=af0ifjsldkj

// 5. Il RP verifica la VP Token
// 6. Il RP redirige il browser desktop tramite session polling o SSE

SPID ve CIE ile birlikte çalışabilirlik

İtalyan geliştiricilerin mevcut sistemlerin yeni EUDI ekosistemiyle nasıl bir arada var olduğunu anlamaları gerekiyor:

Sistem Protokol Kimlik Son kullanma tarihi Notlar
SPID SAML 2.0 / OIDC Birleşik (özel IdP) 2026+ yılına kadar operasyonel Aşamalı olarak EUDI'ye dönüşecek
CIE (Elektronik Kimlik Kartı) SAML 2.0 / OIDC / NFC Devlet (İçişleri Bakanlığı) Uzun vadeli operasyonel EUDI Cüzdanı için PID kaynağı
BT Cüzdanı (PagoPA) OpenID4VCI / OpenID4VP Ulusal cüzdan 2025+ (pilot) EUDI Cüzdanına Geçiş
EUDI Cüzdanı OpenID4VCI / OpenID4VP / SD-JWT AB (sınır ötesi) 2026'dan itibaren zorunlu Kesin Avrupa standardı

Güvenlik ve Kriptografik Hususlar

EUDI Cüzdan uygulaması, çeşitli güvenlik hususlarına dikkat edilmesini gerektirir:

Anahtar Bağlamaları

Her kimlik bilgisi, adı verilen bir mekanizma aracılığıyla cüzdana (ve dolayısıyla vatandaşın fiziksel cihazına) kriptografik olarak bağlanır. Anahtar Bağlamaları. Sahibinin özel anahtarı asla cihazın güvenli elemanından çıkmamalıdır. Anahtar Bağlama JWT (KB-JWT) sunum yapan kişinin SD-JWT'de kayıtlı genel anahtara karşılık gelen özel anahtara sahip olduğunu kanıtlar.

Tekrar Saldırısını Önleme

Alan nonce Yetkilendirme Talebinde RP tarafından rastgele oluşturulur ve cüzdan tarafından imzalanan KB-JWT'ye dahil edilmelidir. RP, tekrarlama saldırılarını önleyerek, tekrarlamanın orijinal olarak oluşturulanla eşleştiğini doğrular.

Uyarı: Geçici geçerlilik

Doğrulanabilir Kimlik Bilgilerinin bir son kullanma tarihi vardır (exp). Hizmetler her zaman kimlik bilgilerinin süresinin dolmadığını doğrulamalıdır, ve iptal politikalarını göz önünde bulundurun (Durum Listesi veya Uygulama Kanunlarında tanımlanan OCSP benzeri mekanizmalar yoluyla).

Sertifika Doğrulaması

Veren sertifikaların PKI zinciri boyunca Avrupa güven dayanaklarına kadar doğrulanması gerekir. Her zaman güncellenmiş sürümü kullanın arasında Güvenilir Liste Avrupa Birliği (AB Komisyonu'ndan API aracılığıyla edinilebilir).

Geliştirici Araçları ve Kitaplıkları

EUDI Cüzdan çevresindeki açık kaynak ekosistemi hızla büyüyor. Bunlar en önemli referanslardır:

# Librerie ufficiali EU (reference implementations)

# Python - EUDI Wallet Issuer SDK
pip install eudi-srv-pid-issuer

# Python - SD-JWT Reference Implementation
pip install sd-jwt

# Java - EUDI Wallet Core Library
# gradle dependency:
# implementation("eu.europa.ec.eudi:eudi-lib-jvm-sdjwt-kt:latest")

# TypeScript/JavaScript
npm install @sd-jwt/sd-jwt-vc @sd-jwt/decode
npm install openid4vc  # OID4VCI + OID4VP client

# --- Esempio uso sd-jwt in TypeScript ---
import { SDJwtVcInstance } from "@sd-jwt/sd-jwt-vc";
import { digest, generateSalt } from "@sd-jwt/crypto-nodejs";

const sdjwt = new SDJwtVcInstance({
  signer: async (data: string) => sign(data, issuerPrivateKey),
  signAlg: "ES256",
  verifier: async (data: string, sig: string) => verify(data, sig, issuerPublicKey),
  hasher: digest,
  hashAlg: "sha-256",
  saltGenerator: generateSalt,
});

// Emetti una credenziale
const credential = await sdjwt.issue(
  {
    iss: "https://issuer.gov.it",
    iat: Math.floor(Date.now() / 1000),
    vct: "PersonIdentificationData",
    given_name: "Mario",
    family_name: "Rossi",
    age_over_18: true,
    birthdate: "1990-01-15",
  },
  // Indica quali claim sono selectively disclosable
  {
    _sd: ["given_name", "family_name", "birthdate", "age_over_18"],
  }
);

console.log(credential); // eyJhbGciOiJFUzI1NiJ9...~...

Test ve Korumalı Alan Ortamları

Üretime geçmeden önce resmi sanal alan ortamlarını kullanın:

  • AB EUDI Cüzdan Referans Başvurusu: Açık kaynaklı bir Android/iOS uygulaması olarak GitHub'da (eu-digital-identity-wallet) mevcuttur. Verici demosunu, doğrulayıcı demosunu ve PID düzenleyici testini içerir.
  • İtalya BT Cüzdan Korumalı Alanı: PagoPA, Güvenen Taraf (iletişim) gibi entegrasyon için test ortamı sağlar erişim için geliştiriciler.italia.it topluluğu).
  • EUDIW Uygunluk Test Aracı: Uygulama Kanunlarına uygunluğun test edilmesine yönelik AB Komisyonu aracı.

İtalyan Geliştiriciler için Yol Haritası

Bir kamu idaresinde veya İtalyan vatandaşlarına hizmet veren özel bir şirkette çalışıyorsanız işte somut eylemler önümüzdeki aylarda yapılacaklar:

EUDI Cüzdan Hazır Kontrol Listesi

  • Kimlik doğrulama stratejinizi güncelleyin: OpenID4VP'yi SPID/CIE OIDC ile bugün birleştirin
  • Çalışmak Sunum Tanımı kullanım durumlarınız için (gerçekten hangi özelliklere ihtiyacınız var?)
  • Arka uç uygulamanızda SD-JWT doğrulamasını uygulayın
  • Hizmetinizi mümkün olduğunda AgID kaydına İtimat Eden Taraf olarak kaydedin
  • Testi EUDI Cüzdan Referans Uygulaması ile entegre edin (GitHub'daki Android sürümü)
  • Ekibinizi VC bağlamında GDPR ve veri minimizasyonu konusunda eğitin
  • Uygulama Kanunlarının İzlenmesi: teknik spesifikasyonlar 2026'ya kadar geliştirilecektir

Sonuçlar

eIDAS 2.0 ve EUDI Cüzdanı, Avrupa dijital kimlik manzarasının son yıllardaki en derin dönüşümünü temsil ediyor. Geliştiriciler için bu, tamamen yeni bir teknoloji ekosistemini benimsemek anlamına geliyor: SD-JWT, OpenID4VCI, OpenID4VP, SIOPv2 ve kıta çapında bir PKI.

Geçiş hemen olmayacak - SPID ve CIE yıllarca paralel olarak çalışmaya devam edecek - ancak hazırlanmaya başlamanın tam zamanı şimdi. Erken uyum sağlayan hizmetler gerçek bir rekabet avantajına sahip olacak ve EUDI Cüzdanının kitlesel olarak benimsenmesi dönüşüme uğradığında hazır olacak gizlilik, kontrol ve sınır ötesi birlikte çalışabilirlik açısından kullanıcı beklentileri.

GovTech serisi devam ediyor

Serinin bir sonraki makalesinde kamu kimliği için OpenID Connect'in uygulanması hakkında daha fazla bilgi edinin.