Hei!
Olin alkanut opetella tekemään ohjelmistani turvallisempia ja olin alkanut ottaa selvää miten avaimen voi sopia salaamattoman yhteyden yli. Löysin tuon Diffie-Hellman key exhangen ja se vaikuttaa sopivalta, mutta ajattelin kysyä hieman neuvoa etten nyt mene sotkemaan jotakin.
Wikipediasta löytyvässä esimerkissä Käytetään lukuja Prime=11 ja Generator=7
seuraavaksi oli arvottu Alicen salaiseksi luvuksi x1=6
Ymmärsin ohjeet muuten paitsi tuon salaisen luvun (x) muodostuksen osalta. Onko jokin sääntö jonka pohjalta tuo luku arvotaan pitääkö sen olla pienempi kuin jotain vai miltä väliltä se tulisi arpoa? Olisiko myös jotain tietoa joistain valmiista luvuista Primen ja Generatorin kohdalle jotka olisivat tarpeeksi turvallisia?
(Mod. huom: Hellman, ei Helman.)
Jos haluat saada omat ohjelmat konkreettisesti turvallisemmiksi, käytät salausalgoritmien osalta olemassa olevia kirjastoja tai sitten olet salausguru etkä kysele tuollaisia. ;D
Sitten se toinen asia eli jos haluat ymmärtää miten tuo toimii... Jos nyt tuon oikein ymmärsin niin se on mikä tahansa satunnainen luku. Käytännössä tietysti käytetään isompia lukuja (tyyliin jotain 2048 bittisiä tms), koska tuollaiset alle 10 luvut nyt bruteforceaa mikrosekunnissa.
Niin siis tuohan oli vain esimerkki ja kirjastoa saatan myöhemmin käyttää, mutta sellainen tapa on tullut että haluan ymmärtää miten se itse algoritmi toimii. Tuossa nyt vajaaksi jäi se, että minkä kokoinen sen salaisen avaimen tulee olla en siis tarkoittanut, että meinasin alle 10 kokoista vaan onko sen luvun koko sidoksissa Primeen tai Generatoriin vai arvonko summassa jonkin luvun 100-1000 väliltä esimerkiksi vai sopiiko sitten, että mudostan aina esim. 2048 bittisen avaimen.
No siitä varmaan voisi tehdä analyysiä, että miten eri numeroiden koko vaikuttaa turvatasoon tai sitten jopa lukaista valmiin tutkimuksen aiheesta.
Wikipedia-artikkelissa väitettiin, että protokollaa pidettäisiin nykyisin turvallisena jos p on vähintää 300 numeron pituinen alkuluku ja a ja b ovat molemmat vähintään 100 -numeroisia.
Tuossa on ehkä hieman enemmän rautalangasta väännetty, ja selviää myöskin että sen salaisuuden pitää olla pienempi kuin valittu alkuluku-1
Kannattanee aloittaa lukemalla aiheesta:
Handbook of Applied Cryptography
Tuolla ensimmäiset luvut pohjustavat homman matemaattista teoriaa ja myöhemmissä esitellään asiaa tarkemmin. Ilmeisesti ainakin luvut 1, 2, 3, 4, 8 ja 12 on syytä tsekata.
Käsittääkseni suositellaan että primenä käytetään 2048 bittistä ryhmän 14 lukua:
http://www.ietf.org/rfc/rfc3526.txt
Ja generatorina lukua 2 (näitä ei siis tarvitse itse luoda vaan ne voidaan kovakoodata). Osapuolien salainen x (ja y) luku tulisi arpoa vahvalla satunnaisuudella väliltä 1 ≤ x ≤ p − 2.
Eiköhän tuolla Handbook of Applied Cryptographylla alkuun pääse :)
Kiitokset molemmille!! sain sen nyt toimimaan niinkuin pitää, mutta vielä sellainen kysymys että onko kellään mitään ideoita miten tämän ison integer avaimen saisi muunnettua turvallisella tavalla AES-128:n avaimeksi. salaisesta avaimesta voisi laskea tiivisteen suoraan, mutta olisiko olemassa parempia tapoja vai onko tuo menetelmä tarpeeksi turvallinen?
Aihe on jo aika vanha, joten et voi enää vastata siihen.