Tink হল একটি ওপেন সোর্স ক্রিপ্টোগ্রাফি লাইব্রেরি যা Google-এর ক্রিপ্টোগ্রাফার এবং সিকিউরিটি ইঞ্জিনিয়ারদের দ্বারা লেখা। Tink-এর নিরাপদ এবং সাধারণ APIগুলি ব্যবহারকারী-কেন্দ্রিক নকশা, সাবধানে বাস্তবায়ন এবং কোড পর্যালোচনা এবং ব্যাপক পরীক্ষার মাধ্যমে সাধারণ সমস্যাগুলি হ্রাস করে। Tink কোন উদ্দেশ্য পূরণের জন্য ডিজাইন করা হয়েছে তার আরও অন্তর্দৃষ্টির জন্য এই পৃষ্ঠার লক্ষ্য বিভাগটি দেখুন।
Tink ক্রিপ্টোগ্রাফি ব্যাকগ্রাউন্ড ছাড়াই ব্যবহারকারীদের নিরাপদে সাধারণ ক্রিপ্টোগ্রাফিক কাজ বাস্তবায়ন করতে সাহায্য করে। Google-এ, Tink শত শত পণ্য এবং সিস্টেমে মোতায়েন করা হয়েছে।
আমি কেন Tink ব্যবহার করব?
Tink ব্যবহার করার সবচেয়ে গুরুত্বপূর্ণ কারণ হল:
এটা ব্যবহার করা সহজ
ক্রিপ্টোগ্রাফি সঠিক পেতে কঠিন. Tink-এর সাথে, আপনি কোডের কয়েকটি লাইন ব্যবহার করে অন্তর্নির্মিত নিরাপত্তা গ্যারান্টি সহ ডেটা এনক্রিপ্ট বা সাইন করতে পারেন। Tink আপনাকে বহিরাগত কী ম্যানেজমেন্ট সিস্টেম (KMSs) ব্যবহার করে কী বা সুরক্ষিত কীগুলি ঘোরাতে সাহায্য করতে পারে।
এটা নিরাপদ
Tink বোরিংএসএসএল এবং জাভা ক্রিপ্টোগ্রাফি আর্কিটেকচারের মতো সুপরিচিত লাইব্রেরির উপরে সুরক্ষা সুরক্ষা যোগ করে এবং সেগুলিকে সরাসরি ইন্টারফেসে দেখায়, যাতে অডিটর এবং সরঞ্জামগুলি দ্রুত ফাঁক খুঁজে পেতে পারে। Tink এপিআইগুলিকেও আলাদা করে যা সম্ভাব্য বিপজ্জনক, তাই আপনি তাদের নিরীক্ষণ করতে পারেন।
এটা সামঞ্জস্যপূর্ণ
টিঙ্ক সাইফারটেক্সট বিদ্যমান ক্রিপ্টোগ্রাফি লাইব্রেরির সাথে সামঞ্জস্যপূর্ণ। টিঙ্ক অ্যামাজন কেএমএস, গুগল ক্লাউড কেএমএস, অ্যান্ড্রয়েড কীস্টোর এবং আইওএস কীচেইনে কী এনক্রিপ্ট করা বা সংরক্ষণ করা সমর্থন করে।
কে Tink ব্যবহার করছে?
Tink ব্যাপকভাবে Google, Square এবং Citadel সহ Google ক্লাউড গ্রাহকদের এবং Google Pay অংশীদারদের দ্বারা ব্যাপকভাবে ব্যবহৃত হয়। Tink জেটপ্যাক সিকিউরিটি লাইব্রেরিকেও ক্ষমতা দেয়, যা স্ল্যাক, এডিডাস, এয়ারবিএনবি এবং নেক্সটডোরের মতো অনেক জনপ্রিয় অ্যান্ড্রয়েড অ্যাপকে সুরক্ষিত করে।
টিঙ্ক গোল
অন্যান্য ক্রিপ্টোগ্রাফিক লাইব্রেরিগুলির তুলনায় টিঙ্কের প্রধান লক্ষ্যগুলি কী এবং এই লক্ষ্যগুলি অর্জনের জন্য টিঙ্ক ব্যবহার করে এমন প্রধান প্রক্রিয়াগুলি কী কী?
সংক্ষেপে, টিঙ্কের দুটি লক্ষ্য রয়েছে:
- ক্রিপ্টোগ্রাফিক তত্পরতা প্রচার করুন : ব্যবহারকারীদের একটি সহজ উপায়ে কী এবং অ্যালগরিদম পরিবর্তন করতে সক্ষম হওয়া উচিত।
- নিরাপত্তা পর্যালোচনা সক্ষম করুন : Tink-এর লক্ষ্য ব্যবহারকারীদের কোড লিখতে অনুমতি দেওয়া যার নিরাপত্তা স্থানীয়ভাবে পর্যালোচনা করা যেতে পারে, এমন ইন্টারফেস প্রদান করে যা স্পষ্ট নিরাপত্তা গ্যারান্টি দেয়।
এই লক্ষ্যগুলি অর্জনের জন্য টিঙ্ক যে প্রধান প্রক্রিয়াগুলি ব্যবহার করে তা নিম্নরূপ:
- Tink গুরুত্বপূর্ণ বিমূর্ততা হিসাবে আদিম এবং ইন্টারফেস প্রদান করে। এই বিমূর্ততা ব্যবহারকারীদের কোড লিখতে দেয় যা ব্যবহার করার জন্য সঠিক অ্যালগরিদম নির্দিষ্ট করে না, বরং প্রত্যাশিত নিরাপত্তা ধারণা নির্দিষ্ট করে।
- Tink একটি "কীসেট" এর ধারণা ব্যবহার করে, যা একটি নির্দিষ্ট আদিমের সাথে যুক্ত কীগুলির একটি সেট। এর ফলে ব্যবহারকারীরা কোড লিখতে পারেন যা একাধিক কী দিয়ে কাজ করে।
- Tink-এ, কীগুলি শুধুমাত্র অন্তর্নিহিত কী উপাদান দ্বারা নির্দিষ্ট করা হয় না, ক্রিপ্টোগ্রাফিক অ্যালগরিদম, সেইসাথে সমস্ত পরামিতিও। এর মানে হল যে একটি টিঙ্ক কী সর্বদা সমস্ত সম্ভাব্য ফাংশন থেকে একটি অনন্য ক্রিপ্টোগ্রাফিক ফাংশন নির্বাচন করে যা বিদ্যমান থাকতে পারে এবং ব্যাখ্যার জন্য কোনও জায়গা ছেড়ে দেয় না।
নিম্নলিখিত বিভাগগুলি এই ধারণাগুলিকে আরও বিশদে ব্যাখ্যা করে।
ক্রিপ্টোগ্রাফিক তত্পরতা
Google-এ সফ্টওয়্যার ইঞ্জিনিয়ারিং বিবেচনা করুন, সফ্টওয়্যার প্রকৌশলের ক্ষেত্রে শেখা পাঠ সম্পর্কে একটি বই, যার সাবটাইটেল "সময়ের সাথে প্রোগ্রামিং থেকে শেখা পাঠ"। এটিতে, লেখকরা জিনিসগুলি পরিবর্তিত হওয়ার বিষয়টির অন্তর্নিহিততাগুলি অনুনয় করার জন্য প্রচুর পরিমাণে যান। এই সত্যটি টিঙ্কের নকশার অনেকাংশকেও প্রভাবিত করেছিল। ক্রিপ্টোগ্রাফিতে, একজন পরিবর্তনের জন্য প্রস্তুত হওয়া গুরুত্বপূর্ণ। কীগুলি লিক হবে এবং অ্যালগরিদমগুলি ভেঙে যাবে৷ কী এবং অ্যালগরিদমগুলি পরিবর্তন করতে সক্ষম হওয়া অনেক ব্যবহারকারীর জন্য অত্যন্ত গুরুত্বপূর্ণ এবং প্রস্তুত থাকা বিচক্ষণ।
নিরাপত্তা পর্যালোচনা এবং স্থানীয় বৈশিষ্ট্য
Tink আমাদের AEAD ইন্টারফেসের মতো ইন্টারফেসের ব্যবহার প্রচার করে, যা ব্যবহারকারীদের ডেটা এনক্রিপ্ট করতে দেয়। অন্যান্য নিরাপত্তা গ্যারান্টিগুলির মধ্যে, একটি AEAD গ্যারান্টি দেয় যে একই স্ট্রিংয়ের একাধিক এনক্রিপশনের ফলে বিভিন্ন সাইফারটেক্সট হয়।
এটি কীভাবে ব্যবহার করা যেতে পারে তা দেখতে, ধরুন একজন প্রকৌশলী একটি ব্যবহারকারী কুকিতে কিছু সংবেদনশীল আইডি সংরক্ষণ করতে চান। তারা একটি ক্লাস প্রদান করতে পারে যেমন:
class IdEncrypter {
public static IdEncrypter createFromAead(Aead aead);
public String encrypt(long id) throws GeneralSecurityException;
public long decrypt(String encrypted) throws GeneralSecurityException;
};
একটি Aead
পাস করলে নিম্নলিখিত বৈশিষ্ট্যগুলি পাওয়া যায়:
- কোডটি যোগাযোগ করে যে
IdEncrypter
এর কাজ করার জন্য, এটি একটিAead
প্রদান করে নিরাপত্তা বৈশিষ্ট্য সহ একটি এনক্রিপশন স্কিম প্রয়োজন। বিকল্পভাবে, একটিDeterministicAead
যথেষ্ট হবে না --IdEncrypter
প্রয়োজন হয় যে একই আইডির দুটি এনক্রিপশন আলাদা। অন্যদিকে, একটি AES GCM এনক্রিপ্টারের একটি উদাহরণ (একটিAead
এর একটি বিশেষ উদাহরণ) প্যারামিটার হিসাবে নেওয়া অত্যধিক কঠোর হবে:IdEncrypter
এর কাজ করার জন্য যেকোন Aead যথেষ্ট, এবং এটি একটি নির্দিষ্ট অ্যালগরিদম হওয়ার প্রয়োজন নেই৷ - একটি নিরাপত্তা পর্যালোচনা অ্যাকাউন্টে এই পয়েন্ট নিতে পারে. কোথাও, কেউ
Aead
এর একটি সাবক্লাস তৈরি করেছে যাIdEncrypter
এর সাথে ব্যবহারের জন্য নিরাপদ নয় কিনা তা পরীক্ষা করার জন্য একজন নিরাপত্তা পর্যালোচককে পুরো কোড সংগ্রহস্থলের মধ্যে দিয়ে যেতে হবে না। পরিবর্তে, Tink নিরাপত্তা বৈশিষ্ট্য প্রদান করে যা সমস্ত Aead অবজেক্টের আছে, এবং পর্যালোচক পরীক্ষা করতে পারেন যে এইগুলি যথেষ্ট।
বিশেষ করে দ্বিতীয় পয়েন্টের জন্য অনেক যত্ন প্রয়োজন। ব্যবহারকারীরা প্রায়ই অ্যালগরিদম যোগ করতে বলে যা 'পুরোপুরি নয়' একটি Aead
। পূর্ববর্তী পয়েন্টটি ব্যাখ্যা করে যে এটি কেন বিপজ্জনক: যদি Aead
এর কোনো বাস্তবায়ন উপলব্ধ থাকে যা প্রয়োজনীয় নিরাপত্তা গ্যারান্টি প্রদান না করে, তাহলে IdEncrypter
অনিরাপদ হয়ে উঠতে পারে এবং নিরাপত্তা পর্যালোচনা করা প্রকৌশলীকে বস্তুটি ইনস্ট্যান্ট করা হয়েছে কিনা তা পরীক্ষা করার জন্য অতিরিক্ত কোড পরীক্ষা করতে হবে। সঠিকভাবে