روت۱۳

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
ROT13 هر حرف را با سیزدهمین حرف بعد از خود در حروف الفبای انگلیسی جایگزین می‌کند. برای مثال، HELLO تبدیل به URYYB می‌شود و برعکس، URYYB به HELLO تبدیل می‌شود.

روت۱۳ (به انگلیسی: ROT13)[پ ۱] یک روش ساده برای به رمز درآوردن حروف الفباست. این روش از نوع رمزنگاری جانشینی است. در این روش، هر حرف، با سیزدهیمن حرف بعد از خود در حروف الفبا جایگزین می‌شود. ROT13 نمونه‌ای از رمز سزار است که در روم باستان بوجود آمده است.

در الفبای مقدماتی لاتین، ROT13 به صورت خودوارون عمل می‌کند. به این معنی که برای برگرداندن متن رمزشده به حالت اولیه، از همان الگوریتم استفاده می‌شود و به این ترتیب می‌توان از یک عمل یکسان هم برای رمزنگاری و هم برای رمزگشایی استفاده کرد. این الگوریتم عملاً هیچ نوع امنیتی ندارد و اغلب از آن به عنوان مثالی از یک روش رمزنگاری ضعیف و بدون امنیت یاد می‌شود.

در تالارهای گفتگوی اینترنتی، از ROT13 به عنوان وسیله‌ای برای پنهان کردن افشاسازها، شاه‌بیت‌ها، راه‌حل مسائل و معماها و مطالب تعرض‌آمیز استفاده می‌شود تا جلوی دید اتفاقی را بگیرد. در نشریات و مجلات، عموماً برای پنهان کردن پاسخ معماها، آنها را به صورت وارون چاپ می‌کنند تا خواننده در حالت عادی قادر به خواندن پاسخ نباشد و مجبور باشد برای دیدن پاسخ، کاغذ را بچرخاند. از الگوریتم ROT13، به عنوان «برابر یوزنتی این روش» یاد شده است.[۱] ROT13 الهام‌بخش انواع گوناگونی از بازی‌های نامه‌ای آنلاین بوده است و در گفتگوهای گروه‌های خبری به طور مکرر به آن اشاره می‌شود.

شرح[ویرایش]

برای اعمال کردن الگوریتم ROT13 بر روی یک متن انگلیسی، کافیست هر یک از حروف با سیزدهمین حرف مابعد خود در الفبای انگلیسی جایگزین شود و در صورت نیاز، عمل جایگزینی از ابتدای فهرست صورت گیرد.[۲] برای راحتی کار، می‌توان کلیهٔ حروف الفبای زبان انگلیسی را به صورت ساعت‌گرد و دایره‌وار بر روی یک تکه کاغذ نوشت و سپس برای جایگزین کردن هر حرف، انگشت دست را بر روی آن حرف گذاشته و ۱۳ مکان به صورت ساعتگرد حرکت کرده و سپس حرفی که انگشت دست بر روی آن قرار گرفته را بنویسیم. با این کار، حرف A به حرف N تبدیل می‌شود، B به حرف O[پ ۲] تبدیل می‌شود و به همین ترتیب تا حرف M که به Z تبدیل می‌شود. سپس این دنباله از ابتدای حروف الفبا آغاز می‌شود، حرف N به A تبدیل می‌شود، O به B تبدیل می‌شود و به همین ترتیب تا حرف Z که به M تبدیل می‌شود. تنها حروفی که در الفبای انگلیسی قرار دارند تحت تاثیر قرار می‌گیرند، اعداد، نمادها و علائم، حروف فاصله و تمام حروف‌های دیگر، بدون تغییر رها می‌شوند. از آنجا که حروف الفبای انگلیسی بیست و شش حرف دارد و ۲۶ = ۲ × ۱۳، تابع ROT13 یک تابع خودوارون است. به عبارتی دیگر، برای هر متن x که با الفبای لاتین ساده نوشته شده است، داریم:

\mbox{ROT}_{13}(\mbox{ROT}_{13}(x))=x

به عبارت دیگر، اگر دو بار پشت سر هم ROT13 را بر روی یک متن بکار ببریم، نتیجه همان متن اولیه خواهد بود (در ریاضیات معمولاً به آن «رجعت» و در رمزنگاری به آن رمزنگاری دوجانبه می‌گویند.)

عمل تبدیل متن می‌تواند به وسیلهٔ یک جدول جستجو صورت پذیرد.

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm

در لطیفهٔ زیر، شاه‌بیت توسط ROT13 پنهان شده است:

Why did the chicken cross the road?
Gb trg gb gur bgure fvqr!

اگر کل متن را با استفاده از الگوریتم ROT13 تبدیل کنیم، پاسخ نمایان خواهد شد:

Jul qvq gur puvpxra pebff gur ebnq?
To get to the other side!

اگر بار دیگر بر روی متن نتیجه، الگوریتم ROT13 را اجرا کنیم، متن اولیه بدست خواهد آمد.

موارد استفاده[ویرایش]

در اوایل دههٔ ۱۹۸۰ (میلادی)، از ROT13 در گروه خبری net.jokes استفاده می‌شد.[۳] از ROT13 برای پنهان کردن لطیفه‌های اهانت‌آمیز یا برای مخفی کردن پاسخ یک معما یا مسئله یا هر گونه اسپویلر دیگری استفاده می‌شد.[۲][۴] دلیل انتخاب ۱۳ به جای دیگر مقادیر نظیر ۳ که در رمزنگاری سزار اصلی استفاده می‌شود، به این خاطر بود که با تعویض کردن هر دو حرفی که ۱۳ واحد با هم فاصله دارند، می‌توان الگوریتم‌های رمزگذاری و رمزگشایی مشابه و یکسانی داشت؛ در نتیجه می‌توان به راحتی از یک دستور واحد برای انجام هر دو عمل استفاده کرد.[۴] نرم‌افزارهای خبرخوان، معمولاً از ROT13 به‌صورت توکار پشتیبانی می‌کنند و نیازی به نصب کردن هیچگونه افزونه اضافی نیست.[۴] آدرس‌های ایمیل هم گاهی اوقات با ROT13 رمزنگاری می‌شوند تا از ربات‌های جفنگ‌نگاری غیر پیشرفته در امان بمانند.[۵]

ROT13 نمونه‌ای از یک الگوریتم رمزنگاری است که به نام رمزنگاری سزار شناخته می‌شود. گفته می‌شود ژولیوس سزار در قرن اول پیش از میلاد، الگوریتم سزار را ابداع کرده است.[۶]

در مواردی که محرمانه بودن اطلاعات مد نظر است و اطلاعات نباید بدست افراد غیرمجاز بیفتد، نباید از ROT13 استفاده شود. از آنجایی که در الگوریتم ROT13 هر حرف به تعداد ثابتی (۱۳ تا) جابجا می‌شود – و در واقع می‌توان گفت که از هیچگونه کلیدی برای رمزنگاری استفاده نمی‌شود – اطلاعات به سادگی قابل رمزگشایی هستند. تنها با دانستن اینکه اطلاعات با الگوریتم ROT13 رمزنگاری شده‌اند، می‌توان به آسانی و با همین الگوریتم اطلاعات را رمزگشایی کرده و به حالت اولیه درآورد. حتی اگر دانسته نباشد که اطلاعات به روش ROT13 رمزنگاری شده‌اند، باز هم می‌توان این الگوریتم را به آسانی و به روش تحلیل فراوانی در هم شکست.[۲] به خاطر اینکه این الگوریتم مطلقاً برای رمزنگاری نامناسب است، تبدیل به یک کنایه برای تمسخر کردن دیگر الگوریتم‌های ضعیف رمزنگاری شده است.[۷] مثلاً شخصی می‌تواند بگوید که «الگوریتم ۵۶-بیتی DES تنها کمی از ROT13 قویتر هست» که اشاره به ضعیف بودن این الگوریتم دارد. همچنین برای شوخی با اصطلاحاتی حقیقی در دنیای واقعی مانند «DES دوگانه»، اصطلاحات تمسخرآمیزی مانند «ROT13 دوگانه»، «ROT26» یا «2ROT13» مورد استفاده قرار می‌گیرند که یک نمونه از استفاده این کلمات، یک مقالهٔ دانشگاهی جعلی به نام «در مورد الگوریتم رمزنگاری 2ROT13» است.[۸] از آنجایی که اگر الگوریتم ROT13 را بر روی متنی که خود قبلاً با ROT13 رمزنگاری شده، اعمال کنیم، متن اصلی و اولیه بدست می‌آید، اصطلاح ROT26 یا 2ROT13 معادل «بدون هر گونه رمزنگاری» است. اصطلاح «ROT13 سه‌گانه» که برای شوخی با 3DES استفاده می‌شود، برابر با همان ROT13 معمولی است.

در ماه دسامبر ۱۹۹۹ (میلادی)، کشف شد که نت‌اسکیپ کامیونیکیتور از ROT-13 برای رمزنگاری پسورد ایمیل‌ها استفاده می‌کند.[۹] در سال ۲۰۰۱ (میلادی)، برنامه‌نویس روسی، Dimitry Sklyarov نشان داد که یک فروشندهٔ کتاب‌های الکترونیکی به نام NPRG، از ROT13 برای رمزنگاری اسناد استفاده می‌کرده است. گمانه‌زنی‌هایی در اینباره وجود داشت که ممکن است NPRG اشتباهاً یک مثال شوخی‌آمیز در مورد ROT13 [پ ۳] را به عنوان یک روش جدی و قدرتمند برای رمزنگاری اطلاعات تفسیر کرده باشد.[۱۰] ویندوز اکس‌پی در برخی از کلیدهای رجیستری خود از ROT13 استفاده می‌کند.[۱۱]

بازی‌های نامه‌ای و فرهنگ اینترنت[ویرایش]

abcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLM
ahanun antnag
balkonyx barone
barfones beor
binova ebbsroof
envyrail erre
errsreef flapsync
furshe geltry
gnattang irkvex
clerkpyrex purelycheryl
PNGcat SHAfun
furbysheol terragreen
whatJung URLhey
purpuraChechen shoneFUBAR
AresNerf abjurernowhere

با رمزنگاری برخی از کلمات با استفاده از ROT13، کلمه معنی‌دار دیگری حاصل می‌شود. این ویژگی ROT13 دستمایهٔ برخی از بازی‌های نامه‌ای شده است. کلمات هفت-حرفی abjurer[پ ۴] و nowhere[پ ۵] دو نمونه طولانی هستند که اگر ROT13 را بر روی یکی از آنها اعمال کنیم، کلمهٔ دیگر بدست می‌آید. دو کلمهٔ chechen و purpura هم هر دو هفت‌حرفی هستند که این ویژگی را دارند. نمونه‌های دیگری از این قبیل کلمات، در جدول روبرو آورده شده است.[۱۲] در این میان، دو کلمهٔ gnat[پ ۶] و tang[پ ۷] یک نمونه جالب توجه است که هم اجرای ROT13 بر روی یکی، دیگری را نتیجه می‌دهد و هم اینکه اگر یکی را به صورت وارونه بخوانیم، نتیجه دیگری خواهد بود.

Brian Westley در مسابقهٔ بین‌المللی کدنویسی مبهم به زبان سی در سال ۱۹۸۹ میلادی، یک برنامهٔ رایانه‌ای نوشته بود که کد منبع آن این قابلیت را داشت که با استفاده از ROT13 کدگذاری و یا وارون شود، به طوریکه همچنان بتوان آن را بدرستی کامپایل کرد. این برنامه هنوز هم با گذشت سال‌ها، بر روی کامپایلرهای امروزی به‌درستی کامپایل می‌شود. کار این برنامه این بود که متنی که به عنوان ورودی به آن داده می‌شد را با استفاده از ROT13 رمزنگاری یا معکوس کند.[۱۳]

گروه خبری alt.folklore.urban واژه‌ای جدید به نام furrfu را اختراع کرده است که در اصل با اعمال ROT13 بر روی واژه sheesh بوجود آمده است. این واژه به این خاطر بوجود آمد که برخی از کاربران این گروه خبری، فکر می‌کردند که واژهٔ sheesh بیش از حد مورد استفاده قرار می‌گیرد و در صدد جایگزین کردن آن برآمدند. واژهٔ sheesh در این گروه خبری، به عنوان پاسخی برای ارسال‌های تکراری تازه‌واردین در مورد افسانه‌های محلی مورد استفاده قرار می‌گرفت.[۱۴]

گونه‌ها[ویرایش]

ROT5 الگوریتمی مشابه ROT13 است که بر روی ارقام عددی (۰ تا ۹) اعمال می‌شود. ROT13 و ROT5 می‌توانند به صورت همزمان برای رمزنگاری یک پیام مورد استفاده قرار گیرند.

ROT47 یکی از مشتقات ROT13 است که علاوه بر حروف ساده الفبای انگلیسی، می‌تواند اعداد و علائم را هم رمز کند. ROT47 به جای استفاده کردن از دنباله A–Z به عنوان حروف الفبا، از مجموعه کاراکترهای بزرگتری از یک کدبندی نویسه رایج به نام ASCII استفاده می‌کند. در این روش، کاراکترهای ۷-بیتی چاپ‌شدنی، به استثنای فضای خالی (space)، از بازهٔ ۳۳ تا ۱۲۶[پ ۸] با چهل و هفتمین کاراکتر بعد از خود جایگزین می‌شوند. به عنوان مثال، کاراکتر A با p جایگزین می‌شود،[پ ۹] کاراکتر a به 2 تبدیل می‌شود و به همین ترتیب. این روش هم مشابه ROT13 خودوارون است و اجرای مجدد ROT47 بر روی متنی که قبلاً با همین روش رمز شده، متن اولیه و اصلی را دربرخواهد داشت.[۱۵] استفاده کردن از این الفبای بزرگتر باعث می‌شود نتیجه کار از ROT13 مبهم‌تر باشد. برای مثال، یک شمارهٔ تلفن همانند +1-415-839-6885 به شکل Z`\c`d\gbh\eggd رمز می‌شود که در نگاه اول خیلی واضح و مشخص نیست. از سوی دیگر، از آنجایی که ROT47 هم حروف، هم اعداد و هم نشانه‌ها را بدون فرق گذاشتن بین آنها در هم می‌آمیزد، با یک نگاه به متن می‌توان به سرعت پی برد که این یک متن رمزشده است، نه یک جمله معمولی.

مثال:

The Quick Brown Fox Jumps Over The Lazy Dog.

که به صورت زیر رمز می‌شود:

%96 "F:4<qC@H? u@I yF>AD ~G6C %۹۶ {2KJ s@۸]

در کتابخانه سی گنو که مجموعه‌ای از رابط‌های برنامه‌نویسی نرم‌افزار است، تابعی به نام memfrob()‎ وجود دارد که کاری مشابه ROT13 انجام می‌دهد. هرچند که این تابع به جای حروف الفبا، با داده‌های باینری دلخواه کار می‌کند و از این حیث با ROT13 متفاوت است. این تابع هر بایت را با عدد باینری 00101010[پ ۱۰] XOR می‌کند که نتیجه آن یک رمز XOR ساده است. همانند ROT13، تابع memfrob()‎ هم خودوارون است و امنیتی به همان میزان (عملاً بدون امنیت) فراهم می‌کند.[۱۶]

پیاده‌سازی‌ها[ویرایش]

دستوری به نام tr در سیستم‌عامل‌های شبه یونیکس وجود دارد که به وسیله آن به راحتی می‌توان ROT13 و ROT47 را پیاده‌سازی کرد. برای رمزگذاری کردن رشتهٔ متنی The Quick Brown Fox Jumps Over The Lazy Dog[پ ۱۱] به وسیلهٔ ROT13، کافیست به صورت زیر عمل کرد:

$ # Map upper case A-Z to N-ZA-M and lower case a-z to n-za-m
$ echo "The Quick Brown Fox Jumps Over The Lazy Dog" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt
$ tr 'A-Za-z' 'N-ZA-Mn-za-m' <<<"The Quick Brown Fox Jumps Over The Lazy Dog"
Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt

و برای رمزنگاری همان رشته به وسیلهٔ ROT47:

$ echo "The Quick Brown Fox Jumps Over The Lazy Dog" | tr '\!-~' 'P-~\!-O'
%96 "F:4<qC@H? u@I yF>AD ~G6C %96 {2KJ s@8

و

$ tr '\!-~' 'P-~\!-O' <<<"The Quick Brown Fox Jumps Over The Lazy Dog"
%96 "F:4<qC@H? u@I yF>AD ~G6C %96 {2KJ s@8

در ویرایشگر متن ویم، می‌توان متن مورد نظر را انتخاب کرده و سپس دستور زیر را اجرا کرد تا متن مورد نظر به صورت ROT13 رمزنگاری شود:[۱۷]

g?

پیاده‌سازی به زبان سی:

void rot13(char *p)
{
        int i=0;
        int n;
 
        while(p[i])
        {
                if (p[i] <'A' || p[i]> ('a'+26))
                {
                        i++;
                        continue;
                }
 
                if (p[i] <'a')
                {
                        n = 'A';
                }
                else
                {
                        n = 'a';
                }
 
                n = (p[i] - (n+13)) % 26 + n;
                p[i++] = (char)n;
        }
}

جستارهای وابسته[ویرایش]

پانویس[ویرایش]

  1. برگرفته از «rotate by 13 places» به معنی چرخاندن ۱۳ تایی
  2. این حرف اُ است، نه عدد صفر
  3. که در Adobe eBook software development kit آمده بود
  4. کسی که سوگند خود را می‌شکند
  5. هیچ کجا
  6. پشه
  7. مزه تند
  8. کاراکترهای «!» تا «~» که در مجموع ۹۴ کاراکتر می‌شود
  9. به کوچک و بزرگ بودن حروف دقت کنید
  10. عدد ۴۲ به دهدهی
  11. به معنی روباه قهوه‌ای‌رنگ چابک بر روی سگ تنبل پرید

منابع[ویرایش]

  1. Horrocks, Bruce. “UCSM Cabal Circular #207-a”. Usenet group uk.comp.sys.mac (Message ID UZ36hgCSoh$+EwqG@nodomain.nodomain.us). 28 June 2003. Archived from the original on 11 June 2014. Retrieved 17 September 2007. 
  2. ۲٫۰ ۲٫۱ ۲٫۲ Schneier, Bruce. Applied Cryptography. Second ed. John Wiley & Sons, 1996. 11. ISBN ‎0-471-11709-9. 
  3. Early uses of ROT13 found in the Google USENET archive date back to 8 October 1982, posted to the net.jokes newsgroup [۱][۲].
  4. ۴٫۰ ۴٫۱ ۴٫۲ Raymond, Eric S. (ed.). “ROT13”. The Jargon File, 4.4.7. 29 December 2003. Archived from the original on 11 June 2014. Retrieved 19 September 2007. 
  5. Ferner, Matt. “How to Hide Email Addresses From Spam Bots”. PracticalEcommerce, 8 December 2010. Retrieved 12 June 2014. 
  6. Kahn, David. The Codebreakers: The Story of Secret Writing. New York: Macmillan. ISBN ‎0-684-83130-9. 
  7. Perrin, Chad. “Cryptography's running gag: ROT13”. TechRepublic, 3 February 2010. Retrieved 10 June 2014. 
  8. “On the 2ROT13 Encryption Algorithm” (PDF). Prüfziffernberechnung in der Praxis, 25 September 2004. Archived from the original on 11 June 2014. Retrieved 20 September 2007. 
  9. Hollebeek, Tim. “Bad Cryptography in the Netscape Browser: A Case Study”. Reliable Software Technologies. Archived from the original on 11 June 2014. Retrieved 20 September 2007. 
  10. Perens, Bruce. “Dimitry Sklyarov: Enemy or friend?”. ZDNet News, 1 September 2001. Archived from the original on 11 June 2014. Retrieved 3 February 2011. 
  11. Ferri, Vic. “The Count Keys in the Windows Registry”. ABC: All 'Bout Computers, 4 January 2007. Archived from the original on 11 June 2014. Retrieved 20 September 2007. 
  12. De Mulder, Tom. “ROT13 Words”. Furrfu!. Archived from the original on 11 June 2014. Retrieved 19 September 2007. 
  13. Westley, Brian. “westley.c”. IOCCC. 1989. Archived from the original on 11 June 2014. Retrieved 13 August 2007. 
  14. “Furrfu”. Foldoc, 25 October 1995. Archived from the original on 11 June 2014. Retrieved 13 August 2007. 
  15. “ROT47 Character Substitution Cipher”. rot47.net, Page Edited: 21 December 2013. Archived from the original on 11 June 2014. 
  16. “5.10 Trivial Encryption”. The GNU C Library Reference Manual. Free Software Foundation, 3 December 2006. Archived from the original on 11 June 2014. Retrieved 20 September 2007. 
  17. “Best of Vim Tips”. rayninfo.co.uk. Archived from the original on 11 June 2014. Retrieved 10 June 2014. 

پیوند به بیرون[ویرایش]