Razorpay जैसे भारतीय पेमेंट गेटवे, जो UPI ट्रांज़ैक्शन्स को हैंडल करते हैं, हर वेबहुक को HMAC-SHA256 से साइन करते हैं: इंटीग्रेशन सेटअप करते समय मर्चेंट को एक सीक्रेट मिलता है, और हर आने वाले वेबहुक के साथ एक सिग्नेचर आता है जिसे लोकली दोबारा कैलकुलेट करके मिलान करना होता है। अगर सिग्नेचर मैच नहीं करता, तो वह नोटिफिकेशन असल में Razorpay से नहीं आया — और उसे असली पेमेंट कन्फ़र्मेशन मानकर प्रोसेस नहीं करना चाहिए।
सिर्फ़ हैश नहीं, सीक्रेट की क्यों ज़रूरी है
SHA-256 जैसा साधारण हैश सिर्फ़ यह साबित करता है कि डेटा में गड़बड़ी नहीं हुई — यह नहीं बताता कि उसे किसने भेजा। अगर कोई सर्वर सिर्फ़ वेबहुक बॉडी हैश करके रिक्वेस्ट में आए हैश से मिलाए, तो कोई भी अटैकर अपना नक़ली पेलोड बनाकर मैचिंग हैश जोड़ सकता है। HMAC इसमें एक सीक्रेट की जोड़ता है जिसे सिर्फ़ भेजने वाला और पाने वाला जानते हैं — बिना उसके, सही सिग्नेचर बनाना नामुमकिन है, भले ही अटैकर को पता हो कि कौन-सा हैश फ़ंक्शन इस्तेमाल हो रहा है।
यह सिर्फ़ "की का हैश प्लस मैसेज" क्यों नहीं है
हैशिंग से पहले की और मैसेज को सीधे जोड़ना (जैसे hash(की + मैसेज)) कुछ हैश फ़ंक्शन में लेंथ-एक्सटेंशन अटैक के लिए वल्नरेबल है — अटैकर पूरी की जाने बिना भी डेटा जोड़कर नया वैलिड हैश बना सकता है। HMAC डबल हैशिंग और इनर/आउटर पैडिंग वाला ख़ास स्ट्रक्चर इस्तेमाल करता है, जो इस तरह के अटैक को पूरी तरह रोकता है।
HMAC और कहाँ इस्तेमाल होता है
वेबहुक साइनिंग के अलावा, HMAC API रिक्वेस्ट को ऑथेंटिकेट करता है, और TOTP एल्गोरिदम का मुख्य हिस्सा भी है — यही एल्गोरिदम ऑथेंटिकेटर ऐप्स में दिखने वाले छह-अंकों के कोड जनरेट करता है।
यह किस काम आता है
- पेमेंट गेटवे या दूसरी थर्ड-पार्टी सर्विसेज़ से आए वेबहुक की प्रामाणिकता जाँचना।
- नेटवर्क पर सीक्रेट की भेजे बिना API रिक्वेस्ट साइन करना।
- TOTP कोड और सेशन टोकन की अंदरूनी मैकेनिक्स समझना।
कॉन्स्टेंट-टाइम तुलना
मिले हुए सिग्नेचर की उम्मीद किए गए सिग्नेचर से सामान्य === से तुलना करना असुरक्षित है: यह ऑपरेटर आमतौर पर पहली बेमेल जगह पर रुक जाता है, और तुलना में लगा समय हमलावर को बता देता है कि उसने कितने शुरुआती बाइट्स सही अंदाज़े में लगाए। भरोसेमंद वेबहुक हैंडलर हमेशा कॉन्स्टेंट-टाइम तुलना फ़ंक्शन इस्तेमाल करते हैं — जैसे PHP में hash_equals — जो पहली बेमेल जगह चाहे जहाँ भी हो, हमेशा हर बाइट की जाँच करते हैं।