এম্বেড থাকা ডিভাইসের স্মৃতিতে একটি সুরক্ষিত কী সঞ্চয় করা


10

আমি একটি এম্বেড থাকা ডিভাইসে কাজ করছি যা ডেটা প্রেরণ / গ্রহণ করে এবং তাদের সিফেরেক্সট মোডে (এনক্রিপ্ট করা মোড) সঞ্চিত করে। কীগুলি সংরক্ষণ করার জন্য এখন সেরা পদ্ধতির কী আছে (আমি এআরএম কর্টেক্স এম সিরিজ এমসিইউ ব্যবহার করেছি)?

এসআরএএম মেমরিতে এবং প্রতিটি বুটিং অনুক্রমের 1-টি সঞ্চয় করে এম্বেড এমসিইউতে কীগুলি ইনজেক্ট করুন এবং সেগুলিকে এসআরএএম মেমরিতে সংরক্ষণ করুন। আমি মনে করি এটি সবচেয়ে ভাল উপায়, তারপরে যখন এমসিইউ অনুভূতি প্রবেশ করে (টেম্পার সেন্সর বা ...) সহ এটি এসআরএএম দ্রুত মুছে ফেলা যায় এবং নিজেকে পুনরায় সেট করতে পারে। অসুবিধা: যদি আক্রমণকারী সফলভাবে টেম্পারগুলি পাস করে এবং ডিভাইসে অ্যাক্সেস করে তবে এসআরএএম মেমরিটি কতটা নিরাপদ (কোড খনির বিরুদ্ধে)। এমসিইউগুলিতে আমি এই স্মৃতিটির জন্য কোনও সুরক্ষার যোগ্যতা খুঁজে পাচ্ছি না।

2 জেনারেট কীগুলি এবং সেগুলি প্রোগ্রামিং এমসিইউতে ফ্ল্যাশ মেমরিতে সংরক্ষণ করে। এমসিইউ ফ্ল্যাশ মেমরির সমর্থন সিআরপি (কোড রিড সুরক্ষা) যা কোড মাইনিং থেকে বিরত থাকে এবং এর অভ্যন্তরীণ এইএস ইঞ্জিন এবং আরএনজি (র্যান্ডম সংখ্যা জেনারেশন) ইঞ্জিনের সহায়তায় আমরা একটি এলোমেলো কী তৈরি করতে পারি এবং ফ্ল্যাশ মেমরি এনক্রিপ্ট করতে পারি এবং সেই র্যান্ডম কীটি ওটিপিতে সংরক্ষণ করি ( এক সময় প্রোগ্রামযোগ্য মেমরি - একটি 128 বিট এনক্রিপ্ট করা মেমরি), তারপরে কোড প্রয়োগের ক্ষেত্রে আমরা আরএনজি কী দিয়ে ফ্ল্যাশ মেমরিটিকে ডিকোড করি এবং প্রাথমিক কী এবং কোডগুলিতে অ্যাক্সেস করি। অসুবিধা: চাবিগুলি একটি অ অস্থির মেমরিতে সঞ্চিত, টেম্পারগুলি অকেজো হয়ে যাবে এবং আক্রমণকারীদের খনি চাবিতে প্রচুর সময় থাকবে।

EEPROM মেমরির 3-সঞ্চিত কী, উপরোক্ত 2 পদ্ধতির সংমিশ্রণ, অ-উদ্বায়ী মেমরিতে কী সংরক্ষণ করা হয় তবে যখন টেম্পার্স অনুভূতি অনুপ্রবেশ EEPROM ক্ষয়যোগ্য হয়।

আমি LPC18S57FBD208 বিবেচনা করি (1MB ফ্ল্যাশ মেমরি সহ কর্টেক্স এম 3, 180MHZ, 136KB এসআরএম, 16 কেবি ইপ্রোম এবং একটি টিএফটি এলসিডি কন্ট্রোলার যার জন্য আমাকে 7 "টিএফটি এলসিডি এবং এএস 128 বিট ক্রিপ্টো ইঞ্জিন চালনা করতে হবে) এর জন্য আর কোনও ভাল পরামর্শ নেই?

উত্তর:


18

এই বিকল্পগুলির মধ্যে কোনওটিই অন্যদের চেয়ে বিশেষ ভাল বা খারাপ নয়, কারণ এগুলি সমস্তই খুব নিরাপদ। আমি বিকল্প 4 দিয়ে যাচ্ছি।

  1. এসআরএএম হ'ল কীগুলি সংরক্ষণের সবচেয়ে সুরক্ষিত জায়গা, তবে আপনাকে এগুলি কখনই বাইরের বিশ্ব থেকে ইনজেকশন করতে হবে না। বুট চলাকালীন তাদের অবশ্যই প্রসেসরের মধ্যে তৈরি করা উচিত। অন্য কিছু করা তাত্ক্ষণিকভাবে বাকিগুলিকে অকার্যকর করে দেয় - এটি স্বয়ংক্রিয়ভাবে নিরাপত্তাহীন।

  2. অবিচ্ছিন্ন মেমরিতে কীগুলি সংরক্ষণ করবেন না, আপনি এই বিষয়ে সঠিক। আপনি EEPROM বা ফ্ল্যাশ মেমরিটি পড়া থেকে রক্ষা করছেন তা বিবেচ্য নয়। এই কোড রিড প্রোটেকশন ফিউজ সহজেই বিপরীত হয়। একজন আক্রমণকারীকে কেবল ডিক্যাপের প্রয়োজন হয় (সিলিকন ডাইর ভিতরে প্রকাশের জন্য কালো ইপোক্সি প্যাকেজিং সরিয়ে ফেলুন বা রাসায়নিকভাবে ছোঁড়া)। এই মুহুর্তে, তারা ডাইয়ের অংশটি অবিভক্ত মেমরি কোষগুলি কভার করতে পারে (এই বিভাগগুলি খুব নিয়মিত এবং পৃথক মেমরি কোষগুলি দেখতে অনেক ছোট, বৃহত্তর কাঠামোটি হতে পারে) এবং কোনও কিছুর একটি ছোট টুকরা ইউভি থেকে অস্বচ্ছ এই অংশটি মুখোশযুক্ত। তারপরে আক্রমণকারী কেবল 5-10 মিনিটের জন্য চিপের উপরে একটি ইউভি আলো জ্বলতে পারে এবং সিআরপি ফিউজ সহ সমস্ত ফিউজ পুনরায় সেট করতে পারে। ওটিপি মেমরিটি এখন কোনও স্ট্যান্ডার্ড প্রোগ্রামার দ্বারা পড়তে পারে।

অথবা, যদি সেগুলি ভাল অর্থায়ন করা হয় (তবে বলুন যে, এই কীগুলি কারও কাছে $ 1000 এরও বেশি মূল্যবান), তারা কেবলমাত্র বিভিন্ন ধরণের ইলেক্ট্রন মাইক্রোস্কোপগুলি সহ সরাসরি মেমরি সেলগুলি পড়তে পারেন।

সুরক্ষিত হওয়ার জন্য, কীগুলি অবশ্যই গোপন করা উচিত নয়।

  1. না, উপরের একই কারণে।

এখন, বিকল্প 4 এ:

  1. শুধু এনক্রিপশন ব্যবহার করুন। কী বিতরণ একটি সমাধান সমস্যা। সুতরাং সহজেই উপলব্ধ সমাধান ব্যবহার করুন। চিপটিকে তার আরএনজি ব্যবহার করা উচিত এবং এটির জন্য এনট্রপি সরবরাহের পর্যাপ্ত সরবরাহ রয়েছে কিনা তা নিশ্চিত করার জন্য বুট লোডারকে প্রয়োজনীয় গোপন কী (গুলি) তৈরি করতে সরাসরি প্রোগ্রামে বুট করা উচিত, যা সাধারণ উদ্দেশ্যে হওয়া উচিত should নিবন্ধভুক্ত করে সরাসরি এসআরএমে সরানো হয়, যেখানে তারা মুছে না যাওয়া পর্যন্ত থাকবে।

তবে একটি সমস্যা আছে, যা হ'ল সিপিইউ ব্যতীত আর কোনও কিছুই গোপন কী কী তা সম্পর্কে কোনও ধারণা নেই। সমস্যা নেই: পাবলিক কী ক্রিপ্টোগ্রাফি ব্যবহার করুন। আপনি ওটিপি মেমরিতে যা সঞ্চয় করেছেন তা আপনার সর্বজনীন কী। এই কীটি যে কেউ পড়তে পারবেন, আপনি এটি স্ট্যাক এক্সচেঞ্জে পোস্ট করতে পারেন, এটি একটি তেল ট্যাংকারের পাশে 5 ফুট উঁচু অক্ষরে আঁকতে পারেন, এটি কোনও ব্যাপার নয়। সার্বজনীন কী ক্রিপ্টোগ্রাফি সম্পর্কে দুর্দান্ত জিনিসটি এটি অসম্পূর্ণ। কোনও কিছুর এনক্রিপ্ট করার কীটি এটি ডিক্রিপ্ট করতে পারে না, তার জন্য ব্যক্তিগত কী প্রয়োজন। এবং বিপরীতে, পাবলিক কী দ্বারা এনক্রিপ্ট করা কিছু ডিক্রিপ্ট করার কীটি কোনও কিছুর এনক্রিপ্ট করতে ব্যবহৃত হতে পারে। সুতরাং, সিপিইউ গোপন কী তৈরি করে, আপনার সঞ্চিত পাবলিক কীটি গোপন কীগুলি এনক্রিপিট করতে ব্যবহার করে এবং কেবল এটি ইউএসবি বা আরএস 232 বা আপনি যা চান তা প্রেরণ করে। গোপন কীটি পড়ার জন্য আপনার ব্যক্তিগত কী প্রয়োজন, যা সংরক্ষণের, প্রেরণ করা বা চিপের সাথে কখনও জড়িত হওয়া দরকার না। আপনার গোপন কীটি একবার আপনার ব্যক্তিগত কী (অন্য কোথাও, চিপের বাইরে) দিয়ে ডিক্রিপ্ট হয়ে গেলে আপনি সেট হয়ে যান। আপনার কাছে একটি সুরক্ষিতভাবে সঞ্চারিত গোপন কী আছে যা পুরোপুরি চিপের মধ্যে জেনারেটেড ছিল, পাবলিক কী ব্যতীত অন্য কোনও কিছু সংরক্ষণ না করে - যা আগেই বলা হয়েছে, পড়া থেকে মোটেও সুরক্ষিত হওয়া দরকার না।

এই প্রক্রিয়াটিকে আনুষ্ঠানিকভাবে মূল আলোচনার বলা হয় এবং প্রতিটি জিনিস এটি ব্যবহার করে। আপনি আজ এটি বেশ কয়েকবার ব্যবহার করেছেন। এটি পরিচালনা করার জন্য প্রচুর সংস্থান এবং গ্রন্থাগার রয়েছে। দয়া করে, কোনও কিতে কখনই 'ইনজেকশন' কী করবেন না।

একটি শেষ কথা উল্লেখ করতে হবে: এগুলি সবই হ'ল কারণ এইএস কী সহজেই সাইড চ্যানেল আক্রমণগুলি ব্যবহার করে পুনরুদ্ধার করা যায় যা বিদ্যুৎ সরবরাহে বসে এবং বর্তমান ড্রয়ের মিনিটের পরিবর্তনগুলি এবং সিপিইউতে বিটস ফ্লিপ হওয়ার ফলে ঘটে যাওয়া পরিবর্তনের মধ্যে সময় নির্ধারণ করে নিবন্ধ হিসাবে। এটি, কীভাবে এইএস (বা সম্ভাব্য এনক্রিপশন অ্যালগরিদমের যে কোনও ছোট সেট যা ব্যবহার করতে পারে) কীভাবে কাজ করে তার জ্ঞানের সাথে মিলিয়ে কীটি পুনরুদ্ধার করা তুলনামূলকভাবে সহজ এবং সাশ্রয়ী করে তোলে। এটি কীটি পড়ার অনুমতি দিবে না, তবে এটি 255 টি সম্ভাব্য কীগুলির মতো কী স্থানটিকে হাস্যকর আকারে ছোট করে তুলবে। চিপ এটি সনাক্ত করতে পারে না, যেহেতু এটি প্রবাহিত।

এটি 'নিরাপদ' ক্রিপ্টো প্রসেসরের AES-256 এনক্রিপ্ট হওয়া বুট লোডারকে পরাজিত করেছে এবং এটি এতটা কঠিনও নয়। আমি যতদূর জানি, এই আক্রমণটির কোনও সঠিক হার্ডওয়্যার কাউন্টার ব্যবস্থা নেই। তবে এটি নিজেরাই এনক্রিপশন অ্যালগরিদম এবং কীভাবে তাদের বিপিগুলি ফ্লিপ করতে সিপিইউ প্রয়োজন, যা এই দুর্বলতার কারণ হয়ে উঠছে causing আমি সন্দেহ করি যে সাইড-চ্যানেল প্রতিরোধী বা সাইড-চ্যানেল প্রুফ অ্যালগরিদমগুলি বিকাশ করা হবে (এবং আশা করি) হওয়া দরকার।

এখনই যেমন দাঁড়িয়ে আছে, এম্বেড থাকা ডিভাইসে কী কী (বা এমনকি কেবল একটি অস্থায়ী কী ব্যবহার করা যায়) কীভাবে সংরক্ষণ করা যায় তার আসল উত্তর: আপনি পারবেন না।

তবে অন্তত যদি আপনি বিকল্প 4-তে মূল আলোচনার সাহায্যে প্রতিবার একটি নতুন কী তৈরি করেন তবে সাইড চ্যানেল আক্রমণ কেবলমাত্র ব্যবহার-করা চ্যানেলের চাবিতে আপস করতে পারে এবং কেবলমাত্র ডেটা এনক্রিপ্ট করার সময় তাদের যদি বিদ্যুৎ নিরীক্ষণ করতে কিছু সময় থাকে । যদি আপনি প্রায়শই অভ্যন্তরীণভাবে উত্পন্ন নতুন কীগুলি নিয়ে আলোচনা করেন তবে এটি কার্যকর পরিমাণে সুরক্ষা বহন করতে পারে।

কী তৈরি করুন এবং এগুলি যথাসম্ভব স্বল্প সময়ের জন্য সঞ্চয় করুন।


আমাকে পরিষ্কার করার জন্য প্রিয় মেটাকলিনকে সত্যিই ধন্যবাদ। তবে আমার প্রকল্পে অনেক পাঠক (এমসিইউ ধারণ করে) এবং অনেক লক্ষ্য এমসিইউ নিয়ে গঠিত, প্রতিটি পাঠক অবশ্যই লক্ষ্যবস্তুগুলির যে কোনও একটি পড়তে সক্ষম হতে হবে এবং লক্ষ্যগুলি যে কোনও একটি অবশ্যই পাঠকগুলির দ্বারা পড়তে সক্ষম হবে B কারণ এর মধ্যে আমি মনে করি তাদের অবশ্যই ডেটা পরিবহনের জন্য একটি অনন্য কী দিয়ে একমত হতে হবে। এবং আপনার উত্তরের ভিত্তিতে আমি মনে করি তবে LPC18S57 সুরক্ষিত কর্টেক্স এম 3 এবং এসটিএম 32 এফ 429 সাধারণ কর্টেক্স এম 4 এবং এমনকি এলপিসি 1788 জেনারেল কর্টেক্স এম 3 (সস্তা পছন্দ) এর মধ্যে এতটা পার্থক্য নেই, আমি শীর্ষ গোপন প্রকল্প করছি না তবে আমি করতে চাই এটি আমার পক্ষে যতটা নিরাপদ।
মাহমুদ হোসেইনিপুর

2
আপনার বক্তব্য যে "এইএস কী সহজেই পুনরুদ্ধার করা যায়" কমপক্ষে সন্দেহজনক। প্রসেসরে তার বর্তমান ব্যবহারের উপর ভিত্তি করে কী ঘটে তা অনুসন্ধান করার কৌশলটির পিছনে নীতিটি আমি বুঝতে পারি। তবে এটি ধরে নিয়েছে যে সিপিইউ কাজ করছে এমন একমাত্র এনক্রিপশন এবং ডিক্রিপশন। তবে বেশিরভাগ অ্যাপ্লিকেশনটিতে কেবলমাত্র 1 সিপিইউ থাকে যা একই সময়ে বিভিন্ন কাজগুলিতে কাজ করে। একটি ব্লকের মধ্যে এইএস এনক্রিপশন দশক বা শত শত বাধা দেখা দিতে পারে যা বর্তমান শিখরের উপর ভিত্তি করে কীটি খুঁজে পাওয়া অসম্ভব করে তোলে।
বকসসা 83

2
কীটি যদি ফ্ল্যাশে সংরক্ষণ করা না যায় তবে কীটি উত্পন্ন করার কোডটি একই হয় ... কেবল কোডটি এসেম্বলারের জন্য অনুবাদ করতে হবে এবং তারপরে আপনার কী রয়েছে, কোডটি যতই জটিল না কেন।
লুন্ডিন

The wonderful thing about private key cryptography is that it is asymmetric. যদিও এটি আপনার পোস্ট থেকে স্পষ্ট হয়েছে যে আপনি এটি জানেন, আমি এটি অন্য পাঠকদের জন্য উল্লেখ করব ... s / বেসরকারী / পাবলিক উপরের উদ্ধৃতিতে।
Radian

আপনি পদ্ধতি 4 ব্যবহার করে যে কোনও দুটি ডিভাইসের মধ্যে একটি চ্যানেল সুরক্ষিত করতে সক্ষম হতে পারেন, তবে কিছু ভাগ ভাগের গোপনীয়তা ছাড়াই আপনি যে ডিভাইসের সাথে কথা বলছেন তার সত্যতা গ্যারান্টি দিতে পারবেন না। যদি আপনার ব্যবহারের ক্ষেত্রে প্রমাণীকরণের প্রয়োজন হয়, আপনি কেবল ফ্ল্যাশটিতে একটি একক ভাগ করা গোপনীয়তা সঞ্চিত রাখলে আপনার চেয়ে কী কী এক্সচেঞ্জের চেয়ে ভাল। আপনার যদি আরও ভাল সুরক্ষা প্রয়োজন হয় তবে একটি ক্রিপ্টো চিপ ব্যবহার করা উচিত।
গ্রেগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.