Parite, ECC ve Veri Güvenliği

Mea
03-05-2007, 22:20   |  #1  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
318 mesaj
Kayıt Tarihi:Kayıt: Mar 2007

Sayısal Veriler ve Güvenlik  
   
Bundan önceki "Düşünmek" yazılarında, doğru düşünebilmek için doğru bilgi edinmeyi ve analitik düşünce tarzının önemini vurgulamamıştık. Enformasyon Bilimi açısından bilginin değerinin “0” veya “1” ler ile sayısal olarak ölçülebildiğini, yine bundan önceki yazılarımızda irdeledik. Daha önce belirttiğimiz gibi rastlanma olasılığı arttıkça, bilgi değeri düşer ve tersine bir durumda, yani olma olasılığı düştükçe artar. "Yazı" veya "Tura" gelebilecek bir işlem sadece bir bit sayısal bilgi ile temsil edilirken, örneğin 4 ayrı seçenek için 2 bit ve 8 ayrı seçenek için 3 bit gereklidir. Seçenek sayısı ile temsil edilebilecek sayısal bilgi ararsında 20, 21, 22, 23...28, ...216 gibi 2'nin üstleri şekilden bir ilişki olduğunu anlıyoruz. Bilgisayarların çalışırken kullandıkları kelime uzunlukları 32Bit veya 64Bit’ler de bu anlamdadır. Bit sayısı arttıkça temsil edilebilen olasılık artar ve hassasiyet kazanılır.

Parite (Eşlik) Biti

Bilgisayarlarda, telekomünikasyon sektöründe, diğer elektronik cihazlarda bilginin güvenliği her zaman önemli olmuştur. Tasarlanan ilk IBM PC’de tasarım grubunun daha önce iş hayatı için mainframe tasarlayan mühendisler olmasından dolayı bilgi güvenliği ön planda olmuş ve örneğin hafıza birimlerinde Parite (eşlik) biti kullanılmıştır. Parite bitinin nasıl çalıştığını ve bilgi güvenliğini nasıl sağladığını aşağıdaki tablo ile irdeleyelim.

Doğruluk tablosundan da görülebileceği gibi XOR işleminde karşılaştırılan her iki bilginin değeri aynı ise sonuç “0” ve değil ise sonuç “1” dir. Parite biti aşağıda sayısal devresi bulunan XOR kapısı ile gerçeklenir ve bilgi içeren bitlerin en küçük değerlisinin yanına eklenir.

XOR Devresi, Parite biti hesaplar

2 tip parite hesaplama metodu vardır. Çift parite ve tek parite:

Even Parity
“Even parity” Çift Parite devresinde sayısal bilgideki “1” ler çift olacak şekilde parite biti hesaplanır.

Örneğin:
1101 bilgisinde “1” sayısı tektir, o halde eklenecek parite biti “1” dir. 11011
1100 bilgisinde “1” sayısı çifttir, o halde eklenecek parite biti “0” dır. 11000

Odd Parity
“Odd parity” Tek Parite devresinde sayısal bilgideki “1” ler tek olacak şekilde parite biti hesaplanır.

Örneğin:
1101 bilgisinde “1” sayısı tektir, o halde eklenecek parite biti “0” dir 11010
1100 bilgisinde “1” sayısı çifttir, o halde eklenecek parite biti “0” dır. 11001

Aşağıda örneğin 4 bitlik bir veri için Tek veya Çift parite bitinin hesaplayan örnek bir sayısal devre görülmektedir.

Tek veya Çift Parite bitinin hesaplanması

Hatalı elde edilmiş bir bilgiyi sezinlemek için okuma veya yazma işleminden sonra tekrar bilgi taşıyan bitlerden parite biti hesaplanacak ve eldeki parite biti ile aynı olup olmadığı karşılaştırılacaktır.

Örneğin Çift Parite kullanırken elde edilmiş 11011 bilgisi (Kırmızı ile gösterilen bit Parite Biti) bozularak alıcıya ulaşsın. Soldan ikinci bitin bozulduğunu ve 11011 yerine 10011 olarak varış yerine ulaştığını kabul edelim, bu durumda alıcıda 1001 bilgi bitlerinde (bilgi taşıyan baştaki dört bitten) tekrar Çift Parite hesabı yapıldığında yeni bulunacak parite bitinin (örnekte “0”) elde edilen ile aynı olmadığı (halbuki “1” gelmiş) anlaşılacak bu bilginin hatalı olduğu varsayılacaktır.

Aşağıda görülen herhangi seri iletişim tarzında çalışan bir verici alıcı elektronik devresinde de bilgi güvenliği ve parite kavramı aynen geçerlidir.

Seri iletişim ve gürültü

Seri iletişimde parite biti aşağıdaki şekilde görüldüğü gibi seri yollanan bitlerden sonra hesaplanarak bilgi bitlerine eklenen start-stop bitleri, gibi bilgi paketlerinin eklentisi olarak gönderilir.

Seri İletişim ve parite biti

Parite biti sadece hatayı sezinlemektedir. Parite bitinin hatalı bilgiyi belirtmesi sayesinde okunan veya yazılan bilgi kelimesinin veya iletişimde kullanılan seri bilgi bitlerinin ihmal edilmesi, işlemin tekrarlanması gerekliliğini anlayabiliriz. Ancak aynı kelime içinde 2 farklı bitte hata olduğunda Parite biti bunu sezinleyememektedir. Sayısal işlemlerde hatalı bir işlemin sadece 1 Bitte olması olasılığı %90’dan fazla olduğundan Parite Biti ile güvenlik birçok uygulamada yeterli olmaktadır. Üstelik Parite bitinin hesaplanması ve/veya gönderilmesi, alıcı tarafında tekrar hesaplanarak kontrol edilmesi ciddi bir yavaşlama getirir.

ECC, Hata Ayıklama ve Düzeltme
Hatayı sezinlemeden öte acaba daha ileri kodlama teknikleri ile hatanın hangi bitte olduğunu anlayabilmek (sayısal sistemlerde sadece 2 şık olduğundan dolayısı ile düzeltebilmek) imkanı var mıdır?
Eğer anlaşılabilirliği daha da arttırmak istersek kullandığımız bir farklı yöntemde harflere daha fazla bilgi eklemektir. Örneğin gürültülü bir telefon konuşması içinde “otomobil” deriz ve karşımızdaki anlamadı ise şu kelimeleri sıralarız; Ordu-Trabzon-Ordu-Mersin-Ordu-Bursa-… Kelimenin her harfi için o harf ile başlayan bir şehir ismi söyleriz. Örneğin “M” Harfi belki “N” harfi ile ses benzerliğinden anlaşılamayacaktır ama “Mersin” dendiğinde bunu herkes daha kolay anlar. Tabi burada bir parantez açarak kodlama yapan bazı insanların gelişigüzel kelimeleri seçmesinin ne kadar komik olduğunu söylemeliyim. Örneğin arkadaşlar “Otomobil” kelimesini kodluyorlar ve; Ordu-Tarak-Osman-Mersin-Otomobil-… :)

Benzer şekilde sağdaki tabloda göreceğiniz Nato Fonetik Kodlaması da gerçekte sadece anlaşılabilirliği arttırmak için eklenen fazladan bilgi üzerine inşa edilmiştir. Tabloda görüldüğü gibi örneğin seri bir iletişimde “COMPUTER” kelimesi yerine;

Charlie-Oscar-Mike-Papa-Uniform-Tango-Echo-Rome

kodlaması çok daha fazla anlaşılabilirliği arttıracak ve eğer bazı karakterler iletişimde kaybolsa bile kelimenin bütününün yakalanması çok daha kolay olacaktır. Örneğin;

COMPUTER > COMPUTER (2 harf bozulmuş)
COMPUTER > Charlie-Oscar-Mike-Papa-Uniform-Tango-Echo-Romeo (Kodlanmış ve tekrar 2 harf bozulmuş)

Sayısal sistemlerde, bilgisayarlarda, telekomünikasyon devrelerinde değişik kodlama teknikleri ile bilgi taşıyan bitlere ek bitler ekleyerek anlaşılabilirlik arttırılabilir ve hata ayıklamak mümkün olur. Örneğin öyle bir kodlama düşününki “1” ler ve “0” lar arka arkaya tekrarlanıyor. Kural 3 kez tekrarlama olsun. Mesela gönderilen veri “1” ise (n = 3 tekrar için) “111” gönderilir ve veri “0” ise arka arkaya 3 kez sıfır gönderilecektir, “000” Arka arkaya gelen her üç bitten biri farklı ise hata oluşmuş demektir. İletişim kanalı yeterince temiz ise, çoğu seferde üçlünün sadece bir biti farklı olacaktır. Bu durumda alıcıdaki 001, 010 ve 100 sıfıra ve 110, 101 ve 011 bire karşılık gelecektir.

Bu özelliği taşıyan ve orijinal mesajdaki hataları fark ederek yeniden yazabilen kodlara hata düzelten kod denir. İkili sayma düzeninde hata ayıklamam kolaydır, “0” yanlış alınmış ise doğrusu “1” dir veya tersi… Okuyucuların hemen birden fazla hata yapıldığında hatanın düzeltilemediğini görmüşlerdir. Örneğimizde 2 biti değiştirirsek alıcı 001 elde eder. Sistem hatayı görür ama orijinal bitin 0 olduğu sonucuna varır ki bu da yanlıştır. Her biti kopyalama sayımızı artırırsak mesela 4 kez, bu sefer bütün 2 bitlik hataları bulabilir ama düzeltemeyiz. 5 kereye çıkarırsak 2 bitlik hataları düzeltebiliriz ama 3 bitlik hataları düzeltemeyiz. Dahası, Tekrar Kodu çok verimsizdir. Bizim örneğimizde bir kerede gidecek biti üç kere gönderecek zaman kaybına yol açmıştır. Tekrar sayısı arttıkça verim düşecektir.

Hamming Hata Ayıklama Metodu

Hamming kodu telekomünikasyonda, ismini yaratıcısı Richard Hamming’den alan, doğrusal hata düzelten bir koddur. Hamming Kod sadece tek bitlik hatayı saptayıp düzeltebilir. İki bitlik bir hatayı sadece saptayabilir ama düzeltemez.

Hamming kodunun özü eğer bir mesaj içinde bilgi taşıyan bitlere daha fazla hata düzelten bit eklenirse ve bu bitler değişik yanlış bitlerin oluşturduğu değişik hataları bulabilecek şekilde ayarlanabilirse, alıcı tarafında hatalı bitlerin bulunabilmesidir. Yedi bitlik bir mesajda yedi olası hatalı bit vardır. Üç tane kontrol biti hatayı bulmakla kalmaz, yerini de saptayabilir.

Hamming kodlarının tasarımı ve diğer kodlama tekniklerine detaylı olarak girmeyeceğiz ancak aşağıdaki örneği inceleyerek 7 Bit’lik bir veride eklenecek 3 Hamming Biti ile nasıl hatalı bitin yakalandığına Wikipedia’dan bakalım.

ÖRNEK: Hamming Kod Kullanımı

“0110101” yedi bitlik veri sözcüğümüz olsun. Hamming Kodların nasıl hesaplandığı ve hatayı nasıl buldukları aşağıdaki tabloda gösterilmiştir. Data bilgileri için d, parite (eşlik) bitleri için p kullanılmaktadır. İlk olarak veri bitleri uygun yerlere konur ve parite bitleri her seferinde çift parite kullanılarak hesaplanır.

Yeni veri sözcüğümüz (parite bitleri ile) “10001100101” olmuştur. Son bitin hatalı olduğunu farz edelim ve bu bit “1”den “0”a değişmiş olsun. Yeni veri sözcüğümüz “10001100100”dır ve bu sefer Hamming Kodun nasıl elde edildiğini çift parite biti her hata sapladığında, parite bitini 1 olarak değiştirip analiz edelim.


Son adımda her parite bitinin değerini ölçelim. Değerin sayı karşılığı 11 (Onluk düzende) çıkar. Yani 11. biti hatalıdır ve değiştirilmesi gerekir.

11. biti değiştirmek “10001100100”ı tekrar “10001100101” yapar. Hamming Kodlarını çıkartınca geriye orijinal veri sözcüğümüz “0110101” kalır. Bir parite biti hatalı olur, diğerleri doğru olursa sorudaki parite biti yanlıştır ve kontrol ettiği bitler de hatalı olacaktır.

Son olarak, x ve y konumlarındaki iki bit yer değiştirmiş olsun. x ve y ikilik gösterimlerinin 2k konumlarındaki bitleri aynı ise, o konuma tekabül eden parite biti ikisini de kontrol eder ve aynı kalır. x?y olan bazı parite bitleri yüzünden bu konumlara tekabül eden bitler değişir. Sonuçta Hamming Kod iki bitlik hataları bulur ama bunları bir bitlik hatalardan ayırt edemez.

Sayısal devrelerde ECC (Error Correction Checking) hata bulma ve ayıklama süreci tasarımın şekline göre sadece tek bir bitin değil gerekirse iki veya daha çok bitin hatadan ayıklanmasını ve daha da fazlasının hatalı olup olmadığının bulunmasını sağlayabilir. Aşağıdaki tabloda bilgisayar devrelerinde kullanılan kelime uzunlukları ve bir hatayı ayıklamak için gerekli ek bitlerin sayısı görülmektedir.

1. 8-bit data genişliği 5 bit ECC için
2. 16-bit data genişliği 6 bit ECC için
3. 32-bit data genişliği 7 bit ECC için
4. 64-bit data genişliği 8 bit ECC için
5. 128-bit data genişliği 9 bit ECC için

Hafıza birimlerinde ve daha genel anlamda bazı elektronik devrelerde ECC tasarımı eklenen parite biti veya bitlerinin bilgi ile eş zamanlı olmadan gönderilmesi yönetimine de dayanabilir. Örneğin aşağıdaki tabloda 8 bitlik bir iletişimde her 8 kelimeden sonra oluşturulan Parite kelimesi görülmektedir.


Bu tür yöntemlerde parite bitlerinden oluşmuş veya ECC için satırlar her blok bilgiden sonra kaynak ve varış yerinde oluşturulur. Kaynak noktasında ve varış yerinde aynı teknik ile kodlama tekrarlanarak hata sezilir ve hata ayıklanabilir.

Parite bitli ve ECC özellikli hafıza birimleri kullanan bilgisayarlarda hafıza denetleyici okuma ve yazma yaptıktan sonra parite bitleri veya ECC bitleri ile blok bazında kontrol yaparak hatları yakalar. Bilgisayarların güvenirlikleri arttıkça ECC teknikleri basitleşmiş ve her bit yerine blok testler yeterli olmuştur.

İnsanların iletişiminde de benzer akıllı yöntemler kullanılabilir. Örneğin vücut dilini iyi kullanmak anlaşılabilirliği arttırır. Toplantılarda veya önemli anlatımlarda anlattıklarınızı, madde madde aynı zamanda yazmak, hataları engeller. Özelikle şekiller ile anlatmak gerçekten anlaşılabilirliğinizi arttıran ve hatalardan dinleyicileri arındıran yöntemlerdir.

Düşünürken bilgi doğruluğuna çok dikkat etmek gerekir. Doğru karar vermek için elinizdeki bilgileri doğru değerlendirmeli ve hatalardan ayıklamaya çalışmalısınız.

black_flood
04-05-2007, 00:40   |  #2  
black_flood avatarı
Yıllanmış Üye
Teşekkür Sayısı: 152
5,190 mesaj
Kayıt Tarihi:Kayıt: May 2006

çok iyi açıklamışsında bu denli bilgiyi kullanmak zor piyasada kimse anlamazki.bana bile fazla ağır kaçtı doğrusu merağım olduğu halde.

Mea
04-05-2007, 23:24   |  #3  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
318 mesaj
Kayıt Tarihi:Kayıt: Mar 2007

Ben aynı zamanda Elektronilçiyim zevkle yaparım valla  ilgili olna arkadaşlar okusun...