2010-07-23 5 views
13

मैं वर्तमान में एक ऐसे एप्लिकेशन पर काम कर रहा हूं जहां हमें निजी स्वास्थ्य जानकारी मिलती है। सबसे बड़ी चिंताओं में से एक एसएसएन के साथ है। वर्तमान में, हम किसी भी चीज़ के लिए एसएसएन का उपयोग नहीं करते हैं, लेकिन भविष्य में हम इसे कई सुविधाओं में एक रोगी की विशिष्ट पहचान करने के लिए उपयोग करने में सक्षम होना चाहते हैं। एसएसएन के माध्यम से विश्वसनीय रूप से ऐसा करने का एकमात्र तरीका है। हालांकि, हम (हमारे ग्राहकों के अतिरिक्त) वास्तव में एसएसएन स्टोर नहीं करना चाहते हैं।एसएसएन और अन्य सीमित डोमेन जानकारी हैशिंग

तो स्वाभाविक रूप से, मैंने सोचा कि केवल SHA हैशिंग है क्योंकि हम इसे पहचान के लिए उपयोग कर रहे हैं। इसके साथ समस्या यह है कि यदि कोई हमलावर समस्या डोमेन (एक एसएसएन) जानता है, तो वे उस डोमेन पर ध्यान केंद्रित कर सकते हैं। इसलिए लगभग असीमित पासवर्ड की बजाय अरब एसएसएन की गणना करना बहुत आसान है। मुझे पता है कि मुझे साइट नमक और प्रति रोगी नमक का उपयोग करना चाहिए, लेकिन क्या हमलावर को एसएसएन को प्रकट करने से रोकने के लिए कुछ और कर सकता है? एसएचए के बजाय, मैं बीसीआरपीटी का उपयोग करने की योजना बना रहा था, क्योंकि रुबी की अच्छी लाइब्रेरी है और यह स्केलेबल जटिलता को नियंत्रित करती है और स्वचालित रूप से सलाम करती है।

यह पासवर्ड के रूप में उपयोग नहीं किया जा रहा है। अनिवार्य रूप से, हमें कई सुविधाओं से संदेश मिलते हैं, और प्रत्येक रोगी का वर्णन करता है। एक रोगी के लिए वैश्विक रूप से अद्वितीय पहचानकर्ता के करीब एकमात्र चीज एसएसएन संख्या है। हम कई सुविधाओं पर एक ही रोगी की पहचान करने के लिए हैश का उपयोग करने जा रहे हैं।

+2

आप इस फैशन में एसएसएन का उपयोग नहीं करना चाहेंगे: लोग इसे फ़ॉर्म पर गलत लिख सकते हैं, या यह [समय के साथ बदल सकता है] (http://www.ssa.gov/pubs/10064.html) । – sarnold

+2

मैं दूसरा सरनाल्ड। मैंने एसएसएन सूचना के इस उपयोग को बहुत ही असफल रूप से देखा है - एक और परिदृश्य तब होता है जब कोई एसएसएन (तत्काल) उपलब्ध नहीं होता है। –

+0

यह एक अच्छा मुद्दा है, लेकिन यह एक अस्पष्ट समाधान होने का इरादा है, यह समय के 100% सही नहीं होना चाहिए। साथ ही, जब कोई एसएसएन उपलब्ध नहीं होता है, तो सुविधा उस रोगी के लिए काम नहीं करेगी। एकमात्र अन्य प्रस्तावित विकल्प उनकी बीमा जानकारी का उपयोग करना है, जिसमें सटीकता और उपलब्धता के साथ अपने स्वयं के मुद्दे हैं। –

उत्तर

7

सामाजिक सुरक्षा संख्या उत्पन्न करने के लिए एल्गोरिदम एक हैकर की अवधारणा से पहले बनाया गया था और इसके परिणामस्वरूप वे extremely predictable हैं। प्रमाणीकरण के लिए एसएसएन का उपयोग करना एक बहुत बुरा विचार है, इससे कोई फर्क नहीं पड़ता कि आप किस क्रिप्टोग्राफिक आदिम का उपयोग करते हैं या आपका नमक मूल्य कितना बड़ा है। उस दिन के अंत में "गुप्त" जिसे आप संरक्षित करने की कोशिश कर रहे हैं, में बहुत अधिक एन्ट्रॉपी नहीं है।

यदि आपको कभी सादा पाठ जानने की आवश्यकता नहीं है तो आपको SHA-256 का उपयोग करना चाहिए। SHA-256 पासवर्ड के लिए उपयोग करने के लिए एक बहुत अच्छा काम है।

+0

SHA-256 एक अच्छा हैशिंग फ़ंक्शन है, लेकिन यह इस मामले के लिए बहुत तेज़ है। मुझे कुछ चाहिए जहां मैं जटिलता को नियंत्रित कर सकता हूं, जैसे कि बीक्रिप्ट या पीबीकेडीएफ 2। मेरी चिंता सभी नमकीन सुविधाओं के साथ भी है, यह अभी भी उलटा रोकने के लिए पर्याप्त नहीं होगा। –

+0

@ प्रेस्टन मार्शल यदि आप धीमी संदेश डाइजेस्ट फ़ंक्शन चाहते हैं तो आप उलझन में हैं कि वे इतने उपयोगी क्यों हैं। एनआईएसटी कभी धीमी संदेश डाइजेस्ट फ़ंक्शन को स्वीकार नहीं करेगा। पूरा बिंदु यह है कि फ़ंक्शन एक दिशा में बहुत तेज़ है, लेकिन बहुत कम्प्यूटेशनल रूप से जटिल है। ब्रूट फोर्स के मामले को नमक का उपयोग करके संबोधित किया जाना चाहिए। – rook

+0

@ प्रेस्टन मार्शल इससे कोई फर्क नहीं पड़ता कि आप एक एन्क्रिप्शन फ़ंक्शन का उपयोग करते हैं जब असली मान 99 99 अनुमान से कम है। – rook

0

एसएसएन के हैश को स्टोर करने के लिए सबसे पहले, प्रशंसा और प्रशंसा।

ऐसा प्रतीत होता है जैसे आप एसएसएन को 'बैकअप उपयोगकर्ता नाम' के रूप में आरक्षित कर रहे हैं। इस मामले में, आपको उपयोगकर्ता नाम के अलावा प्रमाणीकरण का एक और रूप चाहिए - एक पासवर्ड, एक ड्राइवर का लाइसेंस नंबर, पासपोर्ट नंबर, निवास का प्रमाण, आदि।

इसके अतिरिक्त, यदि आप चिंतित हैं कि एक हमलावर 1 9 84 में एरिजोना में पैदा हुए रोगी के लिए शीर्ष 10,000 एसएसएन की भविष्यवाणी करने जा रहा है, और उनमें से प्रत्येक का प्रयास करें, तो आप अपने आवेदन में तेजी से बढ़ रहे दर सीमा में डाल सकते हैं * अतिरिक्त रक्षा के लिए, एक अधिसूचना प्रणाली में निर्माण करें जो एक sys-admin को अलर्ट करता है जब ऐसा प्रतीत होता है कि असफल लॉगिन प्रयासों की असामान्य रूप से उच्च संख्या है। **

* उदाहरण तेजी से बढ़ने की दर सीमा: प्रत्येक विफल अनुरोध के बाद , अगले अनुरोध को (1.1^एन) सेकेंड में देरी करें, जहां एन उस आईपी से असफल अनुरोधों की संख्या है। आईपी ​​ट्रैक करें और डीबी तालिका में विफल लॉगिन प्रयास; अपने आवेदन के दर्शकों के आधार पर बहुत अधिक भार नहीं जोड़ना चाहिए (क्या आप Google के लिए काम करते हैं?)।

** ऐसे मामले में जहां एक हमलावर के पास कई आईपी तक पहुंच है, अधिसूचना एक sys-admin को चेतावनी देगी जो यह देखने के लिए अपने निर्णय का उपयोग कर सकती है कि क्या आपके पास बेवकूफ उपयोगकर्ताओं का प्रवाह है या यह एक दुर्भावनापूर्ण प्रयास है। तुलना में कहीं कम वहाँ बहुत कम है :

+0

यह पासवर्ड के रूप में उपयोग नहीं किया जा रहा है। अनिवार्य रूप से, हमें कई सुविधाओं से संदेश मिलते हैं, और प्रत्येक रोगी का वर्णन करता है। एक रोगी के लिए वैश्विक रूप से अद्वितीय पहचानकर्ता के करीब एकमात्र चीज एसएसएन संख्या है। हम कई सुविधाओं पर एक ही रोगी की पहचान करने के लिए हैश का उपयोग करने जा रहे हैं। –

+3

एसएसएन के लंबे हैंश को स्टोर करने के लिए कोई अंक/प्रशंसा/प्रशंसा नहीं। यह एसएसएन भंडारण के लिए कार्यात्मक रूप से बराबर है। – Slartibartfast

+0

@ स्लर्टरबारफास्ट: कार्यात्मक रूप से बराबर हां। यदि उनके डेटाबेस से समझौता या चोरी हो जाती है, तो उसने अपनी कंपनी को पहचानने की जानकारी लीक करने से रोका। –

3

आप गंभीरता से एक सुरक्षित तरीके से एक सामाजिक सुरक्षा नंबर हैश करने के लिए चाहते हैं, तो ऐसा करते हैं:

  1. पता लगाएँ कि कितना एन्ट्रापी में एक एसएसएन (संकेत है। एक यादृच्छिक रूप से चुने गए 9 अंक संख्या)।
  2. किसी भी हैशिंग एल्गोरिदम का उपयोग करें।
  3. से कम (आधा?) बिट्स रखें एक एसएसएन में एन्ट्रॉपी है।

परिणाम:

  • प्रो: हैश टकराव की एक बड़ी संख्या की वजह से एक एसएसएन के सुरक्षित हैश।
  • प्रो: आपके हैंश छोटे और स्टोर करने में आसान हैं।
  • कॉन: हैश टकराव।
  • कॉन: कॉन # 1 की वजह से आप इसे अद्वितीय पहचानकर्ता के लिए उपयोग नहीं कर सकते हैं।
  • प्रो: यह अच्छा है क्योंकि आप वास्तव में को एसएसएन का उपयोग पहचानकर्ताओं के रूप में नहीं करना चाहिए जबतक कि आप सामाजिक सुरक्षा व्यवस्थापन नहीं हैं।