Provided by: manpages-tr_2.0.6-2_all 

İSİM
crypt - parola ve veri şifrelemesi
crypt_r - parola ve veri şifrelemesi
crypt_rn - parola ve veri şifrelemesi
crypt_ra - parola ve veri şifrelemesi
crypt_gensalt - parola ve veri şifrelemesi
crypt_gensalt_rn - parola ve veri şifrelemesi
crypt_gensalt_ra - parola ve veri şifrelemesi
BİLDİRİM
#include _XOPEN_SOURCE
#include <unistd.h>
char *crypt (const char *key, const char *setting);
#include _GNU_SOURCE
#include <crypt.h>
char *crypt_r (const char *key, const char *setting, struct crypt_data *data);
#include _QW_SOURCE
#include <crypt.h>
char *crypt_rn (const char *key, const char *setting, void *data, int size);
char *crypt_ra (const char *key, const char *setting, void **data, int *size);
char *crypt_gensalt (const char *prefix, unsigned long count, const char *input, int size);
char *crypt_gensalt_rn (const char *prefix, unsigned long count, const char *input, int size, char
output, int output_size);
char *crypt_gensalt_ra (const char *prefix, unsigned long count, const char *input, int size);
AÇIKLAMA
crypt, crypt_r, crypt_rn ve crypt_ra işlevleri, bir tuz ve muhtemelen diğer değişkenleri de aktarmak için
kullanılan bir dizi desteklenen yöntemden biriyle istendiği şekilde anahtarın kriptografik aş işlevini
hesaplar.
crypt_r, crypt_rn ve crypt_ra işlevleri crypt’ten farklı olarak evrelidir. Bu işlevler sonuçlarını ve
muhtemelen özel verilerini, bir uygulama tarafından kendilerine belirtilen size boyutundaki bir data
alanına ve/veya dinamik olarak ayırdıkları belleğe yerleştirir. Bazı aşlama algoritmaları veri alanını,
çağrılar arasında hesaplanmış ara değerleri önbelleğe almak için kullanabilir. Bu sebeple, uygulamalar
ilk kullanımdan önce veri alanını doğru bir şekilde ilklendirmelidir. crypt_r yalnızca
data->initialized’in sıfırla ilklendirilmesini gerektirir; crypt_rn ve crypt_ra için tüm data alanının
sıfırlarla doldurulması veya crypt_ra durumunda *data’nın NULL olması gerekir. Eğer crypt_ra, talep
edilen aşlama algoritmasını NULL *data veya yeterli olmayan *size ile çağrırırsa gerekli bellek dinamik
olarak realloc(3) ile ayrılır. Bu sebeple crypt_ra, *data NULL olmadığında bir önceki crypt_ra çağrısıyla
veya malloc(3) ailesinden bir çağrıyla ayrılan bir alana gösterici olmalıdır. crypt_ra ile ayrılan
belleğin free(3) ile serbest bırakılması gerekir.
crypt_gensalt, crypt_gensalt_rn, ve crypt_gensalt_ra işlevleri belirtilen prefix öneki (aşlama yöntemini
belirler), yineleme sayısı count (seçilen yöntem destekliyorsa) ve aslında tuz olarak kullanacak en fazla
size baytlık kriptografik değerlerden oluşan input girdisi ile diğer işlevlerde setting olarak
kullanılabilecek bir dizge derler. Eğer yineleme sayısı count 0 ise, düşük bir öntanımlı seçilir.
Rastgele baytlar /dev/urandom’dan elde edilebilir. crypt_gensalt_rn ve crypt_gensalt_ra işlevleri
crypt_gensalt işlevinden farklı olarak evrelidir. crypt_gensalt_rn, sonuçları output_size baytlık output
tamponuna yerleştirir. crypt_gensalt_ra ise, sonuçları için bellekte dinamik olarak yer ayırır. Bu
belleğin free(3) ile serbest bırakılması gerekir.
DÖNÜŞ DEĞERİ
Başarılı bir şekilde tamamlandığında crypt, crypt_r, crypt_rn ve crypt_ra işlevleri, gerçekte kullanılan
setting’i ve aşlama işlevinin yazdırılabilir kodlama değerini içeren bir dizgeye gösterici döndürür.
Dizgenin tamamı, crypt, crypt_r, crypt_rn ve crypt_ra’ya yapılan çağrılarda setting olarak,
crypt_gensalt, crypt_gensalt_rn ve crypt_gensalt_ra’ya yapılan çağrılarda prefix olarak doğrudan
kullanılabilir.
crypt’in hata durumundaki davranışları tam olarak standartlaştırılmamıştır. Bazı gerçeklemeler başarısız
olamaz (süreç ölmediği sürece; bu durumda birşey döndürelemez), diğerleri NULL veya sabit dizge döndürür.
Çoğu gerçeklemeler errno değişkenine atama yapmaz, bazıları yapar. SUSv2, sadece NULL döndürülmesini ve
errno değişkenine atama yapılmasını geçerli bir davranış olarak belirtir ve olası tek bir hatayı
tanımlar: ENOSYS, "işlevsellik bu gerçeklenimde desteklenmiyor". Ne yazık ki, mevcut çoğu uygulama
crypt’in NULL döndürmesini işlemeye hazır değildir. Aşağıdaki açıklama sadece crypt ve crypt_r’in bu
gerçeklemesine ve crypt_rn ile crypt_ra işlevlerine karşılık gelir. Bu davranış, standartlara, mevcut
uygulamalara veya gerçeklenimlere uygun olarak değişebilir.
crypt ve crypt_r yalnızca geçersiz veya desteklenmeyen bir setting dizgesi aktarıldığında başarısız
olabilir (ve dönebilir). Bu durumda farklılığı garanti etmek için uzunluğu 13 karakterden kısa ve
setting’den farklı olan sihirli bir dizgeye gösterici döndürür. Bu davranış hem yeni parolaları
tanımlarken hem de mevcut parola aşlamalarına karşı kimlik doğrulaması yaparken crypt’in başarısız
olmayacağını kabul eden eski uygulamalar için güvenlidir. crypt_rn ve crypt_ra işlevleri hatayı belirtmek
için NULL döndürür. Dört işlevin tümü, hata olduğunda hata kodunu errno’yu atar.
crypt_gensalt, crypt_gensalt_rn ve crypt_gensalt_ra işlevleri, setting için derlenen dizgeye bir
gösterici döndürür veya hata durumunda ise hata errno değişkenine atanıp NULL döndürülür.
HATALAR
EINVAL
crypt, crypt_r, crypt_rn, crypt_ra: setting geçersiz veya bu gerçekleme tarafından desteklenmiyor;
crypt_gensalt, crypt_gensalt_rn, crypt_gensalt_ra: prefix geçersiz veya bu gerçekleme tarafından
desteklenmiyorsa; count, talep edilen prefix için geçersiz ise; input boyutu size, talep edilen önek
prefix ile en küçük geçerli tuz için yeterli değil ise; input NULL ise.
ERANGE
crypt_ra: sağlanan veri alanı boyutu size, talep edilen aşlama algoritması için yeterli değilse.
crypt_gensalt_rn: output_size, derlenen setting dizgesini tutmak için çok küçükse.
ENOMEM
crypt (sadece özgün glibc): (sonraki çağrıların tekrar kullanacağı) çıktı tamponu için bellek
ayrılamazsa;
crypt_ra: *data NULL ise veya *size talep edilen aşlama algoritması için yeterli değilse ve
realloc(3) başarılı olmazsa;
crypt_gensalt_ra: derlenen setting dizgesi için bellek ayrılamazsa.
ENOSYS
crypt (SUSv2): işlevsellik bu gerçeklenimde desteklenmiyorsa;
crypt, crypt_r (sadece glibc 2.0’dan 2.0.1’e kadar): crypt eklentisi derlenmediyse ve setting MD5
temelli algoritmadan başka bir şey istiyorsa.
EOPNOTSUPP
crypt, crypt_r (sadece glibc 2.0.2’den 2.1.3’e kadar): crypt eklentisi derlenmediyse ve setting MD5
temelli algoritmadan başka bir şey istiyorsa.
AŞLAMA YÖNTEMLERİ
Gerçeklenen aşlama yöntemleri, özellikle depolama ve kimlik doğrulama için kullanıcı parolasını işlemeye
yöneliktir. Diğer birçok amaç için en iyi ihtimalle verimsizdir.
Parola aşlamanın, güçlü parolaların yerine geçmediğini anlamak önemlidir. Parola aşlamalarına erişebilen
bir saldırganın, aşlamaya karşı aday parolaları denemesi her zaman mümkündür. Ancak, parola aşlama
yöntemlerinin sahip olabileceği bazı özellikler bu anahtar arama saldırılarını biraz daha zorlaştırır.
Tuz kullanan tüm aşlama yöntemleri aynı anahtar ile birçok aşlama oluşturabilir. Tuzların düzgün
kullanımı bazı saldırıları yenebilir, örneğin :
1. Aday parolaların bir denemede birçok aşlama ile denenebilmesi.
2. Aday parolaların önceden aşlanmış listelerinin kullanılması.
3. Parolalardan birini gerçekten tahmin etmeden iki kullanıcının (veya tek kullanıcıya ait iki hesabın),
aynı mı yoksa farklı parolalara mı sahip olduğunu belirleyebilmek.
Anahtar arama saldırıları, çok sayıda aday parolanın aşlama hesaplamalarına bağlıdır. Bu nedenle, iyi bir
parola aşlama yönteminin hesaplama maliyeti fazla olmalıdır - fakat tabii ki kullanışsız olmayacak kadar
uzun değil.
crypt, crypt_r, crypt_rn ve crypt_ra arayüzlerinde gerçeklenen tüm aş yöntemleri özellikle aday parolanın
arama maliyetini artırmak için temel kriptografik ilkelin birden çok yinelemesini kullanır. Ne yazık ki,
donanım iyileştirmelerinden ötürü, sabit maliyete sahip aşlama yöntemleri zamanla daha az güvenli hale
geldi.
Tuzlara ek olarak, yeni parola aşlama yöntemleri değişken yineleme sayısını kabul ediyor. Bu, uyumluluğu
korurken maliyetleri donanım iyileştirmelerine uyarlamayı mümkün kılar.
Aşağıdaki aşlama yöntemleri açıklanan arayüzlerle gerçeklenebilir.
Geleneksel DES temelli
Bu yöntem, crypt işlevinin neredeyse tüm gerçeklemelerinde desteklenir. Ne yazık ki, birçok sınırlaması
nedeniyle artık yeterli güvenliği sunmuyor. Bu nedenle, parola aşlamalarını başka sistemlere taşımanız
gerekmedikçe, yeni parolalar için kullanılmamalıdır.
önek "" (boş dizge);
^[./0-9A-Za-z]{2} ile eşleşen dizge (bkz: regex(7))
Kodlama sözdizimi
[./0-9A-Za-z]{13}
Azami parola uzunluğu
8 (7 bitlik karakter kullanır)
Etkili anahtar uzunluğu
56 bite kadar
Aşlama boyutu
64 bit
Tuz boyutu
12 bit
Yineleme sayısı
25
Genişletilmiş BSDI biçimi DES temelli
Bu yöntem BSDI üzerinde kullanılır ve David Burren’in FreeSec kütüphanesinin kullanılması nedeniyle en
azından NetBSD, OpenBSD ve FreeBSD üzerinde de mevcuttur.
önek "_"
Kodlama sözdizimi
_[./0-9A-Za-z]{19}
Azami parola uzunluğu
sınırsız (7 bitlik karakter kullanır)
Etkili anahtar uzunluğu
56 bite kadar
Aşlama boyutu
64 bit
Tuz boyutu
24 bit
Yineleme sayısı
1 ila 2**24-1 (tek olmalıdır)
FreeBSD biçimi MD5 temelli
Aslen FreeBSD için geliştirilen Poul-Henning Kamp’ın MD5 temelli parola aşlama yöntemidir. Unix benzeri
çoğu sistemde, Solaris 10 ve üstlerinde desteklenir, resmi glibc’nin bir parçasıdır. Ana götürüsü sabit
yineleme sayısıdır, bu da mevcut donanım için zaten çok düşüktür.
önek "$1$"
Kodlama sözdizimi
\$1\$[^$]{1,8}\$[./0-9A-Za-z]{22}
Azami parola uzunluğu
sınırsız (8-bit karakter kullanır)
Etkili anahtar uzunluğu
sadece aşlama boyutuyla sınırlıdır
Aşlama boyutu
128 bit
Tuz boyutu
6 ila 48 bit
Yineleme sayısı
1000
OpenBSD biçimi Blowfish temelli (bcrypt)
bcrypt, aslen Niels Provos ve David Mazieres tarafından OpenBSD için geliştirilmiştir ve FreeBSD ile
NetBSD’nin yeni sürümlerini, Solaris 10 ve üstlerini, birçok GNU/*/Linux dağıtımında desteklenmektedir.
Fakat resmi glibc’nin parçası değildir.
Hem bcrypt hem de BSDI biçimi DES temelli aşlama yönteminde değişken yineleme sayısı sunulsa da, bcrypt
daha da hızlı donanıma bile ölçeklenebilir, yalnızca parola kırmaya özgü bazı belirli iyileştirmelere
izin vermez, etkin anahtar boyutu sınırlamasına sahip değildir ve parolalar için 8 bitlik karakter
kullanır.
önek "$2b$"
Kodlama sözdizimi
\$2[abxy]\$[0-9]{2}\$[./A-Za-z0-9]{53}
Azami parola uzunluğu
72 (8 bitlik karakter kullanır)
Etkili anahtar boyutu
sadece aşlama boyutuyla sınırlıdır
Aşlama boyutu
184 bit
Tuz boyutu
128 bit
Yineleme sayısı
2**4 ila 2**99 (şu anki gerçeklenimler için 2**31)
bcrypt ile, crypt_gensalt, crypt_gensalt_rn ve crypt_gensalt_ra işlevlerine aktarılan count değişkeni,
asıl yineleme sayısının 2 tabanlı logaritmasıdır.
bcrypt aşlamaları, "$2a$" önekini 1997’den beri kullanıyordu. Ancak, 2011 senesinde crypt_blowfish
paketinde (1.0.4’e kadar olan sürümler dahil) 8 bitlik parola karakterlerinin işlenmesini etkileyen bir
gerçekleme hatası bulundu. Hatayı düzeltmenin yanı sıra, mevcut sistemlere yükseltme yöntemleri sağlamak
için iki yeni önek tanıtıldı: hatayı tamamen yeniden tanıtan "$2x$", 7 ve 8 bitlik karakterlerin doğru
işlenmesini güvenceleyen "$2y$". OpenBSD 5.5, crypt_blowfish’in "$2y$" önekiyle aynı etkiyi gösteren
"$2b$" önekini tanıtmıştır ve mevcut crypt_blowfish’te bunu desteklemektedir. Ne yazık ki, "$2a$"
önekinin 8 bitlik parola karakterleri üzerindeki etkisi sisteme özgü olarak kabul edilmelidir. Yeni
parola aşlamaları üretilirken, "$2b$" ve "$2y$" önekleri kullanılmalıdır. (Bu tür aşlamaların, bu yeni
önekleri desteklemeyen bir sisteme aktarılması gerekirse önceden oluşturulmuş aşlamaların aktarılan
kopyalarındaki önek "$2a$" olarak değiştirilebilir.)
crypt_gensalt, crypt_gensalt_rn ve crypt_gensalt_ra işlevleri, "$2x$" hariç (yeni aşlamalarda
kullanılmamalıdır) "$2b$", "$2y$", ve "$2a$" öneklerini destekler. crypt, crypt_r, crypt_rn, crypt_ra
işlevleri, bu dört öneki de destekler.
TAŞINABİLİRLİK
Bir glibc 2.x sisteminde bu işlevlerden herhangi birini kullanan yazılımların, libcrypt ile ilintilenmesi
gerekir. Bununla birlikte, birçok Unix benzeri işletim sistemi ve GNU C Kitaplığının eski sürümleri,
libc’de crypt işlevini içermektedir. crypt ve crypt_r glibc-2.28’de kaldırılmıştır.
crypt_r, crypt_rn, crypt_ra, crypt_gensalt, crypt_gensalt_rn ve crypt_gensalt_ra işlevleri çok
taşınabilir değildir.
Desteklenen aşlama yöntemleri gerçeklenime bağımlıdır.
ÖZNİTELİKLER
Bu bölümde kullanılan terimlerin açıklamaları attributes(7) sayfasında bulunabilir.
İşlev Öznitelik Değer
crypt, crypt_gensalt Evre Güvenliği ÇEG-hayır yarış:crypt
crypt_r, crypt_rn, crypt_ra, Evre Güvenliği ÇEG-evet
crypt_gensalt_rn,
crypt_gensalt_ra
TARİHÇE
Rotor temelli crypt işlevi Sürüm 6 AT&T UNIX’te göründü. "Geleneksel" DES temelli crypt ilk kez Sürüm 7
AT&T UNIX’te göründü.
crypt işlevi SVID, X/OPEN uyumludur ve BSD 4.3 üzerinde kullanılmaktadır. crypt tarafından döndürülen
dizgelerin uyumlu sistemler arasında taşınabilir olması gerekmez.
crypt_r GNU C Kütüphanesinden kaynaklanır. HP-UX ve MKS Toolkit üzerinde de bir crypt_r içerir fakat
tanım ve anlamsallığı farklıdır.
crypt_gensalt Openwall eklentisidir. Solaris 10 ve üstü de bir crypt_gensalt içerir fakat tanım ve
anlamsallığı farklıdır.
crypt_rn, crypt_ra, crypt_gensalt_rn ve crypt_gensalt_ra işlevleri de Openwall eklentisidir.
HATA AYIKLAMA
crypt ve crypt_gensalt işlevlerinin dönüş değerleri sonraki çağrılar tarafından üzerine yazılan sabit
tamponları gösterir. (Solaris’in son sürümlerinde crypt evreye özgü verileri kullanır ve aslında evre
güvenliklidir.)
Hata durumunda crypt işlevinin diğer gerçeklemelerinden döndürülen dizgeler, salt okunur konumlarda
tutulur veya yalnızca bir kez ilklendirilir, bu da normalde göstericisi crypt işlevinin dönüş değeri olan
tamponu sıfırlarla doldurmaya çalışmayı her zaman emniyetsiz yapar, aksi takdirde güvenlik açısından
tercih edilebilir. Uygulamanın çıktı tamponlarında tam denetime (ve çoğu zaman özel verilerin bir kısmı
üzerinde de) sahip olduğu, crypt_r, crypt_rn veya crypt_ra işlevlerinin kullanılmasıyla bu sorundan
kaçınılabilir. Ne yazık ki bu işlevler, crypt işlevinin istenmeyen bu özelliğine sahip sistemlerde mevcut
değildir.
Evre güvenlikli crypt_r kullanan uygulamalar, crypt_data yapısı için büyük alan (128 KB’den fazla)
ayırmaya ihtiyaç duyar. Her evre, bu yapının ayrı bir örneğine ihtiyaç duyar. crypt_r arayüzü, ikil
uyumluğu bozmadan, büyük miktarda özel veri tutabilen bir aşlama algoritmasının gerçeklenmesini imkansız
kılar. crypt_ra, kullanılan aşlama algoritması için gereken ayırma boyutunun dinamik olarak
arttırılmasına izin verir. Ne yazık ki crypt_ra işlevi, crypt_r işlevine göre daha az taşınabilirdir.
Çok evreli uygulamalar veya evre güvenlikli olması gereken kütüphane işlevleri crypt_gensalt yerine
crypt_gensalt_rn veya crypt_gensalt_ra kullanmalıdır.
İLGİLİ BELGELER
login(1), passwd(1), crypto(3), encrypt(3), free(3),getpass(3), getpwent(3), malloc(3), realloc(3),
shadow(3), passwd(5), shadow(5), regex(7), pam(8)
ÇEVİREN
© 2004 Emin İslam Tatlı
© 2022 Fatih Koçer
Bu çeviri özgür yazılımdır: Yasaların izin verdiği ölçüde HİÇBİR GARANTİ YOKTUR.
Lütfen, çeviri ile ilgili bildirimde bulunmak veya çeviri yapmak için https://github.com/TLBP/manpages-
tr/issues adresinde "New Issue" düğmesine tıklayıp yeni bir konu açınız ve isteğinizi belirtiniz.
crypt_blowfish 1.3 7 Temmuz 2014 CRYPT(3)