Ekler & Kaynaklar, Kaynakça, Referanslar, Kablosuz Ağlara Saldırı & Defans - 6

25-12-2005

Ek – 1 Simetrik – Asimetrik Şifreleme

Simetrik Şifreleme

Simetrik şifreleme klasik şifreleme yöntemidir. Yani bir metin “fb1907” anahtarı ile şifrelenmiş ise gene aynı sözcükle yani “fb1907” ile açılabilir.

 

Asimetrik Şifreleme

Asimetrik şifreleme de iki tip anahtar vardır.

Farz edin ki elinizde iki adet anahtar ve bir sandık var. İstediğiniz, bu sandık içerisinde bir arkadaşınızdan özel bir fotoğraf gelmesi. Ancak tabii ki bu fotoğrafların sadece sizin tarafınızdan görülmesini istiyorsunuz.

İki anahtarımız var demiştik, işte bunlardan biri Özel Anahtarımız (Private Key), Diğeri ise Genel Anahtarımız (Public Key). Boş sandık ile birlikte genel anahtarınızı da arkadaşınıza gönderiyorsunuz, bu sayede gönderdiğiniz arkadaşınız bu genel anahtar ile sandığı kilitleyebilecek.

Arkadaşınız sandığa gerekli resimleri yerleştiriyor ve gönderdiğiniz anahtar ile kilitliyor. Aklımıza hemen şu soru gelebilir "Peki anahtar yolda başkasının eline geçerse ?", Bir şey olmaz. Çünkü Genel Anahtarımız sadece kilitleyebiliyor, kilitleri açamıyor!

İşte bu da asimetrik şifrelemenin can alıcı noktası, elinizde iki anahtar var biri sadece kilitleyebiliyor (yani Genel Anahtar), diğeri ise açabiliyor.

Dolayısıyla gönderdiğiniz kişide sizin anahtarınız olmamasına rağmen sizin sandığınızı sadece size özel olarak kilitleyebiliyor ama kilitlediği sandığı ve sizin diğer sandıklarınızı açamıyor. Çünkü bunu yapabilmesi için sizin özel anahtarınıza sahip olması gerekli.

Bu kısım PGP’ ye Pratik Giriş makalesinde de Asimetrik Şifreleme açıklamasında benzer şekilde geçmektedir.

Ek 2 – XOR’ u Anlamak

      
Makalede geçen WEP onay sürecinde RC4’ in ilk byteları alınırken ki mantığın kod ile en basit onayı.

Derlenip çalıştırıldığında sonucun “True” olarak döneceği görülecektir. (dil:VB.NET)

Dim HiddenKey, MyKey, Chipher, Plain As Integer
Plain = 77
HiddenKey = 13

Chipher = HiddenKey Xor Plain
MyKey = Plain Xor Chipher

Console.WriteLine(HiddenKey = MyKey)

 

Ek 3 – VB.NET RC4 İmplementasyonu

VB.NET RC4 implemantasyonu kodu.
Kodun içerisinde açıklama ve süreçler hakkında yorumları görebilirsiniz. Bu kod üzerinde çalışarak RC4’ ün tam olarak nasıl çalıştığını daha iyi anlayabilirsiniz ya da uygulamalarınızda bu kodu kullanabilirsiniz.

''' <summary>
''' VB.NET RC4 implemantation by Ferruh Mavituna
'''
''' Make practice to understand how exactly RC4 works and weak keys in initialize phase
'''
''' References :
''' http://marcel.wanda.ch/Archive/WeakKeys
''' http://en.wikipedia.org/wiki/RC4_(cipher)
''' http://aspnet.4guysfromrolla.com/articles/091802-1.aspx
'''
''' http://marcel.wanda.ch/Archive/WeakKeys
'''
''' </summary>
''' <remarks></remarks>
Module RC4Main

    Sub Main()

        Dim RC4Test As New RC4("Test")
        Dim x As String = RC4Test.Crypt("12456")
        Console.WriteLine(RC4Test.Crypt(x))

        Dim RC4TestDe As New RC4("Test")
        Console.WriteLine(RC4TestDe.Crypt(x))

        Console.Read()
    End Sub

End Module

 

Public Class RC4

    Private _Key As String
    Private _Initialized As Boolean

    ''' <summary>
    ''' Is Rc4 Initialized ?
    ''' </summary>
    ''' <value></value>
    ''' <remarks></remarks>
    Private Property Initialized() As Boolean
        Get
            Return _Initialized
        End Get
        Set(ByVal value As Boolean)
            _Initialized = value
        End Set
    End Property

 

    ''' <summary>
    ''' Password
    ''' </summary>
    ''' <value></value>
    ''' <remarks></remarks>
    Public Property Key() As String
        Get
            Return _Key
        End Get
        Set(ByVal value As String)
            _Key = value
        End Set
    End Property

 

    'State Box, 0-255
    Private Sbox(255) As Integer

    'Key Box - Holds our key
    Private KBox(255) As Integer

 

    ''' <summary>
    ''' New RC4
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()

    End Sub

    ''' <summary>
    ''' New RC4 with Password
    ''' </summary>
    ''' <param name="Key">Password for Encryption / Decryption</param>
    ''' <remarks></remarks>
    Public Sub New(ByVal Key As String)
        Me.Key = Key
    End Sub

    Private Function Crypt(ByVal PlainText As String, ByVal Init As Boolean) As String

        'Reinitiliaze just like new IV in WEP
        If Init Then Initialize()

        Dim j, ActiveKey, m As Integer
        Dim Result As New Text.StringBuilder(PlainText.Length)

        For i As Integer = 1 To PlainText.Length

            m = (m + 1) Mod 256
            j = (j + Sbox(m)) Mod 256
            Swap(Sbox(m), Sbox(j))

            ActiveKey = Sbox((Sbox(m) + Sbox(j)) Mod 256)
            Result.Append(Chr(Asc(PlainText(i - 1)) Xor ActiveKey))

        Next i

        Return Result.ToString

    End Function

 

    ''' <summary>
    ''' Encrypt and Decrypt (This is RC4 dude!)
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function Crypt(ByVal PlainText As String) As String
        Return Crypt(PlainText, True)
    End Function

    ''' <summary>
    ''' Initialize Procedure
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub Initialize()

        'First fill 2 boxes
        FillTheBoxes()

        '--------------------------------------
        'Pseudo Code
        '--------------------------------------
        'i = j = 0;
        'For i = 0 to 255 do
        '  j = (j + Si + Ki) mod 256;
        'Swap Si and Sj;
        'End;

        Dim j As Integer
        For i As Integer = 0 To 255
            j = (j + Sbox(i) + KBox(i)) Mod 256
            Swap(Sbox(i), Sbox(j))
        Next i

        'Call after every initialize phase
        FixFirst256()

    End Sub

    ''' <summary>
    ''' Fill the SBox And KBox
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub FillTheBoxes()

        'First Fill
        Dim KeyArr() As Char = _Key.ToCharArray()
        For i As Integer = 0 To 255
            'Fill with the key (mod using for roundtrips in array )
            KBox(i) = Asc(_Key(i Mod _Key.Length))
            Sbox(i) = i
        Next i

    End Sub

    ''' <summary>
    ''' Swap Values
    ''' </summary>
    ''' <param name="Value1"></param>
    ''' <param name="Value2"></param>
    ''' <remarks></remarks>
    Private Sub Swap(ByRef Value1 As Byte, ByRef Value2 As Byte)

        Dim TmpSwap As Byte
        TmpSwap = Value1
        Value1 = Value2
        Value2 = TmpSwap

    End Sub

    ''' <summary>
    ''' Ignore 256 bytes of encrypt data
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub FixFirst256()
        Dim Rnd As New System.Security.Cryptography.RNGCryptoServiceProvider()
        Dim RndB(256) As Byte
        Rnd.GetNonZeroBytes(RndB)

        Me.Crypt(RndB.ToString, False)
    End Sub

End Class

EK 4 - Diğer Bazı Yazılımlar

Bunlar harici;

adreslerin daha güncel kablosuz ağ güvenliği ile ilgili yazılımları takip edebilirsiniz.

 

Bazı Terimler

WPA           : WiFi Protected Access
WEP            : Wired Equivalent Privacy
Wireless     : Kablosuz
Network     : Ağ
Sniffing      : Eavesdropping diye de geçer. Bir iletişimi gizlice dinlemeye verilen isim. Türkçeye kelime anlamı olan “koklama” olarak ta çevrilmiştir ki, çok kötü bir fikirdir. Ek olarak “dinleme” kelimesi de kullanılmaktadır.
STA             : Station, Kablosuz ağ istemcisi (Notebook, PDA, Buzdalabı gibi kablosuz ağlara bağlanabilen herhangi bir cihaz)
RADIUS      : Remote Authentication and Dial-In User Service
AP               : Access Point, Kablosuz cihazların (notebook gibi) kablolu ağlara bağlanmasını yarayan donanım. Örnek olarak bir firmanın ADSL bağlantısı bir wireless ADSL modem üzerinden olabilir. Bu durumda modem ADSL ağına kablosuz cihazların da bağlanmasını sağlar.
Wardriving : Deli danalar gibi kablosuz ağ arama sanatı
DOS            : Denial Of Service – Bir servisin kullanılmaz hale getirilmesi.
MITM          : Man in the Middle – İki iletişim arasına girip data çalma, modifiye etme gibi işlemlere izin veren saldırı modeli. Genelde asimetrik şifreleme kullanan iletişimlerde araya girmek için kullanılır.
ARP            : Address Resolution Protocol, Ağlarda MAC adresini IP adresi ile eşleştirmekte kullanılan protokol. ARP Poisoning ise ARP kullanılan ağlarda ARP tablolarını modifiye ederek (zehirleme) MITM saldırılarına zemin hazırlamada kullanılan metoddur.

 

Kaynakça / Referanslar / Daha fazlası

 

Yazar

Her türlü yorum ve düşünceleriniz için aşadağıki iletişim adreslerini kullanabilirsiniz...

Ferruh Mavituna

http://ferruh.mavituna.com
Email: ferruh[at]mavituna.com

Recent Blog Posts

See all of the blog posts