Uygulama katmanı şifrelemesi

. Standart Payments API'leri, uygulama katmanı için PGP veya JWE'yi destekler bahsedeceğim.

PGP şifreleme

PGP, şifreleme ve imzalama algoritmalarından oluşan standart bir kümedir. kriptografik gizlilik ve kimlik doğrulama sağlar.

Yükleri şifrelemek için PGP kullanırken iş ortakları şunları desteklemelidir:

  • Birden fazla PGP anahtarıyla yükleri şifreleme ve şifrelerini çözme.
  • Yükleri birden fazla PGP anahtarıyla imzalama.
  • Bir yükün birden çok imzayla doğrulanması. Bu imzalardan biri Google tarafından sağlanan anahtarla imzalanması gerekir.
  • Web güvenli base64 kodlu yükün şifresini çözme.

Google'a sağlanan PGP genel anahtarlarında, şifreleme için kullanılan bir alt anahtar olmalıdır. İlgili içeriği oluşturmak için kullanılan alt anahtar, ana anahtardan bağımsız rotasyona olanak tanır. Ana anahtar kimlik doğrulama amacıyla kullanılır. Özel anahtarlar 2048 (veya üzeri) olmalıdır bir yıl içinde süresi dolan ve maksimum iki yıl ömrü olan bit RSA anahtarları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şturursunuz. anahtarını Google'a bağlama ve Google'dan bir ortak anahtar alma. Geliştirme sürecinde, yalnızca geliştirme ve test için kullanılan korumalı alan anahtarlarını değiştirmeniz gerekir üretim dışında da kullanılabilir. Üretimi test edip piyasaya sürmeden önce şunları yapmanız gerekir: başka bir üretim anahtarı değişimi gerçekleştirin.

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 2048 bit entropi ve bir süresi dolar. Bu komut hem ana anahtar oluşturmalıdır ("S'igning and "C"ertificate oluşturma için SC olarak etiketlenir) ve bir alt anahtar ('E'şifreleme için E' olarak etiketlenir).

PGP Kitaplığı Yapılandırması

Yük Gönderme

  1. İmzalarken özet algoritması olarak SHA384 kullanmalısınız; kullanmayın SHA1veya MD5
  2. Şifreleme sırasında simetrik şifreleme olarak AES256 kullanılmalıdır. algoritma CAST5 veya IDEA kullanmayın
  3. İletileri şifrelerken veya imzalarken, ilgili amaç; İmzalama için CAN_SIGN anahtarını kullanın ve Şifreleme için ENCRYPT_COMMS/ENCRYPT_STORAGE anahtarı

Yük Alma

  1. Yükü doğrularken kitaplığınızın modern karmayı desteklediğinden emin olun SHA384 gibi algoritmalar kullanabilir. Google, bu tarihi tüm yeni anahtarlarda kullanmaya başlayacaktır. 14 Mayıs 2023.
  2. Bir yükün şifresini çözerken kitaplığınızın modern simetriyi desteklediğinden emin olun AES256 gibi şifreleme algoritmalarından yararlanılabilir. Google, bu hizmeti tüm yeni anahtar mevcut.

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, aşağıda açıklandığı gibi güvenilir bir ortamda yapılması beklenir: Kişilerin özel anahtarlara veya hassas giriş dosyalarına erişimi yoktur.

gpg --output signed-and-encrypted.pgp \
  --sign --digest-algo SHA384 \
  --encrypt --cipher-algo AES256 \
  --armor \
  --recipient {key_id} \
  input.txt

GPG her işlem için paketten doğru anahtarı otomatik olarak seçer performansında önemli bir rol oynar.

JWS imzalama ile JWE şifrelemesi

JSON Web Şifreleme (JWE), uygulamadaki içeriği şifrelemek için rfc7516 tarafından tanımlanan bir standarttır seviyesidir. JSON Web İmzası (JWS), rfc7515 güvenebileceğiniz bir kaynaktır.

İstekler ve yanıtlar, asimetrik (herkese açık) kullanılarak şifrelenen JWE jetonları olacaktır anahtarı) şifreleme için "Kompakt Serileştirme" seçeneğini belirleyin. JWE jetonu, imzalı yükü JWS jetonu olarak içermelidir. JWS ayrıca asimetrik anahtarlar kullanır; imzalamak için özel anahtar, doğrulama için de ortak anahtar.

Yük gönderirken önce yükü imzalayın, ardından şifreleyin. Zaman önce şifrenin şifresini çözün, sonra da imzayı doğrulayın.

İş Ortakları JWE'yi kullanırken aşağıdaki seçenekleri desteklemelidir:

  • Kompakt Serileştirme.
  • Birden fazla JWE anahtarından birindeki yükün şifresini çözme.
  • Anahtar yönetimi için RSA-OAEP, RSA-OAEP-256 veya ECDH-ES algoritması.
  • A256GCM, A128GCM, A128CBC-HS256 veya A256CBC-HS512 bir algoritmadır.
    • enc başlığı içinde doldurulur.
  • kid üstbilgisini kullanın.
  • JWE şifrelemesi kullanan mesaj yükleri, içerik türünü kullanmalıdır application/jose; charset=utf-8'i seçin.

İş Ortakları, JWS'yi kullanırken aşağıdaki seçenekleri desteklemelidir:

  • Kompakt Serileştirme.
  • Birden fazla JWS anahtarından birindeki yük doğrulanıyor.
  • HS256, HS384, HS512, İmza oluşturma için RS256, RS384, RS512, ES256, PS256, PS384 veya PS512 algoritması.
  • kid üstbilgisini kullanın.

JWE/JWS dizeleri UTF-8 dizeleri olarak kodlanır ve dizeleri isteğe bağlıdır.

Özel anahtarlar, en fazla bir yıl içinde süresi dolan RSA/ECDH-ES anahtarı olmalıdır iki yıllık bir süre tanınır. Tüm özel anahtar kimlikleri her zaman ve buna bağlı olarak, tüm imza değerlerinin hesaplanmasında iş ortağının sunucusuna gönderilir.

Geliştirmeye başlamadan önce JWE ve JWS anahtarlarını Google ile değiştirmeniz gerekir. Anahtarlar, şurada tanımlandığı gibi JWK biçiminde değiştirilmelidir: rfc7517'dir. Bu adımda bir ortak-özel anahtar çifti oluşturursunuz, anahtarını Google'a bağlama ve Google'dan bir ortak anahtar alma. Geliştirme sürecinde, yalnızca geliştirme ve test için kullanılan korumalı alan anahtarlarını değiştirmeniz gerekir üretim dışında da kullanılabilir. Üretimi test edip piyasaya sürmeden önce şunları yapmanız gerekir: başka bir üretim anahtarı değişimi gerçekleştirin.