{"id":5564,"date":"2015-11-17T15:55:03","date_gmt":"2015-11-17T13:55:03","guid":{"rendered":"https:\/\/ihs.com.tr\/blog\/?p=5564"},"modified":"2019-01-04T09:31:11","modified_gmt":"2019-01-04T07:31:11","slug":"wordpress-laravel-ve-symfonyye-kriptografi-bakimindan-guvenli-parolalar-geliyor","status":"publish","type":"post","link":"https:\/\/www.ihs.com.tr\/blog\/wordpress-laravel-ve-symfonyye-kriptografi-bakimindan-guvenli-parolalar-geliyor\/","title":{"rendered":"WordPress, Laravel ve Symfony\u2019ye Kriptografi Bak\u0131m\u0131ndan G\u00fcvenli Parolalar Geliyor"},"content":{"rendered":"<p><span style=\"font-size: 14pt;\">A\u00e7\u0131k kaynak camias\u0131n\u0131n, \u00f6zellikle de Paragon Initiative Enterprises\u2019tan <strong>Scott Arciszewski<\/strong>\u2019nin \u00e7abalar\u0131 sonucunda PHP uygulamalar\u0131nda \u00f6nemli ilerlemeler kaydedildi. <strong>WordPress<\/strong>, <strong>Laravel<\/strong> ve <strong>Symfony<\/strong> gibi b\u00fcy\u00fck projelerde de\u011fi\u015fiklikler s\u00f6z konusu.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Ba\u015fta WordPress 4.4, Laravel 5.2 ve Symfony 2.8 olmak \u00fczere, bu projelerde art\u0131k CSPRNG (Cryptographically Secure PseudoRandom Number Generator\/Kriptografik Olarak G\u00fcvenli S\u00f6zde Rasgele Say\u0131 \u00dcreteci) deste\u011fi olacak.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">CSPRNG \u00f6zellikle kriptografide kullan\u0131lmak \u00fczere tasarlanm\u0131\u015f bir rasgele say\u0131 \u00fcreteci algoritmas\u0131. G\u00fcvenlik uzmanlar\u0131 salt hashleri, anahtarlar, noncelar olu\u015fturmak ve veri dolgular\u0131 i\u00e7in CSPRNG algoritmalar\u0131n\u0131 tavsiye ediyor. Bunun nedeni CSPRNG\u2019nin y\u00fcksek entropili (rasgelelik) ger\u00e7ek rasgele say\u0131lar \u00fcretmesi. Dolay\u0131s\u0131yla bu \u015fifrelerin kaba kuvvet sald\u0131r\u0131lar\u0131yla k\u0131r\u0131lmas\u0131 zor.<\/span><\/p>\n<p><strong><span style=\"font-size: 14pt;\">Her \u015fey Facebook Yaz\u0131l\u0131m Geli\u015ftirme Kiti\u2019yle (SDK) ba\u015flad\u0131<\/span><\/strong><\/p>\n<p><span style=\"font-size: 14pt;\">Arciszweski bu soruna e\u011filmesinin nedeninin a\u00e7\u0131k kaynakl\u0131 Facebook SDK\u2019de iyi bir rasgele say\u0131 \u00fcreteci sistemi bulunmamas\u0131 oldu\u011funu s\u00f6yl\u00fcyor.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u00d6nce SDK\u2019nin geli\u015ftirilmesi i\u00e7in Facebook\u2019a bir yol haritas\u0131 \u00f6nermi\u015f, sonra PHP 7\u2019ye eklenmi\u015f kriptografik olarak g\u00fcvenli iki fonksiyonu al\u0131p PHP 5.x\u2019e ta\u015f\u0131m\u0131\u015f.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">G\u00fcn\u00fcm\u00fczdeki b\u00fcy\u00fck a\u00e7\u0131k kaynakl\u0131 projelerin \u00e7o\u011funun hala eski versiyonlar\u0131 i\u00e7in PHP 5.x deste\u011fi sunmas\u0131 gerekti\u011finden, Arciszewski\u2019nin random_compat k\u00fct\u00fcphanesindeki i\u015fi bitince bu projelerin bak\u0131m sorumlular\u0131 kendi uygulamalar\u0131ndaki \u201cger\u00e7ek\u201d rasgele say\u0131 \u00fcretimi deste\u011fi konusunu yeniden g\u00f6zden ge\u00e7irme f\u0131rsat\u0131n\u0131 bulmu\u015flar.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">\u015eu an WordPress, Laravel ve Symfony bu k\u00fct\u00fcphaneyi kendi kod tabanlar\u0131na entegre etmi\u015f durumda. CodeIgniter (v4)\u2019un bir sonraki s\u00fcr\u00fcm\u00fc de bu i\u015flevi, projenin minimum PHP s\u00fcr\u00fcm\u00fc gereksinimi olan PHP 7 \u00fczerinden yerel olarak destekleyecek.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\"><strong>Joomla<\/strong> ise bu konuda biraz geride kalm\u0131\u015f durumda. \u00d6nce halletmesi gereken baz\u0131 kriptografi sorunlar\u0131 var. Arciszewski Joomla\u2019daki kriptografi zaaflar\u0131 hakk\u0131nda bir rapor haz\u0131rlamas\u0131na ra\u011fmen Joomla geli\u015ftirme ekibi bu sorunlara hen\u00fcz el atm\u0131\u015f de\u011fil. Arciszewski Sofpedia\u2019ya verdi\u011fi bir r\u00f6portajda Joomla\u2019n\u0131n kriptografi k\u00fct\u00fcphanesi olan JCrypt\u2019in simetrik anahtar \u015fifrelemesinden parola onay\u0131na kadar bir\u00e7ok i\u015fi halletti\u011fini s\u00f6yl\u00fcyor. \u201cJoomla\u2019n\u0131n eski parola onaylama sistemi (pre-bcrypt) bir\u00e7ok g\u00fcvenlik \u015firketinin PR kampanyalar\u0131nda \u2018magic hash\u2019 tabir etti\u011fi \u015feye kar\u015f\u0131 a\u00e7\u0131klar i\u00e7eriyor. Fakat esas sorun \u015furada: E\u011fer \u20180e\u2019 ile ba\u015flayan herhangi iki hashiniz varsa ve bu hashleri yaln\u0131zca n\u00fcmerik basamaklar takip ediyorsa, bu n\u00fcmerik basamaklar\u0131n ne oldu\u011funa bakmaks\u0131z\u0131n PHP bunlar\u0131n birbirine e\u015fit oldu\u011funu d\u00fc\u015f\u00fcn\u00fcyor,\u201d diyor Arciszewski. \u201cAyr\u0131ca bcryptleri kriptografi kurallar\u0131na pek uymuyor. Hashleri sabit zamanl\u0131 dizilim kar\u015f\u0131la\u015ft\u0131rmas\u0131 fonksiyonu yerine === ile kar\u015f\u0131la\u015ft\u0131r\u0131yor. Kodlar\u0131na bug\u00fcne kadar hi\u00e7bir kriptograf bakmam\u0131\u015f. Bu konuda h\u0131zl\u0131 bir yama i\u00e7in ===\u2019yi hash_equals() ile de\u011fi\u015ftirmek gerekiyor.\u201d Arciszewski daha sonra ba\u015fka \u00fc\u00e7 sorundan da bahsediyor.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">&#8211; \u201cEski \u015fifreleme sistemleri, JCryptCipherSimple, a\u015f\u0131r\u0131 k\u00f6t\u00fc. E\u011fer sisteme \u2018AAAAAA&#8230;\u2019 (A harfini 256 veya daha fazla kez tekrar ederek) mesaj\u0131n\u0131 girip, daha sonra \u015fifre metninden bu mesaj\u0131 \u00e7\u0131kartt\u0131\u011f\u0131n\u0131zda \u015fifre anahtar\u0131n\u0131 elde ediyorsunuz.\u201d<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">&#8211; \u201c\u015eifrelerinin hi\u00e7birinde Onayl\u0131 \u015eifreleme yok.\u201d<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">&#8211; \u201cMcrypt tabanl\u0131 \u015fifrelerinin hepsi CBC modunu kullanacak \u015fekilde ayarlanm\u0131\u015f. Bu modda da her mesaj i\u00e7in Ba\u015flang\u0131\u00e7 Vekt\u00f6r\u00fc ad\u0131 verilen benzersiz, tahmin edilemez (rasgele) bir say\u0131 olmas\u0131 gerekiyor. Joomla ise her mesaj i\u00e7in rasgele bir de\u011fer olu\u015fturmak yerine anahtar \u00fcretildi\u011finde bir de\u011fer ba\u015flat\u0131p bu de\u011feri her mesaj i\u00e7in kullan\u0131yor. \u00c7ok say\u0131da \u015fifre metni oldu\u011fu d\u00fc\u015f\u00fcn\u00fcl\u00fcrse, bu hata CBC modunun g\u00fcvenli\u011fini ECB moduna d\u00fc\u015f\u00fcr\u00fcyor. Joomla gibi pop\u00fcler bir projenin b\u00f6yle bir hata yapm\u0131\u015f olmas\u0131 d\u00fc\u015f\u00fcnd\u00fcr\u00fcc\u00fc.\u201d<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Joomla bu ele\u015ftiriler \u00fczerine Joomla 3.5.0\u2019a bir random_compat ekleyerek rasgele say\u0131 \u00fcretecini g\u00fcvenli hale getirdi. Di\u011fer sorunlar ise hala \u00e7\u00f6z\u00fcm bekliyor.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A\u00e7\u0131k kaynak camias\u0131n\u0131n, \u00f6zellikle de Paragon Initiative Enterprises\u2019tan Scott Arciszewski\u2019nin \u00e7abalar\u0131 sonucunda PHP uygulamalar\u0131nda \u00f6nemli ilerlemeler kaydedildi. WordPress, Laravel ve Symfony gibi&hellip;<\/p>\n","protected":false},"author":3,"featured_media":5566,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,397],"tags":[],"class_list":["post-5564","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-haberler","category-wordpress"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/5564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=5564"}],"version-history":[{"count":3,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/5564\/revisions"}],"predecessor-version":[{"id":5732,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/5564\/revisions\/5732"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media\/5566"}],"wp:attachment":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=5564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=5564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=5564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}