Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az erős névazonosítás egy identitáskezelési mechanizmus a .NET-keretrendszerben a szerelvények azonosítására. Ez egy nyilvános kulcsú digitális aláírás, amely általában a kezdeményezőtől (aláírótól) a címzettnek (hitelesítőnek) átadott adatok integritásának ellenőrzésére szolgál. Ez az aláírás egy szerelvény egyedi identitásaként használatos, és biztosítja, hogy a szerelvényre mutató hivatkozások ne legyenek egyértelműek. Az összeállítást a buildelési folyamat részeként aláírják, majd betöltésekor ellenőrzik.
Az erős névaláírások segítenek megakadályozni, hogy a rosszindulatú felek illetéktelenek módosítják a szerelvényt, majd újra aláírják a szerelvényt az eredeti aláíró kulcsával. Az erős névkulcsok azonban nem tartalmaznak megbízható információt a közzétevőről, és nem tartalmaznak tanúsítványhierarchiát sem. Az erős névaláírás nem garantálja a szerelvényt aláíró személy megbízhatóságát, és nem jelzi, hogy az adott személy a kulcs jogos tulajdonosa volt-e; csak azt jelzi, hogy a kulcs tulajdonosa aláírta a szerelvényt. Ezért nem javasoljuk, hogy erős névaláírást használjon biztonsági érvényesítőként a harmadik féltől származó kódok megbízhatóságához. A kód hitelesítésének ajánlott módja a Microsoft Authenticode.
A hagyományos erős nevek korlátozásai
A .NET-keretrendszer 4.5 előtti verziókban használt erős elnevezési technológia a következő hiányosságokkal rendelkezik:
A kulcsok folyamatosan támadás alatt állnak, és a továbbfejlesztett technikák és hardverek megkönnyítik a titkos kulcsok nyilvános kulcsból való következtetését. A támadások elleni védelemhez nagyobb kulcsok szükségesek. A .NET-keretrendszer .NET-keretrendszer 4.5 előtti verziói bármilyen méretkulccsal aláírhatók (az alapértelmezett méret 1024 bit), de az új kulccsal rendelkező szerelvény aláírása megszakítja az összes bináris fájlt, amely a szerelvény régebbi identitására hivatkozik. Ezért rendkívül nehéz frissíteni az aláírókulcs méretét, ha fenn szeretné tartani a kompatibilitást.
Az erős névaláírás csak az SHA-1 algoritmust támogatja. Az SHA-1 nem megfelelő a biztonságos kivonatolási alkalmazásokhoz. Ezért erősebb algoritmusra (SHA-256 vagy újabb) van szükség. Lehetséges, hogy az SHA-1 elveszíti a FIPS-kompatibilis állapotát, ami problémákat okozna azoknak, akik csak FIPS-kompatibilis szoftvereket és algoritmusokat használnak.
A továbbfejlesztett erős nevek előnyei
A továbbfejlesztett erős nevek fő előnye a már meglévő erős névvel való kompatibilitás, valamint annak a lehetősége, hogy azt állítják, hogy az egyik identitás egyenértékű a másikkal:
A már meglévő aláírt összetevőkkel rendelkező fejlesztők frissíthetik identitásaikat az SHA-2 algoritmusokra, miközben fenntartják a kompatibilitást azon összetevőkkel, amelyek a régi identitásokra hivatkoznak.
Azok a fejlesztők, akik új assembly-ket hoznak létre, és nem foglalkoznak a már meglévő erős nevű aláírásokkal, használhatják a biztonságosabb SHA-2 algoritmusokat, és a megszokott módon aláírhatják az assembly-ket.
Továbbfejlesztett erős nevek használata
Az erős névkulcsok egy aláírási kulcsból és egy identitáskulcsból állnak. Az összeállítást az aláírási kulccsal írják alá, és az identitáskulccsal azonosítják. A .NET-keretrendszer 4.5-ös verziója előtt ez a két kulcs azonos volt. A .NET-keretrendszer 4.5-ös verziójától kezdve az identitáskulcs ugyanaz marad, mint a korábbi .NET-keretrendszer-verziókban, de az aláírási kulcs erősebb kivonatoló algoritmussal bővül. Emellett az aláírási kulcs aláírása az identitáskulccsal történik, hogy ellenaláírást hozzon létre.
Az AssemblySignatureKeyAttribute attribútum lehetővé teszi, hogy a szerelvény metaadatai a már meglévő nyilvános kulcsot használják a szerelvényidentitáshoz, ami lehetővé teszi a régi szerelvényhivatkozások működését. Az AssemblySignatureKeyAttribute attribútum az ellenjegyzéssel biztosítja, hogy az új aláírási kulcs tulajdonosa is a régi identitáskulcs tulajdonosa legyen.
Bejelentkezés SHA-2-vel kulcsmigrálás nélkül
Futtassa a következő parancsokat a parancssorban egy szerelvény aláírásához anélkül, hogy egy erős névaláírás átváltoztatására kerülne sor.
Hozza létre az új identitáskulcsot (ha szükséges).
sn -k IdentityKey.snkBontsa ki az identitás nyilvános kulcsát, és adja meg, hogy sha-2 algoritmust kell használni a kulccsal való aláíráskor.
sn -p IdentityKey.snk IdentityPubKey.snk sha256Késleltetheti a szerelvény aláírását az identitás nyilvános kulcsfájljával.
csc MyAssembly.cs /keyfile:IdentityPubKey.snk /delaySign+Írja alá újra az összeállítást a teljes azonosító kulcspárral.
sn -Ra MyAssembly.exe IdentityKey.snk
Bejelentkezés SHA-2-vel, kulcsmigrálással
Futtassa a következő parancsokat egy parancssorból egy szerelvény migrált erős névaaírással való aláírásához.
Identitás- és aláíráskulcs-pár létrehozása (ha szükséges).
sn -k IdentityKey.snk sn -k SignatureKey.snkBontsa ki az aláírás nyilvános kulcsát, és adja meg, hogy sha-2 algoritmust kell használni a kulccsal való aláíráskor.
sn -p SignatureKey.snk SignaturePubKey.snk sha256Bontsa ki az identitás nyilvános kulcsát, amely meghatározza az ellenaláírást létrehozó kivonatoló algoritmust.
sn -p IdentityKey.snk IdentityPubKey.snkHozza létre egy attribútum paramétereit AssemblySignatureKeyAttribute , és csatolja az attribútumot a szerelvényhez.
sn -a IdentityPubKey.snk IdentityKey.snk SignaturePubKey.snkEz az alábbihoz hasonló kimenetet eredményez.
Information for key migration attribute. (System.Reflection.AssemblySignatureKeyAttribute): publicKey= 002400000c80000094000000060200000024000052534131000400000100010005a3a81ac0a519 d96244a9c589fc147c7d403e40ccf184fc290bdd06c7339389a76b738e255a2bce1d56c3e7e936 e4fc87d45adc82ca94c716b50a65d39d373eea033919a613e4341c66863cb2dc622bcb541762b4 3893434d219d1c43f07e9c83fada2aed400b9f6e44ff05e3ecde6c2827830b8f43f7ac8e3270a3 4d153cdd counterSignature= e3cf7c211678c4d1a7b8fb20276c894ab74c29f0b5a34de4d61e63d4a997222f78cdcbfe4c91eb e1ddf9f3505a32edcb2a76f34df0450c4f61e376b70fa3cdeb7374b1b8e2078b121e2ee6e8c6a8 ed661cc35621b4af53ac29c9e41738f199a81240e8fd478c887d1a30729d34e954a97cddce66e3 ae5fec2c682e57b7442738Ez a kimenet ezután AssemblySignatureKeyAttribute-lá alakítható.
[assembly:System.Reflection.AssemblySignatureKeyAttribute( "002400000c80000094000000060200000024000052534131000400000100010005a3a81ac0a519d96244a9c589fc147c7d403e40ccf184fc290bdd06c7339389a76b738e255a2bce1d56c3e7e936e4fc87d45adc82ca94c716b50a65d39d373eea033919a613e4341c66863cb2dc622bcb541762b43893434d219d1c43f07e9c83fada2aed400b9f6e44ff05e3ecde6c2827830b8f43f7ac8e3270a34d153cdd", "e3cf7c211678c4d1a7b8fb20276c894ab74c29f0b5a34de4d61e63d4a997222f78cdcbfe4c91ebe1ddf9f3505a32edcb2a76f34df0450c4f61e376b70fa3cdeb7374b1b8e2078b121e2ee6e8c6a8ed661cc35621b4af53ac29c9e41738f199a81240e8fd478c887d1a30729d34e954a97cddce66e3ae5fec2c682e57b7442738" )]Az assemblyt haladék aláírással látja el az identitáshoz tartozó nyilvános kulccsal.
csc MyAssembly.cs /keyfile:IdentityPubKey.snk /delaySign+Írja alá teljesen az összeállítást a kulcspárral.
sn -Ra MyAssembly.exe SignatureKey.snk