Tink nedir?
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
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ş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.
Aksi belirtilmediği sürece bu sayfanın içeriği Creative Commons Atıf 4.0 Lisansı altında ve kod örnekleri Apache 2.0 Lisansı altında lisanslanmıştır. Ayrıntılı bilgi için Google Developers Site Politikaları'na göz atın. Java, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-25 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-25 UTC."],[[["\u003cp\u003eTink is an open-source cryptography library designed for easy and secure implementation of common cryptographic tasks, even for users without a cryptography background.\u003c/p\u003e\n"],["\u003cp\u003eTink prioritizes security by adding protections on top of existing libraries like BoringSSL, using distinct APIs for potentially risky operations, and ensuring ciphertext compatibility with other libraries.\u003c/p\u003e\n"],["\u003cp\u003eTink promotes cryptographic agility by enabling easy key and algorithm changes, and it supports integration with external key management systems like Amazon KMS and Google Cloud KMS.\u003c/p\u003e\n"],["\u003cp\u003eDesigned with security reviews in mind, Tink utilizes interfaces with clear security guarantees and the concept of keysets for enhanced security and code clarity.\u003c/p\u003e\n"],["\u003cp\u003eGoogle, Square, and Citadel are among the many companies that utilize Tink, further demonstrating its reliability and widespread adoption within various applications and systems.\u003c/p\u003e\n"]]],["Tink, a Google-developed open-source cryptography library, simplifies secure cryptographic implementation for users, even without cryptography expertise. It's designed for simplicity, security, and compatibility, supporting key rotation and external Key Management Systems (KMS). Tink prioritizes cryptographic agility, enabling easy key and algorithm changes, and facilitates security reviews by providing clear interfaces and security guarantees. It uses primitives, keysets, and comprehensive key specifications to achieve these goals, ensuring secure, verifiable, and adaptable cryptographic operations.\n"],null,["# What is Tink?\n\nTink is an open-source cryptography library written by cryptographers and\nsecurity engineers at Google. Tink's secure and simple APIs reduce common\npitfalls through user-centered design, careful implementation and code reviews,\nand extensive testing. See the [Goals](#tink_goals) section on this page for\nmore insight into which objectives Tink was designed to fulfil.\n\nTink helps users without a cryptography background safely implement common\ncryptographic tasks. At Google, Tink has been deployed in hundreds of products\nand systems.\n\nWhy should I use Tink?\n----------------------\n\nThe most important reasons to use Tink are:\n\n- **It's simple to use**\n\n Cryptography is difficult to get right. With Tink, you can\n [encrypt](/tink/encrypt-data) or [sign data](/tink/digitally-sign-data) with\n built-in security guarantees using just a few lines of code. Tink can also\n help you rotate keys or secure keys using external Key Management Systems\n (KMSs).\n- **It's secure**\n\n Tink adds security protections on top of well known libraries like BoringSSL\n and Java Cryptography Architecture and shows them right in the interfaces,\n so auditors and tools can quickly find gaps. Tink also separates APIs that\n are potentially dangerous, so you can monitor them.\n- **It's compatible**\n\n Tink ciphertexts are compatible with existing cryptography libraries. Tink\n also supports [encrypting or storing keys](/tink/client-side-encryption) in\n Amazon KMS, Google Cloud KMS, Android Keystore, and iOS Keychain.\n\nWho's using Tink?\n-----------------\n\nTink is widely used by many companies, including Google, Square, and Citadel, as\nwell as hundreds of Google Cloud customers and Google Pay partners. Tink also\npowers the Jetpack Security library, which secures many popular Android apps\nlike Slack, Adidas, AirBnb, and Nextdoor.\n\nTink Goals\n----------\n\nWhat are the main goals of Tink compared to other cryptographic libraries, and\nwhat are the main mechanisms which Tink uses to achieve these goals?\n\nIn short, Tink has two goals:\n\n1. *Promote cryptographic agility*: Users should be able to change keys and algorithms in a simple way.\n2. *Enable security reviews*: Tink aims to allow users to write code whose security can be reviewed locally, by providing interfaces which give clear security guarantees.\n\nThe main mechanisms Tink uses to achieve these goals are as follows:\n\n1. Tink provides primitives and interfaces as important abstractions. These abstractions allow users to write code which does not specify the exact algorithm to be used, but instead specifies the expected security notion.\n2. Tink uses the notion of a \"keyset\", which is a set of keys that are associated with a particular primitive. This results in users writing code which works with multiple keys.\n3. In Tink, keys are not only specified by the underlying key material, but also the cryptographic algorithm, as well as all parameters. This means that a Tink key always selects a unique cryptographic function from all possible functions which can exist, and leaves no room for interpretation.\n\nThe following sections explain these concepts in more detail.\n\n### Cryptographic agility\n\nConsider [Software Engineering at Google](https://abseil.io/resources/swe-book),\na book about lessons learned in the field of software engineering, with the\nsubtitle \"lessons learned from programming over time\". In it, the authors go to\ngreat lengths to implore the implications of the fact that things change. This\nfact also impacted much of the design of Tink. In cryptography, it is important\nthat one prepares for change. Keys will leak, and algorithms will be broken.\nBeing able to switch out keys and algorithms is crucial for many users, and\nbeing prepared is prudent.\n\n### Security reviews and local properties\n\nTink promotes the use of interfaces, such as our AEAD interface, which allows\nusers to encrypt data. Among [other security guarantees](https://developers.google.com/tink/aead#security_guarantees), an AEAD\nguarantees that multiple encryptions of the same string result in different\nciphertexts.\n\nTo see how this can be used, suppose an engineer wants to store some sensitive\nID in a user cookie. They might provide a class such as this: \n\n class IdEncrypter {\n public static IdEncrypter createFromAead(Aead aead);\n\n public String encrypt(long id) throws GeneralSecurityException;\n public long decrypt(String encrypted) throws GeneralSecurityException;\n };\n\nPassing an `Aead` obtains the following properties:\n\n1. The code communicates that for `IdEncrypter` to do its job, it requires an encryption scheme with the security properties an [`Aead` provides](https://developers.google.com/tink/aead#security_guarantees). Alternatively, a [`DeterministicAead`](https://developers.google.com/tink/deterministic-aead) wouldn't be enough -- the `IdEncrypter` requires that two encryptions of the same id are different. On the other hand, taking as parameter an instance of an AES GCM encrypter (one particular instance of an `Aead`) would be overly strict: any Aead is enough for `IdEncrypter` to do its job, and it does not need to be one specific algorithm.\n2. A security review can take this point into account. A security reviewer does not need to go through all of the entire code repository to check if somewhere, someone made a subclass of `Aead` which is not secure for use with `IdEncrypter`. Instead, Tink provides security properties which all Aead objects have, and the reviewer can check that these are sufficient.\n\nIn particular the second point requires a lot of care. Users often ask to add\nalgorithms which are 'not quite' an `Aead`. The previous point illustrates why\nthis is dangerous: if there is any implementation of `Aead` available which does\nnot provide the required security guarantees, `IdEncrypter` can become insecure,\nand the engineer performing a security review needs to examine additional code\nto check that the object is instantiated correctly."]]