# كلمة مرور وعبارة مرور — واحدة قوية عشوائية، مصنوعة في متصفحك

مصنوعة هنا، بمتصفحك أنت، ولا تُرسَل إلى أي مكان أبداً. ولا يُخزَّن شيء ولا سجلّ لها.

> اصنع كلمة مرور قوية عشوائية، أو عبارة مرور بطريقة diceware من قائمة من 7,776 كلمة مشحونة مع الصفحة. تُسحَب بالمولّد التعمياني الخاص بمتصفحك، ولا تُرسَل إلى أي مكان أبداً، ولا تُخزَّن أبداً. مجاناً وبلا تسجيل.

هذه الصفحة أداة تفاعلية تعمل بالكامل داخل متصفحك، على العنوان https://abox.tools/ar/مولد-كلمات-المرور/ — ولا يُرفَع أي شيء تعطيه إياها. وفيما يلي كل ما تقوله الصفحة عن الأداة بالكلمات؛ لاستخدامها، افتح العنوان.

## كلمات مرورك وعبارات مرورك لا تُرفع **أبدا**. لا يوجد خادم.

كل محرف يأتي من `crypto.getRandomValues`، وهو المولّد التعمياني الخاص بالمتصفح، وكل كلمة من قائمة تُشحَن في هذا المجلد باسم `src/wordlist.js`. ولا يوجد `fetch` ولا `XMLHttpRequest` ولا `sendBeacon` في أي موضع من `src/`، فليس ثمّة مسار شيفرة تبلغ به كلمةُ مرور صُنِعت هنا إلينا ولا إلى أحد سوانا — ولا يُكتَب شيء في التخزين كذلك، فإعادةُ تحميل هذه الصفحة تُتلِف كل كلمة مرور عرضتها عليك قط.

- ✗ بلا رفع
- ✗ بلا حساب
- ✗ لا يُخزَّن شيء
- ✓ يعمل دون اتصال
- ✓ مفتوح المصدر

## كيف تصنع كلمة مرور قوية دون أن يراها موقع

1. **اختر كلمة مرور أو عبارة مرور.** كلمةُ المرور مجرى محارف عشوائية: قصيرة في التخزين، عسيرة في الكتابة، وهي بالضبط الصواب لمئات الحسابات التي يملؤها عنك مدير كلمات المرور. أما عبارةُ المرور فكلماتٌ تُسحَب عشوائياً من قائمة: أطول، لكنها تُحفَظ وتُنطَق، وذلك ما تحتاج إليه للأسرار القليلة التي عليك كتابتها من الذاكرة — كلمة مرور مدير كلمات المرور نفسه، وكلمة حاسوبك، ورمز استرداد هاتفك.
2. **اضبط الطول، أو عدد الكلمات.** هذا هو الإعداد الذي يهمّ والبقيةُ في الغالب لا تهمّ. فعشرون محرفاً، أو ست كلمات، أرضيةٌ معقولة لأي شيء يستحق الحماية؛ وزِد عليها للحساب الذي يتيح لأحدهم إعادة تعيين كل ما عداه. والقراءة التي تحته تتحرّك وأنت تسحب، فترى ماذا يشتري كل محرف إضافي.
3. **فعِّل القواعد التي ستصرّ عليها الاستمارة.** «واحد على الأقل من كل نوع»، ورقمٌ في الآخر، ورمزٌ من القائمة القصيرة التي يقبلها كل موقع. ولا شيء من هذه يزيد شيئاً قوةً — بل الأولى تضعفه قليلاً جداً، والصفحة طرحت ذلك أصلاً — لكنها كيف تتجاوز استمارة تسجيل دون أن تولّد ستاً على التوالي.
4. **اقرأ الرقم، لا اللون.** تُعَدُّ البتّات من الإعدادات التي أنتجت السلسلة: حجمُ الأبجدية، وعددُ السحبات، ولا شيء غير ذلك. وذلك قياس حقيقي، على خلاف المؤشِّر الذي في صفحة التسجيل، فهو لا يستطيع إلا تقييم المحارف التي أمامه ولا سبيل له إلى معرفة هل اخترتها أنت أم مولّد.
5. **انسخها، وضعها في مكان، قبل أن تغادر.** لا سجلّ هنا ولا سبيل إلى استرجاعها؛ وإعادةُ تحميل الصفحة تُتلِفها. الصقها في مدير كلمات المرور أولاً وفي استمارة التسجيل ثانياً، كي يكون الذي عليه تذكّرها قد حصل عليها قبل أن يقع خطب.
6. **خذ دفعة إن احتجت إلى واحدة.** المِزلاج الذي في الأسفل يصنع حتى مئة دفعة واحدة ويحفظها ملفاً نصّياً صِرفاً، تكتبه هذه الصفحة مما هو على شاشتك أصلاً. وهو مفيد لتأسيس حسابات أو لتوزيع بيانات دخول أولية، وجديرٌ بالحذف في اللحظة التي تصير فيها في مكان أفضل: فملفٌّ مملوء بكلمات المرور على قرصك يظل ملفاً مملوءاً بكلمات المرور.

## أيضا في الصندوق

- [منسِّق JSON](https://abox.tools/ar/تنسيق-json/): JSON وXML وHTML وCSS وYAML، منسَّقة أو محوَّلة. ولا شيء يُلصَق في خادم أحد آخر.
- [محوّل YAML إلى JSON](https://abox.tools/ar/تحويل-yaml-الى-json/): الاتجاهان معاً، ويقول لك ثمن كلّ منهما. ولا شيء من ذلك يُلصَق في خادوم أحد آخر.
- [مُنسّق XML](https://abox.tools/ar/تنسيق-xml/): ‏XML منشور ليُقرأ أو مضغوط ليُرسَل، ومحوَّل إلى JSON في الاتجاهين. ولا شيء من ذلك يُلصَق في خادوم أحد آخر.
- [مقارن النصوص](https://abox.tools/ar/مقارنة-النصوص/): نصّان يدخلان، وكل فرق يخرج معلَّماً، سطراً سطراً وكلمةً كلمة. ولا شيء يُلصَق في خادم أحد آخر.

## أسئلة

### هل تُرسَل كلمات المرور إلى أي مكان، أو تُخزَّن؟

لا هذا ولا ذاك. تُصنَع في متصفحك، على جهازك أنت، وليست لهذه الأداة وظيفة شبكية من أي نوع — فهي لا تجلب شيئاً ولا ترسل شيئاً أبداً. ولا يُكتَب شيء في التخزين كذلك: لا localStorage، ولا كعكة، ولا سجلّ. أعِد تحميل الصفحة فتذهب كل كلمة مرور عرضتها عليك، من الشاشة ومن ذاكرتها هي. و`Content-Security-Policy` الخاصة بالصفحة تُسمّي كل عنوان يجوز لها الاتصال به وليس واحد منها لنا، فليس ثمّة مكان تُجمَع فيه كلمة مرور حتى لو حاول شيء.

### من أين تأتي العشوائية؟

من `crypto.getRandomValues`، وهو المولّد الذي توفّره المتصفحات للاستعمال التعمياني، يبذره نظام تشغيلك ويعيد بذره من مجمع العشوائية الخاص به. وهو المصدر نفسه الذي يستعمله المتصفح لمادة مفاتيح TLS. أما `Math.random` فلا يُستعمَل في أي موضع من هذه الأداة، وذلك التمييز ليس تشدّقاً: فـ `Math.random` مولّدٌ حسابي سريع يمكن إعادة بناء حالته الداخلية كلها من بضع مخرجات متتالية، فمولّدُ كلمات مرور مبنيٌّ عليه ينتج كلمات مرور تبدو عشوائية ويمكن تعدادها عند كل من رأى واحدة منها.

### هل كلمة المرور المصنوعة في متصفح بجودة واحدة من برنامج سطح مكتب؟

من جهة العشوائية، نعم — فهو مصدر نظام التشغيل نفسه في الحالين، يُبلَغ من باب آخر. والذي يختلف ما عداه في الغرفة. فتبويبُ المتصفح يعمل إلى جانب امتداداتك، والامتدادُ الذي له إذن قراءة الصفحات يستطيع قراءة هذه. وذلك صحيح في كل مولّد على الويب وهذا منها، وهو السبب الصادق لاستعمال المولّد المدمج في مدير كلمات مرورك حين يكون عندك واحد: فهو الحساب نفسه، في عملية إلى جانبها أقلّ. وهذه الصفحة لحين لا يكون عندك واحد في متناول يدك.

### كلمة مرور أم عبارة مرور — أيّهما ينبغي أن أستعمل فعلاً؟

كلمةُ مرور لكل ما يكتبه عنك مدير كلمات المرور، لأنك لن تنظر إليها قط والطولُ مجاني. وعبارةُ مرور للأشياء القليلة التي عليك كتابتها من الذاكرة أو قراءتها بصوت عالٍ: كلمةُ المرور الرئيسة لمدير كلمات المرور، ومفتاحُ تشفير قرص، وجهازٌ تُعِدّه بالتحكّم عن بُعد. وستُّ كلمات من القائمة الطويلة 77 بتّاً، وهي أقوى من كلمة مرور عشوائية من اثني عشر محرفاً وأيسر بكثير جداً في إصابتها في الرابعة فجراً.

### كم ينبغي أن يكون طول كلمة المرور؟

عشرون محرفاً على الأبجدية الكاملة نحو 130 بتّاً وهي بعد النقطة التي يكفّ عندها الطول عن أن يكون الشيء الذي يُقلِق. وستة عشر لا بأس بها. واثنا عشر أرضيةٌ لأي شيء يهمّك فقدُه، وهي الأرضية لا الهدف. ودون ذلك تعتمد على أن الموقع خزّنها كما ينبغي، وهو رهانٌ توحي إشعارات الاختراق في العشرين سنة الماضية بألا تراهنه. والطول يغلب كل إعداد آخر على الصفحة؛ فإضافةُ محرف واحد تساوي أكثر من أي قاعدة عن أي المحارف يجب أن تظهر.

### كم كلمة ينبغي أن تكون في عبارة المرور؟

ستٌّ من القائمة الطويلة، وسبعٌ إن كانت تحرس كلمات مرور أخرى. فالصورة الشهيرة ذات الكلمات الأربع رُسِمت في 2011، وهي 51 بتّاً، وهي في متناول هجوم غير متصل جادّ اليوم. والخمس 64. والستّ 77، وهي بعد أي شيء سينفقه مهاجم على حساب عادي واحد. وكل كلمة إضافية من القائمة الطويلة تضيف 12.9 بتّاً، والكلماتُ هي الجزء الوحيد الذي يضيف شيئاً — أما الشُّرَط والأحرف الكبيرة فلا.

### ما «البتّ»، ولماذا تعدّه هذه الصفحة؟

البتُّ مضاعفة. فستون بتّاً تعني أنه كان ثمّة 2^60 نتيجة متساوية الاحتمال تستطيع هذه الصفحة إنتاجها، فالمهاجم الذي يعرف كيف تعمل بالضبط يبقى أمامه ذلك العدد ليجرّبه. وهي خاصية *العملية* لا خاصية السلسلة: فالصفحة تستطيع ذكرها بالضبط لأنها هي التي اختارت وهي تعرف كم اختياراً اتخذت. وذلك هو الفرق بين هذا وبين الشريط الملوَّن في استمارة تسجيل، فهو يقرأ المحارف ويخمّن. وعلى ذلك الشريط تسجّل `correct horse battery staple` نتيجةً سيئة وهي تساوي 44 بتّاً، وتسجّل `P@ssw0rd!` نتيجةً حسنة وهي لا تساوي شيئاً تقريباً.

### لماذا تُضعِف «يجب أن تحوي رمزاً» كلمةَ المرور؟

لأن القاعدة لا تستطيع إلا أن تزيل احتمالات. فاشتراطُ محرف واحد على الأقل من كل مجموعة يستبعد كل كلمة مرور صادف ألا يكون فيها واحد، ومجموعةٌ أصغر من كلمات المرور الممكنة عددٌ أصغر للبحث فيه. والأثر صغير — نحو نصف بتّ عند طول معتاد — وهو حقيقي، وهذه الصفحة تطرحه بدل أن تذكر الرقم المُطري. ويُحسَب بالضبط، بعدّ كلمات المرور التي تسمح بها القاعدة فعلاً لا التي لا تسمح بها.

### ما هذه القائمة، وهل يهمّ أن المهاجم يستطيع تنزيلها؟

هي قوائم diceware الخاصة بمؤسسة الحدود الإلكترونية (EFF)، مشحونة دون تعديل: 7,776 كلمة للطويلة و1,296 للقصيرة. وقد بُنِيت لهذا بالضبط — لا شيء مسيء، ولا كلمات متجانسة، ولا أزواج تلتحم فتصير كلمة ثالثة، وفي القصيرة لا كلمة هي بداية أخرى. ولا، لا يهمّ أن القائمة علنية: فالقوة المذكورة هنا تفترض أن المهاجم عنده القائمة، وأنه ينظر في مصدر هذه الصفحة، ويعرف كل إعداد استعملته. والشيء الوحيد الذي لا يعرفه أيُّ الـ 7,776 خرجت في كل مرة. وذلك الافتراض هو ما يجعل الرقم جديراً بالثقة.

### أليست عبارةُ المرور هجومَ قاموس ينتظر أن يقع؟

ليست كذلك حين تُختار الكلمات على هذا النحو. فهجوم القاموس ينجح في مقابل العبارات التي يختارها *الناس*، لأن الناس يختارون كلمات يمشي بعضها مع بعض، بترتيب معقول، من الآلاف القليلة التي يستعملونها كل يوم. وهذه الصفحة تختار كل كلمة مستقلةً، بانتظام، من قائمة ثابتة، دون اكتراث بحسن قراءة الناتج — ولذلك لا يُقرأ حسناً عادةً. والمهاجم الذي يعرف القائمة والطول يبقى أمامه 7,776 مرفوعةً إلى عدد الكلمات.

### هل أستطيع استرجاع كلمة مرور بعد أن أغادر الصفحة؟

لا، وذلك مقصود. فلا شيء يُكتَب في أي مكان، فلا شيء يُستعاد: لا لوحة سجلّ، ولا قائمة «وُلِّدت مؤخراً»، ولا خبيئة. والمولّد الذي يستطيع أن يعرض عليك كلمة مرور الثلاثاء الماضي مولّدٌ كان قد خزّنها، والمخزَّن حيث تستطيع بلوغه مخزَّنٌ حيث يستطيع شيء آخر بلوغه. انسخها إلى مدير كلمات مرور قبل أن تنتقل.

### هل نسخُها إلى الحافظة آمن؟

هو الخطر المعتاد، وهو جدير بأن يُعرَف لا بأن يُقلَق منه. فالحافظة مشتركة مع كل ما يعمل باسمك، وهي تبقى حتى النسخة التالية عادةً، وفي بعض الإعدادات تُزامَن بين الأجهزة. وذلك سببٌ حسن للصقها حيث تنتمي فوراً ونسخِ شيء آخر بعدها، وليس سبباً لكتابة كلمة مرور أضعف باليد بدلاً من ذلك. وهذه الصفحة لا تستطيع قراءة حافظتك؛ تستطيع الكتابة فيها لا غير، وحين تضغط الزر لا غير.

### هل ينبغي أن أستعمل الواحدة نفسها في أكثر من موضع؟

لا، وهي النصيحة الوحيدة على هذه الصفحة التي تعلو على كل ما عداها فيها. فكلُّ حساب يُستولى عليه تقريباً يُستولى عليه بكلمة مرور كانت صحيحة في مكان آخر أولاً: يُخترَق موقع، وتُنشَر القائمة، ويُجرَّب العنوان وكلمة المرور نفساهما في كل مكان. وكلمةُ مرور فريدة لكل موقع تحوّل الاختراق إلى حساب واحد بدل كلها، وهي سبب الاحتفاظ بمدير كلمات مرور — لا قوةُ أي كلمة مرور بعينها يحفظها.

### هل هو مجاني، وهل أحتاج إلى حساب؟

هو مجاني، ولا حساب ولا تسجيل دخول ولا فترة تجريبية ولا حدّ لعدد ما تولّده. ويحمل الموقع إعلانات، وهي ما يدفع تكاليفه؛ ولا يُعطى المعلنون شيئاً البتة عمّا تصنعه هذه الصفحة، ولا كم كان طوله ولا كم كان قوياً.

### هل يعمل دون اتصال؟

نعم. حمِّل الصفحة مرة، ثم اقطع اتصالك بالإنترنت، وستظل تصنع كلمات المرور. فالعشوائية تأتي من جهازك أنت وقائمةُ الكلمات في الصفحة أصلاً. وهذه أيضاً أبسط طريقة لإثبات أنه لا يُجلَب شيء ولا يُرسَل: فمولّدٌ يسأل خادماً عن أرقامه كان سيتوقف في اللحظة التي تقطع فيها الاتصال.

## كيف يمكن التحقق من وعد الخصوصية

- **كلمة المرور تُصنَع حيث تقرأ هذا.** تُسحَب في هذه الصفحة، بهذه الصفحة، من العشوائية التي يناولها نظام تشغيلك أنت للمتصفح. ولا يُطلَب شيء لإنتاجها ولا يُبلَّغ عن شيء متى وُجِدت. وتُسمّي `Content-Security-Policy` كل عنوان يجوز لهذه الصفحة الاتصال به، وليس واحد منها لنا: فلا يوجد هنا طرفٌ تُجمَع عنده كلمة مرور مولَّدة، ولا في الشيفرة ما يرسلها إليه لو وُجد.
- **لا شيء هنا يجلب شيئاً.** لا يوجد `fetch` ولا `XMLHttpRequest` ولا `sendBeacon` في أي موضع من `src/`. وقائمة الكلمات لا تُنزَّل؛ هي `src/wordlist.js`، تُخدَم من هذا الأصل مع بقية الصفحة، وتستطيع قراءتها.
- **العشوائية عشوائيةُ المتصفح، وهي من النوع الصحيح.** `crypto.getRandomValues` هو المولّد الذي توفّره المتصفحات للمفاتيح والرموز، يبذره نظام التشغيل ويعيد بذره. أما `Math.random` فلا يظهر في أي موضع من هذا المجلد، ولو ظهر لكان عيباً حقيقياً: إذ يمكن استعادة حالته الداخلية من حفنة مخرجات، وذلك يجعل كل كلمة مرور سينتجها قط قابلةً للحساب عند كل من رأى واحدة منها.
- **لا يُخزَّن شيء، فلا سجلّ يُمسَح.** لا localStorage، ولا sessionStorage، ولا كعكة، ولا معامل في العنوان، ولا `<input>` يعرض المتصفح تذكّره. والذي على الشاشة موجود في مصفوفة واحدة في ذاكرة هذه الصفحة، وإغلاقُ التبويب هو التنظيف كله. والنُّسَخ الوحيدة لأي شيء صُنِع هنا هي التي تأخذها أنت معك.
- **ما تُحمّله Google، وما لا يُعطى لها.** نصوص الإعلانات والقياس تأتي من Google، وزر التبرّع من Buy Me a Coffee. ولا يُعطى أيٌّ منها محرفاً واحداً مما تصنعه هذه الصفحة، ولا طولَه، ولا قوّته، ولا أي إعدادات أنتجته. وكل سطر يسحب محرفاً أو كلمة يُخدَم من هذا الأصل نفسه ومُدرَج في المستودع.
- **يعمل دون اتصال.** اقطع الاتصال بالشبكة، وتبقى الأداة كما هي، لأنه لم تكن فيها خطوة شبكية قط. وهذا أبسط برهان على الإطلاق: فمولّدٌ يسأل خادماً عن عشوائيته كان سيتوقف في اللحظة التي تقطع فيها الاتصال.

**تحقّق بنفسك.** لا شيء مما سبق عليك تصديقه دون تحقق. تُولَّد هذه الصفحة من القوالب والإعدادات في المستودع بواسطة سكربت بناء يمكنك قراءته وتشغيله بنفسك، والنتيجة موجودة في فرع `dist` — فقارِن إذن بين ما يُقدَّم فعلا وما ينتجه بناء المصادر: https://github.com/A-Box-of-Tools/website

الملفات الجديرة بالقراءة أولا هي `config/site.toml` من أجل سياسة أمان المحتوى (Content-Security-Policy)، و`src/random.js` للأسطر الأربعين التي تقف بين هذه الصفحة وكل كلمة مرور تصنعها — ولها مدخل واحد بالضبط، وذلك المدخل هو مولّد المتصفح نفسه — و `src/generate.js` لكيفية تحوّل الإعدادات إلى سلسلة، و `src/strength.js` للحساب الذي وراء الرقم، وهو يعدّ لا يخمّن.
