ROT13

Sezar şifrelemesinin özel bir hali

ROT13 (Rotate13, "13 basamak döndür (rotate by 13 places)", bazen tire ile ROT-13), Latin alfabesinde bir harfi kendisinden sonraki 13. harfle değiştiren basit bir harf ikame şifresidir. ROT13, antik Roma'da geliştirilen Sezar şifresinin özel bir durumudur.

Latin alfabesi kullanan ROT-13 şifresi için bir yerine koyma tablosu ve örnek bir uygulama.

Temel Latin alfabesinde 26 harf (2×13) olduğundan, ROT13 kendi tersidir; yani, ROT13'ü geri almak için aynı algoritma uygulanır, böylece aynı eylem kodlama ve kod çözme için kullanılabilir. Algoritma neredeyse hiç kriptografik güvenlik sağlamaz ve genellikle zayıf şifrelemenin kanonik bir örneği olarak gösterilir.[1]

ROT13, çevirm içi forumlarda spoilerları, can alıcı noktaları, bulmaca çözümlerini ve saldırgan materyalları sıradan bakışlardan gizlemek için kullanılmıştır. ROT13 internette çeşitli harf ve kelime oyunlarına ilham kaynağı olmuş ve haber grubu sohbetlerinde sıkça bahsedilmiştir.

ROT13'ü bir metin parçasına uygulamak sadece alfabetik karakterleri incelemeyi ve her birini alfabede 13 sıra ilerideki harfle değiştirmeyi, gerekirse başa sarmayı gerektirir.[2] A N olur, B O olur ve böylece Z olan M'ye kadar devam eder, sonra sıra alfabenin başında devam eder: N A olur, O B olur ve böylece M olan Z'ye kadar devam eder. Sadece İngiliz alfabesinde bulunan harfler etkilenir; sayılar, semboller, noktalama işaretleri, boşluk ve diğer tüm karakterler değişmeden bırakılır. İngiliz alfabesinde 26 harf olduğundan ve 26 = 2 × 13 olduğundan, ROT13 işlevi kendi tersidir:[2]

 , herhangi bir temel Latin alfabesi metni x için.

Başka bir deyişle, ROT13'ün iki ardışık uygulaması orijinal metni geri getirir (matematikte buna bazen involüsyon; kriptografide ise karşılıklı şifre denir).

Dönüşüm, aşağıdaki gibi bir arama tablosu kullanılarak yapılabilir:

Giriş ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Çıkış NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm

Örneğin, aşağıdaki anlatıdaki can alıcı nokta, ROT13 tarafından gizlenmiştir:

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

Metnin tamamı ROT13 formuyla dönüştürüldüğünde, şakanın cevabı ortaya çıkıyor:

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

İkinci bir ROT13 uygulaması, orijinal haline geri döndürecektir.

Kullanım

değiştir

ROT13, MÖ 1. yüzyılda Julius Caesar tarafından kullanılan ve Sezar şifrelemesi olarak bilinen şifreleme algoritmasının özel bir durumudur.[3]

Johann Ernst Elias Bessler, bir 18. yüzyıl saat ustası ve devridaim makinelerinin yapımcısı, ROT13'ün soyadını Orffyre olarak kodladığına dikkat çekti. Takma adı olarak latinleştirilmiş biçimi olan Orffyreus'u kullanmıştır.[4]

ROT13, 1980'lerin başında net.jokes haber grubunda kullanılıyordu.[a] Potansiyel olarak rahatsız edici şakaları gizlemek veya bir bulmacanın cevabını veya diğer spoiler'ı gizlemek için kullanılır.[2][7][kaynak güvenilir mi?] Orijinal Sezar şifrelemesinde olduğu gibi üç gibi diğer değerler yerine on üçlük bir kaydırma seçilmiştir, çünkü on üç, kodlama ve kod çözmenin eşdeğer olduğu değerdir, böylece her ikisi için de tek bir komutun rahatlığına izin verir.[7] ROT13, genellikle haber okuma yazılımlarında yerleşik bir özellik olarak desteklenir.[7] E-posta adresleri de bazen daha az karmaşık olan spam botlarından gizlemek için ROT13 ile kodlanır.[8][şüpheli ]Ayrıca e-posta taramasını ve spam filtrelemesini atlatmak için de kullanılır. Bir e-postanın içeriğini gizleyerek, tarama algoritması e-postayı örneğin bir güvenlik riski olarak tanımlayamaz ve alıcının gelen kutusuna girmesine izin verir.

Şifrelenmiş, normal, herhangi bir büyüklükteki İngilizce metinde, ROT13 bazı harf/sözcük kalıplarından tanınabilir. "n", "V" (yalnızca büyük harfle) ve "gur" ("a", "I" ve "the" için ROT13) kelimeleri ve "yl" ("ly") ile biten kelimeler bunlara örnektir.

ROT13 gizliliğin endişe kaynağı olduğu herhangi bir durumda kullanılmak üzere tasarlanmamıştır -sabit kaydırma kullanımı şifrelemenin etkin bir şekilde anahtar olmadığı anlamına gelir ve şifre çözme ROT13'ün kullanımda olduğu gerçeğinden daha fazla bilgi gerektirmez. Bu bilgi olmadan bile, algoritma frekans analizi yoluyla kolayca kırılabilir.[2] Gerçek gizlilik için tamamen uygun olmaması nedeniyle, ROT13 göze çarpan herhangi bir zayıf şifreleme şemasına atıfta bulunmak için bir slogan haline gelmiştir; bir eleştirmen "56 bit DES bugünlerde ROT13'ten biraz daha iyi" olduğunu iddia edebilir. Ayrıca, "çift DES" gibi gerçek terimler üzerinde yapılan bir oyunda, "çift ROT13", "ROT26" veya "2ROT13" terimleri mizahi bir amaçla ortaya çıkar (zaten ROT13 ile şifrelenmiş bir metne ROT13 uygulamak orijinal düz metni geri yüklediğinden, ROT26 hiç şifrelemeye eşdeğerdir), "2ROT13 Şifreleme Algoritması Üzerine (On the 2ROT13 Encryption Algorithm)" başlıklı sahte bir akademik makale de dahil.[9] Buna ek olarak, üçlü ROT13 (3DES ile şaka amaçlı benzetme için kullanılır) normal ROT13'e eşdeğerdir.

Aralık 1999'da, Netscape Communicator'ın e-posta şifrelerini saklamak için güvensiz bir planın parçası olarak ROT13 kullandığı tespit edildi.[10] 2001 yılında Rus programcı Dimitry Sklyarov bir e-Kitap satıcısı olan New Paradigm Research Group'un (NPRG) belgelerini şifrelemek için ROT13 kullandığını göstermiştir; NPRG'nin Adobe e-Kitap yazılım geliştirme kiti ile sağlanan önemsiz bir ROT13 örneğini ciddi bir şifreleme şeması sanmış olabileceği tahmin edilmektedir.[11] Windows XP, bazı kayıt defteri anahtarlarında ROT13 kullanır.[12] ROT13 ayrıca Unix fortune programında potansiyel olarak saldırgan dictayı gizlemek için kullanılır.

Harf oyunları ve ağ kültürü

değiştir
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 harf oyunları için bir fırsat sağlar. Bazı kelimeler ROT13 ile dönüştürüldüğünde başka bir kelime üretir. İngilizce dilindeki 7 harfli çiftlere örnek olarak abjurer ve nowhere ile Chechen ve purpura verilebilir. Bunlar gibi diğer kelime örnekleri tabloda gösterilmiştir.[13] gnat ve tang çifti hem ROT13 karşılıkları hem de tersleri olan kelimelere bir örnektir.

1989 International Obfuscated C Code Contest (IOCCC) Brian Westley tarafından yapılan bir girişi içeriyordu. Westley'in bilgisayar programı ROT13'te kodlanabilir veya tersine çevrilebilir ve yine de derler doğru şekilde. Çalıştırıldığında, ya ROT13 kodlamasını gerçekleştirir ya da girdisini tersine çevirir.[14]

alt.folklore.urban haber grubu, sıkça kodlanan "sheesh" ifadesinin ROT13 kodlaması olan bir kelime —furrfu— icat etti. "Furrfu" 1992 yılının ortalarında alt.folklore.urban'da şehir efsanesini tekrarlayan gönderilere bir yanıt olarak, bazı göndericilerin yeni gelenlere yanıt olarak "Sheesh!" ifadesinin aşırı kullanıldığından şikayet etmelerinin ardından gelişti.

Varyantlar

değiştir

ROT5, sayısal rakamlar (0 ila 9) için geçerli olan ROT13'e benzer bir uygulamadır. ROT13 ve ROT5 aynı mesajda birlikte kullanılabilir, bazen ROT18 (18 = 13 + 5) veya ROT13.5 olarak adlandırılır.

ROT47, temel harfleri karıştırmanın yanı sıra sayıları ve yaygın sembolleri de ele alan ROT13'ün bir türevidir. Alfabe olarak A-Z dizisini kullanmak yerine, ROT47 ASCII olarak bilinen yaygın karakter kodlamasından daha geniş bir karakter kümesi kullanır. Özellikle, boşluk hariç, ondalık 33 '!' ile 126 '~' arasındaki 7 bitlik yazdırılabilir karakterler, ASCII kodlarının sayısal değerlerinin sırasına göre alınan toplam 94, özel durum dikkate alınmadan 47 konum döndürülür. Örneğin, A karakteri p ile eşlenirken, a karakteri 2 ile eşlenir. Daha büyük bir alfabenin kullanılması ROT13'ünkinden daha kapsamlı bir gizleme üretir; örneğin, +1-415-839-6885 gibi bir telefon numarası Z'\c`d\gbh\eggd karıştırılmış sonucundan ilk bakışta belli olmaz. Öte yandan, ROT47 sayıları ve sembolleri ayrım yapmadan karışıma dahil ettiğinden, metnin kodlanmış olduğu hemen anlaşılır.

Örnek:

The Quick Brown Fox Jumps Over The Lazy Dog.
%96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8]

şeklinde şifrelenir.

Bilgisayar programlamada kullanılabilen standart rutinler kümesi olan GNU C kütüphanesi, bir fonksiyon -memfrob() içeren[15]— ROT13 ile benzer bir amaca sahiptir, ancak rastgele ikili verilerle kullanılmak üzere tasarlanmıştır. İşlev, dışlayıcı veya (XOR) işlemini kullanarak her byte ile ikili desenini 00101010 (42)) birleştirerek çalışır. Bu bir basit XOR şifresi oluşturur. ROT13 gibi, XOR (ve dolayısıyla memfrob()) kendi kendine karşılıklıdır ve neredeyse hiç olmayan benzer bir güvenlik seviyesi sağlar.

Uygulama

değiştir

ROT13 ve ROT47'nin Unix terminal uygulaması tr kullanılarak uygulanması oldukça kolaydır; ROT13'te "The Quick Brown Fox Jumps Over The Lazy Dog" dizesini şifrelemek için:

$ # Map upper case A-Z to N-ZA-M and lower case a-z to n-za-m
$ 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

ve ROT47 için aynı dize:

$ 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

Emacs ve Vim

değiştir

Emacs'da, tamponu veya bir seçimi M-x toggle-rot13-mode, M-x rot13-other-window veya M-x rot13-region komutlarıyla[16] ROT13 uygulaması yapabilirsiniz.

Vim metin düzenleyicide, bir tamponu ggg?G komutuyla[17] ROT13 yapabilirsiniz.

codecs modülü, 'rot13' metin dönüşümü sağlar.[18]

>>> import codecs
>>> print(codecs.encode('The Quick Brown Fox Jumps Over The Lazy Dog', 'rot13'))
Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt

Herhangi bir kütüphaneyi içe aktarmadan, iki satırlık liste içerimi (list comprehension) ile yapılabilir:

string = "Quartz glyph job vext cwm porshrop finks?!"

for abcd in ["abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"]:
	string = ''.join([abcd[(abcd.index(char) + 13) % 26] if char in abcd else char for char in string])

print(string)

# Dhnegm tylcu wbo irkg pjz cbefuebc svaxf?!

Ayrıca bakınız

değiştir
  1. ^ ROT13'ün Google USENET arşivinde bulunan ilk kullanımları, net.jokes haber grubuna gönderilen 8 Ekim 1982 tarihine kadar uzanmaktadır.[5][6]

Kaynakça

değiştir
  1. ^ Christopher Swenson (17 Mart 2008). Modern Cryptanalysis: Techniques for Advanced Code Breaking. John Wiley & Sons. s. 5. ISBN 978-0-470-13593-8. 24 Haziran 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Ekim 2015. 
  2. ^ a b c d Schneier, Bruce (1996). Applied Cryptography . 2. John Wiley & Sons. ss. 11. ISBN 0-471-11709-9. 
  3. ^ Kahn, David (1996). The Codebreakers: The Story of Secret Writing. New York: Macmillan. ISBN 0-684-83130-9. 
  4. ^ Simanek, Donald E. (2012). "Perpetual Futility: A short history of the search for perpetual motion". The Museum of Unworkable Devices. 10 Ekim 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 28 Ekim 2020. 
  5. ^ desoto!gog (8 Ekim 1982). "very mildly obscence joke, shift=13". Haber grubunet.jokes. 
  6. ^ utcsrgv!dave (8 Ekim 1982). "encrypted jokes". Haber grubunet.jokes. 
  7. ^ a b c Raymond, Eric S., (Ed.) (29 Aralık 2003). "ROT13". The Jargon File, 4.4.7. 13 Ocak 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Eylül 2007. 
  8. ^ Ferner, Matt (9 Aralık 2010). "How to Hide Email Addresses From Spam Bots". PracticalEcommerce. 8 Mayıs 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Haziran 2014. 
  9. ^ "On the 2ROT13 Encryption Algorithm" (PDF). Prüfziffernberechnung in der Praxis. 25 Eylül 2004. 15 Nisan 2012 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 20 Eylül 2007. 
  10. ^ Hollebeek, Tim; Viega, John. "Bad Cryptography in the Netscape Browser: A Case Study". CiteSeerX 10.1.1.15.9271 $2. 
  11. ^ Perens, Bruce (1 Eylül 2001). "Dimitry Sklyarov: Enemy or friend?". ZDNet News. 17 Ekim 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 3 Şubat 2011. 
  12. ^ "ROT13 is used in Windows". 24 Temmuz 2006. 20 Aralık 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Aralık 2016. 
  13. ^ De Mulder, Tom. "ROT13 Words". Furrfu!. 2 Nisan 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Eylül 2007. 
  14. ^ Westley, Brian (1989). "westley.c". IOCCC. 9 Haziran 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 13 Ağustos 2007. 
  15. ^ "5.13 Obfuscating Data". The GNU C Library Reference Manual. Free Software Foundation. 3 Aralık 2006. 2 Ağustos 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Ağustos 2019. 
  16. ^ ""Rmail Rot13 – GNU Emacs Manual"". www.gnu.org. 24 Mart 2016 tarihinde kaynağından arşivlendi. 
  17. ^ "Best of VIM Tips, gVIM's Key Features zzapper". rayninfo.co.uk. 3 Mart 2016. 3 Mart 2016 tarihinde kaynağından arşivlendi. 
  18. ^ "codecs – Codec registry and base classes – Python 3.9.6 documentation". ww6.python.org. 2 Kasım 2023. 6 Ekim 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ekim 2020. 

Dış bağlantılar

değiştir
  NODES
INTERN 2