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:
- Şifreleme çevikliğini artırın: Kullanıcılar anahtarları değiştirebilmelidir ve en basit şekilde inceleyeceğiz.
- 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:
- 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.
- 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.
- 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:
- 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. - 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şturduIdEncrypter
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.