OpenPGP Anahtar Denetleyicisi & Paket Ayrıştırıcı

Zırhlı bir OpenPGP anahtarı, imzası ya da iletisi yapıştırın — ya da bir ikili .gpg dosyası yükleyin — ve parmak izini, anahtar kimliğini, kullanıcı kimliklerini, alt anahtarları, imza paketlerini ve ham paket ağacını görün. Tamamen tarayıcınızda; hiçbir şey yüklenmez.
Yalnızca ayrıştırıcı. Bu araç OpenPGP verisini çözer ve görüntüler — imzaları asla kriptografik olarak doğrulamaz, asla şifresini çözmez ve asla parola sormaz. Gerçekten doğrulamak ya da şifre çözmek için kendi anahtarlığınızla GnuPG (gpg --verify, gpg -d) kullanın. Ve her araçta olduğu gibi: gerçek özel anahtarlar bir tarayıcı sekmesinde değil, anahtarlığınızda olmalıdır.
Her zırh türünü kabul eder: PUBLIC KEY BLOCK, PRIVATE KEY BLOCK, MESSAGE, SIGNATURE, ARMORED FILE.
ikili anahtarlık dışa aktarımı / .sig / .gpg — yerel olarak okunur, hiçbir şey yüklenmez
Bu araç neyi denetler — ve bilerek neyi yapmaz
Zırhı çözer (etiket, başlıklar, base64 yükü, CRC-24 aktarım sağlaması), eski ve yeni başlık biçimindeki her paketi ayrıştırır, v4/v5/v6 anahtar paketlerini okur (algoritma, MPI boyutları, oluşturma zamanı), v4 parmak izlerini (SHA-1) ve v6 parmak izlerini (SHA-256) hesaplar, anahtar kimliklerini türetir, kullanıcı kimliklerini, alt anahtarları ve imza alt paketlerini listeler. İmzaları doğrulamaz (bu, tam RFC 9580 §5.2.4 karma-ve-doğrula mekanizmasını ve güvenilir bir anahtarlık gerektirir), şifresini çözmez ve anahtar sunucularından anahtar getirmez. Herhangi bir çıktıyı GnuPG ile çapraz denetleyin: gpg --show-keys file.asc parmak izini ve kullanıcı kimliklerini yazdırır, gpg --list-packets file.asc paket yapısını döker.
Bu sayfadaki örnek anahtarlar — dört Örnek düğmesi, yalnızca bu sayfa için üretilmiş (hiçbir yerde kullanılmamış) gerçek bir RSA-2048 OpenPGP v4 anahtarını yapıştırır. Özel anahtar örneği, ayrıştırıcının gizli MPI düzenini gösterebilmesi için bilerek şifrelenmemiş (S2K kullanımı 0) saklanır; gerçek bir dışa aktarılmış özel anahtar bunun yerine şifresini ve S2K türetmesini gösterirdi.
Öz test
Ayrıştırıcıyı gömülü örnek anahtara, ayrık bir imzaya ve imzalı bir iletiye karşı yeniden çalıştırır: zırh etiketleri, CRC-24 geçişi ve kasıtlı bozulma, paket etiketi dizileri, bağımsız olarak hesaplanmış değerlere karşı v4 parmak izi ve anahtar kimliği, kullanıcı kimlikleri, alt anahtar parmak izleri, gizli anahtar algılama ve negatif testler (çöp girdi ve kesilmiş paketler reddedilmelidir). Hiçbir şey hiçbir yere gönderilmez.
OpenPGP sıfırdan açıklanıyor
Tek cümleyle: OpenPGP, uçtan uca şifreleme ve dijital imzalar için açık bir standarttır (RFC 4880; 2024'te RFC 9580 ile güncellendi); en çok e-postayı güvence altına almak için bilinir — ve her şey genellikle metin dostu bir "zırh" katmanına sarılmış küçük etiketli ikili paketlerle taşınır.
OpenPGP nedir?

PGP ("Pretty Good Privacy"), Phil Zimmermann tarafından 1991'de herkesin iletileri şifrelemek ve imzalamak için kullanabileceği bir program olarak yayımlandı. Tek satıcı sorununu aşmak için ileti biçimi OpenPGP olarak standartlaştırıldı (1998'de RFC 2440, 2007'de RFC 4880, 2024'te RFC 9580). Bugün en yaygın uygulama GnuPG'dir ve aynı paket biçimi imzalı git commit'lerinde, yazılım paketi imzalamada, anahtar sunucularında ve OPENPGPKEY DNS kaydında da görünür.

Model uçtan ucadır: siz ve yazışma kişiniz kişisel bir anahtar çifti üretirsiniz; sizin için şifrelenen her şey yalnızca özel anahtarınızla çözülebilir ve bu anahtar makinenizden asla ayrılmaz. Merkezi bir sertifika otoritesi (TLS gibi) yerine, başkalarının anahtarlarına güven, birbirlerinin anahtarlarını imzalamaktan gelir — "güven ağı". Bu ağı kullanıp kullanmamanız ya da yalnızca parmak izlerini bant dışı (telefon görüşmesi, kartvizit) karşılaştırmanız size kalmıştır; biçimin kendisi ikisini de zorunlu kılmaz.

OpenPGP anahtarı nedir?

Bir OpenPGP "anahtarı" aslında küçük bir paket demetidir: bir birincil anahtar paketi (kimlik çıpanınız, genellikle imzalamaya izinli), bir ya da daha fazla Kullanıcı Kimliği paketi ("Alice <alice@example.com>"), bu kimlikleri birincil anahtara bağlayan öz imzalar ve isteğe bağlı olarak kendi bağlama imzalarına sahip alt anahtarlar — genellikle değerli birincil anahtar çevrimdışı kalabilsin diye ayrı bir şifreleme alt anahtarı. Bu sayfaya yapıştırdığınız tüm zırhlı blok bu demettir.

Parmak izi, birincil anahtar paketinin karmasıdır — v4 anahtarları için SHA-1 (20 bayt), v6 anahtarları için SHA-256 (32 bayt) — yalnızca genel kısım üzerinden hesaplanır. Anahtar kimliği ise bir v4 parmak izinin son 8 baytıdır (v5 için ilk 8). Parmak izleri, anahtarın size giderken kimse tarafından değiştirilmediğinden emin olmak için bant dışı karşılaştırdığınız şeylerdir; anahtar kimlikleri anahtar sunucuları için kısa bir tutamaçtır ve kararlı bir saldırgana karşı çakışmaya dayanıklı değildir.

Algoritma kimliğiAdBir anahtardaki tipik kullanım
1RSAKlasik çok amaçlı; 2048–4096 bit, imzalama ve/veya şifreleme
19ECDSANIST eğrileri (P-256 vb.), imzalama
18ECDHCurve25519/P-256 anahtar anlaşması, şifreleme alt anahtarları
22EdDSAEd25519 imzalama (GnuPG 2.4+'ta modern varsayılan)
25X25519Ed25519 birincil anahtarlarla eşleştirilmiş şifreleme alt anahtarları (v6 anahtarları)

Bir özel anahtar bloğu, genel kısmın ardından gizli sayıları taşır: bunların nasıl korunduğunu söyleyen bir S2K kullanım oktedi (0 = korunmasız, 254/255 = şifreli bir anahtarla parola türetilmiş), sonra gizli MPI'ler ve bir sağlama. Bu sayfa o koruma modunu gösterir ama asla parola sormaz ve gizli malzemenin şifresini çözmeyi denemez.

OpenPGP paketi nedir?

Zırhın altında, her OpenPGP nesnesi bir paketler dizisidir. Her biri bir etiket baytıyla başlar: eski biçim 4 bitlik bir paket türü ve bir uzunluk türünü paketler, yeni biçim (CTB, 6. bit ayarlı) 6 bitlik bir tür ve kısmi parçalardaki veriyi bile tanımlayabilen uzunluk baytlarını kullanır. Yaygın etiketler: 6 = genel anahtar, 5 = gizli anahtar, 14 = alt anahtar, 13 = kullanıcı kimliği, 2 = imza, 4 = tek geçişli imza, 11 = düz veri, 8 = sıkıştırılmış veri, 18 = şifrelenmiş ve MDC korumalı veri. Bu sayfa bulduğu her paket için etiketi, başlık biçimini, uzunluğu ve onaltılı dökümü yazdırır ve bir paket başlığı bozuksa bayt konumuyla hata verir.

İmza paketleri meta verilerini karmalı ve karmasız alt paket alanlarında taşır. Yalnızca karmalı alan imzanın kendisi tarafından kapsanır; karmasız alan (geçmişte yayımcı anahtar kimliği için kullanılmış) aktarım sırasında herkes tarafından serbestçe yeniden yazılabilir, bu yüzden okuyucular bunu asla gerçek değil ipucu olarak ele almalıdır. Bir Kullanıcı Kimliği üzerindeki öz imza, adı anahtara gerçekten bağlayan şeydir; tek başına yapıştırılan bir anahtar paketi kimin sahibi olduğunu hiçbir şekilde kanıtlamaz.

ASCII zırhı metin sarmalayıcıdır: -----BEGIN PGP PUBLIC KEY BLOCK-----, Version: ya da Comment: gibi isteğe bağlı başlıklar, paket akışının base64'ü ve 24 bitlik bir CRC tutan son bir =xxxx satırı. Bu CRC yalnızca aktarım bozulmasını yakalar — bir base64 karakterini çevirin, bu sayfa işaretler — ama bir imza değildir ve yazarlık hakkında hiçbir şey kanıtlamaz.

Yaygın hatalar
  • Parmak izlerini karşılaştırmadan bir anahtara güvenmek. Herkes herhangi bir adla anahtar üretebilir. Zaten güvendiğiniz bir kanal üzerinden (yüz yüze, telefonla) parmak izi karşılaştırması tüm kimlik doğrulama adımıdır.
  • Zırh CRC'sini bir imzayla karıştırmak. "CRC OK" rozeti yalnızca base64'ün yolculuğu sağ atlattığı anlamına gelir, başka bir şey değil. Doğrulama, bu sayfanın bilerek yapmadığı kriptografik bir işlemdir.
  • Anahtar kimliklerini kimlik olarak kullanmak. 64 bitlik anahtar kimlikleri, mütevazı hesaplama gücüne sahip bir saldırgan tarafından sahte üretilebilir ("anahtar kimliği çakışması"); her zaman tam parmak izlerini alıntılayın.
  • Gerçek özel anahtarları web sayfalarına yapıştırmak. Bunun gibi yerel, yükleme yapmayan bir sayfa bile edinmek istemediğiniz bir alışkanlıktır. Buradaki örnekler demo için üretilmiş, tek kullanımlık anahtarlardır.
  • "PGP MESSAGE" şifreli anlamına geliyor sanmak. Zırh etiketi içerik hakkında hiçbir şey söylemez — bu sayfadaki örnek ileti imzalı ama düz metindir; şifrelenmiş ile düz veriyi gerçekten ayıran, paket etiketi 18 ile 11'dir.
  • v3 anahtarlarını içe aktarmak. Sürüm 3 anahtarları (1996 öncesi tasarım, zayıf 16 bitlik anahtar kimlikleri) 2014'ten beri kullanımdan kaldırılmıştır; bu denetleyici bilerek bunları reddeder.
SSS

Bu imzaları doğrular mı? Hayır. Ayrıştırır ve görüntüler. İmza doğrulaması, tam RFC 9580 karma-sonlandırıcı yapısını, imzalayanın ortak anahtarını ve o anahtara güvenip güvenmeyeceğinize dair bir karar gerektirir — GnuPG ya da bir OpenPGP kütüphanesinin işi.

Bu openpgp.js'ten nasıl farklı? openpgp.js uygulamanıza gömdüğünüz tam bir uygulamadır (şifrele, şifresini çöz, imzala, doğrula); bu sayfa ise tarayıcıda OpenPGP yapılarını okumak ve denetlemek için bağımlılıksız bir denetleyicidir.

GnuPG dışa aktarmamı okuyabilir mi? Evet — v4, v5 ve v6 anahtarları, ayrık imzalar ve iletiler. Sürüm 3 anahtarları bir notla reddedilir (2014'ten beri kullanımdan kaldırıldı).

Neden onaltılı giriş modu var? Ham OpenPGP verisi ikilidir; bir anahtarlığın ya da bir .gpg dosyasının onaltılı dökümüne sahipseniz, onaltılıyı yapıştırın ve ayrıştırıcı bunu tam olarak çözülmüş baytlar gibi ele alır.

Bir şey yükleniyor mu? Hayır. Ayrıştırma, parmak izi alma ve rapor üretimi hepsi bu sekmede gerçekleşir; sayfa tamamen tarayıcınızda çalışır.