এসএইচএ-১

তথ্যগুপ্তিবিদ্যায়, **এসএইচএ-১** (**সিকিউর হ্যাশ অ্যালগরিদম-১**) একটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন যা যেকোন তথ্য গ্রহণ করে এবং ১৬০ বিট (২০ বাইট) এর একটি হ্যাশ মান (মেসেজ ডাইজেস্ট বা বার্তা সারাংশ) প্রদান করে। নির্গত মানটিকে সাধারণত ৪০ অঙ্কের ষষ্ঠদশমিক সংখ্যা হিসেবে দেখানো হয়। এটি যুক্তরাষ্ট্রের জাতীয় নিরাপত্তা সংস্থার উদ্ভাবিত, এবং যুক্তরাষ্ট্রীয় তথ্য প্রক্রিয়াকরণের জন্য গৃহীত একটি আদর্শ নীতি।

২০০৫ হতে এসএইচএ-১ ক্ষমতাসম্পন্ন প্রতিপক্ষের বিরুদ্ধে অনিরাপদ বলে ধরা হচ্ছে এবং ২০১০ হতে শুরু করে অনেক প্রতিষ্ঠান একে এসএইচএ-২ বা এসএইচএ-৩ দ্বারা প্রতিস্থাপনের পরামর্শ দিচ্ছে। মাইক্রোসফট, গুগল, অ্যাপল এবং মজিলা প্রত্যেকে ঘোষণা করেছে যে ২০১৭ সালের মধ্যে তাদের নিজ নিজ ব্রাউজারগুলো এসএইচএ-১ ভিত্তিক এসএসএল সার্টিফিকেট গ্রহণ করা বন্ধ করে দেবে।

২০১৭ সালে সিডব্লিউআই আমস্টারডাম ও গুগল ঘোষণা করে যে তারা এসএইচএ-১ এর বিরুদ্ধে সাংঘর্ষিক আক্রমণ চালাতে সক্ষম হয়েছে, এবং প্রমাণস্বরুপ একই এসএইচএ-১ হ্যাশ সম্পন্ন দুটি ভিন্ন পিডিএফ ফাইল প্রকাশ করে।

## উদ্ভাবন

এসএইচএ-১ এর বার্তা সারাংশ গঠনের পদ্ধতি, এমআইটির রোনাল্ড রিভেস্টের এমডি৪ ও এমডি৫ বার্তা সারাংশ অ্যালগরিদমের অনুরূপ, তবে অপেক্ষাকৃত রক্ষণশীল।

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

## প্রয়োগ

### তথ্যগুপ্তিবিদ্যা

এসএইচএ-১, একাধিক বহুলব্যবহৃত নিরাপত্তামূলক সফটওয়্যার প্রযুক্তি ও যোগাযোগবিধির অংশ, যেমন টিএলএস এবং এসএসএল, পিজিপি, এসএসএইচ, এস/এমআইএমই (S/MIME),  আইপিসিক (IPSec)। এসব প্রযুক্তিতে এমডি৫ ও ব্যবহার করা সম্ভব; এমডি৫ ও এসএইচএ-১ দুটোই এমডি৪ থেকে উদ্ভূত। নিনটেনডোর উই (Wii) গেমিং কনসোল চালু হবার সময় নিরাপত্তামূলক সাক্ষর যাচাইয়ের ক্ষেত্রেও অ্যালগরিদমটির ব্যবহার ছিল, কিন্তু যন্ত্রটির ফার্মওয়্যারের প্রথম সংস্করণে একটি মারাত্মক ত্রুটি এ নিরাপত্তা ব্যবস্থা এড়িয়ে যাবার সুযোগ দিত।

যুক্তরাষ্ট্র সরকারের কিছু সফটওয়্যার প্রযুক্তিতে সংবেদনশীল তথ্যের নিরাপত্তার জন্য এসএইচএ-১ এবং এসএইচএ-১ এর ব্যবহারের আইনি বাধ্যবাধকতা ছিল, এমনকি অন্যান্য তথ্যগুপ্তকারী অ্যালগরিদম ও যোগাযোগবিধির অভ্যন্তরেও। এফআইপিএস পিইউবি-১৮০-১ ব্যক্তিগত ও ব্যবসায়িক প্রতিষ্ঠানসমূহকে এসএইচএ-১ ব্যবহারের উৎসাহ দেয়। তবে নিরাপত্তা ঝুঁকি প্রকাশিত হওয়ার পর সরকারি কাজে এসএইচএ-১ এর ব্যবহার কমিয়ে আনা হচ্ছে; এনআইএসটির বক্তব্যে, "যুক্তরাষ্ট্রীয় সংস্থাসমূহের ... সংঘর্ষ প্রতিরোধক্ষমতা প্রয়োজন এরকম ক্ষেত্রে যত দ্রুত সম্ভব এসএইচএ-১ ব্যবহার বন্ধ করা **অত্যাবশ্যক**... এবং ২০১০ এর পর হতে এসব ক্ষেত্রে অবশ্যই এসএইচএ-২ গোত্রীয় হ্যাশ ফাংশন ব্যবহার করা দরকার।" (গুরুত্ব মূল উক্তিতে উপস্থিত)। যদিও পরবর্তীকালে এই আবশ্যকতা শিথিল করা হয়।

নিরাপদ হ্যাশ অ্যালগরিদমের প্রকাশনার পেছনে একটি প্রধান প্রণোদনা ছিল ডিজিটাল সাঙ্কেতিক আদর্শ (ডিইএস), যাতে এটি অন্তর্ভুক্ত হয়েছে।

এসএইচএসিএএল (*SHACAL*) ব্লক সাঙ্কেতিকলিপির ভিত্তি হিসেবে এসএইচএ হ্যাশ ফাংশনসমূহ ব্যবহৃত হয়েছে।

### তথ্যের শুদ্ধতা
সংস্করণ নিয়ন্ত্রণ প্রযুক্তি যেমন গিট, মার্কুরিয়াল ও মোনোটোন এসএইচএ-১ ব্যবহার করে, তবে নিরাপত্তার উদ্দেশ্যে নয়, নির্দিষ্ট সংস্করণ চিহ্নিত করা ও তথ্যের কোন পরিবর্তন হয়নি তা নিশ্চিত করার জন্য। লিনাস টরভাল্ডস গিটের সম্পর্কে বলেন:
:যদি আপনার ডিস্কে ত্রুটি থাকে, ডির‌্যামে ত্রুটি থাকে, যেকোন রকমের কোন সমস্যাই হোক, গিট তা শনাক্ত করবে। এটা কোন সম্ভাবনার কথা নয়, এটা একটা নিশ্চয়তা। কোন লোক অনিষ্টের চেষ্টা করতে পারে, তারা সফল হবে না। ... কেউই এসএইচএ-১ ভাঙতে পারে নি, কিন্তু এসএইচএ-১, গিটের কথা বিবেচনা করলে, মোটেই কোন নিরাপত্তা সুবিধা নয়। এটা কেবলই একটা সামঞ্জস্যের পরীক্ষা। নিরাপত্তার ব্যাপারগুলো অন্য কোথাও, তাই অনেকেই ধরে নেয় যেহেতু গিট এসএইচএ-১ ব্যবহার করে, আর এসএইচএ-১ নিরাপত্তার জন্য ব্যবহৃত হয়, সেহেতু তার ভাবে, আচ্ছা, এটা একটা বিরাট নিরাপত্তা সুবিধা। কিন্তু এখানে নিরাপত্তার সাথে এর কোন সম্পর্ক নেই, এটা শুধুই আপনি পেতে পারেন এমন সর্বোত্তম হ্যাশ। ...
:আমি আপনাকে নিশ্চয়তা দিচ্ছি, আপনি যদি গিটে কোন তথ্য রাখেন, আপনি বিশ্বাস রাখতে পারেন যে পাঁচ বছর পর, আপনার হার্ড ড্রাইভ থেকে ডিভিডিতে, এবং যেকোন নতুন প্রযুক্তিতে কপি করে নেয়ার পর, পাঁচ বছর পর আপনি যাচাই করে নিতে পারবেন যে তথ্যটি জমা রেখেছিলেন, ঠিক সেই একই তথ্য ফিরে পাচ্ছেন।
:এ বিষয়ে আমার গুরুত্ব দেয়ার একটা বড় কারণ হচ্ছে, আমাদের বিটকিপার সাইটে একবার অনধিকার প্রবেশের ঘটনা ঘটেছিল, কিছু লোক [লিনাক্স] কার্নেলের সোর্স কোড সংগ্রহ নষ্ট করতে চেয়েছিল। তবে গিটে নিরাপত্তার কাজে এসএইচএ-১ এর দ্বিতীয় প্রি-ইমেজ প্রতিরোধক্ষমতার কোন প্রয়োজন নেই, কারণ গিট সবসময় সংঘর্ষের ক্ষেত্রে সবচেয়ে পুরোনো সংস্করণটি বাছাই করে, যা আক্রমণকারীকে ফাইল প্রতিস্থাপন করা থেকে বিরত রাখে।

## ক্রিপ্টোবিশ্লেষণ ও যাচাই
যদি একটি হ্যাশ ফাংশনে বার্তা সারাংশের দৈর্ঘ্য হয় *L*, তাহলে ব্রুট ফোর্স সন্ধানে প্রায় ২*L* ধাপের মধ্যেই যেকোন সারাংশের জন্য উপযুক্ত একটি বার্তা পাওয়া যাবে। একে প্রিইমেজ আক্রমণ বলা হয় এবং এর ব্যবহারিকতা *L* এর আকার ও কম্পিউটার হার্ডওয়্যারের ওপর নির্ভর করে। তবে একটি সংঘর্ষ, অর্থাৎ একই বার্তা সারাংশ উৎপাদনকারী দুটি ভিন্ন বার্তা, পাওয়ার জন্য জন্মদিন আক্রমণ পদ্ধতিতে গড়ে কেবল  টি ধাপের প্রয়োজন পড়ে। একারণে কোন হ্যাশ ফাংশনের শক্তি তার বার্তা সারাংশের অর্ধেক দৈর্ঘ্যের প্রতিসম সংকেতলিপির সাথে তুলনীয়। তাই প্রাথমিকভাবে, এসএইচএ-১, যার বার্তা সারাংশ দৈর্ঘ্য ১৬০ বিট, এর শক্তি ৮০ বিট বলে ধরা হয়েছিল।

২০০৫ সালে তথ্যগুপ্তিবিদগণ শিয়াইউন ওয়াং, ইয়িকুন লিসা য়িন, এবং হংবো ইয়ু, এসএইচ-০ এর সংঘর্ষ জোড় আবিষ্কার করেন এবং এমন কিছু অ্যালগরিদম পান যার মাধ্যমে এসএইচএ-১ এর জন্য ২৮০ ধাপের অনেক আগেই সংঘর্ষ জোড় বের করা সম্ভব।

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

ডিজিটাল নথিপত্রের স্বাক্ষরের ক্ষেত্রে, কোন বিদ্যমান নথি থেকে আক্রমণকারী স্বাক্ষরটি নকল করতে পারে না। আক্রমণকারীর একজোড়া নথি তৈরি করতে হয়, একটি স্বাভাবিক ও অপরটি বিপজ্জনক, এবং গোপন চাবির বাহককে দিয়ে স্বাভাবিক নথিটি স্বাক্ষর করিয়ে নিতে হয়। অনেক বাস্তব ব্যবহারিক ক্ষেত্রে এই পদ্ধতি সম্ভব হতে পারে; ২০০৮ এর শেষ পর্যন্ত এমডি৫ সংঘর্ষ কাজে লাগিয়ে নকল টিএলএস সনদ তৈরি করা সম্ভব ছিল।

অ্যালগরিদমগুলোর ব্লকভিত্তিক ও পুনরাবৃত্তিক বৈশিষ্ট্য এবং বাড়তি চূড়ান্ত ধাপের অনুপস্থিতির কারণে, সব এসএইচএ ফাংশনই (এসএইচএ-৩ ব্যতীত) দৈর্ঘ্য সম্প্রসারণ আক্রমণ ও আংশিক-বার্তা সংঘর্ষ আক্রমণের প্রতি দুর্বল। এসব আক্রমণ পদ্ধতি ব্যবহার করে বার্তা নকল করার জন্য প্রয়োজন কেবল একটি চাবি-নির্ভর হ্যাশ— অথবা —এবং চাবি না জানা থাকলেও বার্তাটি দীর্ঘায়িত করে পুনরায় হ্যাশ গঠন করা। এধরনের আক্রমণ প্রতিহত করার একটি সহজ উপায় হল দুইবার হ্যাশ গঠন করা:  (0*b*, শূন্য ব্লক, এর দৈর্ঘ্য হ্যাশ ফাংশনের ব্লক আকারের সমান)।

### আক্রমণ
২০০৫ এর শুরুর দিকে, রিয়েমেন এবং অসওয়াল্ড এসএইচএ-১ এর সংক্ষিপ্ত সংস্করণ—৮০ চক্রের পরিবর্তে ৫৩ চক্র বিশিষ্ট—এর বিরুদ্ধে একটি আক্রমণ প্রকাশ করেন যা ২৮০ ধাপের চেয়ে কমেই হ্যাশ সংঘর্ষ পায়।

২০০৫ এর ফেব্রুয়ারিতে, শিয়াইউন ওয়াং, ইয়িকুন লিসা য়িন, এবং হংবো ইয়ু এর একটি আক্রমণ ঘোষিত হয়। যা এসএইচএ-১ এর সম্পূর্ণ সংস্করণের বিপরীতে সংঘর্ষ খুঁজে পেতে সক্ষম, ২৬৯ এর কম ধাপেই ।(ব্রুট ফোর্স খোঁজের জন্য ২৮০ ধাপের প্রয়োজন।)

আবিষ্কারকদের লেখায়: "বিশেষত,  আমাদের বিশ্লেষণের ভিত্তি হচ্ছে এসএইচএ-০ এর বিরুদ্ধে প্রথম পার্থক্যমূলক পথ আক্রমণ এবং প্রায়-সংঘর্ষ আক্রমণ, একাধিক খণ্ডের সংঘর্ষ কৌশল, এবং এমডি৫ এর সংঘর্ষ সন্ধানে ব্যবহৃত বার্তা পরিবর্তন প্রক্রিয়া। এই গুরুত্বপূর্ণ কৌশলগুলো ছাড়া এসএইচএ-১ এর নিরাপত্তা ভাঙা সম্ভব হত না"। লেখকগণ ৫৩-চক্রিক এসএইচএ-১ এর জন্য হ্যাশ সংঘর্ষ উপস্থাপন করেন, যা ২৩৩ ধাপের ভিতরে পাওয়া যায়. ২০০৫ এর অগাস্টে ক্রিপ্টো সম্মেলনে সম্পূর্ণ আক্রমণের বিবরণ প্রকাশিত হয়েছিল।

একটি সাক্ষাৎকারে য়িন বলেন, "সহজ কথায়, আমরা প্রধাণত দুটি দুর্বলতা কাজে লাগাই: প্রথমত, ফাইলের প্রাক-প্রক্রিয়াকরণ ধাপটি যথেষ্ট জটিল নয়; দ্বিতীয়ত, প্রথম ২০টি চক্রের কিছু গাণিতিক প্রণালীতে অনাকাঙ্খিত নিরাপত্তা ঝুঁকি বিদ্যমান"।

২০০৫ এর ১৭ অগাস্ট ক্রিপ্টো ২০০৫ রাম্প পর্বে, শিয়াইউন ওয়াং, এন্ড্রু ইয়াও এবং ফ্রান্সেস ইয়াও এর পক্ষে সম্পূুর্ণ এসএইচএ-১ এর আক্রমণের একটি উন্নত সংস্করণ প্রকাশিত হয় যা সংঘর্ষ প্রাপ্তির জটিলতা ২৬৩তে নামিয়ে আনে ২০০৭ এর ১৮ ডিসেম্বর, মার্টিন কশরান এটির ব্যাখ্যা ও যাচাই করেন।

ক্রিস্টোফ ডি ক্যানিয়ার ও ক্রিস্টিয়ান রাখবার্জার এসএইচএ-১ এর প্রতি আক্রমণসমূহে আরও উৎকর্ষ সাধন করেন তাদের "এসএইচএ-১ এর বৈশিষ্ট্য অনুসন্ধান: সাধারণ ফলাফল ও প্রয়োগ" গবেষণাপত্রে,  যা এশিয়াক্রিপ্ট (ASIACRYPT) ২০০৬ এর শ্রেষ্ঠ গবেষণাপত্রের পুরস্কার অর্জন করে। এতে ৬৪-চক্রের এসএইচএ-১ এর দুটি খণ্ডের সংঘর্ষ উপস্থাপন করা হয়েছিল, যা সংক্ষেপণ ফাংশনের ২৩৫ টি ধাপে প্রাপ্ত। যেহেতু এই আক্রমণ মাত্র ২৩৫ ধাপে সম্পন্ন হয়, তাই এটি একটি গুরুত্বপূর্ণ তত্ত্বীয় আবিষ্কার বলে পরিগণিত হয়। ২০১০ সালে গ্রেশনিকভ কর্তৃক এ আক্রমণটি ৭৩ চক্রে (৮০ টির মধ্যে) উন্নীত হয়েছে। তথাপি, হ্যাশ ফাংশনের সম্পূ্র্ণ ৮০টি চক্রের সংঘর্ষ খুঁজে পেতে অতি উচ্চ মাত্রার কম্পিউটার শক্তি প্রয়োজন। এ উদ্দেশ্যে, ২০০৭ এর ৮ অগাস্ট, গ্রায প্রযুক্তি বিশ্ববিদ্যালয় এর পরিচালনায় বিওআইএনসি (BOINC) বন্টিত কম্পিউটিং প্রকল্পের অধীনে এসএইচএ-১ ফাংশনের সংঘর্ষ অনুসন্ধান শুরু হয়। তবে ২০০৯ সালের ১২ মে অগ্রগতির অভাবে প্রকল্পটি বাতিল করে দেয়া হয়।

ক্রিপ্টো ২০০৬ রাম্প পর্বে, ক্রিস্টোফ ডি ক্যানিয়ার ও ক্রিস্টিয়ান রাখবার্জার এসএইচএ-১ এর বিরুদ্ধে এমন একটি আক্রমণ আবিষ্কারের দাবি করেন যাতে আক্রমণকারীর পক্ষে মূল বার্তার কিছু অংশ বাছাই করে নেয়া সম্ভব।।

২০০৮ সালে, স্তেফান মানুয়েল একটি আক্রমণ পদ্ধতি প্রকাশ করেন যার আনুমানিক তত্ত্বীয় জটিলতা ২৫১ থেকে ২৫৭। তবে তিনি তার দাবি প্রত্যাহার করেন যখন আবিষ্কৃত হয় যে, আঞ্চলিক সংঘর্ষ পথগুলো স্বাধীন নয়, এবং পরিশেষে তার কাজের পূর্বেই উন্মুক্ত ছিল এমন একটি ক্ষুদ্রতম সংঘর্ষ উপাত্তের মান উল্লেখ করেন।

ক্যামেরন ম্যাকডোনাল্ড, ফিলিপ হকস এবং যোসেফ পাইপ্রাজিক, ইউরোক্রিপ্ট ২০০৯ এর রাম্প পর্বে একটি হ্যাশ সংঘর্ষ আক্রমণ উপস্থাপন করেন যার  জটিলতা ২৫২ ধাপের বলে দাবি করা হয় অবশ্য এর প্রাসঙ্গিক গবেষণাপত্র, "এসএইচএ-১ এর জন্য ''O''(২৫২) জটিলতার পার্থক্যমূলক পথ" প্রত্যাহার করে নেয়া হয়েছে কারণ লেখকগণ আবিষ্কার করেছৈন যে তাদের অনুমান ত্রুটিপূর্ণ ছিল।

এসএইচএ-১ এর বিরুদ্ধে মার্ক স্টিভেনস একটি আক্রমণ পরিচালনা করেন যাতে একটি হ্যাশ উন্মোচন করার জন্য ক্লাউড সার্ভার থেকে প্রায় ইউএস$২.৭৭মিলিয়ন মূল্যের সিপিইউ শক্তি খরচ হয়েছে। স্টিভেনস এই আক্রমণটি তৈরি করেন হ্যাশক্ল্যাশ নামক একটি প্রকল্পের মধ্যে, পার্থক্যমূলক পথ আক্রমণের প্রয়োগ করে। ২০১০ এর ৮ নভেম্বর, তিনি দাবি করেন যে সম্পূর্ণ এসএইচএ-১ এর বিপরীতে একটি ব্যবহারযোগ্য প্রায়-সংঘর্ষ আক্রমণ আবিষ্কার করেছেন যার জটিলতা ২৫৭.৫। তিনি আন্দাজ করেন যে এটিকে ২৬১ জটিলতার পুর্ণ-সংঘর্ষ আক্রমণে রূপান্তর করা সম্ভব।

#### এসএইচএপেনিং (SHApenning)
 এ, মার্ক স্টিভেন্স, পিয়েরে কার্পমান, এবং থমাস পেরিন, এসএইচএ-১ ফাংশনের সংক্ষেপণ ফাংশনের বিপরীতে একটি ঐচ্ছিক প্রারম্ভিক মানভিত্তিক (*freestart*) সংঘর্ষ আক্রমণ প্রকাশ করেন যাতে মাত্র ২৫৭ ধাপ প্রয়োজন। এটি সরাসরি সম্পূর্ণ এসএইচএ-১ হ্যাশ ফাংশনের বিপরীতে সংঘর্ষে পরিণত হয় না (কারণ সেক্ষেত্রে আক্রমণকারী প্রারম্ভিক মান বা দশা ঐচ্ছিকভাবে নির্ধারণ করতে পারে না), তবে এসএইচএ-১ এর নিরাপত্তার দাবিকে খাটো করে দেয়। বিশেষত, এই প্রথমবার সম্পূর্ণ এসএইচএ-১ এর বিরুদ্ধে কোন আক্রমণ *প্রদর্শিত* হয়েছিল; পূর্ববর্তী আক্রমণসমূহ বাস্তবে চালানো তার আবিষ্কারকদের জন্য অতি ব্যয়বহুল ছিল।‌ আবিষ্কারকগণ এসএইচএ-১ এর ক্রিপ্টোবিশ্লেষণে তাদের এই যুগান্তকারী সাফল্যের নাম দেন *এসএইচএপেনিং*, *The SHAppening*.

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

আবিষ্কারকরা আরও অনুমান করেন যে, আক্রমণটির প্রকাশকালে সম্পূর্ণ এসএইচএ-১ হ্যাশের বিপরীতে সংঘর্ষ উৎপাদনের জন্য ইউএস$ ৭৫হাজার থেকে ইউএস$ ১লক্ষ ২০ হাজার খরচের ইসি২ জিপিইউ/সিপিইউ সময়ই যথেষ্ট, যা সন্ত্রাসী সংগঠন এবং জাতীয় গোয়েন্দা সংস্থাগুলোর বাজেটে সহজলভ্য। এ কারণে তারা পরামর্শ দেন যত দ্রুত সম্ভব এসএইচএ-১ প্রচলন বন্ধ করা উচিত।

#### এসএইচএটার্‌ড (SHAttered) – প্রথম উন্মোচিত সংঘর্ষ
২০১৭ সালের ২৩ ফেব্রুয়ারি, সিডব্লিউআই এবং গুগল *এসএইচএটার্‌ড (SHAttered)* আক্রমণের ঘোষণা দেয়, যার মাধ্যমে তারা একই হ্যাশসম্পন্ন দুটি ভিন্ন পিডিএফ ফাইল তৈরি করে, প্রায় ২৬৩.১ এসএইচএ-১ ধাপের মধ্যে। এ আক্রমণ ব্রুট ফোর্স ব্যবহার করে জন্মদিন আক্রমণ পদ্ধতিতে এসএইচএ-১ সংঘর্ষ সন্ধান (যাতে প্রায় ২৮০ টি ধাপ প্রয়োজন) এর চেয়ে প্রায় ১০০,০০০ গুণ দ্রুততর। এই আক্রমণের জন্য প্রয়োজন হয়েছিল "৬,৫০০ বছরব্যাপী একক-সিপিইউ এবং ১১০ বছরব্যাপী একক-জিপিইউএর কার্যকারিতার সমতুল্য হিসাবক্ষমতা"।

### এসএইচএ-০
ক্রিপ্টো (CRYPTO) ৯৮-তে, দুজন ফ্রেঞ্চ গবেষক, ফ্লোর‌েন্ত শ্যাবা এবং আন্তন জ্যো, এসএইচএ-০ এর বিরুদ্ধে একটি আক্রমণ প্রকাশ করেন: যার মাধ্যমে ২৬১ ধাপের মধ্যে হ্যাশ সংঘর্ষ পাওয়া যায়, যা সম-আকারের আদর্শ হ্যাশ ফাংশনের প্রয়োজনীয় ২৮০ চেয়ে অনেক কম।

২০০৪ সালে, বিহাম এবং চেন এসএইচএ-০ এর আংশিক-সংঘর্ষ আবিষ্কার করেন—দুটি ভিন্ন বার্তা যাদের হ্যাশ প্রায় একই; এ ক্ষেত্রে, ১৬০ বিটের ভেতর ১৪২ বিট সমান ছিল। এঁরা এসএইচএ-০ এর ৮০ চক্র থেকে কমে ৬২ চক্রের মধ্যেই পূর্ণ সংঘর্ষ খুঁজে পান।

পরবর্তীতে, ২০০৪ এর ১২ অগাস্ট, জ্যো, ক্যারিবয়াত, লেম্যুয়েত, এবং হ্যালবি সম্পূর্ণ এসএইচএ-০ এর সংঘর্ষ আবিষ্কারের ঘোষণা দেন। যা শ্যাবা এবং জ্যো এর আক্রমণের সরলীকরণ থেকে প্রাপ্ত। সংঘর্ষটি আবিষ্কারের জটিলতা ছিল ২৫১ এবং ২৫৬টি ইটানিয়াম ২ প্রসেসর সম্পন্ন সুপারকম্পিউটারের প্রায় ৮০,০০০ প্রসেসর-ঘণ্টা ব্যয় হয়েছিল (কম্পিউটারটি অবিরাম ১৩-দিন চালানোর সমতুল্য)।

২০০৪ এর ১৭ অগাস্ট ক্রিপ্টো ২০০৪ এর রাম্প পর্বে শিয়াইউন ওয়াং, ফেং, লাই, এবং ইয়ু, এমডি৫, এসএইচএ-০ এবং অন্যান্য হ্যাশ ফাংশনের বিরুদ্ধে একটি আক্রমণের প্রাথমিক ফলাফল প্রকাশ করেন। এসএইচএ-০ এর বিরুদ্ধে তাদের আক্রমণের জটিলতা ২৪০, যা জ্যো *প্রমুখ* এর আবিষ্কারের চেয়ে অনেকটাই দ্রুততর।

২০০৫ এর ফেব্রুয়ারিতে, শিয়াইউন ওয়াং, ইয়িকুন লিসা য়িন, এবং হংবো ইয়ু এসএইচএ-০ এর বিরুদ্ধে আরও একটি আক্রমণের ঘোষণা দেন যা ২৩৯ ধাপের মধ্যেই সংঘর্ষ খুঁজে পায়।

২০০৮ সালে বুমেরাং আক্রমণ নির্ভর আরও একটি আক্রমণ এসএইচএ-০ এর সংঘর্ষ খুঁজে পাবার জটিলতা ২৩৩.৬ ধাপে নামিয়ে আনে, যা একটি সাধারণ মানের কম্পিউটারে আনুমানিক ১ ঘণ্টায় সম্পন্ন হবে।

এসএইচএ-০ এর ফলাফলের আলোকে, কিছু বিশেষজ্ঞ মতপ্রকাশ করেন যে আধুনিক তথ্যগুপ্তিব্যবস্থায় এসএইচএ-১ এর ব্যবহার পুনর্বিবেচনা করা প্রয়োজন। ক্রিপ্টো ২০০৪ এর ফলাফল প্রকাশের পর এনআইএসটি ঘোষণা দেয় যে তারা ২০১০ এর মধ্যে এসএইচএ-২ হ্যাশকে অগ্রাধিকার দিয়ে এসএইচএ-১ এর ব্যবহার ধীরে ধীরে বন্ধ করে দিতে পরিকল্প।

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

২০১৩ এর ডিসেম্বর পর্যন্ত, এসএইচএ-১ এর ২০০০ এরও অধিক যাচাইকৃত প্রয়োগ রয়েছে, যার মধ্যে ১৪টি, ৮ এর গুণনীয়ক নয়, এমন দৈর্ঘ্যের বার্তা প্রক্রিয়াকরণ করতে সক্ষম (এসএইচএস যাচাই তালিকা  দেখুন)।

## উদাহরণ ও খসড়া কোড

### হ্যাশের উদাহরণ
ষষ্ঠদশমিক এবং বেজ৬৪-এ দ্বিমিক থেকে আসকি এনকোডিংয়ে এসএইচএ-১ বার্তা সারাংশের উদাহরণ:

 SHA1("সকল দেশের রা সে যে আমার জন্মভূমি')
 ষষ্ঠদশমিক: 06b0a868580d00bf80322cac8519e6745f95bf0d
 দ্বিমিক থেকে আসকি এনকোডিংয়ের বেজ৬৪: BrCoaFgNAL8/MiysPxnmdF8/vw0=

মূল বার্তার খুব সামান্য কোন পরিবর্তনেও হ্যাশের অনেক বিটের পরিবর্তনের অতি উচ্চ সম্ভাবনা তৈরি হয় (তুষারধ্বস ইফেক্টের প্রভাবে)। যেমন, `রাণী` শব্দটিতে `ণ` কে `ন` তে পরিবর্তন করায় হ্যাশের ১৬০ বিটের মধ্যে ১৫২ বিটই ভিন্ন হয়ে যায়:

 SHA1("সকল দেশের রা সে যে আমার জন্মভূমি")
 ষষ্ঠদশমিক: b2
 দ্বিমিক থেকে আসকি এনকোডিংয়ের বেজ৬৪: 0DoNNj9RW74fQhc/LVzJPT/J+ck=

শুন্য দৈর্ঘ্যের বার্তার হ্যাশ:

 SHA1("")
 ষষ্ঠদশমিক: da39a3ee5e6b4b0d3255bfef95601890afd80709
 দ্বিমিক থেকে আসকি এনকোডিংয়ের বেজ৬৪: 2jmj7l5rSw0yVb/vlWAYkK/YBwk=

### এসএইচএ-১ এর খসড়া কোড
এসএইচএ-১ অ্যালগরিদমের খসড়া কোড এখানে দেখানো হচ্ছে:
 
 *টীকা ১: সব চলক চিহ্নবিহীন ৩২-বিটের মান এবং হিসাবনিকাশকালে ভাগশেষ ২<sup>৩২</sup> অধিক্রমণ করে, ব্যতিক্রম:*
         *ml, বার্তার দৈর্ঘ্য, যা ৬৪-বিটের মান, এবং*
         *hh, বার্তা সারাংশ, যা ১৬০-বিটের মান।*
 *টীকা ২: সব ধ্রুবক [[endianness|বিগ-এন্ডিয়ান]]।*
         *অর্থাৎ প্রতিটি ওয়ার্ডে গুরুতর বাইটটি সর্ববামে অবস্থিত হয়*
 
 *চলক মানগুলোর সূচনা:*
 
 h0 = 0x67452301
 h1 = 0xEFCDAB89
 h2 = 0x98BADCFE
 h3 = 0x10325476
 h4 = 0xC3D2E1F0
 
 ml = message length in bits
 
 *প্রাক-প্রক্রিয়াকরণ:*
 append the bit '1' to the message *যেমন, যদি বার্তার দৈর্ঘ্য ৮ বিটের গুননীয়ক হয়, তবে 0x80 যোগ করে*
 append 0 ≤ k &lt; 512 bits '0', such that the resulting message length in *bits*
    is congruent to −64 ≡ 448 (mod 512)
 append ml as a 64-bit big-endian integer *ফলে মোট দৈর্ঘ্য ৫১২ বিটের গুণনীয়ক*
 
 *বার্তাটিকে ক্রমানুসারে ৫১২-বিটের খণ্ডে ভাগ করে প্রক্রিয়াকরণ:*
 break message into 512-bit chunks
 **for** each chunk
     break chunk into sixteen 32-bit big-endian words w[i], 0 ≤ i ≤ 15
 
     *১৬টি ৩২-বিট ওয়ার্ডকে আশিটি ৩২-বিট ওয়ার্ডে বর্ধিত করা:*
     **for** i **from** 16 to 79
         w[i] = (w[i-3] **xor** w[i-8] **xor** w[i-14] **xor** w[i-16]) **[[Circular shift|leftrotate]]** 1
 
     *বর্তমান খণ্ডের জন্য হ্যাশগুলোর প্রারম্ভিক মান:*
     a = h0
     b = h1
     c = h2
     d = h3
     e = h4
 
     *মূল চক্র:*
     **for** i **from** 0 **to** 79
         **if** 0 ≤ i ≤ 19 **then**
             f = (b **and** c) **or** ((**not** b) **and** d)
             k = 0x5A827999
         **else if** 20 ≤ i ≤ 39
             f = b **xor** c **xor** d
             k = 0x6ED9EBA1
         **else if** 40 ≤ i ≤ 59
             f = (b **and** c) **or** (b **and** d) **or** (c **and** d) 
             k = 0x8F1BBCDC
         **else if** 60 ≤ i ≤ 79
             f = b **xor** c **xor** d
             k = 0xCA62C1D6
 
         temp = (a **leftrotate** 5) + f + e + k + w[i]
         e = d
         d = c
         c = b **leftrotate** 30
         b = a
         a = temp
 
     *এ পর্যন্ত প্রাপ্ত ফলের সাথে বর্তমান খণ্ডের হ্যাশ সংযোজন:*
     h0 = h0 + a
     h1 = h1 + b 
     h2 = h2 + c
     h3 = h3 + d
     h4 = h4 + e
 
 *১৬০-বিট এর মান হিসেবে চূড়ান্ত হ্যাশ (big-endian) গঠন:*
 hh = (h0 **leftshift** 128) **or** (h1 **leftshift** 96) **or** (h2 **leftshift** 64) **or** (h3 **leftshift** 32) **or** h4

এখানে `hh` হল বার্তা সারাংশ, যা ষষ্ঠদশমিক পদ্ধতিতে দেখানো যায়, তবে প্রায়ই দ্বিমিক থেকে আসকি এর বেজ৬৪ এনকোডিংয়ে লেখা হয়।

ধ্রুবক রাশিগুলো চাতুর্যবিহীন সংখ্যা হিসেবে বাছাই করা: চারটি চক্র ধ্রুবক `k` হল ২, ৩, ৫ ও ১০ এর বর্গমূলের ২৩০ গুণ। প্রথম চারটি প্রারম্ভিক মান, `h0` থেকে `h3`, ওই একই রাশিগুলোর এমডি৫ হ্যাশ, এবং পঞ্চম `h4` মানটিও একই ধরনের।

এফআইপিএস পিইউবি ১৮০-১ এ দেখানো পদ্ধতির পরিবর্তে নিম্নোক্ত সমীকরণগুলো ব্যবহার করেও মূল চক্রে `f` এর মান নির্ধারণ করা সম্ভব:

 *‌*c* এবং *d* এর মধ্যে বিট-ভিত্তিক বাছাই, *b* দ্বারা নিয়ন্ত্রিত।*
 (0  ≤ i ≤ 19): f = d **xor** (b **and** (c **xor** d))                *(বিকল্প ১)*
 (0  ≤ i ≤ 19): f = (b **and** c) **xor** ((**not** b) **and** d)          *(বিকল্প ২)*
 (0  ≤ i ≤ 19): f = (b **and** c) + ((**not** b) **and** d)            *(বিকল্প ৩)*
 (0  ≤ i ≤ 19): f = vec_sel(d, c, b)                       *(বিকল্প ৪)*
 &nbsp;
 *বিট-ভিত্তিক গরিষ্ঠতা ফাংশন।*
 (40 ≤ i ≤ 59): f = (b **and** c) **or** (d **and** (b **or** c))          *(বিকল্প ১)*
 (40 ≤ i ≤ 59): f = (b **and** c) **or** (d **and** (b **xor** c))         *(বিকল্প ২)*
 (40 ≤ i ≤ 59): f = (b **and** c) + (d **and** (b **xor** c))          *(বিকল্প ৩)*
 (40 ≤ i ≤ 59): f = (b **and** c) **xor** (b **and** d) **xor** (c **and** d)  *(বিকল্প ৪)*
 (40 ≤ i ≤ 59): f = vec_sel(c, b, c **xor** d)                 *(বিকল্প ৫)*

এটিও দেখানো হয়েছে যে ৩২–৭৯ তম চক্রে এই হিসাবটি:

 w[i] = (w[i-3] **xor** w[i-8] **xor** w[i-14] **xor** w[i-16]) **[[Circular shift|leftrotate]]** 1

এভাবেও করা যায়:

 w[i] = (w[i-6] **xor** w[i-16] **xor** w[i-28] **xor** w[i-32]) **[[Circular shift|leftrotate]]** 2

এই পরিবর্তন সব মানগুলোকে ৬৪-বিটে সারিবদ্ধ রাখে এবং `w[i-3]` এর নির্ভরশীলতা তুলে নেয়, ফলে অ্যালগরিদমটিকে ৪টি সমতুল্য এক্স৮৬ এসএসই প্রক্রিয়ার ভেক্টর দৈর্ঘ্য সম্পন্ন অধিক কার্যকর এসআইএমডি রুপায়ণ করা সম্ভব হয়।

## এসএইচএ ফাংশনসমূহের তুলনা
নিচের সারণীতে *আভ্যন্তরীণ দশা* বলতে প্রতিটি তথ্য সারির সংক্ষেপণের পর "আভ্যন্তরীণ হ্যাশের সমষ্টি" বোঝায়।

উল্লেখ্য, কর্মক্ষমতা কেবল অ্যালগরিদম নয়, নির্দিষ্ট প্রয়োগ ও ব্যবহৃত হার্ডওয়্যারের ওপরও নির্ভর করে। ওপেনএসএসএল সফটওয়্যার প্রোগ্রামে অন্তর্ভুক্ত একটি `speed` কমান্ড আছে, যা ব্যবহারকারীর কম্পিউটারে বিভিন্ন অ্যালগরিদমগুল‌োর কর্মক্ষমতার মাত্রা নির্ণয় করতে পারে।

## টীকা

## তথ্যসূত্র

* Florent Chabaud, Antoine Joux: Differential Collisions in SHA-0. CRYPTO 1998. pp56–71
* Eli Biham, Rafi Chen, Near-Collisions of SHA-0, Cryptology ePrint Archive, Report 2004/146, 2004 (appeared on CRYPTO 2004), IACR.org
* Xiaoyun Wang, Hongbo Yu and Yiqun Lisa Yin, Efficient Collision Search Attacks on SHA-0, CRYPTO 2005, CMU.edu
* Xiaoyun Wang, Yiqun Lisa Yin and Hongbo Yu, Finding Collisions in the Full SHA-1, Crypto 2005 MIT.edu
* Henri Gilbert, Helena Handschuh: Security Analysis of SHA-256 and Sisters. Selected Areas in Cryptography 2003: pp175–193
* unixwiz.net
* 
* A. Cilardo, L. Esposito, A. Veniero, A. Mazzeo, V. Beltran, E. Ayugadé, A CellBE-based HPC application for the analysis of vulnerabilities in cryptographic hash functions, High Performance Computing and Communication international conference, August 2010

## বহিঃসংযোগ
* CSRC Cryptographic Toolkit – নিরাপদ হ্যাশ আদর্শের উদ্দেশ্যে এনআইএসটি এর প্রাতিষ্ঠানিক ওয়েবসাইট
* FIPS 180-4: Secure Hash Standard (SHS)
* RFC 3174 (C কোডে খসড়া বাস্তবায়নসহ)
* এসএইচএ-১ এর বিরুদ্ধে আক্রমণ বিষয়ে একটি সাক্ষাতকার
* এসএইচএ-১ এর বিরুদ্ধে সফল আক্রমণের ব্যাখ্যা (৩ পৃষ্ঠা, ২০০৬)
* তথ্যগুপ্তিবিদ্যা গবেষণা – হ্যাশ সংঘর্ষ নিয়ে প্রশ্নোত্তর
* হ্যাশ প্রজেক্ট ওয়েবসাইট: এসএইচএ-১ এর সফটওয়্যার ও হার্ডওয়্যারভিত্তিক বিশ্লেষণ
* 
* ক্রিস্টফ পা'র  এর