Solnet 2.0

Gå rett til nedlastingssiden om du vil.

Dette er versjon 2.0 av Solnet. Versjon 1.0, solkrypt med solnet og solpost, har vi dokumentert før. Vi forutsetter at du har lest det. Solkrypt 1.0 og Solnet 1.0 er samme sak. Fra nå av heter det Solnet.

Det var en ting vi glemte å si om versjon 1.0, som gjelder versjon 2.0 også: krypto.exe bruker msvcrt.dll, og den forutsettes å ligge i mappen C:\Windows\System32. Gjør den ikke det kræsjer programmet. Da virker ingenting i Solnet/Solkrypt. For å sjekke banen til msvcrt.dll åpner du en Windows kommandoboks og gir kommandoen where msvcrt.dll. Svaret skal bli C:\Windows\System32\msvcrt.dll.

Det nye i 2.0 er at man kan koble til en annen bruker (nettverksnode), og utveksle offentlige nøkler, gjennom nettverket. Siden kan man også sende filer gjennom nettverket til en valgt mottager (som man har koblet til).

Når man utveksler offentlige nøkler gjennom nettverket krypterer man dem med en nettverksnøkkel. Nettverksnøkler er akkurat som vanlige nøkler bare at deres navn begynner med net_, f.eks. net_solkorset . Så den private og den offentlige nøkkelen i et par av nettverksnøkler kan hete net_solkorset.pri og net_solkorset.pub . Slike nøkler må lages og spres gjennom nettverket for at man skal kunne fjernkoble gjennom nettverket. De lages på akkurat samme måte som vanlige nøkler bare at navnet må begynne med net_. Men de brukes på en annen måte: Både den private og den offentlige nøkkelen sendes ut i nettverket, riktignok kryptert. Det betyr at hvis jeg lager og sender ut net_solkorset.pri og net_solkorset.pub så får alle medlemmer av nettverket tak i disse nøklene. net_solkorset.pri er ikke hemmelig for noe medlem.

Spredningen av nettnøkler begynner med koble.bat. Når man har koblet direkte slik som beskrevet i versjon 1.0 sendes den nyeste nettnøkkelen (egentlig nøkkelparet) kryptert med mottagers offentlige nøkkel. koble.bat er altså endret fra 1.0 slik at nettnokkel.bat kalles til slutt. Dette skriptet er nytt og sender nettnøkkelen. For å kunne koble til direkte man altså nå ha minst én nettnøkkel liggende i nøkkelmappen. Så sørg for å opprette en nettnøkkel samtidig som du lager din egen. Hvis man har solpostnavnet solkorset er det god skikk å velge net_solkorset som navn på sin nettnøkkel.

Den som mottar en nettnøkkel ved koble.bat skal kringkaste den til alle i sin del av nettverket før sammensmeltningen. Altså det som var hele nettverket for mottageren før sammensmeltningen ved koble.bat . Vær klar over at koble.bat kan føye sammen to store nettverk. Mottageren kringkaster ved å bruke skriptet kring.bat som er nytt i 2.0 . Hvis jeg heter solkorset kringkaster jeg ved kring solkorset. Da krypteres den mottatte nettnøkkelen med den nyeste nettnøkkelen jeg har på lager og kringkastes til alle i min del av nettverket ved programmet kringkast.exe .

Den som har mottatt en kringkastet nettnøkkel pakker den opp ved å kjøre skriptet unett.bat. Det brukes uten argumenter slik: unett.

Med nettnøkler er det mulig å fjernkoble gjennom nettverket. Da sendes et medlems offentlige nøkkel gjennom nettverket kryptert med en nettnøkkel. Skriptet som gjør dette er koblevia.bat . Hvis jeg er midnattssol og skal koble til harfagre gir jeg kommandoen koblevia midnattssol harfagre . Det er også tillatt å angi nettnøkkelen som skal brukes som tredje argument, f.eks. koblevia midnattssol harfagre net_solkorset . Men dette virker bare hvis jeg vet at harfagre har nettnøkkelen net_solkorset, og jeg selv også har den. Ellers skal man utelate tredje argument og la skriptet finne en felles nettnøkkel. koblevia.bat kaller skriptet fellesnokler.bat for å gjøre dette, og det bruker solpost-funksjonen fellesnokler.

Når en felles nettnøkkel er funnet er neste utfordring å finne en rute gjennom nettverket fra midnattssol til harfagre. Programmet som gjør det heter rute.exe og det bruker solpost-funksjonen rute. Når dette er gjort krypteres midnattssol sin offentlige nøkkel med nettnøkkelen man fant og sendes til harfagre langs ruten man fant. Dette er ikke nødvendigvis korteste rute men raskeste rute på det tidspunkt ruten ble beregnet. Funksjonen i solpost som formidler den krypterte nøkkelen gjennom nettverket heter sendvia. Når man når målet kalles solpost-funksjonen send for å fullføre forsendelsen. Da legges den krypterte nøkkelen i innboksen til harfagre.

Tilkoblingen er ikke fullført før harfagre har sendt sin offentlige nøkkel til midnattssol. Harfagre skal ikke bruke koblevia.bat til dette fordi den mottatte nøkkelen må dekrypteres, omdøpes og flyttes til nøkkelmappen. Dessuten skal dette gjøres på en gang for alle nøkler som er mottatt, ikke bare den fra midnattssol. Skriptet man skal bruker er uvia.bat . Det brukes slik: uvia harfagre hvis du heter harfagre. uvia.bat kaller koblevia.bat og med samme nettnøkkel som midnattssol brukte for å nå harfagre. Til slutt må midnattssol dekryptere nøkkelen mottatt fra harfagre. Det gjøres også med uvia.bat slik: uvia midnattssol. Nå kalles riktignok koblevia.bat på ny men den fører liste over nettnoder den har koblet til og gjentar ikke forsendelsen til harfagre.

Når fjerntilkoblingen gjennom nettverket er fullført er det fritt fram å sende meldinger til den andre. Det gjøres med skriptet sendvia.bat. Hvis midnattssol skal sende filen brev.txt til harfagre gir han kommandoen sendvia brev.txt midnattssol harfagre . Om nødvendig beregner sendvia.bat en ny rute fra midnattssol til harfagre. Det bruker solpost-funksjonen sendvia for å formidle brevet gjennom nettverket, akkurat som koblevia.bat gjør. Så brevet havner i innboksen til harfagre og skal åpnes med apne.bat .

Ikke alle medlemmer (servere) i nettverket er oppe til enhver tid. Du får en liste over dem som er oppe ved å kjøre skriptet hvem.bat . Hvis du heter harfagre gir du kommandoen hvem harfagre . Hver node (server) i nettverket bør være koblet til flere andre noder direkte, ha mer enn en nabo, slik at man ikke mister forbindelsen bare fordi en node går ned. hvem.bat bruker programmet online.exe som bruker solpost-funksjonen online .

Solnet 2.0 inneholder en korrigert utgave av solnet.exe . Den inneholder også nye utgaver av koble.bat, send.bat, krypter.bat, apne.bat og miljo.bat . Selvfølgelig foreligger solpost.dll i ny utgave. I miljo.bat har en ny miljøvariabel tilkommet: jeg . Den må stilles og skal være ditt solpostnavn. I utgaven av skriptet du får levert står det set jeg=solkorset , det må endres. Skriptet beregner miljøvariabelen naboer og, hvis du heter harfagre, naboer_harfagre . kring.bat, unett.bat og uvia.bat kalles alle derfra så istedenfor å kjøre disse enkeltvis manuelt kan man kjøre miljo.bat .

For at Solnet 2.0 skal virke må noen registernøkler redigeres. Dette kommer i tillegg til det som måtte gjøres for å få Solnet 1.0 til å virke. Først må disse to nøklene stilles:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_MAXCONNECTIONSPERSERVER
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_MAXCONNECTIONSPER1_0SERVER

For å stille dem åpner du en Windows kommandoboks og gir kommandoen regedit. Du får da spørsmål om du vil tillate programmet å gjøre endringer på maskinen. Det må du tillate. Da får du opp regedit-vinduet. Naviger ned til hver av disse to nøklene og sett dem lik 0x80 (128) som er største gyldige verdi. Du dobbeltklikker på navnet explorer.exe for å gi inn en ny verdi.

Når det er gjort må du navigere ned til denne nøkkelen:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

Høyreklikk på Internet Settings og opprett en ny DWORD-verdi. Den skal hete MaxConnectionsPerServer . Kopier og lim inn dette navnet så ikke det blir galt. Verdien skal være 0x80 (128). Så lager du en DWORD-verdi til under samme nøkkel. Den skal hete MaxConnectionsPer1_0Server . Igjen skal verdien være 0x80 (128).

Lukk regedit-vinduet men gå gjerne inn igjen for å sjekke at de nye verdiene er registrert. Når registry nå er endret må du starte explorer.exe på ny. Det kan gjøres på to måter. Den ene er å gi kommandoen taskmgr, høyreklikke på explorer.exe og velge restart. Den andre måten er å gi kommandoen taskkill /F /IM explorer.exe & start explorer .

Nå er du ferdig. Jeg skylder deg vel en forklaring på hvorfor disse nøklene må redigeres. Det er nokså innlysende. MaxConnectionsPerServer styrer hvor mange TCP-forbindelser til en webserver (som Solnet) man kan ha samtidig. Når Windows leveres til en vanlig PC (Windows desktop) er verdiene satt veldig lavt, typisk 4. Det er uholdbart. De må heves til største gyldige verdi som er 128.

Lisensvilkårene for en desktop-versjon av Windows omfatter at høyst 20 TCP-forbindelser kan være åpne samtidig. Du kan se på det ved å gi kommandoen winver. Men siden Windows 7 er det bare et fåtall Windows-tjenester som håndhever den begrensningen. Et eksempel er IIS. Når man kjører sin egen programvare (Solnet) finnes ingen begrensning. For å sjekke dette skal du starte solnet.exe og la den lytte på localhost (127.0.0.1) ved å gi kommandoen solnet 127.0.0.1 . En ip-adresse som angis på kommandolinjen overstyrer miljøvariabelen ipadresse (som settes i miljo.bat). Åpne en annen Windows kommandoboks, kjør miljo.bat og gi kommandoen conctest 30. Da skal du i vinduet som kjører solnet se programmet telle til 30 (eller 29). I så fall virker alt som det skal. conctest.exe er et program som medfølger i Solnet 2.0 og det bruker solpost.conctest .

I kommende versjoner av Solnet skal vi bringe forum, chat och søkemotor. Alt kommer til å være fullstendig distribuert, uten noen sentral server eller database. Når du oppretter en ny tråd i forumet lagres den på din egen maskin. Andre som bidrar til tråden sender sine innlegg til din maskin hvor de lagres. På den måten ligger forumets tråder spredt over alle maskinene i nettverket. Vi skal også gjøre det mulig å ha en hjemmeside på egen maskin som andre medlemmer av nettverket kan besøke. Hvert medlem indekserer sine egne sider og tråder. Søkemotoren er distribuert og søker samtidig i alle nettverksmaskinene ved bruk av den lokale indeksen på hver maskin.

Erlend