<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=HMAC</id>
	<title>HMAC - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=HMAC"/>
	<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=HMAC&amp;action=history"/>
	<updated>2026-06-13T13:40:37Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://3rabica.org/index.php?title=HMAC&amp;diff=3234231&amp;oldid=prev</id>
		<title>عبد العزيز: تصحيح إملائي فقط</title>
		<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=HMAC&amp;diff=3234231&amp;oldid=prev"/>
		<updated>2023-12-08T14:38:05Z</updated>

		<summary type="html">&lt;p&gt;تصحيح إملائي فقط&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{تهذيب}}&lt;br /&gt;
{{إعادة صياغة}}&lt;br /&gt;
{{يتيمة|تاريخ=أبريل 2020}}&lt;br /&gt;
&lt;br /&gt;
[[ملف:SHAhmac.svg|يسار|تصغير|400x400بك| الجيل HMAC-SHA1]]&lt;br /&gt;
&lt;br /&gt;
في علم [[علم التعمية|التشفير]]، &amp;#039;&amp;#039;&amp;#039;HMAC&amp;#039;&amp;#039;&amp;#039; (وهي اختصار لـ رمز مصادقة الرسالة استنادًا على التجزئة ذات المفتاح أو رمز مصادقة الرسالة استنادًا على التجزئة هاش) هي نوع معين من [[رمز مصادقة رسالة|رمز مصادقة الرسالة]] (MAC) متضمنةً لـ [[دالة تجزئة بيان معمى|دالة التجزئة التشفيرية]] ولمفتاح تشفيري سري.&lt;br /&gt;
&lt;br /&gt;
كما هو الحال مع أي رمز مصادقة الرسالة (MAC) يمكن استخدامه للتحقق من [[سلامة البيانات]] ومن صحة الرسالة في الوقت ذاته.&lt;br /&gt;
&lt;br /&gt;
يمكن استخدام أي [[دالة تجزئة]] تشفيرية كـ SHA-256 أو SHA-3 في حساب HMAC (رمز مصادقة الرسالة استنادًا على التجزئة)&lt;br /&gt;
&lt;br /&gt;
وتسمى خوارزمية MAC الناتجة HMAC-X، حيث أنَّ X تعبر عن دالة التجزئة المستخدمة (مثال: HMAC-SHA256 أو HMAC-SHA3)&lt;br /&gt;
&lt;br /&gt;
تعتمد قوة التشفير في الـ HMAC على قوة تشفير دالة التجزئة المستخدمة، وعلى حجم خرج التجزئة، وعلى حجم ونوعية المفتاح.&lt;br /&gt;
&lt;br /&gt;
يستخدم HMAC مرورين (دورتين) في حساب التجزئة. أولًا يستخدم المفتاح السري ليتم اشتقاق مفتاحين منه – واحد داخلي والآخر خارجي&lt;br /&gt;
&lt;br /&gt;
ينتج في المرور الأول من الخوارزمية تجزئة/هاش داخلي وهو مشتق من الرسالة ومن المفتاح الداخلي. في المرور الثاني ينتج رمز الـ HMAC النهائي وهو مشتق من التجزئة/الهاش الداخلي الناتج ومن المفتاح الخارجي.&lt;br /&gt;
&lt;br /&gt;
وهكذا توفر الخوارزمية حصانة أفضل ضد هجمات تمديد الطول (length extension attacks).&lt;br /&gt;
&lt;br /&gt;
تجزء دالة التجزئة التكرارية الرسالة إلى عدة كتل ذات حجم ثابت وتتكرر عليهم بوساطة دالة ضغط&lt;br /&gt;
&lt;br /&gt;
على سبيل المثال: يعمل SHA-256  على كتل 512-بت&lt;br /&gt;
&lt;br /&gt;
حجم خرج الـ HMAC يساوي حجم دالة التجزئة المستخدمة (مثال: 256 و1600 بت في حالة SHA-256 وSHA-3 على التوالي)، على الرغم من أنه يمكن اقتطاعه عند الرغبة.&lt;br /&gt;
&lt;br /&gt;
الـHMAC لا يقوم بتشفير الرسالة. عوضًا عن ذلك، يجب إرسال الرسالة (سوآء كانت مشفرة أم لا) إلى جانب تجزئة/هاش الـHMAC&lt;br /&gt;
&lt;br /&gt;
ستقوم الأطراف التي تحتوي على المفتاح السري بتجزئة الرسالة مرة أخرى بأنفسهم، وإذا كانت الرسالة أصلية، فستتطابق التجزئتان المستلمة والمحسوبة.&lt;br /&gt;
&lt;br /&gt;
نُشر تعريف وتحليل بناء HMAC لأول مرة في عام 1996 في ورقة كتبها Mihir Bellare و Ran Canetti و Hugo Krawczyk ، &amp;lt;ref name=&amp;quot;BCK96&amp;quot;&amp;gt;{{استشهاد بدورية محكمة|عنوان=Keying Hash Functions for Message Authentication|صفحات=1–15|الأول=Mihir|الأخير=Bellare|الأول2=Ran|الأخير2=Canetti|الأول3=Hugo|الأخير3=Krawczyk|سنة=1996}}&amp;lt;/ref&amp;gt; وكتبوا أيضًا RFC 2104 في عام 1997. حددت ورقة عام 1996 أيضًا متغيرًا متداخلاً يُسمى NMAC. [[معايير معالجة المعلومات الفيدرالية|يقوم FIPS]] PUB 198 بتعميم وتوحيد استخدام HMACs.&lt;br /&gt;
&lt;br /&gt;
يتم استخدام HMAC داخل [[حزمة أمن بروتوكول الإنترنت|بروتوكولات IPsec]] و [[بروتوكول طبقة المقابس الآمنة|TLS]] و JSON Web Tokens.&lt;br /&gt;
&lt;br /&gt;
== تعريف ==&lt;br /&gt;
هذا التعريف مأخوذ من RFC 2104 :&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
 \operatorname{HMAC}(K, m) &amp;amp;= \operatorname{H}\Bigl(\bigl(K&amp;#039; \oplus opad\bigr) \parallel &lt;br /&gt;
\operatorname{H} \bigl(\left(K&amp;#039; \oplus ipad\right) \parallel m\bigr)\Bigr) \\&lt;br /&gt;
             K&amp;#039; &amp;amp;= \begin{cases}&lt;br /&gt;
                 \operatorname{H}\left(K\right) &amp;amp; K\text{ is larger than block size} \\&lt;br /&gt;
                 K               &amp;amp; \text{otherwise}&lt;br /&gt;
                \end{cases}&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
حيث،&lt;br /&gt;
&lt;br /&gt;
: H هي دالة تجزئة تشفيرية&lt;br /&gt;
: &amp;#039;&amp;#039;م&amp;#039;&amp;#039; هي الرسالة المراد توثيقها&lt;br /&gt;
: &amp;#039;&amp;#039;K&amp;#039;&amp;#039; هو المفتاح السري&lt;br /&gt;
: &amp;#039;&amp;#039;K &amp;#039;&amp;#039;&amp;#039; هو مفتاح بحجم الكتلة مشتق من المفتاح السري &amp;#039;&amp;#039;K&amp;#039;&amp;#039; ؛ إما عن طريق الحشو إلى اليمين بصفر يصل إلى حجم الكتلة، أو بالتخفيض إلى أقل من حجم الكتلة أولًا ثم الحشو إلى اليمين باستخدام الأصفار&lt;br /&gt;
: || يدل على الضم&lt;br /&gt;
: ⊕ يدل على أحادي المعامل عملية الاستثناء أو (XOR)&lt;br /&gt;
: &amp;#039;&amp;#039;opad&amp;#039;&amp;#039; عبارة عن حشوة خارجية بحجم الكتلة، تتكون من وحدات بايت متكررة بقيمة 0x5c&lt;br /&gt;
: {{كذا|&amp;#039;&amp;#039;ipad&amp;#039;&amp;#039;|hide=yes}} هو حشوة داخلية بحجم الكتلة، تتكون من وحدات بايت متكررة بقيمة 0x36&lt;br /&gt;
&lt;br /&gt;
== التنفيذ ==&lt;br /&gt;
يوضح الكود الزائف التالي كيفية تنفيذ HMAC. حجم الكتلة هو 64 (بايت) وذلك عند استخدام إحدى دالات التجزئة التالية: SHA-1 ، MD5 ، RIPEMD-128/160.&lt;br /&gt;
 function hmac &amp;#039;&amp;#039;&amp;#039;{{لون النص|blue|is}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;{{لون النص|blue|input:}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 key:  Bytes  &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// مصفوفة البايتات&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 message: Bytes  &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// مصفوفة بايتات المراد تجزئتها&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 hash:  Function &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// دالة هاش التجزئة المستخدمة&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 blockSize: Integer &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// حجم كتلة دالة التجزئة المستخدمة&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 outputSize: Integer &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// حجم الخرج لدالة التجزئة المستخدمة&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// يتم تقصير المفاتيح الأطول من حجم الكتلة عن طريق تجزئتها&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;{{لون النص|blue|if}}&amp;#039;&amp;#039;&amp;#039; (length(key) &amp;gt; blockSize) &amp;#039;&amp;#039;&amp;#039;{{لون النص|blue|then}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 key ← hash(key)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// يتم حشو المفاتيح الأقصر من كتلة الحجم بالحشو مع الأصفار على اليمين&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;{{لون النص|blue|if}}&amp;#039;&amp;#039;&amp;#039; &amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;(length(key) &amp;lt; blockSize)&amp;lt;/span&amp;gt; &amp;#039;&amp;#039;&amp;#039;{{لون النص|blue|then}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 key ← Pad(key, blockSize)&lt;br /&gt;
&lt;br /&gt;
 o_key_pad ← key xor [0x5c * blockSize] &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// مفتاح حشو خارجي&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  i_key_pad ← key xor [0x36 * blockSize] &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;// مفتاح حشو داخلي&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;{{لون النص|blue|return}}&amp;#039;&amp;#039;&amp;#039; &amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;hash(o_key_pad ∥ hash(i_key_pad ∥ message))&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;// حيث يتم الضم ∥&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== المراجع ==&lt;br /&gt;
&lt;br /&gt;
{{مراجع}}&lt;br /&gt;
&lt;br /&gt;
== وصلات خارجية ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc2104.txt RFC2104]&lt;br /&gt;
* [http://quickhash.com/hmac حاسبة HMAC عبر الإنترنت للعشرات من خوارزميات التجزئة الأساسية]&lt;br /&gt;
* [http://www.freeformatter.com/hmac-generator.html أداة إنشاء / اختبار HMAC عبر الإنترنت]&lt;br /&gt;
* [http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf FIPS PUB 198-1 ، &amp;#039;&amp;#039;رمز مصادقة رسالة التجزئة - HMAC&amp;#039;&amp;#039;]&lt;br /&gt;
* [http://www.ouah.org/ogay/hmac/ تنفيذ HMAC]&lt;br /&gt;
* [https://docs.python.org/library/hmac.html تنفيذ Python HMAC]&lt;br /&gt;
* [http://docs.oracle.com/javase/1.5.0/docs/guide/security/jce/JCERefGuide.html#HmacEx تنفيذ جافا]&lt;br /&gt;
* [https://www.devglan.com/online-tools/hmac-sha256-online أداة اختبار HMAC-SHA-256 عبر الإنترنت]&lt;br /&gt;
&lt;br /&gt;
{{شريط بوابات|تعمية}}&lt;br /&gt;
&lt;br /&gt;
[[تصنيف:فهرسة دالاتية]]&lt;/div&gt;</summary>
		<author><name>عبد العزيز</name></author>
	</entry>
</feed>