روت۱۳

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

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

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

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

شرح[ویرایش]

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

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

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

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

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm

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

How can you tell an extrovert from an
introvert at NSA? Va gur ryringbef,
gur rkgebireg ybbxf ng gur BGURE thl'f fubrf.

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

Ubj pna lbh gryy na rkgebireg sebz na
vagebireg ng AFN? In the elevators,
the extrovert looks at the OTHER guy's shoes.

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

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

در اوایل دهه ۱۹۸۰، از ROT13 در گروه خبری net.jokes استفاده می‌شد.[۳] از ROT13 برای پنهان کردن لطیفه‌های اهانت‌آمیز یا برای مخفی کردن پاسخ یک معما یا مسئله یا هر گونه اسپویلر دیگری استفاده می‌شد.[۲][۴] دلیل انتخاب ۱۳ به جای دیگر مقادیر نظیر ۳ که در رمزنگاری سزار اصلی استفاده می‌شود، به این خاطر بود که با تعویض کردن هر دو حرفی که ۱۳ واحد با هم فاصله دارند، می‌توان الگوریتم‌های رمزگذاری و رمزگشایی مشابه و یکسانی داشت؛ در نتیجه می‌توان به راحتی از یک حکم واحد برای انجام هر دو عمل استفاده کرد.[۴] نرم‌افزارهای خبرخوان، معمولاً از 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 که در Adobe eBook software development kit آمده بود را به عنوان یک روش جدی و قدرتمند برای رمزنگاری اطلاعات تفسیر کرده باشد.[۸] ویندوز اکس‌پی در برخی از کلیدهای رجیستری خود از 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 رمزنگاری یا معکوس کند.[۱۱]

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

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

ROT47 یکی از مشتقات ROT13 است که علاوه بر حروف ساده الفبای انگلیسی، می‌تواند اعداد و علائم را هم رمز کند. ROT47 به جای استفاده کردن از دنباله A–Z به عنوان حروف الفبا، از مجموعه کاراکترهای بزرگتری از یک کدبندی نویسه رایج به نام ASCII استفاده می‌کند. در این روش، کاراکترهای ۷-بیتی چاپ‌شدنی، به استثنای اسپیس، از بازه ۳۳ تا ۱۲۶[پ ۴] با چهل و هفتمین کاراکتر بعد از خود جایگزین می‌شوند. به عنوان مثال، کاراکتر A با p جایگزین می‌شود،[پ ۵] کاراکتر a به 2 تبدیل می‌شود و به همین ترتیب. این روش هم مشابه ROT13 خودوارون است و اجرای مجدد ROT14 بر روی متنی که قبلاً با همین روش رمز شده، متن اولیه و اصلی را دربرخواهد داشت.[۱۲] استفاده کردن از این الفبای بزرگتر باعث می‌شود نتیجه کار از 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 %96 {2KJ s@8]

در کتابخانه سی گنو که مجموعه‌ای از رابط‌های برنامه‌نویسی نرم‌افزار است، تابعی به نام 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. این حرف اُ است، نه عدد صفر
  4. کاراکترهای «!» تا «~» که در مجموع ۹۴ کاراکتر می‌شود
  5. به کوچک و بزرگ بودن حروف دقت کنید
  6. عدد 42 به دهدهی
  7. به معنی روباه قهوه‌ای‌رنگ چابک بر روی سگ تنبل پرید

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

  1. Horrocks, Bruce. “UCSM Cabal Circular #207-a”. Usenet group uk.comp.sys.mac (Message ID UZ36hgCSoh$+EwqG@nodomain.nodomain.us). 28 June 2003. Retrieved 2007-09-17. 
  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. 2003-12-29. Retrieved 2007-09-19. 
  5. Kahn, David. The Codebreakers: The Story of Secret Writing. New York: Macmillan. ISBN ‎0-684-83130-9. 
  6. “On the 2ROT13 Encryption Algorithm” (PDF). Prüfziffernberechnung in der Praxis, 2004-09-25. 
  7. Hollebeek, Tim. “Bad Cryptography in the Netscape Browser: A Case Study”. Reliable Software Technologies. Retrieved 2007-09-20. 
  8. Perens, Bruce. “Dimitry Sklyarov: Enemy or friend?”. ZDNet News, 2001-09-01. Retrieved 2011-02-03. 
  9. Ferri, Vic. “The Count Keys in the Windows Registry”. ABC: All 'Bout Computers, 2007-01-04. Retrieved 2007-09-20. 
  10. De Mulder, Tom. “ROT13 Words”. Furrfu!. Retrieved 2007-09-19. 
  11. Westley, Brian. “westley.c”. IOCCC. 1989. Retrieved 2007-08-13. 
  12. “ROT47 Character Substitution Cipher”. rot47.net, Page Edited: 12/21/2013. Retrieved {{جا:DATE}}. 
  13. “5.10 Trivial Encryption”. The GNU C Library Reference Manual. Free Software Foundation, 2006-12-03. Retrieved 2007-09-20. 
  14. Best of VIM Tips, gVIM's Key Features zzapper

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