Linux Kullanıcı Parolalarının Şifrelenmesi: /etc/shadow Dosyası ve Yescrypt Algoritması

Linux işletim sistemlerinde kullanıcı parolaları hiçbir zaman düz metin (plaintext) olarak saklanmaz. Bunun yerine, tek yönlü parola hash algoritmaları kullanılarak güvenli biçimde saklanırlar. Modern Linux dağıtımlarında kullanılan parola hash algoritmaları, yalnızca hash üretmekle kalmaz; aynı zamanda brute-force ve GPU saldırılarına karşı dirençli olacak şekilde tasarlanmıştır.

Bu makalede Kali Linux'un /etc/shadow dosyasındaki aşağıdaki satırı temel alarak Linux parola güvenliğini ayrıntılı şekilde inceleyeceğiz.

kali:$y$j9T$zf6N4R3lwuzxHZbhC/Vwj/$k9CZFAUev7UpCrnQUSnwdQCFVwEnFgvIsDgKjd5eZs7:20599:0:99999:7:::

Linux'ta Parolalar Neden /etc/passwd Dosyasında Saklanmaz?

İlk Linux sürümlerinde kullanıcı parolaları /etc/passwd dosyasında tutuluyordu.

Örneğin:

kali:x:1000:1000:Kali User:/home/kali:/bin/bash

Buradaki ikinci alanın neden x olduğuna dikkat edin.

Eskiden burada hash bulunurdu.

kali:$1$abc123.......

Ancak /etc/passwd dosyası herkes tarafından okunabildiği için saldırganlar hash değerlerini kolayca elde edebiliyordu.

Bu nedenle hash değerleri yalnızca root kullanıcısının okuyabildiği

/etc/shadow

dosyasına taşındı.


/etc/shadow Dosyasının Yapısı

Bir satır aşağıdaki alanlardan oluşur.

username:password:lastchange:min:max:warn:inactive:expire:reserved

Bizim örneğimiz:

kali:$y$j9T$zf6N4R3lwuzxHZbhC/Vwj/$k9CZFAUev7UpCrnQUSnwdQCFVwEnFgvIsDgKjd5eZs7:20599:0:99999:7:::

Şimdi bunu tek tek inceleyelim.


1. Kullanıcı Adı

kali

Kullanıcı hesabının ismidir.


2. Parola Hash Bilgisi

En önemli bölüm burasıdır.

$y$j9T$zf6N4R3lwuzxHZbhC/Vwj/$k9CZFAUev7UpCrnQUSnwdQCFVwEnFgvIsDgKjd5eZs7

Bu alan dört parçaya ayrılır.

$y$
$j9T$
$zf6N4R3lwuzxHZbhC/Vwj/$
$k9CZFAUev7UpCrnQUSnwdQCFVwEnFgvIsDgKjd5eZs7

İlk Bölüm

$y$

Hash algoritmasını belirtir.

Buradaki

y

Yescrypt anlamına gelir.

Günümüzde birçok Linux dağıtımının varsayılan parola algoritmasıdır.

Özellikle

  • Kali Linux

  • Debian 11+

  • Ubuntu'nun yeni sürümleri

  • Fedora

  • Arch Linux

tarafından kullanılmaktadır.


Linux'ta Kullanılan Algoritma Kodları

Kod        Algoritma
$1$        MD5
$2a$        Blowfish
$2y$        Blowfish
$5$        SHA-256
$6$        SHA-512
$y$        Yescrypt
$gy$        GOST Yescrypt (bazı sistemlerde)

Yescrypt Nedir?

Yescrypt,

eski SHA-512 tabanlı parola saklama yönteminin yerine geliştirilmiştir.

Temel amacı:

  • GPU saldırılarını yavaşlatmak

  • ASIC cihazlarına karşı direnç sağlamak

  • Bellek kullanımını artırmak

  • Brute-force maliyetini yükseltmek


Yescrypt Nasıl Çalışır?

Basitleştirilmiş süreç:

Parola
Salt eklenir
Bellek yoğun hesaplama
Çok sayıda tur
Hash üretilir

En önemli özelliği:

Sadece işlemci gücü değil,

RAM miktarı da önemlidir.

Bu nedenle GPU kümeleri büyük avantaj sağlayamaz.


İkinci Alan

$j9T$

Bu bölüm Yescrypt parametrelerini içerir.

Burada;

  • maliyet (cost)

  • bellek kullanımı

  • işlem karmaşıklığı

kodlanmış durumdadır.

Bu değerler doğrudan okunabilir değildir.

libxcrypt tarafından çözülür.


Üçüncü Alan

zf6N4R3lwuzxHZbhC/Vwj/

Bu Salt değeridir.


Salt Nedir?

Salt,

her kullanıcı için rastgele oluşturulan benzersiz veridir.

Örneğin iki kullanıcının parolası aynı olsun.

123456

Salt kullanılmazsa:

Ali
Hash:
ABCDEF...
Ayşe
Hash:
ABCDEF...

İki hash de aynı olur.

Salt kullanılırsa

Ali
Salt:
X123
Hash:
A1B2C3...
Ayşe
Salt:
P9Q8
Hash:
F8E7D6...

Artık hash değerleri tamamen farklıdır.


Salt'ın Sağladığı Avantajlar

Salt sayesinde:

  • Rainbow Table saldırıları engellenir.

  • Aynı parola kullanan kullanıcılar tespit edilemez.

  • Her kullanıcı için yeni hash oluşur.

  • Önceden hazırlanmış hash veritabanları işe yaramaz.


Dördüncü Alan

k9CZFAUev7UpCrnQUSnwdQCFVwEnFgvIsDgKjd5eZs7

Bu gerçek hash değeridir.

Buradan parolayı geri elde etmek mümkün değildir.

Çünkü hash fonksiyonları tek yönlüdür.

Password
Hash

Ancak

Hash
Password
X

matematiksel olarak mümkün değildir; yalnızca tahmine dayalı (brute-force, sözlük veya hibrit) saldırılarla eşleşme aranabilir.


Salt ve Hash Birlikte Nasıl Kullanılır?

Giriş sırasında sistem şu işlemleri yapar:

Kullanıcı
Parola girer
Shadow dosyasındaki Salt okunur
Girilen parola + Salt
Yescrypt
Yeni Hash
Shadow dosyasındaki Hash
Karşılaştırılır

Hash aynıysa giriş başarılı olur.


Neden Şifre Değil de Hash Saklanır?

Çünkü şifreleme (encryption)

Şifre
Anahtar
Düz metin

şeklinde geri çözülebilir.

Hash ise

Parola
Hash
Geri dönüş yok

şeklindedir.

Dolayısıyla Linux, kullanıcı parolalarını şifrelemez; parola hash'lerini saklar.


Shadow Dosyasındaki Diğer Alanlar

20599

Parolanın en son değiştirildiği günü ifade eder.

Referans tarihi:

1 Ocak 1970

Unix Epoch başlangıcıdır.

20599 gün sonrasına karşılık gelir.


0

Minimum parola yaşıdır.

0

ise kullanıcı parolasını hemen değiştirebilir.


99999

Maksimum parola geçerlilik süresidir.

Yaklaşık 273 yıl anlamına gelir.

Birçok masaüstü Linux dağıtımı kullanıcıları sık parola değiştirmeye zorlamaz.


7

Parola süresi dolmadan

7 gün önce

uyarı verileceği anlamına gelir.


Boş alanlar

:::

şu bilgileri temsil eder:

  • Hesabın devre dışı bırakılacağı süre

  • Hesabın son kullanma tarihi

  • Ayrılmış alan


Linux'ta Kullanılan Hash Algoritmalarının Karşılaştırılması

AlgoritmaGüvenlikGPU DirenciBellek KullanımıGüncel Durum
MD5Çok düşükYokÇok düşükKullanılmamalı
SHA-256OrtaDüşükDüşükEski sistemler
SHA-512İyiDüşükDüşükYerini Yescrypt'e bırakıyor
bcryptÇok iyiOrtaOrtaYaygın
scryptÇok iyiYüksekYüksekGüçlü
Argon2idÇok yüksekÇok yüksekÇok yüksekModern uygulamalar için önerilen
YescryptÇok yüksekÇok yüksekÇok yüksekModern Linux dağıtımları için varsayılanlardan biri

Mevcut Algoritmayı Görüntüleme

Sistemde kullanılan parola hash yöntemini öğrenmek için:

grep ENCRYPT_METHOD /etc/login.defs

veya

authselect current

(RHEL tabanlı sistemlerde)

ya da

grep yescrypt /etc/pam.d/*

ile PAM yapılandırması incelenebilir.


OpenSSL ile Hash Üretilebilir mi?

Hayır.

OpenSSL;

openssl passwd

komutuyla bazı parola hash'lerini üretebilir ancak Yescrypt desteği sunmaz. Modern Linux sistemlerinde Yescrypt üretimi genellikle libxcrypt ve ilgili PAM araçları üzerinden gerçekleştirilir.


Hash Oluşturma

Python kullanarak örnek üretim:

import crypt
print(crypt.crypt("Parola123"))

veya

mkpasswd --method=yescrypt

Not: mkpasswd komutu çoğu dağıtımda whois paketinin bir parçasıdır ve Yescrypt desteği sistemdeki libxcrypt sürümüne bağlıdır.


Güvenlik Açısından En İyi Uygulamalar

  • /etc/shadow dosyasının izinleri varsayılan güvenli durumda tutulmalıdır (root tarafından sahiplenilmeli ve yalnızca gerekli erişim verilmelidir).

  • Eski MD5 ve SHA-256 tabanlı parola hash'leri kullanılmamalıdır.

  • Modern dağıtımlarda Yescrypt veya uygun durumlarda Argon2id gibi bellek-zorlayıcı algoritmalar tercih edilmelidir.

  • Uzun ve benzersiz parolalar kullanılmalıdır; güçlü hash algoritmaları zayıf parolaları tek başına güvenli hâle getirmez.

  • Çok faktörlü kimlik doğrulama (MFA) mümkün olduğunda etkinleştirilmelidir.

  • Düzenli güvenlik denetimleriyle zayıf parola politikaları gözden geçirilmelidir.


Sonuç

Linux'ta kullanıcı parolaları doğrudan saklanmaz; bunun yerine /etc/shadow dosyasında tek yönlü hash değerleri tutulur. İncelediğimiz örnekteki $y$ öneki, Kali Linux'un Yescrypt algoritmasını kullandığını göstermektedir. Yescrypt; rastgele salt, ayarlanabilir maliyet parametreleri ve bellek yoğun hesaplama yapısı sayesinde modern CPU, GPU ve özel donanım tabanlı parola kırma girişimlerine karşı güçlü bir direnç sağlar. Bu nedenle güncel Linux dağıtımlarında parola güvenliğinin temel taşlarından biri olarak kabul edilmektedir.

Yescrypt Nedir? Linux'un Modern Parola Hash Algoritmasının Ayrıntılı İncelenmesi

Yescrypt, günümüzde birçok Linux dağıtımında kullanıcı parolalarını güvenli biçimde saklamak için kullanılan bellek-zorlayıcı (memory-hard) bir parola hash algoritmasıdır. Debian 11+, Kali Linux, Fedora, Arch Linux ve diğer birçok modern dağıtımda varsayılan parola hash algoritması olarak kullanılmaktadır.

Yescrypt, yalnızca SHA-512'nin daha yeni bir sürümü değildir. Aslında scrypt algoritmasının geliştirilmiş ve daha güvenli hâle getirilmiş bir devamı olarak tasarlanmıştır. Özellikle GPU, FPGA ve ASIC tabanlı parola kırma saldırılarına karşı yüksek direnç sağlamak amacıyla geliştirilmiştir.


Yescrypt Neden Geliştirildi?

Uzun yıllar Linux sistemlerinde parola hash algoritması olarak SHA-512 kullanıldı.

Parola
SHA-512
Hash

Ancak SHA-512'nin önemli bir sorunu vardır.

Modern ekran kartları (GPU'lar) aynı anda milyonlarca SHA-512 hesaplaması yapabilir.

Örneğin;

Normal bir işlemci saniyede

100.000

SHA-512 hesabı yaparken,

modern bir GPU

50.000.000+

SHA-512 hesabı yapabilir.

Bu nedenle saldırganlar büyük parola listelerini çok kısa sürede deneyebilir.


Yescrypt'in Temel Felsefesi

Yescrypt sadece işlemciyi değil,

aynı zamanda RAM'i de yoğun şekilde kullanır.

CPU
+
RAM
+
Binlerce tekrar
+
Karmaşık bellek erişimi

Bu nedenle saldırganın yalnızca güçlü bir ekran kartına sahip olması yeterli değildir.

Yeterli miktarda hızlı belleğe de ihtiyaç duyar.


Bellek-Zorlayıcı (Memory-Hard) Algoritma Nedir?

Bir algoritmanın çalışabilmesi için çok miktarda RAM gerekiyorsa buna memory-hard algoritma denir.

Normal hash fonksiyonları

Parola
CPU
Hash

şeklinde çalışır.

Yescrypt ise

Parola
Salt
RAM oluştur
RAM'i sürekli karıştır
Binlerce kez tekrar et
Hash

şeklinde çalışır.

Bellek erişimi, işlem süresinin önemli bir bölümünü oluşturur.


Yescrypt'in Çalışma Mantığı

1. Parola Alınır

Örneğin

Parola123

2. Salt Eklenir

Örneğin

Salt
zf6N4R3lwuzxHZbhC/Vwj/

oluşturulur.

Birleştirilir.

Parola123
+
zf6N4R3lwuzxHZbhC/Vwj/

3. İlk Hash Oluşturulur

İlk özet değer hesaplanır.

SHA-256
veya
SHA-512

benzeri kriptografik yapı taşları başlangıç aşamasında kullanılabilir; Yescrypt bunları kendi iç işleyişinin bir parçası olarak kullanır.


4. Büyük Bellek Alanı Oluşturulur

Örneğin

64 MB

RAM ayrıldığını düşünelim.

+----------------------+
| |
| RAM BLOĞU |
| |
+----------------------+

Gerçekte kullanılan bellek miktarı yapılandırmaya bağlıdır.


5. Bellek Doldurulur

RAM rastgele görünen verilerle doldurulur.

RAM
A1
F3
99
BC
44
...
...

6. Rastgele Bellek Okumaları

İşte Yescrypt'in en önemli kısmı burasıdır.

Normal algoritmalar

1
2
3
4
5
6

şeklinde sıralı ilerler.

Yescrypt ise

1
97
12
480
21
305
5
700
...

şeklinde rastgele adreslere erişir.

Bu yüzden GPU belleği verimli kullanamaz.


7. Sürekli Karıştırma

Bellekteki bloklar

XOR
Mix
Rotate
Shuffle

işlemlerinden geçirilir.

Bu işlem binlerce kez tekrar edilir.


8. Son Hash

En sonunda

Hash
$y$
...

oluşturulur.


Neden GPU'lar Yavaşlar?

GPU'lar

Matris
Vektör
Paralel işlem

konusunda çok güçlüdür.

Fakat

RAM
Rastgele erişim
RAM
Başka adres
RAM

şeklindeki işlemler GPU mimarisi için verimsizdir.

Bu nedenle GPU beklemek zorunda kalır.


ASIC Cihazları

SHA-256 için özel çip üretmek kolaydır.

Bitcoin ASIC'leri bunun örneğidir.

Yescrypt için ise

CPU
+
Çok büyük RAM
+
Karmaşık adresleme

gerektiğinden ASIC geliştirmek çok daha maliyetlidir.


Salt Kullanımı

Her kullanıcı için farklı Salt üretilir.

Ali
123456
Salt1
Hash1
Ayşe
123456
Salt2
Hash2

Hash değerleri tamamen farklı olur.


Cost Parametresi

Yescrypt'in çalışma maliyeti ayarlanabilir.

Düşük ayar

100 ms

Yüksek ayar

500 ms

Kullanıcı bunu hissetmez.

Fakat saldırgan

1 milyar
parola denemesi

yapacaksa,

işlem süresi katlanarak artar.


Neden Giriş Yaparken Yavaşlık Hissetmeyiz?

Çünkü kullanıcı yalnızca

1

parola dener.

Saldırgan ise

100 milyon
parola

denemeye çalışır.

Aradaki fark burada ortaya çıkar.


Rainbow Table Neden İşe Yaramaz?

Eski sistemlerde

SHA512(password)

hesaplanırdı.

Saldırgan önceden

123456
ABCDEF...

şeklinde dev tablolar oluşturabilirdi.

Salt sayesinde artık

SHA512(password+salt)

hesaplandığı için aynı parola her kullanıcıda farklı hash üretir ve önceden hazırlanmış tablolar pratikte işe yaramaz.


Yescrypt Hash Formatı

Örnek:

$y$j9T$zf6N4R3lwuzxHZbhC/Vwj/$k9CZFAUev7UpCrnQUSnwdQCFVwEnFgvIsDgKjd5eZs7

Bunu parçalarsak:

BölümAçıklama
$y$Yescrypt algoritması
j9TAlgoritmanın maliyet ve çalışma parametrelerini kodlayan bölüm
zf6N4R3lwuzxHZbhC/Vwj/Rastgele üretilmiş salt
k9CZFAUev7UpCrnQUSnwdQCFVwEnFgvIsDgKjd5eZs7Hesaplanan parola hash'i

SHA-512 ile Karşılaştırma

ÖzellikSHA-512Yescrypt
Salt
Ayarlanabilir maliyetSınırlı
Bellek kullanımıÇok düşükYüksek
GPU direnciDüşükÇok yüksek
ASIC direnciDüşükYüksek
Rainbow table korumasıSalt ileSalt ile
Modern Linux varsayılanıEski sistemlerEvet

Yescrypt ile Argon2id Karşılaştırması

Argon2id, Password Hashing Competition sonucunda seçilen modern parola hash algoritmalarından biridir ve özellikle yeni uygulama geliştirme projelerinde yaygın olarak önerilir.

ÖzellikYescryptArgon2id
Linux PAM desteğiÇok yaygınSınırlı
/etc/shadow desteğiYerleşikGenellikle yok
Bellek-zorlayıcı
GPU direnciÇok yüksekÇok yüksek
ASIC direnciYüksekÇok yüksek
Modern web uygulamalarıKullanılabilirGenellikle ilk tercih
Linux sistem hesaplarıYaygın varsayılanNadir

Güvenlik Açısından Sağladığı Avantajlar

  • Her kullanıcı için benzersiz salt kullanır.

  • Ayarlanabilir maliyet parametreleri sayesinde donanım geliştikçe güvenlik seviyesi artırılabilir.

  • Yüksek bellek gereksinimi sayesinde GPU ve ASIC tabanlı saldırıları maliyetli hâle getirir.

  • Rainbow table saldırılarına karşı etkili koruma sağlar.

  • Linux PAM ve libxcrypt altyapısıyla bütünleşik çalışarak modern dağıtımlarda güçlü parola koruması sunar.


Sonuç

Yescrypt, günümüz Linux sistemlerinde parola güvenliği için geliştirilmiş en güçlü algoritmalardan biridir. İşlemci gücünün yanı sıra yoğun bellek kullanımı ve karmaşık bellek erişim desenleri sayesinde büyük ölçekli parola kırma saldırılarını önemli ölçüde yavaşlatır. Bu nedenle Kali Linux, Debian ve birçok modern dağıtım, kullanıcı parolalarını /etc/shadow dosyasında $y$ önekiyle tanınan Yescrypt hash'leri olarak saklamaktadır.

Parola güvenliğinde unutulmaması gereken en önemli nokta ise şudur: En güçlü hash algoritması bile zayıf bir parolayı tamamen güvenli hâle getiremez. Güçlü, uzun ve benzersiz parolalar ile modern hash algoritmalarının birlikte kullanılması en yüksek korumayı sağlar.



Linux ve Unix tabanlı sistemlerde kullanıcı parolaları hiçbir zaman düz metin (cleartext) olarak saklanmaz. Bunun yerine, kriptografik özetleme (hashing) fonksiyonlarından geçirilerek /etc/shadow dosyasına kaydedilirler.


İnceleyeceğimiz örnek satır, modern bir Debian/Kali tabanlı sistemin parola saklama mekanizmasının nasıl çalıştığını tüm detaylarıyla gözler önüne seriyor:


kali:$y$j9T$zf6N4R3lwuzxHZbhC/Vwj/$k9CZFAUev7UpCrnQUSnwdQCFVwEnFgvIsDgKjd5eZs7:20599:0:99999:7:::


Bu satır, ilk bakışta karmaşık bir karakter dizisi gibi görünse de aslında iki nokta üst üste (:) karakterleriyle ayrılmış 9 farklı alandan oluşur.


1. /etc/shadow Satırının Anatomisi

Parolanın şifreleme mantığına geçmeden önce, satırdaki her bir alanın (field) ne anlama geldiğini çözümleyelim:


Alan Sırası

Değer

Açıklama

1. Kullanıcı Adı

kali

Sisteme ait kullanıcı hesabı.

2. Parola Özeti

$y$...

Şifrelenmiş parola (Hash), tuz (Salt) ve algoritma parametreleri. (Detayları aşağıda)

3. Son Değişim

20599

Parolanın son değiştirildiği tarih. (1 Ocak 1970'ten itibaren geçen gün sayısı)

4. Minimum Yaş

0

Parola değiştirilmeden önce geçmesi gereken minimum gün sayısı. (0 = hemen değiştirilebilir)

5. Maksimum Yaş

99999

Parolanın geçerli olduğu maksimum gün sayısı. (Uygulamada "hiçbir zaman süresi dolmaz" demektir)

6. Uyarı Süresi

7

Parola süresi dolmadan kaç gün önce kullanıcıya uyarı verileceği.

7. İnaktif Süre

(boş)

Parola süresi dolduktan sonra hesabın kilitlenmesi için geçecek gün sayısı.

8. Bitiş Tarihi

(boş)

Hesabın tamamen devre dışı bırakılacağı mutlak tarih (Epoch gün sayısı).

9. Rezerve

(boş)

Gelecekteki kullanımlar için ayrılmış, şu an kullanılmayan alan.


2. Parola Özeti (Hash) Alanının Derinlemesine Analizi

Satırın en kritik bölümü olan 2. alan, parolanın kriptografik olarak nasıl korunduğunu gösterir. Bu bölüm kendi içinde $ işaretleriyle ayrılmış dört alt bileşenden oluşur.

Örneğimizdeki hash yapısı:


$y$j9T$zf6N4R3lwuzxHZbhC/Vwj/$k9CZFAUev7UpCrnQUSnwdQCFVwEnFgvIsDgKjd5eZs7


A. Algoritma Kimliği ($y$)

İlk bölüm olan $y$, kullanılan şifreleme algoritmasını (KDF - Key Derivation Function) belirtir.

Geçmişten günümüze Linux sistemlerde kullanılan algoritma kimlikleri şunlardır:

  • $1$: MD5 (Artık güvensiz kabul edilir)

  • $2a$, $2b$, $2y$: bcrypt

  • $5$: SHA-256

  • $6$: SHA-512 (Uzun süre standart olarak kullanıldı)

  • $y$: Yescrypt

Örnekteki $y$, modern Kali Linux, Pardus, Debian 11+ ve Ubuntu 22.04+ gibi sistemlerin varsayılan algoritması olan yescrypt'in kullanıldığını gösterir.


Neden Yescrypt?

SHA-512 gibi eski nesil algoritmalar sadece işlemci (CPU) gücü gerektirir. Modern ekran kartları (GPU) veya özel donanımlar (ASIC'ler) kullanılarak saniyede milyarlarca SHA-512 denemesi yapılabilir. Yescrypt ise bellek-zorlu (memory-hard) bir algoritmadır. Parolayı doğrulamak için sadece işlemci gücü değil, aynı zamanda yüksek miktarda RAM alanı da talep eder. Bu özellik, grafik kartları veya ASIC cihazları kullanılarak yapılan çevrimdışı "Brute Force" (Kaba Kuvvet) ataklarını ekonomik olarak uygulanamaz hale getirir.


B. Maliyet (Cost) Parametreleri (j9T)

Bu blok, yescrypt algoritmasının ne kadar zorlu (ne kadar RAM ve CPU döngüsü) çalıştırılacağını belirten parametrelerin (N, r, p) Base64 ile kodlanmış halidir. Bu değer artırıldıkça parolanın doğrulanması milisaniyeler bazında daha uzun sürer, ancak saldırganların hash'i kırması katlanarak zorlaşır.


C. Tuzlama / Salt (zf6N4R3lwuzxHZbhC/Vwj/)

Tuz (Salt), parola oluşturulurken sistem tarafından rastgele üretilen ve parolanın yanına eklenen 16 karakterlik (kodlanmış) bir dizidir.


Tuz (Salt) Neden Hayatidir?

Eğer iki farklı kullanıcı aynı parolayı (örneğin: "qwerty1234") kullanırsa, tuz değeri olmadan her ikisinin de /etc/shadow dosyasındaki hash değerleri birebir aynı olurdu. Bu durum, önceden hesaplanmış milyarlarca hash listesi içeren Rainbow Table (Gökkuşağı Tablosu) saldırılarına kapı aralar. "Tuz", her kullanıcı için rastgele üretildiği için aynı parola girilse dahi ortaya çıkan sonuç tamamen benzersiz olur.


D. Nihai Şifreli Metin / Hash (k9CZFAUev7UpCrnQUSnwdQCFVwEnFgvIsDgKjd5eZs7)

Son bölüm, kullanıcının girdiği düz metin parolanın, tuz ile birleştirilip, maliyet parametreleri uygulanarak yescrypt algoritmasından defalarca geçirilmiş nihai Base64 özetidir. Bir kullanıcı sisteme giriş yapmak istediğinde, girdiği parola aynı tuz ve aynı algoritma ile tekrar hesaplanır. Eğer çıkan sonuç bu bölümdeki veriyle eşleşirse, sisteme giriş izni (authentication) verilir.


3. Siber Güvenlik Perspektifinden Çıkarımlar (Blue Team & Red Team)

Bir laboratuvar ortamında veya Capture The Flag (CTF) senaryosunda bu satır ele geçirildiğinde:

  1. Red Team (Saldırgan) Gözüyle: Hedef sistemden okuma yetkisi yükseltilip /etc/shadow dosyası okunduğunda (örneğin bir zafiyet üzerinden), saldırgan bu hash'i kopyalayıp çevrimdışı kırıcı araçlara (Hashcat, John the Ripper) besleyecektir. Ancak $y$ (yescrypt) kullanıldığı için bir sözlük saldırısının (dictionary attack) başarı şansı, SHA-512'ye kıyasla çok daha düşüktür. Hedef parolanın zayıf bir kelime olmaması halinde sistem güvendedir.

  2. Blue Team (Savunmacı) Gözüyle: Sistem yöneticileri için, SIEM günlüklerinde /etc/shadow dosyasına yetkisiz okuma girişimleri kritik bir alarm (alert) olarak yapılandırılmalıdır. Ayrıca sistemlerin kurulum imajları (örneğin FOG/Clonezilla ile dağıtılan laboratuvar makineleri) oluşturulurken, /etc/login.defs dosyasında varsayılan şifreleme algoritmasının ENCRYPT_METHOD YESCRYPT olarak ayarlandığından emin olunmalıdır.

Yescrypt, günümüzde Pardus, Debian, Ubuntu ve Fedora gibi modern Linux dağıtımlarında varsayılan parola özetleme (hashing) algoritması olarak kullanılan, kriptografi dünyasının en güçlü savunma mekanizmalarından biridir.


Özellikle sistem yöneticileri, siber güvenlik uzmanları ve CTF (Capture The Flag) platformu hazırlayanlar için Yescrypt'in çalışma mantığını anlamak, parola güvenliğinin neden artık sadece "karmaşık şifreler seçmekten" ibaret olmadığını kavramak açısından kritiktir.

İşte Yescrypt'in kaputun altındaki çalışma prensipleri ve mimarisi:


1. Neden Yeni Bir Algoritmaya İhtiyaç Duyuldu?

Geçmişte kullanılan MD5, SHA-256 ve SHA-512 gibi algoritmalar İşlemciye Bağlı (CPU-bound) algoritmalardır. Yani bu algoritmaların hesaplanma hızı, işlemcinin matematiksel işlem kapasitesine bağlıdır.

Saldırganlar, ele geçirdikleri /etc/shadow dosyalarını kırmak için normal bilgisayar işlemcileri yerine, binlerce çekirdeğe sahip Ekran Kartlarını (GPU) veya sadece hash kırmak için özel üretilmiş ASIC cihazlarını kullanmaya başladılar. Modern bir ekran kartı kümesi (rig), Hashcat gibi araçlarla saniyede milyarlarca SHA-512 denemesi yapabilir. Bu durum, eski nesil algoritmaları "Kaba Kuvvet" (Brute Force) saldırılarına karşı savunmasız bıraktı.


2. Yescrypt'in Kalbi: "Bellek Zorluğu" (Memory-Hardness)

Yescrypt, Openwall projesinin kurucusu Solar Designer tarafından tasarlanmıştır ve GPU/ASIC tehdidine karşı Bellek Zorluğu (Memory-Hard) kavramını kullanır.


Yescrypt, parolayı doğrularken sadece işlemciden matematiksel bir hesaplama istemez; aynı zamanda sistemin RAM (Rastgele Erişimli Bellek) kaynağına da ağır bir yük bindirir. Çalışma mantığı şu şekildedir:

  1. Algoritma, parolanın başlangıç özetini alır ve RAM'de büyük, rastgele veri blokları oluşturur.

  2. Sonraki adımları hesaplayabilmek için belleğin rastgele noktalarına sürekli okuma-yazma işlemleri yapar.

  3. Eğer sistemde yeterli RAM yoksa veya RAM erişim hızı yavaşsa, işlem süresi inanılmaz derecede uzar.

Saldırganlar için Anlamı: Bir ekran kartının binlerce çekirdeği olabilir, ancak her bir çekirdek için kullanabileceği bağımsız bellek (VRAM) çok kısıtlıdır. Yescrypt her bir parola denemesi için örneğin 4 MB, 16 MB veya daha fazla RAM talep ettiğinde, ekran kartının binlerce çekirdeği aynı anda çalışamaz duruma gelir. Bellek darboğazı (bottleneck) yaşanır ve milyarlarca deneme hızı, saniyede birkaç bin denemeye kadar çakılır.


3. Scrypt Üzerine İnşa Edilen Bir Mimari

Yescrypt sıfırdan yazılmamış, bir başka ünlü bellek-zorlu algoritma olan scrypt üzerine inşa edilmiştir. Ancak scrypt'in bilinen bazı zayıflıklarını kapatır:

  • Önbellek Zamanlama Saldırılarına (Cache-Timing Attacks) Karşı Direnç: Scrypt, donanımın önbellek mimarisini izleyerek bilgi sızdırabilen yan kanal (side-channel) saldırılarına karşı tam korumalı değildi. Yescrypt, rastgele bellek erişim modelini optimize ederek bu sızıntıları engeller.

  • Büyük ROM Desteği (ROM Mixing): Yescrypt'in en eşsiz özelliklerinden biri, parolanın doğrulanması için sadece sisteme değil, harici ve çok büyük bir veri tabanına (örneğin 100 GB'lık bir ROM dosyası) ihtiyaç duyacak şekilde yapılandırılabilmesidir. Eğer bir sunucu hacklenir ve hashler çalınırsa, saldırgan o 100 GB'lık devasa ROM dosyasını da çalmadan hashleri kırmaya başlayamaz. (Not: Standart Linux /etc/shadow dosyalarında genellikle ROM özelliği kullanılmaz, temel bellek zorluğu modu aktiftir).

4. Yapılandırma Parametreleri

Önceki /etc/shadow analizinde gördüğümüz maliyet parametreleri (örneğin j9T bloğu), algoritmanın zorluk derecesini belirleyen değişkenleri içerir. Yescrypt üç temel değişkene dayanır:

  • N (Zaman ve Bellek Maliyeti): İterasyon sayısını ve kullanılacak toplam RAM miktarını belirler. Bu değer ne kadar yüksekse, algoritma o kadar fazla bellek talep eder.

  • r (Blok Boyutu): Bellekteki veri bloklarının boyutunu ayarlar. Alt seviye donanım (CPU önbellekleri) optimizasyonu için kullanılır.

  • p (Paralellik Faktörü): Algoritmanın kaç farklı işlem parçacığına (thread) bölünerek hesaplanacağını belirtir.

Sistem yöneticileri, laboratuvar veya sunucu donanımının gücüne göre /etc/login.defs yapılandırmalarından bu parametreleri artırarak, sistemin normal kullanıcı giriş süresini fark edilmeyecek seviyede tutarken (örn: 0.5 saniye), saldırganların işini imkansız hale getirebilirler.


5. Neden Argon2 Yerine Yescrypt?

Kriptografi dünyasını takip edenler, dünyaca ünlü Parola Özetleme Yarışması'nı (Password Hashing Competition) Argon2 algoritmasının kazandığını bilir. Akla "O halde modern dağıtımlar neden Argon2 yerine Yescrypt kullanıyor?" sorusu gelebilir.


Cevap, geriye dönük uyumluluk ve Linux PAM (Pluggable Authentication Modules) entegrasyonunda yatmaktadır. Yescrypt, scrypt ve geleneksel SHA crypt sistemleriyle daha uyumlu çalışacak şekilde tasarlanmıştır. Ayrıca, NIST (Ulusal Standartlar ve Teknoloji Enstitüsü) onaylı şifreleme modüllerini Linux sistem çekirdeğine entegre ederken Yescrypt'in yapısı işletim sistemi mimarilerine (özellikle Debian ekosistemine) daha pürüzsüz bir geçiş sağlamıştır.

 

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu