আমার কাছে এলিসের পাবলিক কী আছে। আমি এলিসকে একটি আরএসএ এনক্রিপ্ট করা বার্তা প্রেরণ করতে চাই। openssl
কমান্ডটি ব্যবহার করে এটি কীভাবে করব ?
বার্তাটি হ'ল:
হাই অ্যালিস! রাতের খাবারের জন্য malacpörkölt আনুন দয়া করে!
আমার কাছে এলিসের পাবলিক কী আছে। আমি এলিসকে একটি আরএসএ এনক্রিপ্ট করা বার্তা প্রেরণ করতে চাই। openssl
কমান্ডটি ব্যবহার করে এটি কীভাবে করব ?
বার্তাটি হ'ল:
হাই অ্যালিস! রাতের খাবারের জন্য malacpörkölt আনুন দয়া করে!
উত্তর:
ইন OpenSSL ম্যানুয়াল ( openssl
man পৃষ্ঠা), অনুসন্ধান RSA
, এবং আপনি দেখতে পাবেন RSA এনক্রিপশন জন্য কমান্ড যে rsautl
। তারপরে সিনট্যাক্সটি দেখতে rsautl
ম্যান পৃষ্ঠাটি পড়ুন ।
echo 'Hi Alice! Please bring malacpörkölt for dinner!' |
openssl rsautl -encrypt -pubin -inkey alice.pub >message.encrypted
ডিফল্ট প্যাডিং স্কিমটি মূল পিকেসিএস # 1 ভি 1.5 (এখনও অনেকগুলি প্রোকোটলগুলিতে ব্যবহৃত হয়); ওপেনসেল ওএইপি (এখন প্রস্তাবিত) এবং কাঁচা এনক্রিপশন (কেবলমাত্র বিশেষ পরিস্থিতিতে কার্যকর) সমর্থন করে।
মনে রাখবেন যে ওপেনসেল সরাসরি ব্যবহার করা বেশিরভাগ অনুশীলন। অনুশীলনে আপনি জিপিজি (যা আরএসএ ব্যবহার করে তবে বার্তাটি এনক্রিপ্ট করার জন্য সরাসরি নয়) এর মতো একটি সরঞ্জাম ব্যবহার করবেন ।
openssl
কমান্ড লাইন সরঞ্জামটি বিভিন্ন কমান্ডের মিশ্রণ। কিছু, বেশিরভাগই এমনটি যা শংসাপত্রগুলি হেরফের করে, কার্যকর হতে পারে তবে সঠিকভাবে ব্যবহার করা শক্ত কারণ তাদের বাক্য গঠন এবং পরামিতিগুলি স্পর্শকাতর। কিছু, যেমন ভাল rsautl
, তবে কার্যকর কার্যকারিতা সরবরাহ করে না, তারা কেবল কাঁচা ক্রিপ্টোগ্রাফিক আদিমতা প্রকাশ করে - উদাহরণস্বরূপ আরএসএ এনক্রিপশন হাইব্রিড এনক্রিপশনের জন্য একটি প্রতিসম কীটি এনক্রিপ্ট করার জন্য ব্যবহৃত হয়। কিছু, যেমন enc
, সুরক্ষিতভাবে ব্যবহার করা খুব শক্ত এবং তাদের অস্তিত্ব না থাকলে পৃথিবী আরও ভাল।
প্রথমত, আপনি যদি কেবল ভাল এনক্রিপশন চান তবে আপনার GnuPG- তে নজর রাখা উচিত । তবে যদি আপনার পরীক্ষা করা হয় এবং কেবল এটি কীভাবে কাজ করে তা শিখতে চান, আপনার আরএসএ কী তা বুঝতে হবে। আরএসএ কোনও স্বেচ্ছাচারী স্ট্রিং এনক্রিপ্ট করার জন্য ডিজাইন করা হয়নি, এটি একটি অ্যালগরিদম যা পূর্ণসংখ্যাকে এনক্রিপ্ট করে। বিশেষত, 0 থেকে n-1 পর্যন্ত একটি পূর্ণসংখ্যা যেখানে n হল সার্বজনীন কী থেকে মডুলাস মান। আপনি যখন একটি আরএসএ কী নিয়ে কথা বলেন যে এটি 1024 বিটস, এর অর্থ এটি বাইনারিতে মডিউলটি সংরক্ষণ করতে 1024 বিট লাগে। এটির অন্যতম কারণ, আরএসএ ডিইএস বা এএসএসের মতো একটি সিমেট্রিক কী সিফারের সাথে সংমিশ্রণে ব্যবহৃত হয়। আপনি AES এর জন্য একটি এলোমেলো 256 বিট কী তৈরি করতে পারেন এবং 1024 বিট আরএসএ পাবলিক কী দিয়ে সেই কীটি এনক্রিপ্ট করতে পারেন। তারপরে যে কেউ প্রাইভেট কীতে অ্যাক্সেস করেছেন সেগুলি প্রতিসম কীটি নিষ্কাশন করতে পারে এবং মেসেজটি এইএস দিয়ে ডিকোড করতে পারে। আরএসএর সম্পূর্ণ মানটিকে পিকেসিএস # 1 বলা হয়
তদ্ব্যতীত, ডিইএস এবং এইএস হ'ল ব্লক সাইফার। তারা কেবল একটি নির্দিষ্ট আকারের ব্লকে ডেটা এনক্রিপ্ট করে। ডিইএস 64-বিট ব্লক এবং এএস 128-বিট ব্লক ব্যবহার করে। একটি ব্লকের চেয়ে বেশি এনক্রিপ্ট করতে, আপনাকে অবশ্যই সিবিসি বা সিটিআর এর মতো মোড অফ অপারেশন ব্যবহার করতে হবে । এই মোডগুলি ব্লক মোড সাইফার ব্যবহার করে কীভাবে বিটের একটি স্ট্রিম এনক্রিপ্ট করতে হবে তা নির্দিষ্ট করে।
শেষ অবধি, আপনি যে ডেটা গ্রহণ করছেন তা যাচাই করা গুরুত্বপূর্ণ। যখন কোনও আক্রমণকারী ট্রানজিটে ডেটা পড়তে না পারে তবে ডেটা স্ট্রিমে যদি কোনও সততা বা সত্যতা প্রয়োগ না করা হয় তবে তিনি সনাক্ত না করে বিটগুলি ফ্লিপ করতে সক্ষম হতে পারেন। একটি আক্রমণকারী সহজেই অনুমান করতে পারে যে 443 পোর্টের সাথে একটি এসএসএল সংযোগ সম্ভবত একটি ওয়েবপৃষ্ঠার অনুরোধ যা শুরু হয়েছিল GET /
এবং তিনি PUT /
বাকী এনক্রিপশনটিতে হস্তক্ষেপ না করে এটিকে কিছুটা বদলে যেতে পারে । অখণ্ডতার কাছে একটি সহজ পদ্ধিতি হ'ল শেষে MD5 বা SHA-1 যোগ করা, তবে এটি কেবলমাত্র ডেটা অখণ্ডতা সরবরাহ করে, ডেটা সত্যতা নয়। ডেটা স্ট্রিমের সম্পূর্ণ জ্ঞান সহ যে কোনও একটি সঠিক পরিমাণ তৈরি করতে পারে, এইচএমএসি এর মতো কীড -হ্যাশ ব্যবহার করা আরও সুরক্ষিত পদ্ধতির যার জন্য সততা ছাড়াও ডেটার সত্যতা প্রদানের জন্য একটি গোপন কী সম্পর্কিত জ্ঞান প্রয়োজন।
নীচে, নোটটি আপনি যা যা চান অ্যালগরিদম নির্দিষ্ট করতে পারেন, এটি তালিকাবদ্ধ অথবা আরএসএ হোক (যদিও আমি ওপেনএসএসএল দ্বারা আরএসএর জন্য ব্যবহৃত সঠিক নামটি জানি না)
আপনার সিস্টেমে সমর্থিত সাইফারগুলির একটি তালিকা পেতে "ওপেনসেল এন-হেল্প" ব্যবহার করুন এবং এটি একটি আর্গুমেন্ট হিসাবে পাস করুন। যেমন, "-aes256"
আমার সিস্টেমে নোট করুন আমার বিকল্পগুলিতে আমার আরএসএ নেই - কমপক্ষে সেই নামে by
আমি কীভাবে এস / মাইম বার্তাটি এনক্রিপ্ট করব?
ধরা যাক যে কেউ আপনাকে তার সর্বজনীন শংসাপত্র প্রেরণ করে এবং আপনাকে তার কাছে কিছু বার্তা এনক্রিপ্ট করার অনুরোধ করে। আপনি তার শংসাপত্রটি তার- cert.pem হিসাবে সংরক্ষণ করেছেন। আপনি আপনার উত্তরটি my-message.txt হিসাবে সংরক্ষণ করেছেন।
ডিফল্টটি পেতে - যদিও মোটামুটি দুর্বল — আরসি 2-40 এনক্রিপশন, আপনি কেবল ওপেনএসএলকে জানান যেখানে বার্তা এবং শংসাপত্রটি অবস্থিত।
ওপেনএসএল স্মিমে her-cert.pem -encrypt -in আমার-message.txt
আপনি যদি নিশ্চিত হন যে আপনার দূরবর্তী সংবাদদাতার একটি শক্তিশালী এসএসএল টুলকিট রয়েছে তবে আপনি ট্রিপল ডিইএসের মতো শক্তিশালী এনক্রিপশন অ্যালগরিদম নির্দিষ্ট করতে পারেন:
ওপেনএসএল স্মিমে তার- cert.pem -encrypt -des3 -তে আমার বার্তা.txt
ডিফল্টরূপে, মেল শিরোনাম সহ এনক্রিপ্ট করা বার্তাটি স্ট্যান্ডার্ড আউটপুটে প্রেরণ করা হয়। এটিকে কোনও ফাইলে পুনর্নির্দেশ করতে আউট-আউট বিকল্প বা আপনার শেল ব্যবহার করুন। বা, অনেক কৌশলযুক্ত, প্রেরণকে সরাসরি প্রেরণমেলকে পাইপ করুন।
openssl smime her-cert.pem \
-encrypt \
-des3 \
-in my-message.txt \
-from 'Your Fullname <you@youraddress.com>' \
-to 'Her Fullname <her@heraddress.com>' \
-subject 'My encrypted reply' |\
sendmail her@heraddress.com
আমি কীভাবে একটি এস / মাইম বার্তা স্বাক্ষর করব?
আপনার যদি পুরো বার্তাটি এনক্রিপ্ট করার দরকার না পড়ে তবে আপনি এটিতে স্বাক্ষর করতে চান যাতে আপনার প্রাপক বার্তার সততা সম্পর্কে নিশ্চিত হতে পারে তবে রেসিপিটি এনক্রিপশনের অনুরূপ। মূল পার্থক্য হ'ল আপনার নিজের কী এবং শংসাপত্র থাকা দরকার কারণ আপনি প্রাপকের শংসাপত্রের সাথে কোনও কিছুতে সাইন করতে পারবেন না।
openssl smime \
-sign \
-signer /path/to/your-cert.pem \
-in my-message.txt \
-from 'Your Fullname <you@youraddress.com>' \
-to 'Her Fullname <her@heraddress.com>' \
-subject 'My signed reply' |\
sendmail her@heraddress.com
( http://www.madboa.com/geek/openssl/ থেকে )
(এর ... এই সমস্ত ব্যাকস্ল্যাশগুলি - এগুলি নতুন লাইনের হাত থেকে রক্ষা পাওয়ার কথা what's কী হচ্ছে তা নিশ্চিত নয়, কারণ এটি আমার সম্পাদনা বাক্সে এখানে দুর্দান্ত প্রদর্শিত হচ্ছে!
openssl enc
কারণ enc
এটি কেবলমাত্র প্রতিসম এনক্রিপশনের জন্য। হ্যাঁ, ওপেনসেলের বিকল্পগুলি খুব সুসংহত নয়। অ্যাসিমেট্রিক অ্যালগরিদমের নিজস্ব কমান্ড রয়েছে: rsa
/ dsa
/ dh
কী ম্যানিপুলেট করতে, rsautl
/ dsautl
এনক্রিপ্ট / ডিক্রিপ্ট / যাচাই / চিহ্ন, এবং genrsa
/ gendsa
/ gendh
কী উত্পন্ন করার জন্য।
openssl
?