ক্রিপ্টোগ্রাফি পাবলিক ও প্রাইভেট-কি?

Moderators: kayum, Mramushi

Forum rules
English language is forbidden on this local forum!

You only need to talk about cryptocurrency or you will be banned from the forum and lose your wallet !!

আপনি শুধুমাত্র cryptocurrency সম্পর্কে কথা বলতে হবে বা আপনার ফোরাম থেকে নিষিদ্ধ করা হবে এবং আপনার ওয়ালেট হারান !!

Forum to ask questions ... Forbidden copied / pasted texts !!
Post Reply
Ledger Nano S - The secure hardware wallet
User avatar

Topic author
Imon18
BabyUnicorn
BabyUnicorn
Posts: 130
Joined: 16 Feb 2018, 09:01
Cash on hand: 214.72
Has thanked: 5 times
Been thanked: 6 times
Contact:
Bangladesh

#32542

26 Mar 2018, 10:25

ক্রিপ্টোগ্রাফির প্রতি সব সময়েই আগ্রহ ছিল। বিশেষ করে public key, private key জিনিসগুলো কিভাবে কাজ করে জানার ইচ্ছা ছিল। তাই যতটুকু জানি তা শেয়ার করার চেষ্টা করলাম।

ক্রিপ্টোগ্রাফি কী?

আমরা অনেকেই কিন্তু ছোটবেলায় ক্রিপ্টোগ্রাফার ছিলাম। ছোটবেলায় কি কাউকে এমন চিঠি লিখেছেন?

Image

এরকম না হলেও কাছাকাছি নিশ্চয় লিখেছেন ;)

আচ্ছা! যারা লিখেন নি তাদের জন্য। এখানে প্রতি লেটারের জন্য পরের লেটার নেয়া হয়েছে। প্রতি লেটারের সাথে এক যোগ করা হয়েছে বলা যায়। এটা থেকে আসল টেক্সট পেতে হলে প্রতি লেটারের জন্য আগের লেটার নিতে হবে।

অর্থাৎ এক বিয়োগ করতে হবে। এইভাবে যে কোন মেসেজ encrypt করা সম্ভব। এখন ১ যোগ না করে ১ থেকে ২৫ এর মধ্যে যেকোন সংখ্যা যোগ করা যেত। যোগ করে যদি ২৬ এর বেশি হয়ে যায় তাহলে ২৬ এর ভাগশেষ বা মড(modulus) নিতে হবে। তাহলে Z এর পরে আবার A থেকে শুরু হবে।

এখনে আমরা যে সংখ্যাটি যোগ করছি সেটিকে বলা হয় ‍ key বা চাবি। যদি key জানা থাকে তাহলে আমরা ‘সাইফার টেক্সট ডিক্রিপ্ট করে প্লেইন টেক্সট(plain text)পেতে পারি।

এই এনক্রিপশনের পদ্ধতি সিজার সাইফার (Caesar cipher) হিসেবে পরিচিত। এটা খুবই দুর্বল। কেননা সম্ভাব্য কি সংখ্যা মাত্র ২৫। কেন? কারণ যদি key হিসেবে ২৬ নেই তাহলে ২৬ যোগ করে মড ২৬ নিলে একই লেটার আসবে।

তাহলে দেখা যাচ্ছে ২৬ নেয়া আর ০ নেয়ে একই কথা। আবার ২৭ নেয়া আর ১ নেয়া একই কথা। যে key ই ব্যবহার করি না কেন, ২৫ টি key ট্রাই করেই ডিক্রিপ্ট করে ফেলা যাবে।

সিজার সাইফার থেকে শক্তিশালী অনেক সাইফার আছে যেগুলোতে সম্ভাব্য কি সংখ্যা অনেক বেশি হয়। অনেকগুলোতে এমন বেশি হয় যে কম্পিউটারেও একটা একটা key ট্রাই করে এনক্রিপশন ভাঙ্গা যায় না।

সেগুলোতে ‘যোগ করে মড’ সিম্পল ফর্মুলা না ব্যবহার করে ভিন্ন ফর্মুলা ব্যবহার করা হয়। সেগুলোরও নিজস্ব দুর্বলতা আছে। কিছু ভাঙ্গা যায় আবার কিছু ভাঙ্গা মোটামুটি অসম্ভব। বিস্তারিত জানতে হলে বইটি পড়ে ফেলতে হবে।

পাবলিক কী এনক্রিপশন কি?

এতক্ষণ যে ধরণের এনক্রিপশনের কথা বললাম সেগুলো যত শক্তিশালী ই হোক না কেন একটা সমস্যা থেকেই যায়। সেটা হল যে key দিয়ে এনক্রিপ্ট করা হল সে key দিয়েই ডিক্রিপ্ট করতে হয়।

এখন আপনি কারো সাথে গোপনে যোগাযোগ করতে চান, তাহলে আগে দুজনে key বিনিময় করতে হবে। এখন আপনাদের মেসেজ অন্য কারো হাতে চলে যাওয়ার সম্ভাবনা যদি থাকে তাহলে key বিনিময় করবেন কিভাবে ?

যোগাযোগ শুরু করার আগে প্রথমে key পাঠিয়ে নিলেন, হ্যাকারের কাছে key চলে গেল। এখন বাকি মেসেজগুলা তো আর এনক্রিপ্ট করার কোন মানে হয় না। এই জায়গায় আসে পাবলিক key এনক্রিপশন।

Public key এনক্রিপশনে একটি key এর বদলে এক জোড়া key থাকে। একটা পাবলিক(public) আরেকটা প্রাইভেট(private)। এগু‌লোর বৈশিষ্ট্য এমন যে একটা দিয়ে এনক্রিপ্ট করলে কেবলমাত্র অন্যটা দিয়ে ডিক্রিপ্ট করা যায়।

তাহলে প্রবলেম solved. কারো সাথে যোগাযোগ করতে চাইলে তাকে আপনার পাবলিক key পাঠিয়ে দিন। সেটা হ্যাকারের কাছে গেলে যাক, কোন সমস্যা নেই। সে আপনার পাবলিক key দিয়ে এনক্রিপ্ট করে আপনাকে মেসেজ পাঠাবে।

সেই মেসেজ কেবলমাত্র আপনার প্রাইভেট key দিয়েই ডিক্রিপ্ট করা যাবে, যেটি শুধু আপনার কাছেই আছে। তাহলে সেই মেসেজ আপনি ছাড়া কেউ ডিক্রিপ্ট করতে পারবে না।

যেভাবে কাজ করে?

পাবলিক কী এনক্রিপশনের জন্য বিভিন্ন রকম এলগরিদম আছে। তার মধ্যে RSA অন্যতম। RSA কিভাবে কাজ করে একটু লেখার চেষ্টা করব।

প্রথম স্টেপে এক জোড়া key জেনারেট করতে হবে। এজন্য প্রথমে দুটি বড় random prime number p ও q নেয়া হয়। কত বড় ? একশত ডিজিটের উপরে। অবাক হওয়ার কিছু নেই।

মিলার র‍্যাবিন এ্যালগরিদম ব্যাবহার করে এমন বড় প্রাইম নাম্বার জেনারেট করা যায়। তারপর তাদের গুণ করে গুণফল n বের করা হয়। এখন আরেকটি বড় এবং র‍্যান্ডম নাম্বার e জেনারেট করা হয় যেটি (p-1)*(q-1) এর সাথে কো প্রাইম। তারপরে e এর মডিউলার ইনভার্স d বের করা হয়।

এখন n ও e মিলিতভাবে পাবলিক কি হিসেবে কাজ করে আর n ও d প্রাইভেট কি হিসেবে কাজ করে।

Key জেনারেট করা হল। এবার এনক্রিপ্ট করতে হবে। এখন বলে রাখা ভাল যে এখানে ক্যারেক্টার বাই ক্যারেক্টার এনক্রিপ্ট করা হয় না। বরং প্লেইন টেক্সকে প্রথমে ইন্টিজার ব্লকে পরিণত করা হয়।

অর্থাৎ টেক্সটকে বড় বড় ইন্টিজারে এনকোড করা হয়। যেমন “Hello World!” হয়ে যায় 1033441003260674863333142663। এভাবে পুরো মেসেজকে কিছু সংখ্যক বড় ইন্টিজারে পরিণত করা যায়। এই প্রসেসে কোন key ব্যবহার করা হয় না।

তার মানে ইন্টিজারগুলো ডিকোড করে আবার সহজেই কোন key ছাড়াই আসল মেসেজ পাওয়া যাবে। প্রসেসটি বিস্তারিত লিখলাম না। তবে ব্যাপারটা তেমন জটিল না।

তারপর সেই ইন্টিজারগুলোকে এনক্রিপ্ট করা হয়। এনক্রিপ্ট করার ফর্মুলা হল:

ciphertext = (plaintext ^ e) mod n

এই ফর্মুলা ব্যবহার করে প্রতিটি plaintext ইন্টিজারের জন্য এনক্রিপ্টেড ciphertext ইন্টিজার পাওয়া যাবে। এই ইন্টিজারগুলোই এনক্রিপ্টেড মেসেজ। এখন এই ciphertext থেকে আবার আগের ইন্টিজারগুলো পেতে এই ফর্মুলা ব্যবহার করতে হবে:

plaintext = (ciphertext ^ d) mod n

এখন এই ইন্টিজারগুলো ডিকোড করে আসল মেসেজ পাওয়া যাবে।

এখন এই দুটি ফর্মুলা কেন কাজ সেটা কিন্তু আমাকে জিজ্ঞেস করে লাভ নেই। কারন আমি নিজেও বুঝি না। জস্ট মনে করুন নাম্বার থিওরির ম্যাজিক।

একটি মজার ব্যাপার হল নব্বই এর দশকের প্রথম দিকে আমেরিকাতে স্ট্রং ক্রিপ্টোগ্রফি মিসাইল-ট্যাংকের মতই মিলিটারি ইকুইপমেন্ট হিসেবে দেখা হত। এই আর্টিকেল নিয়ে যদি কেউ টাইম ট্রাভেল করে ঐ সময়ের আমেরিকাতে যান তাহলে কিন্তু জেলে যাওয়ার ভাল সম্ভাবনা আছে। সাবধান করে দিলাম। ‌

ডিজিটাল সিগনেচার কি?

মনে করুন আপনি কাউকে একটি ডকুমেন্ট পাঠাবেন। কিভাবে নিশ্চিত করবেন সেটি প্রাপকের কাছে যাওয়ার মাঝ পথে কেউ চেন্জ করে দেয়নি? প্রথমে ডকুমেন্টটির হ্যাশ জেনারেট করবেন।

তারপর সেই হ্যাশ আপনার প্রাইভেট কি দিয়ে এনক্রিপ্ট করে ডকুমেন্টের সাথে এটাচ করে দেবেন। এখন সেই ডকুমেন্ট যে যেখানেই পাক, যাচাই করতে পারবে সেটি সিগনেচারের পর চেন্জ হয়েছে কিনা বা সিগনেচার জেনুইন কিনা।

কিভাবে? সে আপনার পাবলিক কি দিয়ে এনক্রিপ্টেড হ্যাশ ডিক্রিপ্ট করবে। তারপর ডকুমেন্টের হ্যাশ জেনারেট করে মিলিয়ে দেখবে। যদি মিলে যায় তাহলে সব ঠিক। যদি না মিলে তাহলে দুইটা ব্যাপার হতে পারে।

হয় ফাইলটি সিগনেচারের পরে কেউ চেন্জ করেছে নয়ত হ্যাশটি অন্য কারো প্রাইভেট কি দিয়ে এনক্রিপ্ট করা হয়েছে, অর্থাৎ সিগনেচার জেনুইন নয়।

আমরা যখন ইন্টারনেট ব্যবহার করি তখন এই ব্যাপারগুলো কিন্তু প্রতি মুহূর্তেই ঘটে চলে। যদিও আমাদের এসব নিয়ে মাথা ঘামাতে হয় না। ব্যাপারগুলো আরো জানতে কিংবা পাইথন দিয়ে জিনিসগুলো ইমপ্লিমেন্ট করতে চাইলে বইটি পড়ে ফেলতে হবে।

লেখাটি বেশ আগের। আজকে আবার নজরে পড়াতে একটু ঘষামাজা করে এই ফোরামে দিলাম। ভুল ত্রুটি থাকলে দয়া করে ধরিয়ে দেবেন। ধন্যবাদ।
These users thanked the author Imon18 for the post:
Akash206 (27 Mar 2018, 15:14)
Rating: 3.57%


User avatar

Rafiq123
BabyUnicorn
BabyUnicorn
Posts: 52
Joined: 19 Mar 2018, 17:24
Cash on hand: 40,967.72
Has thanked: 27 times
Been thanked: 4 times
Bangladesh

#32573

26 Mar 2018, 12:12

আপনি অনেক সুন্দরভাবে পোস্টটি উপস্থাপন করসেন। ভালো লাগলো।আসা করবো এমন জ্ঞানমূলক পোস্ট সামনে আরো পাবো।

[ Post made via Android ]

User avatar

Topic author
Imon18
BabyUnicorn
BabyUnicorn
Posts: 130
Joined: 16 Feb 2018, 09:01
Cash on hand: 214.72
Has thanked: 5 times
Been thanked: 6 times
Contact:
Bangladesh

#32580

26 Mar 2018, 12:34

Rafiq123 wrote:
26 Mar 2018, 12:12
আপনি অনেক সুন্দরভাবে পোস্টটি উপস্থাপন করসেন। ভালো লাগলো।আসা করবো এমন জ্ঞানমূলক পোস্ট সামনে আরো পাবো।
ধন্যবাদ আপনার সুন্দর কমেন্টের হন্য। আমি আমার সাধ্য মত আপনাদের পচ্ছন্দ অনুযায়ী পোষ্ট করার চেষ্টা করবো।
User avatar

kayum
Moderator
Moderator
Posts: 241
Joined: 19 Jan 2018, 10:07
Cash on hand: 2,794.00
Bank: 3,888.90
Has thanked: 5 times
Been thanked: 13 times
Bangladesh

#32592

26 Mar 2018, 13:30

পোস্ট বেশি বড় করবেন না। নাহলে warning খাবেন ভাই

[ Post made via Android ]
User avatar

Topic author
Imon18
BabyUnicorn
BabyUnicorn
Posts: 130
Joined: 16 Feb 2018, 09:01
Cash on hand: 214.72
Has thanked: 5 times
Been thanked: 6 times
Contact:
Bangladesh

#32659

26 Mar 2018, 18:24

kayum705 wrote:
26 Mar 2018, 13:30
পোস্ট বেশি বড় করবেন না। নাহলে warning খাবেন ভাই
আচ্ছা ভাই। কিন্তু কিছু কিছু গুরুত্বপূর্ণ বিষয় তুলে ধরতে গিয়েই পোষ্ট বড় হয়ে যায়। সাবধান করার জন্য ধন্যবাদ । :)
User avatar

iemon
JuniorUnicorn
JuniorUnicorn
Posts: 255
Joined: 16 Feb 2018, 07:21
Cash on hand: 2,632.26
Has thanked: 3 times
Been thanked: 3 times
Bangladesh

#32725

27 Mar 2018, 03:49

আপনি খুব সুন্দরভাবে পোস্টটি আমাদের মাঝে শেয়ার করেছেন।ধন্যবাদ শেয়ার করে আমাদের জানানোর জন্য। আশা করি এভাবেই পাশে থাকবেন সবসময়।

[ Post made via Android ]
User avatar

TanvirNiloy
JuniorUnicorn
JuniorUnicorn
Posts: 273
Joined: 17 Feb 2018, 07:47
Cash on hand: 356.16
Bank: 0.00
Has thanked: 0
Been thanked: 3 times
Bangladesh

#32768

27 Mar 2018, 07:26

ধন্যবাদ আপনাকে আমাদের ভালোভাবে বুঝানোরর জন্যে আশা করি সামনে আরো এইরকম অনেক পোস্ট পাবো সবাই কে অনেক অনেক ধন্যবাদ আর লাইক কমেন্ট করে পাশে থাকবেব আশা করি

[ Post made via Android ]
User avatar

Topic author
Imon18
BabyUnicorn
BabyUnicorn
Posts: 130
Joined: 16 Feb 2018, 09:01
Cash on hand: 214.72
Has thanked: 5 times
Been thanked: 6 times
Contact:
Bangladesh

#32843

27 Mar 2018, 12:12

TanvirNiloy wrote:
27 Mar 2018, 07:26
ধন্যবাদ আপনাকে আমাদের ভালোভাবে বুঝানোরর জন্যে আশা করি সামনে আরো এইরকম অনেক পোস্ট পাবো সবাই কে অনেক অনেক ধন্যবাদ আর লাইক কমেন্ট করে পাশে থাকবেব আশা করি
আপনাকেও অনেক ধন্যবাদ এমন সুন্দর একটি কমেন্ট করার জন্য। আশা কএই সবসময় পাশে থাকবেন এবং আমাদের উৎসাহিত করবেন।
User avatar

Topic author
Imon18
BabyUnicorn
BabyUnicorn
Posts: 130
Joined: 16 Feb 2018, 09:01
Cash on hand: 214.72
Has thanked: 5 times
Been thanked: 6 times
Contact:
Bangladesh

#32860

27 Mar 2018, 12:46

iemon wrote:
27 Mar 2018, 03:49
আপনি খুব সুন্দরভাবে পোস্টটি আমাদের মাঝে শেয়ার করেছেন।ধন্যবাদ শেয়ার করে আমাদের জানানোর জন্য। আশা করি এভাবেই পাশে থাকবেন সবসময়।
আপনাকেও অনেক ধন্যবাদ সুন্দর একটি কমেন্ট করার জন্য। সবসময় পাশে থাকবেন এবং আমাদের সহযোগীতা করবেন। ধন্যবাদ।

Was This Topic Useful?

Post Reply

Return to “"বাংলাদেশি কমিউনিটি" (Bengali)”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 1 guest