FIPS 140-2 নিরাপত্তা প্রয়োজনীয়তা পূরণ করতে Tink ব্যবহার করুন

Tink নিজেই FIPS 140-2 বৈধ নয়। যাইহোক, এটি বেশ কয়েকটি FIPS 140-2 অনুমোদিত অ্যালগরিদম সমর্থন করে এবং অন্তর্নিহিত বাস্তবায়নগুলি BoringSSLs BoringCrypto- এর মতো বৈধ ক্রিপ্টোগ্রাফিক মডিউলগুলি ব্যবহার করতে পারে । Tink FIPS মোডে BoringSSL নির্মাণের জন্য একটি ওয়ার্কস্পেস অন্তর্ভুক্ত করে।

মনে রাখবেন যে কর্মক্ষেত্র কোন অন্তর্নিহিত গ্যারান্টি দেয় না যে আপনার BoringSSL-এর ব্যবহার FIPS সঙ্গতিপূর্ণ। আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনি BoringCrypto-এর জন্য অফিসিয়াল নিরাপত্তা নীতি পড়ুন।

সমর্থিত অ্যালগরিদম

Tink-এর নিম্নলিখিত অ্যালগরিদমগুলি FIPS 140-2 অনুযায়ী অনুমোদিত হয়েছে ( FIPS 140-2 Annex A- তে আরও তথ্য দেখুন):

  • প্রমাণীকৃত এনক্রিপশন
    • AES-GCM
    • AES-CTR-HMAC-SHA256
  • ম্যাক
    • HMAC-SHA256
    • AES-CMAC
  • ডিজিটাল স্বাক্ষর
    • ইসিডিএসএ
    • RSA-SSA-PKCS1
    • RSA-SSA-PSS

C++ এ FIPS-শুধু মোড

যদি আপনাকে FIPS 140-2 অনুমোদিত অ্যালগরিদম এবং বৈধ বাস্তবায়ন ব্যবহার করতে হয়, আপনি শুধুমাত্র FIPS-মোডে Tink তৈরি করতে পারেন। এটি অনুমোদিত অ্যালগরিদমগুলিতে ব্যবহার সীমাবদ্ধ করে এবং টিঙ্ক একটি বৈধ ক্রিপ্টোগ্রাফিক মডিউল ব্যবহার করছে কিনা তা পরীক্ষা করে।

এটি নিম্নলিখিত উপায়ে Tink এর আচরণ পরিবর্তন করে:

  • Register() ফাংশন শুধুমাত্র অ্যালগরিদম নিবন্ধন করে যার একটি FIPS বৈধ বাস্তবায়ন আছে। এর মানে হল যে আপনি শুধুমাত্র অ্যালগরিদমগুলির জন্য কীসেটগুলি ব্যবহার করতে পারবেন যা একটি বৈধ ক্রিপ্টোগ্রাফিক মডিউল ব্যবহার করে৷
  • বোরিংক্রিপ্টো মডিউল দিয়ে বোরিংএসএসএল তৈরি করা হয়েছে কিনা তা টিঙ্ক পরীক্ষা করে। মডিউল উপলব্ধ না হলে আদিমদের কল একটি INTERNAL ত্রুটি ফেরত দেয়।
  • subtle/ তে আদিম ব্যবহার করা অ্যালগরিদমের মধ্যে সীমাবদ্ধ যা একটি বৈধ ক্রিপ্টোগ্রাফিক মডিউল ব্যবহার করে।

বিরক্তিকর ক্রিপ্টো

Tink একটি বৈধ ক্রিপ্টোগ্রাফিক মডিউল অ্যাক্সেস প্রদান করতে C++ এ BoringCrypto ব্যবহার করে। এটির বর্তমান বৈধতা স্থিতি উপলব্ধ অ্যালগরিদমগুলিতে নিম্নলিখিত অতিরিক্ত সীমাবদ্ধতা আরোপ করে যখন শুধুমাত্র FIPS-মোডে থাকে:

  • AES-CMAC বৈধ করা হয়নি এবং উপলব্ধ নয়
  • RSA-SSA-PKCS1 3072-বিট মডুলাসে সীমাবদ্ধ
  • RSA-SSA-PSS 3072-বিট মডুলাসে সীমাবদ্ধ

Bazel-এর সাথে BoringCrypto মডিউল ব্যবহার করতে, আপনি C++ WORKSPACE-boringssl এর জন্য local_repository সংজ্ঞাটি আনকমেন্ট করতে পারেন।

কম্পাইলের সময় সক্ষম করুন

শুধুমাত্র FIPS-মোডে টিঙ্ক তৈরি করতে, কম্পাইলের সময় একটি পতাকা সেট করুন:

bazel build ... --//third_party/tink/cc/config:use_only_fips=True

আপনি যদি রানটাইমে পরীক্ষা করতে চান যে Tink শুধুমাত্র FIPS মোডে তৈরি করা হয়েছে, তাহলে আপনি internal/fips_utils.h শিরোনামটি অন্তর্ভুক্ত করতে পারেন যা স্থির kUseOnlyFips প্রদান করে।

আপনি যদি শুধুমাত্র FIPS মোডে Tink তৈরি না করেন তবে এটি এখনও কিছু অ্যালগরিদমের জন্য বৈধ বাস্তবায়ন ব্যবহার করতে পারে কিন্তু অন্যান্য অ্যালগরিদমের ব্যবহার সীমাবদ্ধ করে না।

রান টাইমে সক্ষম করুন

শুধুমাত্র FIPS-ই মোডে Tink নির্মাণের বিকল্প হিসেবে, আপনি config/tink_fips.h থেকে crypto::tink::RestrictToFips() কল করতে পারেন যা রানটাইমে একটি পতাকা সেট করে FIPS আদিম বিধিনিষেধ সক্ষম করতে।

সতর্কতা: আপনি যদি রানটাইম বিকল্পটি ব্যবহার করেন, তাহলে crypto::tink::RestrictToFips() অবশ্যই কোনো মূল উপাদান পরিচালনা করার আগে, কী ম্যানেজার নিবন্ধন করার বা টিঙ্কের অন্যান্য কার্যকারিতাগুলিকে কল করতে হবে। উপরন্তু, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে BoringSSL বোরিংক্রিপ্টো মডিউল দিয়ে তৈরি করা হয়েছে, অন্যথায় Tink আপনাকে কোনো ডেটা প্রক্রিয়া করার অনুমতি দেয় না।