Tink nedir?

Tink, kriptograflar tarafından yazılan açık kaynak bir kriptografi kitaplığıdır mühendisim. Tink'in güvenli ve basit API'leri, kullanıcı odaklı tasarım, dikkatli uygulama ve kod incelemeleri, ve kapsamlı testler yapmayı tercih edebilirsiniz. Aşağıdakiler için bu sayfadaki Hedefler bölümüne bakın ve Tink'in hangi hedefleri karşılamak üzere tasarlandığı konusunda daha fazla fikir sahibi olmak.

Tink, kriptografi arka planı olmayan kullanıcıların yaygın uygulamaları şifreleme görevleridir. Tink, Google'da yüzlerce üründe yaygın olarak kullanılıyor bahsedeceğim.

Neden Tink'i kullanmalıyım?

Tink'in kullanılmasının en önemli nedenleri şunlardır:

  • Kullanımı kolaydır

    Kriptografiyi bulmak zordur. Tink ile: verileri şifreleyin veya şununla imzalayın: yerleşik güvenlik özellikleri sayesinde yalnızca birkaç satır kod kullanılmasını sağlayabilirsiniz. Tink ayrıca Harici Anahtar Yönetim Sistemlerini kullanarak anahtarları döndürmenize veya anahtarları güvenli hale getirmenize yardımcı olur (KMS).

  • Güvenlidir

    Tink, BoringSSL gibi iyi bilinen kitaplıkların üzerine güvenlik korumaları ekler ve Java Kriptografi Mimarisi ile bunları doğrudan arayüzlerde gösteriyor. Böylece denetçiler ve araçlar boşlukları kolayca bulabilir. Tink ayrıca, tehlikeli olabileceği için bunları izleyebilirsiniz.

  • Uyumlu

    Tink şifrelenmiş metinleri, mevcut kriptografi kitaplıklarıyla uyumludur. İnek Ayrıca, anahtarların şifrelenmesini veya depolanmasını destekler. Amazon KMS, Google Cloud KMS, Android Anahtar Deposu ve iOS Anahtar Zinciri.

Tink'i kim kullanıyor?

Tink; Google, Square ve Citadel gibi birçok şirket tarafından yaygın olarak kullanılmaktadır. yanı sıra yüzlerce Google Cloud müşterisi ve Google Pay iş ortağından destek alabilirsiniz. Tink ayrıca birçok popüler Android uygulamasının güvenliğini sağlayan Jetpack Security kitaplığını destekler daha fazla müşteri bulunuyor.

Tink Hedefleri

Diğer şifreleme kitaplıklarıyla karşılaştırıldığında Tink'in ana hedefleri nelerdir ve Tink'in bu hedeflere ulaşmak için kullandığı ana mekanizmalar nelerdir?

Kısacası, Tink'in iki hedefi vardır:

  1. Şifreleme çevikliğini artırın: Kullanıcılar anahtarları değiştirebilmelidir ve en basit şekilde inceleyeceğiz.
  2. Güvenlik incelemelerini etkinleştirin: Tink, kullanıcıların kendi dillerinde kod yazmalarına izin vermeyi ve yerel olarak gözden geçirilebildiğinden garantileri.

Tink'in bu hedeflere ulaşmak için kullandığı ana mekanizmalar şunlardır:

  1. Tink, önemli soyutlama öğeleri olarak temel öğeleri ve arayüzleri sağlar. Bu soyutlamalar, kullanıcıların tam olarak ancak bunun yerine beklenen güvenlik kavramını belirtir.
  2. Tink, bir anahtar kümesi olan "anahtar kümesi" kavramını kullanır. bir değere sahip olabiliyor. Bu da kullanıcıların kod yazmasına neden olur. birden fazla anahtarla çalışan.
  3. Tink'te anahtarlar yalnızca temel anahtar materyaline göre değil, aynı zamanda şifreleme algoritması ve tüm parametreler. Bunun anlamı, bir Tink anahtarı, her zaman olası tüm olası fonksiyonlar oluşturur ve yorumlanmaya yer bırakmaz.

Aşağıdaki bölümlerde bu kavramlar daha ayrıntılı olarak açıklanmaktadır.

Kriptografik çeviklik

Google'da Yazılım Mühendisliği'ni kullanmayı düşünün. yazılım mühendisliği alanında alınan dersler hakkında bir kitap, altyazısı "zaman içinde programlamadan öğrenilen dersler". Eserde yazarlar bir şeylerin değişmesinin sonuçlarını ima etmek için çok uzun bir süre çalıştık. Bu , Tink'in tasarımının büyük bir kısmını da etkiledi. Kriptografide hazırlandığını gösterir. Tuşlar sızdırılacak ve algoritmalar bozulacak. Anahtarları ve algoritmaları değiştirebilmek birçok kullanıcı için son derece önemlidir ve hazırlıklı olmak ihtiyatlı bir şeydir.

Güvenlik incelemeleri ve yerel özellikler

Tink, izin verilen AEAD arayüzü gibi arayüzlerin kullanımını teşvik eder. şifrelemesini zorunlu kılar. Diğer güvenlik garantilerinin yanı sıra AEAD aynı dizeye ait birden fazla şifrelemenin farklı şifrelenmiş metinlerdir.

Bunun nasıl kullanılabileceğini görmek için bir mühendisin bazı hassas Kullanıcı çerezindeki kimlik. Şuna benzer bir sınıf sağlayabilir:

class IdEncrypter {
  public static IdEncrypter createFromAead(Aead aead);

  public String encrypt(long id) throws GeneralSecurityException;
  public long decrypt(String encrypted) throws GeneralSecurityException;
};

Aead iletildiğinde aşağıdaki özellikler elde edilir:

  1. Kod, IdEncrypter uygulamasının işini yapması için bir Şifreleme şemasını, Aead tarafından sağlanan güvenlik özellikleriyle birlikte alır. Alternatif olarak, DeterministicAead yeterli olmaz -- IdEncrypter, aynı kimlikler farklı. Diğer yandan, bir AES GCM şifreleyicisi (Aead öğesinin belirli bir örneği) aşırı katı: herhangi bir Aead, IdEncrypter işini yapması için yeterlidir; özel bir algoritma olması gerekir.
  2. Güvenlik incelemesinde bu nokta dikkate alınabilir. Güvenlik incelemecileri kontrol etmek için kod deposunun tamamını baştan sona bir yerde, kullanımı güvenli olmayan bir Aead alt sınıfı oluşturdu IdEncrypter ile. Bunun yerine Tink, tüm kullanıcıların Aead nesneleri vardır ve incelemeci bunların yeterli olup olmadığını kontrol edebilir.

Özellikle ikinci noktaya çok dikkat etmek gerekir. Kullanıcılar sıklıkla pek de iyi olmayan" algoritmalar Aead. Bir önceki maddede, Çevik’in Bu tehlikelidir: Google'a izin veren bir Aead uygulaması varsa gerekli güvenlik garantilerini vermezseniz IdEncrypter güvensiz hale gelebilir, Güvenlik incelemesi yapan mühendisin de ek kodu incelemesi gerekiyor. aracını kullanın.