Küçük Kodlar Açıklandı

Küçük Kodlar Açıklandı

Kaynak Düğüm: 1903509

ASCII ile sınırlı olduğunuzda, emojiler veya Latin olmayan karakterler gibi daha karmaşık şeyleri nasıl temsil edebilirsiniz? Cevaplardan biri, ASCII'de Unicode karakterlerini temsil etmenin bir yolu olan Punycode'dur. Bununla birlikte, Unicode'un ham bitlerini teknik olarak karakterlere kodlayabilirsiniz; Base64, bir engel var. Etki Alanı Adı Sistemi (DNS) genellikle ana bilgisayar adlarının büyük/küçük harfe duyarlı olmasını gerektirir; bu nedenle ister HACKADAY.com, HackADay.com, ister yalnızca hackaday.com yazın, hepsi aynı yere gider.

[A. Costello] Kaliforniya Üniversitesi'nde Berkley, Punycode fikrini önerdi. RFC 3492 Mart 2003'te. Tüm normal ASCII karakterlerinin çıkarıldığı ve arada bir ayırıcı (bu durumda bir tire) olacak şekilde bir tarafa yapıştırıldığı basit bir algoritmanın ana hatlarını çiziyor. Daha sonra Unicode karakterler kodlanır ve dizenin sonuna yapıştırılır.

İlk olarak dizedeki sayısal kod noktası ve konum çarpılır. Daha sonra sayı şu şekilde kodlanır: Baz-36 (az ve 0-9) değişken uzunluklu tamsayı. Örneğin selamlaşma ve teşekkür anlamına gelen Yunanca, “Hey, merhaba” "olur"Merhaba, -mxahn5algcq2". Aynı şekilde güzel şehir München olur mnchen-3ya.

Yunan örneğinde fark edebileceğiniz gibi, kod çözücünün hangi temel 36 karakterin hangi orijinal Unicode sembolüne ait olduğunu bilmesine yardımcı olacak hiçbir şey yoktur. Değişken uzunluktaki tamsayılar sayesinde, hangi sayıların kodlanabileceğine ilişkin eşikler olduğundan her anlamlı basamak tanınabilir. Sonlu durum makinesi kurtarmaya geliyor. RFC, algoritmanın ana hatlarını çizen bazı örnek niteliğinde sözde kod verir. Kod çözme ilerledikçe yuvarlanan bir önyargıdan yararlanılması oldukça akıllıca. Her zaman arttığı için bazı akıllı özelliklere sahip monoton bir fonksiyondur.

Elbette normal URL'lerin zayıf kodlar olarak yorumlanmasını önlemek için URL'lerin özel küçük bir öneki vardır. xn... tarayıcıya bunun bir kod olduğunu bildirmek için. Buna tüm Unicode karakterler dahildir, dolayısıyla emojiler de geçerlidir. Peki neden gidemiyorsun? xn--mnchen-3ya.de? Bunu tarayıcınıza yazarsanız veya bağlantıya tıklarsanız, tarayıcınızın bu kafa karıştırıcı harf çorbasını güzel bir URL'ye dönüştürdüğünü görebilirsiniz (bunu tüm tarayıcılar yapmaz). En büyük sorun Unicode'un kendisidir.

Unicode, web'de her gün kullanılan yüzlerce dili mümkün kılmak için inanılmaz bir destek sunarken, hatta biraz basit de olsa bazı siğiller var. Kiril, sıfır genişlikli harfler ve diğer Unicode tuhaflıkları, daha kötü niyetlere sahip olanların, oluşturulduğunda, tanınmış bir web sitesi olarak görüntüleniyor. SSL sertifikaları geçerlidir ve diğer her şey kontrol edilir. Kiril, görsel olarak Latin karşılıklarıyla aynı görünen ancak farklı şekilde temsil edilen karakterleri içerir. Bilgisayar korsanları ve kimlik avı girişimleri için fırsatlar çok büyük ve şu ana kadar çoğu alanda zayıf kodlara izin verilmedi.

Örneğin bu iki alan arasındaki farkı söyleyebilir misiniz?

hackaday.com

hackаday.com

Bazı tarayıcılar vurgulu metni Punycode olarak işleyecek, bazıları ise onu UTF-8 eşdeğeri olarak koruyacaktır. “a” (U+0061), çoğu bilgisayarın tamamen aynı karakterle oluşturduğu Kiril alfabesi “a” (U+0430) ile değiştirildi.

Bu bir IDN homograf saldırısı, bir kullanıcının aralarındaki farkı anlayamadıkları bir bağlantıyı tıklamasına güvendikleri yer. 2001 yılında iki güvenlik araştırmacısı konuyla ilgili bir makale yayınladılar ve kavramın kanıtı olarak "microsoft.com"un Kiril karakterleriyle kaydedilmesini sağladılar. Buna yanıt olarak, üst düzey alan adlarının yalnızca Latin karakterleri ve o ülkede kullanılan dillerdeki karakterleri içeren Unicode karakterleri kabul etmesi önerildi. Sonuç olarak, ABD merkezli yaygın üst düzey alan adlarının çoğu, Unicode alan adlarını hiçbir şekilde kabul etmemektedir. En azından görüntülenemeyen karakterler ICANN tarafından özel olarak bantlanmıştır, bu da büyük bir solucan kutusunun önüne geçer, ancak görsel olarak aynı ancak bit bazında farklı karakterlere sahip olmak kafa karışıklığına yol açar.

Ancak bu tür saldırılara yönelik hafifletici önlemler yavaş yavaş uygulamaya konuluyor. Korumanın ilk katmanı olarak Firefox ve Chromium tabanlı tarayıcılar yalnızca tüm karakterlerin aynı dilden olması durumunda Punycode olmayan sürümü gösterir. Bazı tarayıcılar tüm Unicode URL'leri Punycode'a dönüştürür. Diğer teknikler, bir URL'nin farklı şekilde yorumlanıp yorumlanamayacağını belirlemek için optik karakter tanımayı (OCR) kullanır. Tarayıcının dışında, kısa mesajla veya e-postayla gönderilen bağlantılar aynı özelliklere sahip olmayabilir ve bunları tarayıcınızda açana kadar bilemezsiniz. Ve o zamana kadar artık çok geç.

Zorluklar bir yana, Punycode'lar güneşte vakit geçirebilecek mi? Hackaday ☠️📅.com'u alacak mı? Kim bilir. Ancak bu arada, hala tam olarak çözemediğimiz, alan adının uluslararası hale getirilmesi gibi zorlu bir soruna 2003 yılında önerilen akıllıca bir çözümün keyfini çıkarabiliriz.

Zaman Damgası:

Den fazla Bir Gün Hack