ইন্টারেক্টিভ জিরো-নলেজ প্রুফের সবচেয়ে বড় সীমাবদ্ধতা হলো এর কথোপকথন-ভিত্তিক কাঠামো: ভেরিফায়ারকে রিয়েল-টাইমে উপস্থিত থেকে এলোমেলো চ্যালেঞ্জ ছুঁড়তে হয়। ফলে এই প্রমাণ কোনো পাবলিক ব্লকচেইনে সংরক্ষণ করা যায় না বা লাখ লাখ মানুষের কাছে একসাথে সম্প্রচার করা অসম্ভব। ১৯৮৬ সালে আমোস ফিয়াট এবং আদি শামির এই জটিল সমস্যার সমাধান দেন ফিয়াট-শামির রূপান্তর (Fiat-Shamir Heuristic) আবিষ্কারের মাধ্যমে। তারা বাস্তব ভেরিফায়ারকে একটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন দিয়ে প্রতিস্থাপন করে বহু-ধাপের প্রমাণকে একটি স্বয়ংসম্পূর্ণ নন-ইন্টারেক্টিভ জিরো-নলেজ (NIZK) ফাইলে রূপান্তর করেন।
১. সিগমা প্রোটোকল ((Sigma)-Protocols)
একটি সম্পর্ক (R = {(x, w)})-এর জন্য ৩-ধাপের ইন্টারেক্টিভ প্রমাণকে সিগমা প্রোটোকল বলা হয় যদি এটি একটি সুনির্দিষ্ট ছক মেনে চলে:
- কমিটমেন্ট (বার্তা (a)): প্রুভার ক্ষণস্থায়ী র্যান্ডম কয়েন (r) ব্যবহার করে প্রাথমিক প্রতিশ্রুতি (a) পাঠায়।
- চ্যালেঞ্জ (বার্তা (e)): ভেরিফায়ার একটি উন্মুক্ত পাবলিক চ্যালেঞ্জ (e leftarrow {0,1}^t) পাঠায়।
- রেসপন্স (বার্তা (z)): প্রুভার তার গোপন উইটনেস এবং চ্যালেঞ্জের ওপর ভিত্তি করে উত্তর (z) পাঠায়।
- যাচাইকরণ: ভেরিফায়ার সমীকরণ (phi(x, a, e, z) = 1) যাচাই করে।
সিগমা প্রোটোকলের একটি অসাধারণ বৈশিষ্ট্য হলো স্পেশাল সাউন্ডনেস (Special Soundness): যদি একই কমিটমেন্ট (a)-এর ওপর দুটি ভিন্ন চ্যালেঞ্জ (e
eq e’)-এর বৈধ উত্তর ((z, z’)) কোনোভাবে পাওয়া যায়, তবে সাধারণ বীজগণিত দিয়ে সাথে সাথে গোপন চাবি (w) বের করে ফেলা যায়।
২. ফিয়াট-শামির রূপান্তর ও হ্যাশ চ্যালেঞ্জ
ফিয়াট-শামির রূপান্তরের মাধ্যমে জীবন্ত ভেরিফায়ারকে বিদায় জানিয়ে তার স্থানে একটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন (mathcal{H}) বসানো হয়। প্রুভার নিজেই নিজের চ্যালেঞ্জ হ্যাশ করে তৈরি করে নেয়:
[
e = mathcal{H}(x parallel a)
]
চূড়ান্ত নন-ইন্টারেক্টিভ প্রমাণটি হলো একটি ক্ষুদ্র ফাইল (pi = (a, z))। এখন যেকোনো মানুষ কোনো প্রুভারের উপস্থিতি ছাড়াই নিজে যাচাই করতে পারে:
[
e’ = mathcal{H}(x parallel a), quad ext{এবং পরীক্ষা করে } phi(x, a, e’, z) stackrel{?}{=} 1
]
র্যান্ডম ওরাকল মডেলে এর নিরাপত্তা অটুট: যেহেতু হ্যাশের আউটপুট সম্পূর্ণ অপ্রত্যাশিত, তাই কমিটমেন্ট (a) প্রকাশ করার আগে প্রুভার জানতে পারে না চ্যালেঞ্জ (e) কী আসবে। ফলে প্রতারণা করতে হলে তাকে ক্রিপ্টোগ্রাফিক হ্যাশ ভাঙতে হবে যা অসম্ভব।
৩. ফ্রোজেন হার্ট ভালনারেবিলিটি (The Frozen Heart Vulnerability)
ফিয়াট-শামির ব্যবহারের সময় সবচেয়ে মারাত্মক যে ভুলটি প্রোগ্রামাররা করেন তা হলো হ্যাশের ভেতরে পাবলিক স্টেটমেন্ট (x)-কে যুক্ত না করা: কেবল (e = mathcal{H}(a)) লেখা। একে বলা হয় ফ্রোজেন হার্ট দুর্বলতা।
যদি (x) হ্যাশে না থাকে, তবে একজন প্রতারক আগে থেকে একটি এলোমেলো (a) এবং (z) তৈরি করে একটি চ্যালেঞ্জ (e) বানাতে পারে, এবং সবার শেষে এমন একটি অসত্য স্টেটমেন্ট (x^*) বানিয়ে ফেলতে পারে যার জন্য সমীকরণটি মিলে যাবে! তাই সুরক্ষিত নীতি হলো: চ্যালেঞ্জ হ্যাশে সর্বদা প্রোটোকল ট্যাগ, পাবলিক স্টেটমেন্ট এবং কমিটমেন্ট যুক্ত করতে হবে: (e = mathcal{H}( ext{tag} parallel x parallel a))।
৪. কমন রেফারেন্স স্ট্রিং (CRS) মডেল
র্যান্ডম ওরাকল মডেল ছাড়া স্ট্যান্ডার্ড মডেলে নন-ইন্টারেক্টিভ প্রমাণ তৈরি করতে একটি কমন রেফারেন্স স্ট্রিং (CRS) প্রয়োজন হয়। এটি এমন একটি সর্বজনীন বিশ্বস্ত প্যারামিটার যা উভয় পক্ষ ব্যবহার করে। ফিজ, ল্যাপিডট এবং শামির প্রমাণ করেন যে যেকোনো NP সমস্যার জন্যই CRS-ভিত্তিক NIZK তৈরি সম্ভব, যা আজকের সর্বাধুনিক zk-SNARKs-এর তাত্ত্বিক ভিত।