Aracılığıyla paylaş


Anahtar Depolama ve Erişim

Anahtar Depolama Mimarisi

CNG, genel veya özel anahtar şifrelemesi gibi şifreleme özelliklerini kullanan uygulamalar oluşturmanın mevcut ve gelecekteki taleplerine ve anahtar malzemenin depolanmasının taleplerine uyum sağlayan özel anahtar depolama için bir model sağlar. Anahtar depolama yönlendiricisi bu modelin merkezi işlevidir ve Ncrypt.dlliçinde uygulanır. Uygulama, anahtar depolama yönlendiricisi aracılığıyla sistemdeki anahtar depolama sağlayıcılarına (KSP) erişir ve bu yönlendirici hem uygulama hem de depolama sağlayıcısının kendisinden anahtar yalıtımı gibi ayrıntıları gizler. Aşağıdaki çizimde CNG anahtar yalıtım mimarisinin tasarımı ve işlevi gösterilmektedir.

cng anahtar depolama sağlayıcısı

Ortak ölçütler (CC) gereksinimlerine uymak için, uzun ömürlü anahtarların uygulama sürecinde hiçbir zaman mevcut olmayacak şekilde yalıtılması gerekir. CNG şu anda Windows Server 2008 ve Windows Vista ile birlikte gelen ve varsayılan olarak yüklenen Microsoft yazılımı KSP'sini kullanarak asimetrik özel anahtarların depolanmasını desteklemektedir.

Windows Server 2008 ve Windows Vista'da anahtar yalıtımı varsayılan olarak etkindir. Anahtar yalıtımı özelliği, bunlardan önceki platformlarda kullanılamaz. Ayrıca, üçüncü taraf KSP'ler anahtar yalıtım servisine (LSA işlemi) yüklenmez. Anahtar yalıtım hizmetine yalnızca Microsoft KSP yüklenir.

LSA işlemi, performansı en üst düzeye çıkarmak için anahtar yalıtım işlemi olarak kullanılır. Özel anahtarlara tüm erişim, özel anahtarları yönetmek ve kullanmak için kapsamlı bir işlev kümesi sunan anahtar depolama yönlendiricisi üzerinden geçer.

CNG, depolanan anahtarın genel bölümünü özel kısımdan ayrı olarak depolar. Anahtar çiftinin ortak bölümü de anahtar yalıtım hizmetinde tutulur ve yerel uzak yordam çağrısı (LRPC) kullanılarak erişilir. Anahtar depolama yönlendiricisi, anahtar yalıtım işlemine çağrı yaparken LRPC kullanır. Özel anahtarlara tüm erişim, özel anahtar yönlendiriciden geçer ve CNG tarafından denetlenür.

Yukarıda açıklandığı gibi, çok çeşitli donanım depolama cihazları desteklenebilir. Her durumda, tüm bu depolama cihazlarının arabirimi aynıdır. Çeşitli özel anahtar işlemleri gerçekleştirmeye yönelik işlevlerin yanı sıra anahtar depolama ve yönetimle ilgili işlevleri içerir.

CNG, şifreleme anahtarları oluşturmak, depolamak ve almak için kullanılan bir dizi API sağlar. Bu API'lerin listesi için bkz.CNG Anahtar Depolama İşlevleri .

Anahtar Türleri

CNG aşağıdaki anahtar türlerini destekler:

  • Diffie-Hellman açık ve özel anahtarlar.
  • Dijital İmza Algoritması (DSA, FIPS 186-2) ortak ve özel anahtarlar.
  • RSA (PKCS #1) ortak ve özel anahtarlar.
  • Çeşitli eski (CryptoAPI) genel ve özel anahtarlar.
  • Eliptik Eğri Şifreleme ortak ve özel anahtarlar.

Desteklenen Algoritmalar

CNG aşağıdaki anahtar algoritmalarını destekler.

Algoritma Anahtar/karma uzunluğu (bit)
RSA 64 bitlik artışlarla 512 ile 16384
DH 64 bitlik artışlarla 512 ile 16384
DSA 512 ile 1024 arasında, 64 bitlik artışlarla
ECDSA P-256, P-384, P-521 (NIST Eğrileri)
ECDH P-256, P-384, P-521 (NIST Eğrileri)
MD2 128
MD4 128
MD5 128
SHA-1 160
SHA-256 256
SHA-384 384
SHA-512 512

Anahtar Dizinler ve Dosyalar

Microsoft'un eski CryptoAPI CSP'leri özel anahtarları aşağıdaki dizinlerde depolar.

Anahtar türü Dizin
Kullanıcı Gizliliği %APPDATA%\Microsoft\Crypto\RSA\Kullanıcı SID\
%APPDATA%\Microsoft\Crypto\DSS\Kullanıcı SID\
Yerel sistem özel %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\S-1-5-18\
%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\DSS\S-1-5-18\
Yerel özel hizmet %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\S-1-5-19\
%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\DSS\S-1-5-19\
Özel ağ hizmeti %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\S-1-5-20\
%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\DSS\S-1-5-20\
Paylaşılan özel %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys
%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\DSS\MachineKeys

CNG, özel anahtarları aşağıdaki dizinlerde depolar.

Anahtar türü Dizin
Kullanıcıya Özel %APPDATA%\Microsoft\Crypto\Keys
Yerel sistem özel %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\SystemKeys
Özel yerel servis %WINDIR%\ServiceProfiles\LocalService
Özel ağ hizmeti %WINDIR%\ServiceProfiles\NetworkService
Özel Olarak Paylaşılan %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\Keys

CryptoAPI ve CNG anahtar kapsayıcıları arasındaki farklardan bazıları aşağıdadır.

  • CNG, anahtar dosyaları için Rsaenh.dll ve Dssenh.dll gibi eski CSP'ler tarafından oluşturulan anahtar dosyalarından farklı dosya adları kullanır. Eski anahtar dosyaları da .key uzantısına sahiptir, ancak CNG anahtar dosyaları .key uzantısına sahip değildir.
  • CNG, Unicode anahtar kapsayıcı adlarını tam olarak destekler; CNG, Unicode kapsayıcı adının karmasını, CryptoAPI ise ANSI kapsayıcı adının karmasını kullanır.
  • CNG, RSA anahtar çiftleri açısından daha esnektir. Örneğin, CNG, uzunluğu 32 bitten büyük olan genel üsleri destekler ve p ve q'nun farklı uzunluklarda olduğu anahtarları da destekler.
  • CryptoAPI'de anahtar kapsayıcı dosyası, adı kullanıcının SID'sinin metin eşdeğeri olan bir dizinde depolanır. Artık CNG'de bu durum söz konusu değildir. Bu, tüm özel anahtarlarını kaybetmeden kullanıcıları bir etki alanından diğerine taşımanın zorluğunu ortadan kaldırır.
  • CNG KSP ve anahtar adları MAX_PATH Unicode karakterlerle sınırlıdır. CryptoAPI CSP ve anahtar adları MAX_PATH ANSI karakterleriyle sınırlıdır.
  • CNG, kullanıcı tanımlı anahtar özellikleri özelliği sunar. Kullanıcılar özel özellikleri oluşturabilir ve anahtarlarla ilişkilendirebilir ve kalıcı anahtarlarla depolayabilir.

Bir anahtarı kalıcı hale geldiğinde CNG iki dosya oluşturabilir. İlk dosya, yeni CNG biçiminde özel anahtarı içerir ve her zaman oluşturulur. Bu dosya eski CryptoAPI CSP'leri tarafından kullanılamaz. İkinci dosya, eski CryptoAPI anahtar kapsayıcısında aynı özel anahtarı içerir. İkinci dosya, Rsaenh.dlltarafından kullanılan biçime ve konuma uygundur. İkinci dosyanın oluşturulması, yalnızca bir RSA anahtarını sonlandırmak için NCryptFinalizeKey işlevi çağrıldığında NCRYPT_WRITE_KEY_TO_LEGACY_STORE_FLAG bayrağı belirtildiğinde gerçekleşir. Bu özellik DSA ve DH anahtarları için desteklenmez.

Bir uygulama mevcut kalıcı anahtarı açmaya çalıştığında, CNG önce yerel CNG dosyasını açmayı dener. Bu dosya yoksa, CNG eski CryptoAPI anahtar kapsayıcısında eşleşen bir anahtar bulmaya çalışır.

Windows Kullanıcı Durumu Geçiş Aracı (USMT) ile bir kaynak makinedeki CryptoAPI anahtarlarını hedef makineye taşıdığınızda veya kopyaladığınızda, CNG hedef makinedeki anahtarlara erişemez. Bu tür geçirilen anahtarlara erişmek için CryptoAPI kullanmanız gerekir.

CNG Anahtar Depolama İşlevleri

anahtar depolama özellik tanımlayıcıları

NCryptFinalizeKey