İçeriğe Atla
Mustafa Erbay
Teknoloji · 12 dk okuma · görüntülenme Read in English

Passkey ve Parolalar: Güvenliğin 5 Pratik Karşılaştırması

Geleneksel parolaların zayıflıklarından yola çıkarak Passkey'lerin sunduğu güvenlik, kullanım kolaylığı ve yönetim avantajlarını 5 temel pratik kıyaslama ile…

100%

Geçen ay, bir üretim ERP’sinde kullanıcıların parola yönetimiyle ilgili sürekli yaşadığı sorunlar üzerine düşünürken, Passkey’lerin neden bu kadar önemli bir alternatif haline geldiğini bir kez daha fark ettim. Geleneksel parolaların uzun yıllardır süregelen güvenlik zafiyetleri ve kullanıcı deneyimi zorlukları, Passkey teknolojisinin sunduğu pratik çözümlerle önemli ölçüde aşılıyor. Bu yazıda, bu iki kimlik doğrulama yöntemini beş temel başlık altında karşılaştıracağım.

Amacım, sadece teorik farkları açıklamak değil, aynı zamanda hem son kullanıcı hem de sistem yöneticisi/geliştirici bakış açısından gerçek dünya etkilerini ortaya koymak. Bir sistemin güvenliği sadece en güçlü şifreleme algoritmasıyla değil, aynı zamanda kullanıcıların bu güvenliği ne kadar kolay ve hatasız kullanabildiğiyle de ölçülür. Passkey’lerin bu denklemi nasıl değiştirdiğine odaklanacağız.

Passkey Nedir ve Neden Güvenlidir?

Passkey, FIDO (Fast IDentity Online) Alliance tarafından geliştirilen ve WebAuthn standardı ile desteklenen, parola içermeyen bir kimlik doğrulama yöntemidir. Temelde, bir kullanıcı adı ve parola yerine, bir çift kriptografik anahtar (genel ve özel anahtar) kullanırız. Özel anahtar, kullanıcının cihazında güvenli bir şekilde saklanır ve asla sunucuya gönderilmezken, genel anahtar sunucuda depolanır.

Kimlik doğrulama sırasında, sunucu bir meydan okuma (challenge) gönderir ve kullanıcının cihazı, özel anahtarını kullanarak bu meydan okumayı imzalar. Bu imzayı doğrulamak için sunucu kendi elindeki genel anahtarı kullanır. Bu asimetrik şifreleme mekanizması, parolanın aksine, sunucuda kullanıcının kimliğini doğrudan ifşa edebilecek bir sır tutma ihtiyacını ortadan kaldırır. Bu da Passkey’leri, klasik parola tabanlı sistemlere göre doğası gereği daha güvenli hale getirir.

Passkey’ler, ayrıca, kullanıcının cihazına bağlıdır ve genellikle biyometrik doğrulama (parmak izi, yüz tanıma) veya cihaz PIN’i ile korunur. Bu da, yetkisiz erişimin önüne geçmek için ek bir güvenlik katmanı sağlar. Özel anahtarın cihazdan ayrılmaması ve biyometrik koruma, fiziksel güvenlikten siber güvenliğe uzanan bütünsel bir yaklaşım sunar.

Güvenlik Farkı: Phishing Direnci ve Kriptografik Kimlik Doğrulama

Parolalar, doğaları gereği phishing saldırılarına karşı savunmasızdır. Bir kullanıcı, sahte bir web sitesine parolasını girdiğinde, bu bilgi saldırganın eline geçer ve gerçek siteye erişim için kullanılabilir. Bu, “insan faktörünün” güvenlik zincirindeki en zayıf halka olduğunu gösteren klasik bir örnektir.

Passkey’ler ise, FIDO2 standardının bir parçası olarak, “origin binding” adı verilen bir mekanizma ile phishing’e karşı dirençlidir. Kimlik doğrulama işlemi sırasında, kullanıcının tarayıcısı veya işletim sistemi, Passkey’in sadece kayıtlı olduğu domain (origin) ile kullanılmasını sağlar. Yani, bir saldırgan sahte bir site kursa bile, kullanıcı orada Passkey ile kimlik doğrulama yapamaz çünkü Passkey, sahte domain için geçerli bir kimlik bilgisi üretmeyecektir. Bu durum, parola tabanlı sistemlerde sürekli başımızı ağrıtan bir sorunu kökten çözüyor.

graph TD;
  A["Kullanıcı"] --> B{"Phishing Sitesi"};
  B -- Parola İster --> C["Saldırgan (Kredensiyelleri Alır)"];
  C --> D["Gerçek Site (Yetkisiz Erişim)"];
  subgraph Passkey Akışı;
      E["Kullanıcı"] --> F{"Phishing Sitesi"};
      F -- Passkey İster --> G["Kullanıcı Cihazı"];
      G -- Origin Kontrolü Yapar --> H{Passkey Origin Match?};
      H -- No --> I["Kimlik Doğrulama Başarısız"];
      H -- Yes (Gerçek Site) --> J["Passkey İmzası Oluştur"];
      J --> K["Gerçek Site (Başarılı Kimlik Doğrulama)"];
  end
  style A fill:#f9f,stroke:#333,stroke-width:2px;
  style E fill:#f9f,stroke:#333,stroke-width:2px;
  style D fill:#f00,stroke:#333,stroke-width:2px;
  style I fill:#f00,stroke:#333,stroke-width:2px;

Yukarıdaki diyagram, phishing saldırılarının parola ve Passkey senaryolarındaki farklılığını özetliyor. Passkey, sahte bir siteye karşı doğal bir bariyer oluştururken, parola kullanıcıyı tamamen savunmasız bırakır. Bu, sistem yöneticisi olarak bana ciddi bir rahatlama sağlıyor çünkü kullanıcı eğitimine ayrılan kaynakların bir kısmını başka güvenlik iyileştirmelerine yönlendirebiliyorum. Ayrıca, sunucuda parola hash’i saklamadığımız için, bir veri ihlali durumunda çalınacak bir parola veritabanı da olmuyor, bu da genel risk profilini önemli ölçüde düşürüyor.

Kullanım Kolaylığı ve Cihazlar Arası Senkronizasyon

Geleneksel parolalar, kullanıcılar için bitmek bilmeyen bir çiledir: güçlü, benzersiz parolalar oluşturma, bunları hatırlama veya güvenli bir şekilde saklama ve düzenli olarak değiştirme gerekliliği. Birçok kullanıcı, bu zorluklar nedeniyle basit veya tekrar eden parolalar kullanır, bu da güvenlik zafiyetlerine yol açar. Geçenlerde bir mobil uygulamamın kullanıcılarından gelen geri bildirimlerde, parola sıfırlama taleplerinin ne kadar yoğun olduğunu görmüştüm. Bu, kullanıcı deneyiminin doğrudan güvenlik duruşunu etkilediğinin net bir göstergesiydi.

Passkey’ler ise bu deneyimi kökten değiştiriyor. Kullanıcılar, bir Passkey oluşturduktan sonra bir daha parola girmek zorunda kalmıyor. Kimlik doğrulama, cihazın biyometrik sensörleriyle (parmak izi, yüz tanıma) veya PIN ile hızlı ve sezgisel bir şekilde gerçekleşiyor. Bu, hem zaman kazandırıyor hem de parola unutma, yanlış girme gibi insani hataları ortadan kaldırıyor. Kendi yan ürünüm için düşündüğümde, bu tür bir kullanım kolaylığı, kullanıcı benimsemesi için kritik bir faktör olacaktır.

Cihazlar arası senkronizasyon da Passkey’lerin önemli bir avantajı. Apple, Google ve Microsoft gibi platformlar, Passkey’leri kullanıcıların cihazları arasında güvenli bir şekilde senkronize etme altyapısı sunuyor. Bu, bir kullanıcının yeni bir cihaza geçtiğinde veya birden fazla cihaz kullandığında, Passkey’lerine kolayca erişebileceği anlamına geliyor. Parolalarda bu durum genellikle manuel parola yöneticileri veya tarayıcı tabanlı parola kaydetme çözümleriyle sağlanır ki bunlar her zaman güvenli veya platformlar arası uyumlu olmayabilir. Passkey senkronizasyonu, kullanıcının cihaz ekosistemi içinde sorunsuz bir deneyim sunarak, güvenlik ve kolaylığı bir araya getiriyor.

Yönetim ve Kurtarma Senaryolarında Passkey Avantajları

Kurumsal ortamlarda veya büyük ölçekli uygulamalarda, kimlik doğrulama sistemlerinin yönetimi sadece kullanıcı deneyimiyle sınırlı değildir; aynı zamanda kurtarma senaryoları, erişim iptali ve IT destek süreçlerini de kapsar. Parola tabanlı sistemlerde, bir kullanıcının parolasını unutması veya hesabının ele geçirilmesi durumunda izlenen prosedürler genellikle karmaşıktır ve güvenlik riskleri taşır. Örneğin, bir kullanıcının parolasını unuttuğunda uygulanan “parola sıfırlama” akışları, genellikle e-posta tabanlıdır ve bu da e-posta hesabının ele geçirilmesi durumunda ciddi zafiyetler yaratır.

Passkey’ler, bu yönetim yükünü ve kurtarma karmaşıklığını önemli ölçüde azaltır. Bir kullanıcı cihazını kaybettiğinde veya Passkey’ine erişemediğinde, yedekleme ve kurtarma mekanizmaları genellikle işletim sistemi veya Passkey sağlayıcısı (örneğin, iCloud Keychain, Google Password Manager) tarafından sağlanır. Bu mekanizmalar, kullanıcının Passkey’lerini yeni bir cihaza güvenli bir şekilde geri yüklemesini sağlar. Bu, IT departmanlarının parola sıfırlama talepleriyle uğraşma ihtiyacını azaltır ve daha güvenli bir kurtarma akışı sunar.

Passkey Kurtarma Akışı (Örnek)

  1. Cihaz Kaybı/Erişim Problemi: Kullanıcı Passkey’ine erişemez.
  2. Yeni Cihaz Edinimi: Kullanıcı yeni bir cihaz alır veya mevcut bir cihazını kullanır.
  3. Platform Kurtarma: Kullanıcı, Passkey’leri senkronize eden platformun (Apple, Google, Microsoft) kurtarma prosedürlerini izler (örneğin, Apple ID şifresi ve diğer cihazlardan onay).
  4. Passkey’lerin Geri Yüklenmesi: Platform, kullanıcının Passkey’lerini güvenli bir şekilde yeni cihaza geri yükler.
  5. Hizmete Erişime Devam: Kullanıcı, hizmetlere tekrar Passkey ile sorunsuz bir şekilde erişebilir.

Ayrıca, bir çalışanın şirketten ayrılması durumunda, Passkey’lerin erişiminin iptali de daha doğrudan ve güvenli bir şekilde yapılabilir. Parolalarda olduğu gibi, kullanıcının geçmişte kaydettiği veya hatırladığı parolaları kullanma riski ortadan kalkar. Bu sayede, erişim yönetimi süreçleri çok daha sağlam hale gelir.

Geliştirici ve Sistem Mimarisi Perspektifinden Entegrasyon

Bir üretim ERP’si üzerinde çalışırken veya kendi yan ürünümün backend’ini geliştirirken, yeni bir kimlik doğrulama yöntemini entegre etmek her zaman bir dizi mimari karar ve teknik zorluk getirir. Parola tabanlı sistemler için yıllardır oturmuş kütüphaneler ve yaklaşımlar mevcutken, Passkey’ler gibi daha yeni teknolojiler farklı bir düşünme biçimi gerektirir.

Parola tabanlı sistemlerde, kullanıcı parolaları sunucuda güvenli bir şekilde hash’lenmiş ve tuzlanmış (salted) olarak saklanır. Giriş sırasında, kullanıcının girdiği parola aynı algoritmalarla işlenir ve saklanan hash ile karşılaştırılır. Bu model, kolay anlaşılır ve geniş çapta desteklenen bir yapıya sahiptir. Ancak, veritabanı sızıntıları durumunda hash’lerin de ele geçirilme riski her zaman mevcuttur; bu yüzden doğru hash algoritmaları (argon2, bcrypt) ve yeterli tuzlama kritik öneme sahiptir.

Passkey entegrasyonu ise WebAuthn API’si üzerinden gerçekleşir. Bu, tarayıcılar ve işletim sistemleriyle doğrudan etkileşim kuran bir dizi JavaScript API’si ve sunucu tarafında bu etkileşimleri doğrulayan bir altyapı gerektirir. Benim FastAPI backend’inde Passkey desteği eklerken, FIDO2 doğrulama kütüphaneleri ve frontend tarafında WebAuthn API çağrılarını yönetmek için biraz zaman harcadığımı hatırlıyorum. Bu süreç, klasik parola doğrulamasından daha karmaşıktır çünkü asimetrik kriptografi, meydan okuma oluşturma ve imza doğrulama gibi kavramları içerir.

Passkey Entegrasyonunun Temel Adımları:

  1. Kayıt (Registration):

    • Kullanıcı Passkey oluşturmak istediğinde, sunucu bir “meydan okuma” (challenge) ve kullanıcı bilgileri içeren bir “oluşturma seçeneği” (creation options) nesnesi gönderir.
    • Frontend, bu nesneyi navigator.credentials.create() WebAuthn API’sine iletir.
    • Kullanıcı cihazında (biyometrik/PIN ile) Passkey’i onaylar. Cihaz, özel anahtarı güvenli bir şekilde oluşturur ve genel anahtarı içeren bir “kimlik bilgisi” (credential) nesnesi döndürür.
    • Frontend bu kimlik bilgisini sunucuya gönderir.
    • Sunucu, kimlik bilgisini (genel anahtar, kimlik bilgisi ID’si vb.) doğrular ve veritabanına kaydeder.
  2. Kimlik Doğrulama (Authentication):

    • Kullanıcı giriş yapmak istediğinde, sunucu yeni bir “meydan okuma” ve kayıtlı kimlik bilgisi ID’leri (eğer varsa) içeren bir “istek seçeneği” (request options) nesnesi gönderir.
    • Frontend, bu nesneyi navigator.credentials.get() WebAuthn API’sine iletir.
    • Kullanıcı cihazında (biyometrik/PIN ile) kimlik doğrulamayı onaylar. Cihaz, özel anahtarını kullanarak meydan okumayı imzalar ve bir “kimlik doğrulama” (assertion) nesnesi döndürür.
    • Frontend bu nesneyi sunucuya gönderir.
    • Sunucu, imzayı kendi elindeki genel anahtar ile doğrular ve kullanıcının kimliğini onaylar.
# FastAPI backend'inde Passkey kaydı için basitleştirilmiş bir örnek
from fastapi import APIRouter, Depends, HTTPException
from pydantic import BaseModel
from webauthn import generate_registration_options, verify_registration_response
from webauthn.helpers.structs import RegistrationCredential
# ... diğer import'lar

router = APIRouter()

class RegisterPasskeyRequest(BaseModel):
    client_data_json: str
    attestation_object: str

@router.post("/passkey/register/options")
async def get_registration_options(current_user: dict = Depends(get_current_user)):
    options = generate_registration_options(
        rp_id="your-domain.com",
        rp_name="Uretim ERP",
        user_id=str(current_user["id"]).encode('utf-8'),
        user_name=current_user["email"],
        challenge=os.urandom(16) # Güvenli bir challenge
    )
    # Challenge'ı oturumda sakla
    return options

@router.post("/passkey/register/verify")
async def verify_passkey_registration(
    response: RegisterPasskeyRequest,
    current_user: dict = Depends(get_current_user)
):
    # Challenge'ı oturumdan al
    expected_challenge = "..." # Oturumdan alınmalı
    
    try:
        registration_verification = verify_registration_response(
            credential=RegistrationCredential(
                client_data_json=response.client_data_json,
                attestation_object=response.attestation_object
            ),
            expected_origin="https://your-domain.com",
            expected_rp_id="your-domain.com",
            expected_challenge=expected_challenge,
            require_user_verification=True # Biyometrik veya PIN doğrulaması zorunlu
        )
        # Genel anahtarı ve credential ID'yi veritabanına kaydet
        # user_passkeys.append({
        #     "credential_id": registration_verification.credential_id.hex(),
        #     "public_key": registration_verification.credential_public_key,
        #     "sign_count": registration_verification.sign_count
        # })
        return {"message": "Passkey başarıyla kaydedildi."}
    except Exception as e:
        raise HTTPException(status_code=400, detail=f"Passkey kaydı başarısız: {e}")

Bu örnek, Passkey entegrasyonunun karmaşıklığını gösteriyor. Ancak, uzun vadede sağladığı güvenlik ve kullanım kolaylığı, bu ilk yatırımın karşılığını fazlasıyla veriyor. Kendi sistemlerimde, özellikle API’ler ve mikroservisler arasında kimlik doğrulama akışlarını tasarlarken, bu tür modern standartların getirdiği ek güvenlik katmanlarını değerlendiriyorum.

Sonuç: Passkey’ler Geleceğin Kimlik Doğrulama Yöntemi mi?

Passkey’ler, güvenlik, kullanım kolaylığı ve yönetim açısından geleneksel parolalara kıyasla önemli avantajlar sunuyor. Phishing saldırılarına karşı doğal dirençleri, biyometrik doğrulama ile artırılmış güvenlikleri ve cihazlar arası senkronizasyon kolaylıkları, onları modern dijital dünyada vazgeçilmez bir kimlik doğrulama yöntemi haline getiriyor. Kendi tecrübelerimde, kullanıcıların parola kaynaklı sorunlarla boğuştuğunu ve IT ekiplerinin bu sorunları çözmek için ciddi zaman harcadığını çok gördüm.

Elbette, Passkey entegrasyonu geliştiriciler için yeni öğrenme eğrileri ve mimari değişiklikler gerektiriyor. Ancak, bu yatırımın uzun vadede daha güvenli sistemler, daha mutlu kullanıcılar ve daha düşük operasyonel maliyetler olarak geri döneceğine inanıyorum. Passkey’lerin yaygınlaşmasıyla birlikte, parola devrinin yavaş yavaş kapanacağını ve çok daha sağlam bir kimlik doğrulama ekosistemine doğru ilerleyeceğimizi düşünüyorum. Bu geçiş, her ne kadar kademeli olsa da, sektörün genel güvenlik seviyesini belirgin şekilde yukarı çekecektir.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

Sıkça Sorulanlar

Bu makale ile ilgili okurların sorduğu yaygın sorular.

Passkey'leri kullanmaya başlarken nelere dikkat etmeliyim?
Passkey'leri kullanmaya başlarken, ilk dikkat etmemiz gereken şey, destekleyen cihazlar ve tarayıcılar ile uyumlu olup olmadığımızdır. Ben, bu konuda araştırmalar yaparak ve bazı denemeler yaparak, hangi araçların Passkey ile çalışabileceğini öğrendim. Ayrıca, sistem yöneticisi veya geliştiriciyseniz, sunucunuzun WebAuthn standardını destekleyip desteklemediğini kontrol etmelisiniz.
Passkey'lerin geleneksel parolalara kıyasla avantajları nelerdir?
Benim deneyimime göre, Passkey'lerin en büyük avantajı, parola içermeyen bir kimlik doğrulama yöntemi olmasıdır. Bu, kullanıcıların parolaları unutmak veya yanlış girmek gibi sorunlarla karşılaşmalarını engeller. Ayrıca, Passkey'ler asimetrik şifreleme mekanizması kullanır, bu da sunucuda kullanıcının kimliğini doğrudan ifşa edebilecek bir sır tutma ihtimalini ortadan kaldırır.
Passkey'ler ile geleneksel parolalar arasında bir tradeoff var mıdır?
Evet, her iki kimlik doğrulama yöntemi arasında bir tradeoff vardır. Passkey'ler daha güvenli ve kullanımı daha kolay olabilir, ancak bazı sistemler veya uygulamalar tarafından desteklenmeyebilir. Ben, bu tradeoff'u değerlendirirken, sistemimin güvenliği ve kullanıcı deneyimi için hangisinin daha önemli olduğunu düşünüyorum. Örneğin, yüksek güvenlik gerektiren bir sistemde Passkey'ler daha uygun olabilir, ancak daha basit bir uygulamada geleneksel parolalar yeterli olabilir.
Passkey'lerin kullanımı sırasında karşılaşabileceğimiz hatalar veya sorunlar nelerdir?
Passkey'lerin kullanımı sırasında karşılaşabileceğimiz hatalar veya sorunlar, genellikle cihaz veya tarayıcı uyumluluğu ile ilgili olabilir. Ben, bu tür sorunlarla karşılaştığımda, ilk olarak cihaz veya tarayıcı güncellemelerini kontrol ediyorum. Ayrıca, sistem yöneticisi veya geliştiriciyseniz, sunucunuzun WebAuthn standardını doğru şekilde yapılandırıp yapılandırmadığınızı kontrol etmelisiniz. Genellikle, bu sorunlar basit çözümler ile halledilebilir, ancak bazen daha kapsamlı bir araştırma veya destek gerekebilir.
ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

✉️ Ücretsiz · Spam yok · İstediğin an çık

Yeni yazılardan haberdar olun

Yeni içerikler ve teknik notlar e-postanıza gelsin.

  • 📌
    Haftanın en iyisi Sadece okumaya değer tek yazı
  • 🔧
    Alet çantası Bu hafta kullandığım araçlar
  • 🧠
    Perde arkası Blog'a girmeyen notlar

Spam yapmıyoruz. İstediğiniz zaman ayrılabilirsiniz. · Sadece Umami (self-hosted, Google yok) ile takip.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar