PGP şifrelemesi
PGP, kriptografik gizlilik ve kimlik doğrulama olanağı sunan standart bir şifreleme, şifre çözme ve imzalama algoritması grubudur.
Yükleri şifrelemek için PGP kullanırken iş ortakları şunları desteklemelidir:
- Birden fazla PGP anahtarıyla yük şifreleme ve şifre çözme.
- Yükleri birden fazla PGP anahtarıyla imzalama.
- Birden çok imzaya sahip bir yükü doğrulama. Bunlardan herhangi biri Google tarafından sağlanan anahtarla imzalanabilir.
- Web güvenli base64 kodlu yükleri çözme.
Google'a sağlanan PGP ortak anahtarlarının şifreleme için kullanılan bir alt anahtarı olmalıdır. Alt anahtar, ana anahtardan bağımsız rotasyona olanak tanır. Ana anahtar, kimlik doğrulama için kullanılır. Özel anahtarlar, en fazla iki yıl kullanım süresiyle bir yıl içinde süresi dolan 2.048 (veya daha büyük) RSA anahtarları olmalıdır.
Geliştirmeye başlamadan önce PGP anahtarlarını Google ile değiştirmeniz gerekir. Bu adımda bir PGP ortak-özel anahtar çifti oluşturur, ortak anahtarı Google'a sağlar ve Google'dan geri bir ortak anahtar alırsınız. Geliştirme sırasında yalnızca üretim dışında geliştirme ve test için kullanılan korumalı alan anahtarlarını değiştirmeniz gerekir. Üretim testi ve lansmanından önce yeni bir üretim anahtarı değişimi gerçekleştirmeniz gerekir.
Yeni PGP anahtarı oluşturma
Sistem yolunuzda bir GPG ikili programı olduğunu varsayarsak yeni bir anahtar çifti oluşturmak için aşağıdaki POSIX komutunu kullanabilirsiniz.
$ gpg --full-generate-key
İstendiğinde en az 2.048 bit entropi içeren ve süresi 1-2 yıl olan bir RSA anahtarı seçin. Bu komut hem bir ana anahtar (S 'igning ve'C 'ertificate oluşturma için SC olarak etiketlenir) hem de bir alt anahtar ("E 'ncryption" için E olarak etiketlenir) oluşturmalıdır.
PGP Kitaplık Yapılandırması
Yük Gönderme
- İmzalarken özet algoritması olarak
SHA384
kullanılmalıdır;SHA1
veyaMD5
kullanmayın - Şifreleme yaparken simetrik şifreleme algoritması olarak
AES256
kullanılmalıdır;CAST5
veyaIDEA
kullanmayın - Mesajları şifrelerken veya imzalarken, karşılık gelen amaca sahip alt anahtarı seçtiğinizden emin olun. İmzalamak için
CAN_SIGN
anahtarını, şifrelemek için deENCRYPT_COMMS
/ENCRYPT_STORAGE
anahtarını kullanın.
Yükleri Alma
- Bir yükü doğrularken kitaplığınızın
SHA384
gibi modern karma algoritmalarını desteklediğinden emin olun. Google, 14 Mayıs 2023 tarihinden itibaren bu adı tüm yeni anahtarlarda kullanmaya başlayacak. - Bir yükün şifresini çözerken kitaplığınızın
AES256
gibi modern simetrik şifreleme algoritmalarını desteklediğinden emin olun. Google, 14 Mayıs 2023'ten itibaren bu yöntemi tüm yeni anahtarlarda kullanmaya başlayacak.
GPG Yük Şifreleme Örneği
Aşağıdaki komut, GPG kullanırken güvenli seçeneklerin nasıl belirlendiğine dair bir örnektir. Bu işlemin, kullanıcıların özel anahtarlara veya hassas giriş dosyalarına erişimi olmadığı güvenilir bir ortamda yapılması beklenir.
gpg --output signed-and-encrypted.pgp \
--sign --digest-algo SHA384 \
--encrypt --cipher-algo AES256 \
--armor \
--recipient {key_id} \
input.txt
GPG, gerçekleştirmesini istediğiniz her işlem için paketten doğru anahtarı otomatik olarak seçer.
JWS imzalamasıyla JWE şifrelemesi
JSON Web Şifreleme (JWE), rfc7516 tarafından uygulama düzeyinde içerik şifrelemek için tanımlanan bir standarttır. JSON Web İmzası (JWS), rfc7515 tarafından uygulama düzeyinde içerik imzalamak için tanımlanan bir standarttır.
İstekler ve yanıtlar, "Kompakt Serileştirme" seçeneği ile asimetrik (ortak anahtar) şifrelemesi kullanılarak şifrelenmiş JWE jetonları olur. JWE jetonu, JWS jetonu olarak imzalanmış yükü içerir. JWS ayrıca asimetrik anahtarlar da kullanır. Bunlar imzalama için özel anahtar, doğrulama için ise ortak anahtardır.
Bir yük gönderirken öncelikle yükü imzalayın ve ardından şifreleyin. Bir yük alırken önce bunun şifresini çözün, ardından imzayı doğrulayın.
İş Ortakları, JWE'yi kullanırken aşağıdaki seçenekleri desteklemelidir:
- Kompakt Serileştirme.
- Birden fazla JWE anahtarından birinden yük şifresini çözme.
- Anahtar yönetimi için RSA-OAEP, RSA-OAEP-256 veya ECDH-ES algoritması.
alg
üstbilgisine doldurulur (rfc7518 bölüm 4.1).
- İçerik şifreleme için A256GCM, A128GCM, A128CBC-HS256 veya A256CBC-HS512 algoritması.
enc
başlığı içine doldurulur.
kid
üstbilgisi.- JWE şifrelemesi kullanan mesaj yükleri application/jose; charset=utf-8 içerik türünü kullanmalıdır.
İş Ortakları, JWS kullanırken aşağıdaki seçenekleri desteklemelidir:
- Kompakt Serileştirme.
- Birden fazla JWS anahtarının birinden yük doğrulanıyor.
- İmza oluşturmak için HS256, HS384, HS512, RS256, RS384, RS512, ES256, PS256, PS384 veya PS512 algoritması.
alg
üstbilgisine doldurulur (rfc 7518 bölüm 3.1).
kid
üstbilgisini kullanın.
JWE/JWS dizeleri UTF-8 dizeleri olarak kodlanır ve yükleri rastgele baytlar olabilir.
Özel anahtarlar, maksimum iki yıl kullanım ömrüne sahip bir yıl içinde süresi dolan RSA/ECDH-ES anahtarları olmalıdır. Tüm özel anahtar kimlikleri her zaman iş ortağının sunucusunda kalmalı ve buna göre tüm imza değerleri iş ortağının sunucusunda hesaplanmalıdır.
Geliştirmeye başlamadan önce JWE ve JWS anahtarlarını Google ile değiştirmeniz gerekir. Anahtarlar, rfc7517'de tanımlandığı gibi JWK biçiminde değiştirilmelidir. Bu adımda bir herkese açık-özel anahtar çifti oluşturur, ortak anahtarı Google'a sağlar ve Google'dan bir ortak anahtar alırsınız. Geliştirme sırasında yalnızca üretim dışında geliştirme ve test için kullanılan korumalı alan anahtarlarını değiştirmeniz gerekir. Üretim testi ve lansmanından önce yeni bir üretim anahtarı değişimi gerçekleştirmeniz gerekir.