Sebastien Rousseau

রহস্য

NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে

যে প্রশ্নটির উত্তর দিতে পারতেন এমন একমাত্র ব্যক্তি ২০২৩ সালে মারা যাওয়ার পর যা অমীমাংসিত রয়ে গিয়েছিল, তার একটি অতি সাধারণ উত্তর ছিল: ঘড়ি থেকে শুরু হওয়া ১৯৯০-এর দশকের একটি র‍্যান্ডম নাম্বার জেনারেটর। লেখকরা বলছেন যে এই উত্তরটি তাদের কম নয়, বরং আরও বেশি আত্মবিশ্বাসী করে যে কার্ভগুলো সততার সাথেই বেছে নেওয়া হয়েছিল।

13 মিনিট পঠন
Banner for: NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে

যে প্রশ্নটির উত্তর দিতে পারতেন এমন একমাত্র ব্যক্তি ২০২৩ সালে মারা যাওয়ার পর যা অমীমাংসিত রয়ে গিয়েছিল, তার একটি অতি সাধারণ উত্তর ছিল: ঘড়ি থেকে শুরু হওয়া ১৯৯০-এর দশকের একটি র‍্যান্ডম নাম্বার জেনারেটর। লেখকরা বলছেন যে এই উত্তরটি তাদের কম নয়, বরং আরও বেশি আত্মবিশ্বাসী করে যে কার্ভগুলো সততার সাথেই বেছে নেওয়া হয়েছিল।

নির্বাহী সারসংক্ষেপ

  • FIPS 186-2 ডিজিটাল সিগনেচার স্ট্যান্ডার্ডের অংশ হিসেবে ২০০০ সালে NIST কর্তৃক ECDSA গৃহীত হয়েছিল। স্পেসিফিকেশনগুলোতে "সিড" প্যারামিটার প্রকাশ করা হয়েছিল যার হ্যাশ মান কার্ভের সহগ (curve coefficient) b সংজ্ঞায়িত করার কথা ছিল। NSA কোনো ব্যাখ্যা বা যৌক্তিকতা ছাড়াই এই সিডগুলো সরবরাহ করেছিল।
  • ২০২৬ সালের অক্টোবরে, একজন অ্যানথ্রোপিক (Anthropic) কর্মী কোনো সূত্রের দিকে ইঙ্গিত না করেই একটি অভ্যন্তরীণ গবেষণা মডেলকে সিডগুলো কীভাবে তৈরি করা হয়েছিল তা বের করতে বলেন। আধ ঘণ্টারও কম সময়ে, Claude দেখতে পায় যে কোনো সিডই হ্যাশ আউটপুট ছিল না। সেগুলো ছিল ঘড়ি থেকে শুরু হওয়া একটি সাধারণ সিউডোর‍্যান্ডম নাম্বার জেনারেটর (pseudorandom number generator), lrand48-এর আউটপুট।
  • এই আবিষ্কারটি ECDSA কার্ভগুলোতে কোনো ক্রিপ্টোগ্রাফিক ভাঙন, নতুন আক্রমণ বা দুর্বলতা নয়। লেখকরা বলছেন এটি তাদের আরও আত্মবিশ্বাসী করে যে কার্ভগুলো কোনো ব্যাকডোর বা ইচ্ছাকৃত দুর্বলতা ছাড়াই বেছে নেওয়া হয়েছিল।
  • Claude ১৯৯৭ সালের মে মাসের ছয়টি কার্ভের ভিত্তি বিন্দুগুলোরও ব্যাখ্যা দিয়েছে যে সেগুলো আরিয়েন লেনস্ট্রার (Arjen Lenstra) দীর্ঘ-পূর্ণসংখ্যা পাটিগণিত প্যাকেজ, FreeLIP-এর র‍্যান্ডম নাম্বার জেনারেটর থেকে এসেছে। লেখকদের জানামতে, এর আগে কখনোই কোনো NIST ভিত্তি বিন্দুর ব্যাখ্যা দেওয়া হয়নি।
  • অমীমাংসিত প্রশ্ন রয়ে গেছে: P-224, P-256, P-384 এবং P-521-এর ভিত্তি বিন্দুগুলো কীভাবে নির্বাচন করা হয়েছিল, এবং বাদ দেওয়া প্রার্থী কার্ভগুলোর পেছনে কী মানদণ্ড ছিল, যদি আদৌ কিছু থেকে থাকে।

একটি সহগ যা দেখে মনে হতো উদ্ভূত এবং একটি সিড যার হিসাব কেউ দিতে পারেনি #

FIPS 186-2 ডিজিটাল সিগনেচার স্ট্যান্ডার্ডের অংশ হিসেবে ২০০০ সালে NIST কর্তৃক ECDSA গৃহীত হয়েছিল। এর কার্ভগুলোর স্পেসিফিকেশনে একটি "সিড" প্যারামিটার ছিল যার হ্যাশ মান কার্ভের সহগ b সংজ্ঞায়িত করতে ব্যবহৃত হয়। কাগজে-কলমে, এটি একটি আশ্বস্ত করার মতো নকশা। যুক্তিটি হলো, যদি সহগটি একটি প্রকাশিত সিডের হ্যাশ থেকে বেরিয়ে আসে, তবে কেউ হাতে ধরে কার্ভটিকে নিজের মতো সাজাতে পারেনি।

সেই যুক্তিটি কেবল সিডটির মতোই ভালো। সিডগুলো NSA কর্তৃক কোনো ব্যাখ্যা বা যৌক্তিকতা ছাড়াই সরবরাহ করা হয়েছিল, এবং সেই শূন্যতাটিই হলো পুরো সমস্যা। একটি হ্যাশ হলো একমুখী দরজা: এটি প্রমাণ করে যে সহগটি সিড থেকে এসেছে, কিন্তু সিডটি কোথা থেকে এসেছে সে সম্পর্কে কিছুই বলে না। বছরের পর বছর ধরে সিডগুলো এই স্ট্যান্ডার্ডে অব্যাখ্যাত ধ্রুবক (unexplained constants) হিসেবে পড়ে ছিল।

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

জিজ্ঞাসা করার মতো সবচেয়ে স্পষ্ট ব্যক্তিটি ছিলেন সোলিনাস। জেরি ২০২৩ সালে মারা যান, এবং সেই সময়ের অন্যান্য সহকর্মীরা কোনো সাড়া দেননি। ফলে এই সিডগুলো মূলত কীভাবে তৈরি করা হয়েছিল সেই প্রশ্নটি অমীমাংসিতই থেকে যায়।

আমি যুক্তি দেব যে পরিস্থিতিটি দেখার এটিই সঠিক উপায়: ডিজিটাল স্বাক্ষরের ভিত্তি হিসেবে কাজ করা একটি স্ট্যান্ডার্ডের জন্য গুটিকয়েক মানুষের স্মৃতির ওপর নির্ভরশীল একটি উৎপত্তির প্রশ্ন খুবই ভঙ্গুর একটি ব্যবস্থা। এরপর যা ঘটেছে তার সবচেয়ে আকর্ষণীয় দিক হলো এতে সেই স্মৃতিগুলোর কোনো প্রয়োজনই পড়েনি। উত্তরটি প্রকাশিত সিডগুলোর ভেতরেই বসে ছিল, কেবল কেউ একজন সঠিক অনুমানটি পরীক্ষা করে দেখার অপেক্ষায় ছিল।

ত্রিশ মিনিট, কোনো ইঙ্গিত নেই, এবং এমন একটি ফলাফল যা হ্যাশ ছিল না #

২০২৬ সালের অক্টোবরে, একজন কৌতূহলী অ্যানথ্রোপিক কর্মী কোনো সূত্রের দিকে ইঙ্গিত না করেই একটি অভ্যন্তরীণ গবেষণা মডেলকে জিজ্ঞাসা করেন যে ওই সিডগুলো কীভাবে তৈরি হয়েছিল তা এটি বের করতে পারবে কি না। কথাগুলোর ধরন এখানে গুরুত্বপূর্ণ। মডেলটিকে কী খুঁজতে হবে তা বলে দেওয়া হয়নি, কিংবা কেবল নিশ্চিত করার জন্য এর হাতে উত্তরটিও ধরিয়ে দেওয়া হয়নি।

আধ ঘণ্টারও কম সময়ে, Claude NIST P-192, P-224, P-256, P-384 এবং P-521 সিডগুলোর উৎপত্তি আবিষ্কার করে ফেলে। ফলাফলটি সোজাসাপ্টা: কোনো সিডই কোনো হ্যাশ অ্যালগরিদমের ফলাফল ছিল না। সেগুলো ছিল C লাইব্রেরির lrand48 র‍্যান্ডম-নাম্বার জেনারেটরের আউটপুট।

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

এর কৌশলটি বর্ণনা করা সহজ। অ্যালগরিদমের প্রতিটি পুনরাবৃত্তি প্রার্থী সিড হিসেবে জেনারেটর থেকে ২০ বাইট তুলে নেয়। পুনরাবৃত্তির সংখ্যাটি একটি আকর্ষণীয় তথ্য, কারণ এটি দেখায় যে প্রক্রিয়াটি ছিল একটি অনুসন্ধান, কেবল একবারের চেষ্টায় তুলে নেওয়া কোনো মান নয়। উদাহরণস্বরূপ, P-256-কে প্রমিত সিডটি আউটপুট হিসেবে দিতে ১৮৪২টি পুনরাবৃত্তির প্রয়োজন হয়েছিল। যিনিই এই প্রোগ্রামটি চালিয়েছিলেন, তিনি এটিকে প্রার্থীদের মধ্য দিয়ে ততক্ষণ চলতে দিয়েছিলেন যতক্ষণ না একটি প্রার্থী তাদের শর্ত পূরণ করার মতো কার্ভ তৈরি করে।

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

কীভাবে একটি স্ক্যানার ১৯৯০-এর দশকের জেনারেটরের ছাপ খুঁজে পেল #

পদ্ধতিটি মনোযোগের দাবি রাখে, কারণ এটিই সেই অংশ যা অন্যরা পুনরায় ব্যবহার করতে পারে।

Claude অনুমান করেছিল যে কার্ভগুলো তৈরি করা সফটওয়্যারটি এমন একটি PRNG ব্যবহার করেছিল যা ১৯৯০-এর দশকের C লাইব্রেরির সাথে আসত। উৎসটি এটিকে একটি অনুমান হিসেবে দেখে, এবং এটি দারুণ একটি অনুমান ছিল। এটি একটি অসীম অনুসন্ধানকে একটি নির্দিষ্ট যুগের প্রার্থীদের একটি ছোট তালিকায় নামিয়ে এনেছিল।

Claude এরপর একটি স্ক্যানার লেখে। এটি প্রতিটি প্রকাশিত সিডের ওপর দিয়ে একবারে এক বিট করে সরে যেতে থাকে এবং পরীক্ষা করে দেখে যে পাশাপাশি থাকা খণ্ডগুলো (adjacent chunks) ১৯৯০-এর দশকের কোনো জেনারেটরের পরপর আসা আউটপুট কি না। স্ক্যানটি জেনারেটর এবং আউটপুট স্লাইসের ৩৪টি সমন্বয় কভার করে। সাফল্য আসে উপরের বিটগুলোর একটি প্যাটার্ন হিসেবে, এমন একটি প্যাটার্ন যা কাকতালীয়ভাবে ঘটার সম্ভাবনা ছিল ১/৫৮১০।

সেই প্যাটার্নটি ছিল রৈখিক কনগ্রুয়েনশিয়াল জেনারেটর (linear congruential generator) lrand48-এর স্বাক্ষর, যা ৪৮-বিট অবস্থার কেবল উপরের ৩১টি বিট ফেরত দেয়। এখানেই জেনারেটরের নকশাটি তথ্য ফাঁস করে দেয়। যেহেতু lrand48 প্রতিটি কলে তার ৪৮-বিট অবস্থার ১৭টি বিট লুকিয়ে রাখে, তাই আউটপুটে এমন একটি নিয়মিততা থাকে যা একটি র‍্যান্ডম স্ট্রিং দেখাবে না, এবং সেই নিয়মিততা খোঁজার জন্য তৈরি একটি স্ক্যানার তা খুঁজে পেতে পারে।

অবস্থাটি পুনরুদ্ধার করার জন্য, Claude প্রথম শব্দটি (word) নেয় এবং লুকানো ১৭টি বিটের সমস্ত 2^17 মান পরীক্ষা করে দেখে। এটি একটি ছোট অনুসন্ধান, এবং জেনারেটরটি অত্যন্ত সরল হওয়ায় এটি বেশ সস্তা। প্রতিটি প্রার্থী অবস্থাকে সিডের পরবর্তী খণ্ডের সাথে মিলিয়ে পরীক্ষা করা যেত, এবং সঠিক অবস্থাটি পুরো ক্রমটিকে এক লাইনে দাঁড় করিয়ে দেয়।

প্রাইম-কার্ভ (prime-curve) সিডগুলো একটু কঠিন ছিল, তবে সামান্যই। সেগুলো একই lrand48 জেনারেটর থেকে এসেছিল কিন্তু প্রতিটি আউটপুটের আরও কম বিট রেখেছিল। কম দৃশ্যমান বিট মানে অনুমানকে ধরে রাখার মতো কম ভিত্তি, তাই ব্রুট-ফোর্স (brute-force) কৌশলটি আর ততটা নিখুঁতভাবে কাজ করে না। উৎসের উত্তর হলো, একটি ছাঁটাই করা (truncated) রৈখিক কনগ্রুয়েনশিয়াল জেনারেটরের অবস্থা পুনরুদ্ধার করা একটি পাঠ্যপুস্তকীয় ল্যাটিস সমস্যা, যা লেনস্ট্রা-লেনস্ট্রা-লোভাস (LLL) বেসিস রিডাকশন অ্যালগরিদম দিয়ে সমাধান করা হয়। একটি মডেল সেটি চিনতে পেরেছিল, এবং কোনো অভিনব কিছু ছাড়াই তাতে একটি প্রমিত টুল প্রয়োগ করতে পেরেছিল।

পাঁচটি NIST প্রাইম-কার্ভ সিড, এবং তার সাথে ANSI X9.62 স্ট্যান্ডার্ডের আরও পাঁচটি সিড, সবগুলোরই একই প্যাটার্ন ছিল: lrand48() >> 23। দশটি সিডের একই নিষ্কাশন নিয়ম ভাগ করে নেওয়া তাদের পেছনে একটি একক প্রক্রিয়া থাকারই শক্তিশালী প্রমাণ।

এরপর আসে সেই পরীক্ষা যা একটি সৌভাগ্যবশত মিলে যাওয়াকে প্রকৃত মিল থেকে আলাদা করে। পুনরুদ্ধার করা প্রতিটি ৪৮-বিট অবস্থা তার সিডের সমস্ত ১৬০টি বিটকে পুনরায় তৈরি (regenerate) করে, যা কাকতালীয়ভাবে ঘটে না। একটি আংশিক মিল কাকতালীয় হতে পারে। কিন্তু প্রতিটি বিটের সম্পূর্ণ পুনরুৎপাদনকে ব্যাখ্যা দিয়ে উড়িয়ে দেওয়া অনেক কঠিন কাজ, এবং এ কারণেই ফলাফলটি এতটা স্পষ্টভাবে বলা সম্ভব হয়েছে।

ঘড়ি পড়ার জন্য জেনারেটরটিকে উল্টো দিকে চালানো #

একটি অবস্থা পুনরুদ্ধার করা আপনাকে বলে যে সিডটি কীভাবে তৈরি হয়েছিল। কিন্তু এটি কখন তৈরি হয়েছিল তা তখনও বলে না। সেটির জন্য, Claude জেনারেটরের একটি বৈশিষ্ট্য ব্যবহার করে: এটি সামনে যতটা সহজে চলে, পেছনের দিকেও ঠিক ততটাই সহজে চলে। প্রতিটি সিডের জন্য, Claude অবস্থাটিকে ততক্ষণ পর্যন্ত পেছনের দিকে নিয়ে যায় যতক্ষণ না এটি এমন আকারে পৌঁছায় যা srand48 ইনিশিয়ালাইজেশন তৈরি করবে, যেখানে নিচের ১৬টি বিট 0x330E-এর সমান হয়।

সেই আকারটি নিজেই একটি ছাপ (fingerprint)। যদি পুনরুদ্ধার করা একটি অবস্থাকে নিচের ১৬টি বিট 0x330E থাকা কোনো অবস্থায় ফিরিয়ে নেওয়া যায়, তবে জেনারেটরটি প্রমিত উপায়েই শুরু করা হয়েছিল, অর্থাৎ srand48-এ পাঠানো একটি সিড মান থেকে। আর এই ক্ষেত্রে, সিড মানটি ছিল একটি সময়। সিডগুলো ইউনিক্স টাইমস্ট্যাম্প দ্বারা সিড করা দুর্বল PRNG ব্যবহার করে তৈরি করা হয়েছিল।

সেই সময়ে Claude-এর অভ্যন্তরীণ চিন্তাভাবনায় চিনতে পারার মুহূর্তটি রেকর্ড করা হয়েছে: উপরের সমস্ত বিট পরিষ্কার (শূন্য) ছিল, ২০টি বিট, যার সম্ভাবনা ছিল 1e-6। এটি একটি ছোট তথ্য, কিন্তু এটি দেখায় যে যুক্তিটি পরে সাজানো কোনো গল্পের ওপর নয়, বরং সংখ্যাগুলো যেভাবে সামনে এসেছিল তার ওপরই কাজ করছিল।

তারিখগুলো সব পরিষ্কার ছিল না। চারটি বাইনারি-কার্ভ ইনিশিয়ালাইজেশন ১৯৮৪ সালের ফেব্রুয়ারি হিসেবে পঠিত হয়, যা ১৯৯০-এর দশকের শেষভাগে ব্যবহৃত একটি জেনারেটরের জন্য কারোরই প্রত্যাশিত তারিখ নয়। টাইমস্ট্যাম্পগুলো দ্বিগুণ করার পর, বাইনারি-কার্ভ ইনিশিয়ালাইজেশনগুলো ১৭ এপ্রিল, ১৯৯৮ তারিখে ম্যাপ হয়, যা P-224 রানের ঠিক দুই সপ্তাহ পরের তারিখ। উৎসটি সিদ্ধান্তে আসে যে প্রোগ্রামটি হয়তো ঘড়ির সময়কে অর্ধেক করে দিয়েছিল। এটি সতর্কভাবে বলা হয়েছে, এবং তেমনই হওয়া উচিত: কাঁচা মানগুলো কেন ১৯৮৪ হিসেবে পঠিত হয় তার একটি প্রস্তাবিত ব্যাখ্যা এটি, এবং দ্বিগুণ করার ফলে অন্য একটি রানের ঠিক দুই সপ্তাহ পরের তারিখ পাওয়াটা প্রোগ্রামের অভ্যন্তরীণ কাঠামোর নিশ্চিত প্রমাণ না হলেও বেশ ইঙ্গিতবাহী।

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

ভিত্তি বিন্দুগুলোরও একটি রেসিপি আছে #

সিডগুলো কার্ভ সংজ্ঞায়িত করে। ভিত্তি বিন্দুগুলো (base points) একটি ভিন্ন বিষয়, এবং উৎসটি সেগুলোকে আলাদাভাবেই দেখে।

১৯৯৭ সালের মে মাসে তৈরি হওয়া ছয়টি কার্ভের (P-192 এবং পাঁচটি ANSI X9.62 উদাহরণ কার্ভ prime192v2, prime192v3 এবং prime239v1 থেকে v3) ভিত্তি বিন্দুগুলো এসেছে আরিয়েন লেনস্ট্রার দীর্ঘ-পূর্ণসংখ্যা পাটিগণিত প্যাকেজ, FreeLIP-এর র‍্যান্ডম নাম্বার জেনারেটর থেকে। ভিক্টর শৌপের (Victor Shoup) NTL লাইব্রেরির প্রাথমিক সংস্করণগুলোতে একই কোড থাকত। দ্বিতীয় তথ্যটি যাচাইয়ের জন্য গুরুত্বপূর্ণ: জেনারেটরটি কোনো ব্যক্তিগত টুল হিসেবে নয়, বরং প্রকাশিত কোড হিসেবে বিদ্যমান যা অন্যরা পড়তে পারে।

রেসিপিটি ছোট। একটি ছোট পূর্ণসংখ্যা দিয়ে জেনারেটরটিকে সিড করুন। সাতটি আউটপুট ফেলে দিন। মড p (mod p) দ্বারা সংকুচিত ২৬-বিট আউটপুট থেকে প্রার্থী x-স্থানাঙ্ক (x-coordinates) তৈরি করুন। যতক্ষণ না x কার্ভের ওপর আসে ততক্ষণ সেই প্রার্থী তৈরির প্রক্রিয়াটি পুনরাবৃত্তি করুন।

Claude জেনারেটরের সিডগুলো খুঁজে পেয়েছে: P-192-এর জন্য 20000, prime239v1 থেকে v3-এর জন্য 20420, 20507 এবং 20509, আর prime192v2 এবং v3-এর জন্য 20512 এবং 20517। এগুলো এমন ধরনের ছোট পূর্ণসংখ্যা যা একজন মানুষ প্রোগ্রামে টাইপ করে, এবং রেসিপির প্রথম ধাপটি ঠিক এটিই চায়।

লেখকরা এখানে একটি দাবি করেন যা বিনয়ী এবং ভাবার্থে উদ্ধৃত করার মতো: তাদের জানামতে, এর আগে কখনোই কোনো NIST ভিত্তি বিন্দুর ব্যাখ্যা দেওয়া হয়নি। সতর্কতাটি তাদের নিজস্ব, এবং এটি যথার্থ। তারা আজ পর্যন্ত লেখা প্রতিটি নথি জরিপ করার দাবি করছেন না, কেবল তাদের জ্ঞানের সীমাটুকু জানাচ্ছেন।

এরপর রেসিপিটি কাজ করা বন্ধ করে দেয়। P-224, P-256, P-384 এবং P-521-এর ভিত্তি বিন্দুগুলো এই রেসিপির সাথে মেলে না, এবং লেখকরা সেগুলো কীভাবে নির্বাচন করা হয়েছিল তা ব্যাখ্যা করতে পারেননি। যে নিবন্ধটি এই বিষয়টি এড়িয়ে যেত তা দেখতে আরও পরিপাটি লাগত, কিন্তু লেখকরা এটি রেখে দিয়েছেন। এই ব্যাখ্যাটি ১৯৯৭ সালের মে মাসের ছয়টি কার্ভকে কভার করে এবং NIST প্রাইম কার্ভগুলোর চারটি ভিত্তি বিন্দুকে অব্যাখ্যাত রেখে দেয়।

যে প্রার্থীদের এড়িয়ে যাওয়া হয়েছিল #

সর্বশেষ আবিষ্কারটি হলো এমন একটি বিষয় যা নিয়ে তর্ক শুরু হওয়ার সম্ভাবনা সবচেয়ে বেশি, তাই এটি সঠিকভাবে পড়া প্রয়োজন।

P-256-এর ক্ষেত্রে, প্রকাশিত সিডটি হলো প্রার্থী ১৮৪২। কিন্তু একই রানের প্রার্থী ৮৭৬-ও সঠিক আকারের একটি প্রাইম-অর্ডার কার্ভ দেয়, যার প্যারামিটারগুলো প্রকাশিত কার্ভের মতো একইভাবে নির্বাচিত। অন্য কথায়, প্রক্রিয়াটি এমন একটি কার্ভকে পাশ কাটিয়ে চলে গেছে যা আপাতদৃষ্টিতে গ্রহণযোগ্য হতে পারত।

এটি কোনো বিচ্ছিন্ন ঘটনা নয়। P-224-এর রান এ ধরনের তিনটি কার্ভকে এড়িয়ে গেছে, এবং ANSI X9.62 উদাহরণ কার্ভগুলোর পেছনের দুটি রান আরও সাতটিকে এড়িয়ে গেছে।

লেখকরা যা জানেন না সে সম্পর্কে সরাসরি কথা বলেছেন। তারা জানেন না কার্ভগুলো বাদ দেওয়ার জন্য কী মানদণ্ড ব্যবহার করা হয়ে থাকতে পারে, কিংবা এটি কোনো অনিচ্ছাকৃত ত্রুটি বা আর্টিফ্যাক্ট (unintentional artifact) ছিল কি না। এটি একটি সীমাবদ্ধতা, সেভাবেই বলা হয়েছে, এবং "অনিচ্ছাকৃত আর্টিফ্যাক্ট" সম্পর্কে সতর্কতাটিই হলো সৎ অবস্থান: ডেটা দেখায় যে প্রার্থীদের বাদ দেওয়া হয়েছিল, কিন্তু কেন তা দেখায় না।

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

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

এই ফলাফল কী পরিবর্তন করে, এবং কী অমীমাংসিত রাখে #

এটি যা পরিবর্তন করে না তা দিয়ে শুরু করা যাক। কার্ভগুলো ভেঙে পড়েনি। উৎসটি ভিন্ন ভিন্ন শব্দে দুইবার তা বলেছে, এবং কোনো পদক্ষেপ নেওয়ার প্রয়োজন নেই। যে কেউ এটিকে P-256 উপড়ে ফেলার কারণ হিসেবে পড়ছেন, তিনি এটি ভুল পড়েছেন।

এটি যা পরিবর্তন করে তা হলো একটি পুরনো সন্দেহের অবস্থান। যতদিন সিডগুলো অব্যাখ্যাত ছিল, ততদিন "কোনো ব্যাখ্যা ছাড়াই NSA কর্তৃক সরবরাহকৃত" কথাটি একটি স্ট্যান্ডার্ডের ওপর স্থায়ী প্রশ্নবোধক চিহ্ন হয়ে দাঁড়িয়ে ছিল। সেই প্রশ্নবোধক চিহ্নের এখন একটি সুনির্দিষ্ট উত্তর আছে। সিডগুলো কোনো গোপন বাক্যাংশের দুর্বোধ্য হ্যাশ ছিল না। সেগুলো ছিল ঘড়ি-থেকে-সিড-করা প্রোগ্রামের lrand48 আউটপুট, যা পুনরুদ্ধার করা একটি অবস্থা থেকে প্রতিটি সিডের প্রতিটি বিটকে পুনরায় তৈরি করে। প্রকাশিত সিড আছে এমন যে কেউ পরীক্ষা করে দেখতে পারে এমন একটি ব্যাখ্যা, কেউ যাচাই করতে না পারা গুজবের চেয়ে অনেক শ্রেয়।

ক্রিপ্টোগ্রাফিক স্ট্যান্ডার্ডের ওপর কাজ করা প্রতিষ্ঠাতা এবং প্রকৌশলীদের জন্য এখানে একটি শিক্ষণীয় বিষয় রয়েছে। উৎপত্তির দাবি করা সস্তা এবং তা যাচাই করা ব্যয়বহুল, অথচ সঠিক প্রশ্নটি করার পর এখানে বর্ণিত যাচাই প্রক্রিয়াটিতে আধ ঘণ্টারও কম সময় লেগেছে। স্ক্যানার, 2^17 অনুসন্ধান এবং ল্যাটিস রিডাকশন সবই প্রমিত পদক্ষেপ। বছরের পর বছর ধরে যা অনুপস্থিত ছিল তা হলো প্রকাশিত সংখ্যাগুলোর ওপর সেগুলো প্রয়োগ করে দেখার মতো চাকচিক্যহীন কাজটি করার মতো একজন মানুষ।

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

অসমাপ্ত কাজটুকু একটি গবেষণা এজেন্ডা হওয়ার মতো যথেষ্ট স্পষ্ট। চারটি ভিত্তি বিন্দু - P-224, P-256, P-384 এবং P-521-এর - এখনও ব্যাখ্যার অপেক্ষায় রয়েছে। বাদ পড়া প্রার্থীদের, যেমন P-256-এর প্রকাশিত ১৮৪২-এর বিপরীতে ৮৭৬, কোনো ঘোষিত মানদণ্ড নেই, এবং কেউ এখনও জানে না যে ওই বাদ দেওয়াটা ইচ্ছাকৃত ছিল নাকি একটি আর্টিফ্যাক্ট। সেই উত্তরগুলো পুরনো সোর্স কোডে, জীবিত সহকর্মীদের স্মৃতিতে, নাকি সিডগুলোর রহস্য ভেদ করা একই ধরনের প্যাটার্ন-হান্টিংয়ের ভেতর টিকে আছে, সেটিই এখন অমীমাংসিত প্রশ্ন। সিডগুলোর ক্ষেত্রে আধ ঘণ্টা লেগেছে; ভিত্তি বিন্দুগুলো ইতিমধ্যেই একবার এই পদ্ধতিকে প্রতিহত করেছে।

সচরাচর জিজ্ঞাসিত প্রশ্নাবলি #

এই আবিষ্কারটি কি P-256 বা P-384-এর মতো NIST ECDSA কার্ভগুলোকে ভেঙে দেয়?

না। কার্ভের সিডগুলো পাসফ্রেজ হ্যাশের পরিবর্তে lrand48 দ্বারা তৈরি করা হয়েছিল - এই আবিষ্কারটি ECDSA কার্ভগুলোতে কোনো ক্রিপ্টোগ্রাফিক ভাঙন, নতুন আক্রমণ বা গাণিতিক দুর্বলতা তৈরি করে না, এবং এই ফলাফলের কারণে কোনো প্রতিকার বা মাইগ্রেশন পদক্ষেপের প্রয়োজন নেই।

NIST প্রাইম-কার্ভ সিডগুলো প্রকৃতপক্ষে কীভাবে তৈরি করা হয়েছিল?

প্রতিটি ১৬০-বিট সিড তৈরি করা হয়েছিল C স্ট্যান্ডার্ড লাইব্রেরির lrand48 রৈখিক কনগ্রুয়েনশিয়াল জেনারেটর (বিশেষভাবে পাঁচটি NIST প্রাইম কার্ভ এবং পাঁচটি ANSI X9.62 কার্ভের জন্য lrand48() >> 23) কল করে, যা একটি ইউনিক্স টাইমস্ট্যাম্প দিয়ে srand48-এর মাধ্যমে শুরু করা হয়েছিল। লেনস্ট্রা-লেনস্ট্রা-লোভাস (LLL) ল্যাটিস রিডাকশনের মাধ্যমে ৪৮-বিট অভ্যন্তরীণ অবস্থা পুনরুদ্ধার করলে প্রকাশিত প্রতিটি সিডের সমস্ত ১৬০টি বিট পুনরায় তৈরি হয়।

NIST উপবৃত্তাকার কার্ভ প্যারামিটার সম্পর্কে কোন বিষয়টি এখনও অব্যাখ্যাত রয়ে গেছে?

যদিও P-192 এবং পাঁচটি ANSI X9.62 কার্ভের ভিত্তি বিন্দুগুলোর উৎস ছোট পূর্ণসংখ্যা দিয়ে সিড করা আরিয়েন লেনস্ট্রার FreeLIP প্যাকেজের র‍্যান্ডম নাম্বার জেনারেটর পর্যন্ত খুঁজে পাওয়া গেছে, তবুও P-224, P-256, P-384 এবং P-521-এর ভিত্তি বিন্দুগুলো সেই রেসিপির সাথে মেলে না, এবং পূর্ববর্তী প্রাইম-অর্ডার প্রার্থী কার্ভগুলো (যেমন P-256-এ প্রার্থী ১৮৪২-এর আগের প্রার্থী ৮৭৬) বাদ দেওয়ার মানদণ্ড এখনও অজানা রয়ে গেছে।

তথ্যসূত্র #

সর্বশেষ পর্যালোচনা .

এই নিবন্ধটি ক্রস-পোস্ট করুন

Medium-এর জন্য ফরম্যাট কপি করুন

# NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau

> Originally published at [https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/](https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/)

NIST P-192, P-224, P-256, P-384 এবং P-521 কার্ভের সাথে প্রকাশিত সিডগুলো কখনোই হ্যাশ আউটপুট ছিল না। সেগুলো এসেছিল C লাইব্রেরির lrand48 জেনারেটর থেকে, যা ইউনিক্স টাইমস্ট্যাম্প দ্বারা সিড করা হয়েছিল।

Read the full article on sebastienrousseau.com: https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/

Mastodon-এর জন্য ফরম্যাট কপি করুন

NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau

NIST P-192, P-224, P-256, P-384 এবং P-521 কার্ভের সাথে প্রকাশিত সিডগুলো কখনোই হ্যাশ আউটপুট ছিল না। সেগুলো এসেছিল C লাইব্রেরির lrand48 জেনারেটর থেকে, যা ইউনিক্স টাইমস্ট্যাম্প দ্বারা সিড করা হয়েছিল।

https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/

LinkedIn-এর জন্য বিন্যাসিত কপি করুন

NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau

NIST P-192, P-224, P-256, P-384 এবং P-521 কার্ভের সাথে প্রকাশিত সিডগুলো কখনোই হ্যাশ আউটপুট ছিল না। সেগুলো এসেছিল C লাইব্রেরির lrand48 জেনারেটর থেকে, যা ইউনিক্স টাইমস্ট্যাম্প দ্বারা সিড করা হয়েছিল।.

এখানে মূল কৌশলগত টেকওয়েগুলি রয়েছে:

- একটি সহগ যা দেখে মনে হতো উদ্ভূত এবং একটি সিড যার হিসাব কেউ দিতে পারেনি. FIPS 186-2 ডিজিটাল সিগনেচার স্ট্যান্ডার্ডের অংশ হিসেবে ২০০০ সালে NIST কর্তৃক ECDSA গৃহীত হয়েছিল। এর কার্ভগুলোর স্পেসিফিকেশনে একটি "সিড" প্যারামিটার ছিল যার হ্যাশ মান কার্ভের সহগ b সংজ্ঞায়িত করতে ব্যবহৃত হয়।…
- ত্রিশ মিনিট, কোনো ইঙ্গিত নেই, এবং এমন একটি ফলাফল যা হ্যাশ ছিল না. ২০২৬ সালের অক্টোবরে, একজন কৌতূহলী অ্যানথ্রোপিক কর্মী কোনো সূত্রের দিকে ইঙ্গিত না করেই একটি অভ্যন্তরীণ গবেষণা মডেলকে জিজ্ঞাসা করেন যে ওই সিডগুলো কীভাবে তৈরি হয়েছিল তা এটি বের করতে পারবে কি না। কথাগুলোর ধরন এখানে…
- কীভাবে একটি স্ক্যানার ১৯৯০-এর দশকের জেনারেটরের ছাপ খুঁজে পেল. পদ্ধতিটি মনোযোগের দাবি রাখে, কারণ এটিই সেই অংশ যা অন্যরা পুনরায় ব্যবহার করতে পারে।.
- ঘড়ি পড়ার জন্য জেনারেটরটিকে উল্টো দিকে চালানো. একটি অবস্থা পুনরুদ্ধার করা আপনাকে বলে যে সিডটি কীভাবে তৈরি হয়েছিল। কিন্তু এটি কখন তৈরি হয়েছিল তা তখনও বলে না। সেটির জন্য, Claude জেনারেটরের একটি বৈশিষ্ট্য ব্যবহার করে: এটি সামনে যতটা সহজে চলে, পেছনের দিকেও ঠিক…

এই নিবন্ধে উল্লিখিত চ্যালেঞ্জগুলির প্রতি আপনার প্রতিষ্ঠানের পদ্ধতি কী?

→ https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/

#রহস্য #সিড #পেছনে #Nist #কার্ভ

Sebastien Rousseau | CC-BY-4.0
এই নিবন্ধটি উদ্ধৃত করুন

NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau

NIST P-192, P-224, P-256, P-384 এবং P-521 কার্ভের সাথে প্রকাশিত সিডগুলো কখনোই হ্যাশ আউটপুট ছিল না। সেগুলো এসেছিল C লাইব্রেরির lrand48 জেনারেটর থেকে, যা ইউনিক্স টাইমস্ট্যাম্প দ্বারা সিড করা হয়েছিল।

BibTeX

@online{rousseau2026nist,
  author  = {Rousseau, Sebastien},
  title   = {{NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau}},
  year    = {2026},
  url     = {https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/},
  urldate = {2026}
}

RIS

TY  - GEN
AU  - Rousseau, Sebastien
TI  - NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau
PY  - 2026
UR  - https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/
ER  -

Vancouver

Rousseau S. NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau. sebastienrousseau.com. 2026 Oct 26. Available from: https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/

Chicago

Rousseau, Sebastien. "NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau." sebastienrousseau.com. October 26, 2026. https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/.

APA

Rousseau, S. (2026, October 26). NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau. sebastienrousseau.com. https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/

এই নিবন্ধটি পুনঃপ্রকাশ করুন

NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau

NIST P-192, P-224, P-256, P-384 এবং P-521 কার্ভের সাথে প্রকাশিত সিডগুলো কখনোই হ্যাশ আউটপুট ছিল না। সেগুলো এসেছিল C লাইব্রেরির lrand48 জেনারেটর থেকে, যা ইউনিক্স টাইমস্ট্যাম্প দ্বারা সিড করা হয়েছিল।

এই নিবন্ধটি লাইসেন্স করা হয়েছে Creative Commons Attribution 4.0 International. পুনঃপ্রকাশনার জন্য মূল URL-এর কৃতিত্ব আবশ্যক।

NIST-এর কার্ভগুলোর পেছনের রহস্যময় সিডগুলো কখনোই হ্যাশ ছিল না, এবং Claude আধ ঘণ্টারও কম সময়ে তা খুঁজে বের করেছে — Sebastien Rousseau

NIST P-192, P-224, P-256, P-384 এবং P-521 কার্ভের সাথে প্রকাশিত সিডগুলো কখনোই হ্যাশ আউটপুট ছিল না। সেগুলো এসেছিল C লাইব্রেরির lrand48 জেনারেটর থেকে, যা ইউনিক্স টাইমস্ট্যাম্প দ্বারা সিড করা হয়েছিল।

Originally published at https://sebastienrousseau.com/bn/2026-10-26-nist-er-karbhagulor-pechhaner-rahasjamaj-sidagulo/ by Sebastien Rousseau.
Licensed under CC-BY-4.0.