क्या सीपीयू क्या कर रहा है यह बताना वास्तव में असंभव है? [बन्द है]


24

कंप्यूटर प्रोग्रामर अक्सर मंत्र का पाठ करते हैं कि x86 निर्देश पूरी तरह से अपारदर्शी हैं: इंटेल हमें बताता है कि वे कुछ कर रहे हैं, लेकिन कोई उम्मीद नहीं है कि कोई भी यह सत्यापित कर सकता है कि क्या हो रहा है, इसलिए यदि एनएसए उन्हें अपने आरएनजी का समर्थन करने के लिए कहता है, तो हम वास्तव में नहीं कर सकते हैं इसके बारे में कुछ भी करो।

खैर, मेरा मानना ​​है कि कंप्यूटर प्रोग्रामर इस समस्या के बारे में कुछ नहीं कर सकते। लेकिन एक इलेक्ट्रिक इंजीनियर इस पर हमला कैसे करेगा? क्या ऐसी तकनीकें हैं जो एक इलेक्ट्रिकल इंजीनियर यह सत्यापित करने के लिए उपयोग कर सकता है कि वास्तव में एक सर्किट अपने ऑपरेशन में वर्णित संचालन करता है, और कोई अन्य संचालन नहीं करता है?


5
आपको मरने की तरह कुछ करना होगा और हर चीज का विश्लेषण करना होगा कि यह वास्तव में क्या कर रहा है। मूल रूप से चिप को रिवर्स करें और हर सर्किट के ट्रहे फ़ंक्शन के लिए खाता। पूरी तरह से अव्यावहारिक।
DKNguyen

7
कोई भी विद्युत परिपथ शोर की वजह से एक सटीक कल्पना नहीं करता है और इस बात की थोड़ी संभावना है कि एक दिन एक गड़बड़ होगी जो "बड़ी पर्याप्त" है।
एंडी उर्फ

5
मजेदार जानकारी: यह अस्पष्ट रूप से लाप्लास के दानव से संबंधित है ।
हैरी स्वेन्सन

6
इंटेल के कंटेंट डेटाबेस से आंतरिक डॉक्यूमेंट्स को चोरी करना आसान होने जा रहा है, क्योंकि यह एक ही आधुनिक कॉम्प्लेक्स इंटेल सीपीयू को रिवर्स इंजीनियर बना सकता है।
वन

14
@ आपका रवैया असंवैधानिक है, और आपका दावा है कि हार्डवेयर में बैकडोर छुपाया नहीं जा सकता है।
pjc50

जवाबों:


14

इस विषय पर मैंने जो सबसे अच्छा पेपर पढ़ा है, वह 2014 से "स्टेल्थ डोपेंट-लेवल हार्डवेयर ट्रोजन" (बेकर एट अल) है।

चूंकि संशोधित सर्किट सभी वायरिंग परतों (सभी धातु और पॉलीसिलिकॉन सहित) पर वैध दिखाई देता है, ट्रोजन का हमारा परिवार "गोल्डन चिप्स" के खिलाफ ठीक-ठीक ऑप्टिकल निरीक्षण और जांच सहित अधिकांश पहचान तकनीकों के लिए प्रतिरोधी है। हम अपने दृष्टिकोण की प्रभावशीलता प्रदर्शित करते हैं। ट्रोजन को दो डिज़ाइनों में सम्मिलित करके - इंटेल के क्रिप्टोग्राफ़िक रूप से सुरक्षित RNG डिज़ाइन से प्राप्त डिजिटल पोस्ट-प्रोसेसिंग, जिसका उपयोग आइवी ब्रिज प्रोसेसर में किया जाता है और एक साइड-चैनल प्रतिरोधी SBox कार्यान्वयन - और सुरक्षा पर उनके पता लगाने और उनके प्रभावों की खोज करके।

कागज का वर्णन है कि परिवर्तन कैसे किया जाता है, सिलिकॉन का निरीक्षण करने से यह पता लगाना कितना कठिन है, उत्पादन परीक्षण से इसे छिपाने की तकनीक, और यह कैसे एक हार्डवेयर क्रिप्टो आरएनजी की सुरक्षा को कम करने या महत्वपूर्ण जानकारी लीक करने के लिए किया जा सकता है एईएस कार्यान्वयन के पावर-रेल साइड-चैनल के माध्यम से।

साइड-चैनल रुचि का उभरता हुआ क्षेत्र है। इंटेल को सट्टा निष्पादन से संबंधित समस्याओं से ग्रस्त किया गया है जो मेमोरी से जानकारी लीक कर रहा है जो कि प्रोग्राम द्वारा उपयोग नहीं किया जा रहा था। एक जानबूझकर डिजाइन दोष हो सकता है? यह बताना लगभग असंभव है।


क्या एनएसए को सूचना भेजने के लिए एक साइड चैनल को किसी प्रकार के ट्रांसमीटर की आवश्यकता नहीं होगी? अन्यथा मैं निश्चित रूप से किसी को अपने लैपटॉप पर पावर रेल करंट को मापने के लिए नोटिस करूंगा, जबकि मैं इस पर काम कर रहा हूं।
दिमित्री ग्रिगोरीव

24

क्या ऐसी तकनीकें हैं जो एक इलेक्ट्रिकल इंजीनियर यह सत्यापित करने के लिए उपयोग कर सकता है कि वास्तव में एक सर्किट अपने ऑपरेशन में वर्णित संचालन करता है, और कोई अन्य संचालन नहीं करता है?

सिद्धांत रूप में, हां, मुझे लगता है कि यह संभव है। हालांकि, एक जटिल सीपीयू के लिए बहुत समय और पैसा लगेगा। इसके अलावा, यदि आप डिज़ाइन को पूरी तरह से नहीं जानते और समझते हैं, तो आप यह निर्धारित करने में असमर्थ होंगे कि कोई गतिविधि "वैध" है या नहीं।

एक सीपीयू एक "डिजिटल" एक जटिल डिजिटल सर्किट है जिसमें कई लॉजिक सेल होते हैं।

चिप को रिवर्स करना और धातु कनेक्शनों को देखकर डिजाइन को फिर से बनाना संभव है । इनमें से कई कनेक्शन लेयर हो सकते हैं जैसे 8 लेयर्स या अधिक।

आपको तर्क कोशिकाओं को पहचानने के लिए क्षेत्र में विशेषज्ञों की आवश्यकता होगी और फिर कुछ सॉफ्टवेयर यह पता लगा सकते हैं कि वे सभी कैसे जुड़े हैं ताकि आप नेटलिस्ट को फिर से संगठित कर सकें।

एक बार जब आप netlist आप डिजाइन "पता" है। इसका मतलब यह नहीं है कि अब आप यह भी जानते हैं कि यह कैसे काम करता है!

यह हो सकता है कि एक निश्चित फ़ंक्शन डिजाइन के 2 वर्गों को सक्रिय करता है जबकि आपको लगता है कि एक को पर्याप्त होना चाहिए ताकि आपको संदेह हो कि कुछ संदिग्ध गतिविधि चल रही है। हालांकि, डिज़ाइन कुछ चालाक चाल करता है जिनके बारे में आपको ऑपरेशन को गति देने के बारे में नहीं पता है।

डिजाइन को जानने और समझने के बिना, आपके द्वारा खींचा गया कोई भी निष्कर्ष अभी भी गलत हो सकता है। केवल उन्हीं इंजीनियरों ने सीपीयू को डिज़ाइन किया है जिनके पास सभी डिज़ाइन की जानकारी है और यह पता लगाने का सबसे अच्छा मौका है कि वास्तव में सीपीयू में क्या होना चाहिए या क्या होना चाहिए।


77
केवल जिन इंजीनियरों ने सीपीयू को डिज़ाइन किया है, वे सब कुछ जानते हैं जो आगे बढ़ता है - मैं इस उद्योग में काम करने वाला एक इंजीनियर होने के लिए होता हूं और मुझे इस कथन का आकलन एक बहुत ही आशावादी के रूप में करना है :)
यूजीन श।

18
नहीं, सीपीयू डिज़ाइनर्स को वह सब कुछ नहीं पता होगा जो उस स्तर पर डिज़ाइन संश्लेषण स्तर पर निर्भर करता है, और जो एचडीएल डिज़ाइन में परे व्यवहार को इंजेक्ट कर सकते हैं। एक गैर-नापाक उदाहरण लेने के लिए, कई FPGA उपकरण आपको एक तर्क विश्लेषक में संकलन करने देंगे।
क्रिस स्ट्रैटन

9
इंजीनियरिंग को उल्टा करें, "अरबों ट्रांजिस्टर" वाली एक चिप एक चुनौती पेश करेगी। स्पेक्ट्रम.ieee.org/semiconductors/processors/…
वोल्टेज स्पाइक

4
@Wilson क्योंकि जटिल सर्किट (सीपीयू सहित) में कई मालिकाना (और गुप्त, ट्रेडमार्कयुक्त / पेटेंट भी) डिजाइन होंगे जो आम जनता के लिए उपलब्ध नहीं हैं क्योंकि जो कंपनियां उन डिजाइनों का मालिक हैं, वे उनसे लाभ (पैसा कमाने) चाहते हैं। 6502 एक पुराना डिज़ाइन है , इसमें कोई मूल्यवान डिज़ाइन की जानकारी नहीं है इसलिए हाँ, यह पूरी तरह से खुला है और सभी के लिए उपलब्ध है।
बिम्पेल्रेककी

3
@ Bimpelrekkie: यदि वे पेटेंट कराए गए हैं, तो वे परिभाषा से गुप्त नहीं हैं। यह एक पेटेंट की बात है। आप एक अस्थायी एकाधिकार के लिए एक गुप्त व्यापार करते हैं।
MSalters

9

खैर, मेरा मानना ​​है कि कंप्यूटर प्रोग्रामर इस समस्या के बारे में कुछ नहीं कर सकते। लेकिन एक इलेक्ट्रिक इंजीनियर इस पर हमला कैसे करेगा?

वहाँ नहीं है पीछे के दरवाजे खोजने के लिए अच्छे तरीके , हार्डवेयर बैकडोर खोजने का एक तरीका संयोजन या अनिर्दिष्ट निर्देशों का परीक्षण करना होगा। यहां किसी ऐसे व्यक्ति की अच्छी बात है जो वास्तव में ऐसा करता है और x86 हार्डवेयर पर ऑडिट करता है । यह चिप को क्रैक किए बिना किया जा सकता है। इंटेल के साथ एक समस्या (मैं अन्य चिप्स के बारे में निश्चित नहीं हूं) यह वास्तव में एक प्रोसेसर है जिस पर लिनक्स चल रहा है, इसलिए कुछ प्रोसेसर पर सॉफ्टवेयर भी चल रहा है, और आपके पास उस तक पहुंच नहीं है।

क्या ऐसी तकनीकें हैं जो एक इलेक्ट्रिकल इंजीनियर यह सत्यापित करने के लिए उपयोग कर सकता है कि वास्तव में एक सर्किट अपने ऑपरेशन में वर्णित संचालन करता है, और कोई अन्य संचालन नहीं करता है?

कार्यक्षमता का परीक्षण करने के लिए हार्डवेयर का उपयोग करने के लिए परीक्षण करने के तरीके हैं। चूँकि x86 में इसके निर्देश सेट का एक अविभाजित भाग होता है, इसलिए सामान्य निर्देशों में बैकडोर को पेश करना असामान्य होगा क्योंकि यह बग्स की संभावना का परिचय देगा (जैसे कि अगर आप किसी ऐड या मल्टी इंस्ट्रक्शन में बैकडोर था), तो देखने के लिए पहला स्थान अनिर्दिष्ट निर्देशों में होगा।

यदि आपको निर्देशों को निष्पादित करने में लगने वाले समय को देखने के लिए नियमित निर्देशों की कार्यक्षमता का परीक्षण करने की आवश्यकता होती है, तो यह देखने के लिए निर्देश चलाने के लिए जितनी बिजली लगती है, उतनी मात्रा में देखें कि आप क्या अपेक्षा करते हैं।


3
मैं असहमत होऊंगा, यह असंभव नहीं है कि कोई ऐसा करेगा, लेकिन संभावना नहीं है। आपको एक ऐड इंस्ट्रक्शन की तरह एक नियमित निर्देश को बैकडोरेड करने की सुविधा देता है, और यदि आप एक अतिरिक्त निर्देश निष्पादित करते हैं, तो यह कहता है कि इसने एक बैकडोर खोला। फिर एक ग्राहक एक कार्यक्रम विकसित करता है जिसमें बिल्कुल उस संयोजन होता है, वे इस पर गौर करते हैं, पीछे के दरवाजे को ढूंढते हैं और हर कोई पागल हो जाता है और आप सुसाइड कर लेते हैं। अप्रत्यक्ष निर्देशों (या सीपीयू में निर्मित लिनक्स कंप्यूटर) में पिछले दरवाजे को रखने के लिए ज्यादा सुरक्षित
वोल्टेज स्पाइक

4
IME मिनिक्स चलाता है जो लिनक्स नहीं है और बहुत छोटा और सरल है। लिनक्स मिनिक्स के अस्तित्व से प्रेरित था और मूल रूप से इसकी फाइल सिस्टम का उपयोग किया गया था और इसकी न्यूजग्रुप पर घोषणा की गई थी, लेकिन वे तब काफी अलग थे और अब बहुत हैं।
क्रिस स्ट्रैटन

5
@ user14717 - बुरा संभावना एक जेल में बंद देशी निष्पादन में किसी ट्रिगर अनुक्रम, मूल क्लाइंट की तरह कुछ होगा। लेकिन इसका कोई कारण नहीं है कि इसे कोड होना चाहिए और डेटा नहीं ।
क्रिस स्ट्रैटन

5
@ laptop2d बग्स जहां सीपीयू वह नहीं करते हैं, जो निर्देश सेट के सैद्धांतिक प्रलेखन को हर समय कहते हैं ; किसी पर मुकदमा नहीं चलता, आमतौर पर: इंटेल 7 वीं जीन कोर i7 परिवार डॉक्टर अपडेट में इरेटा अनुभाग पढ़ें , उदाहरण के लिए। एक अनिर्दिष्ट अनुदेश का उपयोग करना तुरंत किसी भी मैलवेयर शोधकर्ता के अलार्म को ध्वनि देगा। सही इंटर-रजिस्टर MOV के साथ लयबद्ध ADDs के एक असामान्य संयोजन का उपयोग करने से किसी भी अलार्म को ट्रिगर करने की संभावना कम होती है।
मार्कस मूलर

6
@ laptop2d मैं "सीपीयू के भीतर एम्बेडेड लिनक्स" बयान से स्तब्ध था। इसलिए मैंने थोड़ा शोध किया, मुझे लगता है कि आप इंटेल एमई इंजन के बारे में बात करते हैं। ठीक है, यह सीपीयू पर ही नहीं चलता है, लेकिन उत्तरी पुल चिपसेट पर। ऐसा लगता है कि के बारे में गलत सूचना का एक बहुत कुछ किया गया है, को देखने के itsfoss.com/fact-intel-minix-case
मंद

6

एकमात्र तरीका यह होगा कि चिप लेयर को लेयर द्वारा नीचे खींचा जाए और हर ट्रांजिस्टर को एक इलेक्ट्रॉन माइक्रोस्कोप के साथ रिकॉर्ड किया जाए, और फिर किसी तरह के सिमुलेशन प्रोग्राम में प्रवेश करें और फिर उसे चलाएं।

यह अनिवार्य रूप से ब्लैक बॉक्स समस्या है जिसमें आप इनपुट और आउटपुट को मापने से आंतरिक को पुन: प्रयास करते हैं और पुन: व्यवस्थित करते हैं। एक बार जब आंतरिक की जटिलता, या I / O की संख्या, तुच्छ से परे हो जाती है तो एक दहनशील विस्फोट होता है जहां संभव आंतरिक राज्यों की संख्या खगोलीय हो जाती है। जहां गोगोल जैसे नंबर के बारे में फेंक दिया जाता है।


2
... और सोशल इंजीनियरिंग का उपयोग करके डिजाइन चोरी करना आसान है :)
यूजीन श।

8
नहीं, यहाँ गलती यह है कि अनुकरण पर्याप्त नहीं होगा। यहां तक ​​कि अगर आपको एक सटीक सिमुलेशन मॉडल दिया गया था , तो आप अभी भी ध्यान से छिपे हुए व्यवहार को खोजने में सक्षम नहीं होंगे, क्योंकि आपको पता नहीं है कि इसे कैसे ट्रिगर किया जाए।
क्रिस स्ट्रैटन

4
@ChrisStratton मुझे लगता है कि गलती फोन नहीं होगा स्पष्ट । यह एक उचित धारणा है कि डिजाइन सरलीकरण करने पर आधारित था जो शारीरिक रूप से सामान्य होता है, जैसे कि आप दो धातुकरण निशान को एक साथ इतने करीब नहीं लगाते हैं कि वे एक MOSFET गेट की स्थिति को बदलने के लिए व्यावहारिक रूप से जोड़े। यह केवल एक गलती है अगर ए) आपके सरलीकरण डिजाइनर के उपयोग या ख के भौतिक मॉडल से मेल नहीं खाते हैं) डिजाइनर जानबूझकर गैर-स्पष्ट तरीकों से इन सरलीकरणों के लिए जानबूझकर आवश्यकताओं को तोड़कर कुछ छिपा रहा है।
मार्कस मूलर

7
@ChrisStratton आह, क्षमा करें, ठीक है, मुझे लगता है कि अब मुझे आपकी बात मिल रही है। आप कहते हैं कि यहां तक ​​कि सीपीयू के डिजिटल / व्यवहार वाले क्लॉक मॉडल उन मामलों को छिपाने के लिए पर्याप्त जटिल हैं जहां प्रोग्रामर की समझ / धारणा बस लागू नहीं होती है। यह सच है। एक विशेष रूप से विस्तार करने के लिए स्पेकटर पर जाने वाले प्रभावों का दस्तावेजीकरण किया जा सकता है, और अधिकांश लोगों ने डेटा-या प्रोग्राम प्रवाह-प्रासंगिक दुष्प्रभावों के लिए कैशिंग के बारे में कभी नहीं सोचा होगा। वास्तव में!
मार्कस मुलर

3
धन्यवाद :) आपका तर्क आईएसएएस की शुद्धता के औपचारिक सत्यापन के पूरे विषय को वापस लाता है ("क्या यह आईएसए वास्तव में गारंटी देता है कि एक कंप्लेंट सीपीयू रिंग को 0 विशेषाधिकार रहित कोड को स्वीकार नहीं करता है?") और एचडीएल / के औपचारिक सत्यापन का। ऐसे ISA विनिर्देशों के खिलाफ RTL (मुझे यह विशेष रूप से RISC-V CPU कोर सत्यापन परियोजना पसंद है।)
मार्कस मुलर

5

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

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


5

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

बिना डेटा ट्रांसमिशन वाले RNG पर आधारित एक पिछले दरवाजे की बहुत सीमित उपयोगिता होगी। जब तक सीपीयू आरएनजी एकमात्र एंट्रॉपी स्रोत नहीं है, संभावना है कि इस तरह के पिछले दरवाजे हमलावर को कोई लाभ प्रदान करेंगे, जबकि एक ही समय में स्पष्ट नहीं होना व्यावहारिक रूप से शून्य है । जब तक आप इस बात पर जोर नहीं देते कि रसेल का चायदानी मौजूद नहीं है, तब तक मौजूद रहने का कोई कारण नहीं होने के बावजूद, आपको हार्डवेयर RNG बैकडोर में वही तर्क लागू करने में सक्षम होना चाहिए।


5
तो आप मानते हैं कि हार्डवेयर ट्रोजन हॉर्स को बनाने और छिपाने के लिए विरोधी के पास समय, पैसा और कौशल है, लेकिन पहली बात वे टेलनेट www.nsa.gov है? यह बहुत भोली बात की तरह लगता है।
इलियट एल्डरसन

1
यदि NSA ने भेद्यता छिपाई होती है, तो हाँ वे उम्मीद करेंगे कि लोग इसका उपयोग करें rdrandया rdseedजैसा कि इंटेल ने सुझाव दिया है: एक PRNG बीज के लिए एकमात्र एंट्रोपी स्रोत के रूप में। लिनक्स (कर्नेल) ने ऐसा करने के लिए नहीं चुना /dev/random, लेकिन glibc / libstdc ++ का करंट std::random_device करता है उपयोग केवल rdrandतभी किया जाता है जब वह खोलने के बजाय रनटाइम पर उपलब्ध हो/dev/randomगॉडबोल्ट के साथ मानक लाइब्रेरी कॉल में कदम
पीटर

@ इलियट एल्डर्सन आपकी बात क्या है? कोई व्यक्ति मूल्यवान डेटा को कभी भी बिना कहीं प्रसारित किए कैसे चुरा सकता है?
दिमित्री ग्रिगोरीव

@PeterCordes std::random_deviceक्रिप्टोग्राफिक रूप से मजबूत RNG नहीं है। C ++ मानक आपको PRNG के साथ इसे लागू करने की अनुमति देता है, प्रभावी रूप से वापस लौटता है हर बार उसी क्रम को करता है , इसलिए यह काफी स्पष्ट है कि किसी को भी इसे एन्क्रिप्शन के लिए उपयोग नहीं करना चाहिए।
दिमित्री ग्रिगोरीव

ओह ठीक है, मैं भूल गया कि कोई गारंटी नहीं है कि यह किसी भी अच्छा है, एक्सडी। यह है कई कार्यान्वयन पर अच्छा है, लेकिन MinGW डिजाइन आशय है कि यह अच्छी गुणवत्ता यादृच्छिक संख्या के रूप में आप देता है के रूप में मंच के लिए सक्षम है, पुस्तकालय का मुख्य उद्देश्य को हराने के लिए असाधारण अपवाद नहीं है। (जो आप कहते हैं, वह है क्रिप्टो नहीं है , लेकिन अन्य प्रयोजनों के लिए PRNGs बोना)। ( मैं std के साथ हर रन के लिए एक ही अनुक्रम क्यों प्राप्त करूँ :: mingw gcc4.8.1 के साथ random_device। ) यह किसी भी एंट्रॉपी (न्यूनतम एम्बेडेड डिवाइस) के बिना एक मंच पर स्वीकार्य होगा, लेकिन x86 विंडोज पर नहीं!
पीटर कॉर्डेस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.