17 december, 2010 (gepubliceerd)
27 oktober, 2015 (laatst gewijzigd)

Cursus “Veilig digitaal communiceren” Aflevering 3: Voorbereiden compilatie

  Rubrieken: ICT
  Steekwoorden:  , ,

In deze aflevering wordt aangegeven welke (gratis) programma’s nodig zijn om de compilatie van de OpenSSL bibliotheek te laten slagen.

Inhoud

WIJ AANVAARDEN GEEN ENKEL RISICO VOOR EVENTUELE SCHADE OF ANDERE NEGATIEVE GEVOLGEN DOOR HET GEBRUIK VAN DOOR ONS GEADVISEERDE OF GEDISTRIBUEERDE SOFTWARE

1. Benodigde hardware
Zoals we hadden gemeld in de inleiding heeft u een Windows computer nodig. In een latere aflevering zullen we wat adviezen geven over hoe deze computer op te tuigen, hoewel het woord aftuigen beter op zijn plaats is. Deze computer wordt alleen gebruikt voor het coderen en decoderen van berichten en verder voor niets anders. Een computer die hiervoor geschikt is, kan u kopen voor ongeveer 300 € (bij MyCom bijvoorbeeld).

Verder heeft u een USB-stick en een USB-schijf nodig. Twee USB-schijven mag ook, als u van één maar vindt dat die handzaam genoeg is om elke dag in uw binnenzak of aan een sleutelring te hebben. De computer heeft een harde schijf (schijfletter c) en waarschijnlijk minstens een dvd/cd-rom drive. Ook kan het voorkomen dat de fabrikant nog een partitie (gedraagt zich als een extra schijf) gemaakt heeft op uw harde schijf om in geval van hardware- of software-ongelukken een herstelprocedure uit te kunnen voeren. Ik ga ervan uit dat u de twee USB-drives de letters d en e kan geven. Die notatie gebruik ik in de voorbeelden. Het mag ook f en g zijn, omdat de andere letters al bezet zijn. U kunt dat trouwens zelf aanpassen, maar het  maakt niet zoveel uit.

Op de ene USB-drive (mag een langzame stick zijn van 10 €) zet u uw codeersleutels; ik neem aan dat dat schijf e is. Op de andere USB-drive (moet een echte snelle USB-schijf zijn en weer zo klein mogelijk. Te krijgen bij MediaMarkt voor 100 €) gaat u de OpenSSL distributie neerzetten en gaat u ook proberen om uw computer zo instrueren dat zoveel mogelijk tijdelijke bestanden en databestanden van gebruikte programma’s op deze schijf terechtkomen. Ik noem deze schijf d.

Als u na gebruik van de computers de twee USB-apparaatjes afkoppelt, zullen er weinig sporen van uw coderingsactiviteiten achtergebleven zijn op harde schijf c. En dat is nu juist de bedoeling.

2. Benodigede software
U heeft als onderdelen nodig:

  1. Perl “interpeter”
  2. Assembler programma
  3. OpenSSL distributie
  4. C-compiler
  5. Een “make” programma

(Verder raden we u aan het gratis open source secure wisprograma Eraser te installeren.)

Het handigste is als geen van bovenstaande vijf items reeds op uw computer geïnstalleerd zijn. Het is zeker acceptabel als u er wel een paar heeft, maar het probleem is dat die misschien niet goed genoeg zijn, of niet de goede versies zijn. Dat gaan we nu uitzoeken.

Open een MS-DOS venster en type

>perl -v

Als u nu als antwoord een foutmelding krijgt dat het bestand niet gevonden kan worden, is er niets aan de hand. Dat betekent dat u òf geen Perl heeft geïnstalleerd òf dat dit programma niet in de PATH omgevingsvariabele staat waardoor het reeds geïnstalleerde programma onzichtbaar is. Mocht u de de gewenste  foutmelding: ga door naar het vette kopje ActiveState.

Mocht u  een Perl antwoord krijgen, dan heeft u Perl geïnstalleerd en staat het in PATH. U kunt in de tekst geproduceerd in het MS-DOS venster nu lezen welke uitvoering van Perl u heeft. Als het niet (een recente versie van) Perl  van ActiveState is, raad ik u aan uw eigen Perl uit de PATH omgeving te halen, of zelfs helemaal te wissen.

3. ActiveState Perl
Haal de  laatste versie van Perl voor Windows (binary for Windows) op van de website van ActiveState en installeer. Open een MS-DOS venster en type weer

>perl -v

Nu moet u een prompt krijgen van de Perl van  ActiveState (zie figuur hiernaast). Als de computer uw ActiveState Perl niet kan vinden, voeg dan de maplokatie van deze Perl toe aan de PATH omgevingsvariabele en introduceer zo nodig in de omgeving de nieuwe omgevingsvariabele met naam PERL en maak de waarde (streng) gelijk aan de volledige naam (pad + perl.exe) van het Perl programma, eventueel tussen aanhalingstekens als de naam van het pad een spatie bevat. Sluit het MS-DOS venster en open het weer. Nu zou het perl -v commando de vereiste respons moeten geven. Het heeft geen zin om verder te gaan als dit niet werkt.

4. Assembler

Zoals ik later zal uitleggen waarom we een zgn. assembler-programma nodig hebben. We kiezen daarvoor later ml.exe, de assembler van Microsoft.

5. OpenSSL distributie ophalen
De OpenSSL distributie bestaat uit duizenden bestanden. Hiërarchisch gerangschikt in allerlei mappen en ondermappen. Als de ontwikkelaars de distributie als een paar duizend bestanden zouden aanbieden, zou het ophalen een puinhoop worden. Verder is het moeilijk om bij het ophalen van aparte bestanden een mappenstructuur te handhaven en het zou ook nog eens heel groot worden. Het liefst zou je het geheel onderbrengen in één bestand dat alle informatie bevat: bestanden en mappenstructuur en bovendien nog gecomprimeerd is ook en op alle besturingssystemen (Linux, Windows en Mcintosh) te lezen is.

Het zal dan ook geen verbazing wekken dat de ontwikkelaars van OpenSSL gekozen hebben voor het open source archiveerprogramma tar en voor het comprimeer-programma gzip. Het resultaat is dat je na het tarren en gzippen van een bestand een nieuw bestand krijgt, een zgn. tarball, waarvan de naam eindigt op tar.gz. Zo een tarball dient u op te halen op de website van OpenSSL. Neem het bestand waar LATEST achter staat. (ze staan ook in onze Appendix). Voor een ouder versie van Windows dient u een oudere versie van OpenSSL (0.9.8) op te halen. Daarna moet het ge-un-gzipped worden tot een tar bestand en dat moet ge-un-tarred worden tot de oorspronkelijke OpenSSL bestanden met behoud van de mappenstructuur. De Unix programma’s gzip.exe en tar.exe zijn beschikbaar voor het Windows platform, maar zijn niet nodig voor het uitpakken.

6. OpenSSL distributie uitpakken
Standaard Windows (de)compressieprogramma’s zijn of gratis of hebben een gratis evaluatie-periode, zoals PowerArchiver en WinZip. En waarschijnlijk heeft u al zo een (de)compressieprogramma op uw computer. Ga met verkenner naar het OpenSSL tar.gz bestand op uw computer en dubbelklik erop. Als nu een decompressie-programma gestart wordt, zal het uitpakken wel goed gaan. Zo niet dan moet u een decompressieprogramma van het Internet halen. Daarna OpenSSL uitpakken met behoud van mappenstructuur en ergens op uw computer opslaan. Later zullen we de gehele distributie verplaatsen. Neem nu maar even een makkelijke plek: bijv. c:\temp\. Probeer een plek te vermijden met spaties in de naam van een van de (boven)mappen (zoals “c:\program files\”. Als u wel spaties heeft in namen van mappen, moet u later voortdurend aanhalingstekens typen, want het MS-DOS venster, zoals trouwens als alle DOS-vensters, herkent een spatie als grens om te stoppen, tenzij ingebed in een streng met aanhalingstekens.

7. File links neutraliseren
In grote software-projecten zoals OpenSSL is het regelmatig nodig dat kopieën van hetzelfde bestand op verschillende plekken moeten worden opgeslagen. Bijvoorbeeld omdat anders de compiler ze niet vindt. Dat lokatie-probleem kun je oplossen door op al die gewenste plekken kopieën van die bestanden echt neer te zetten. Dat lost wat op, maar creëert grotere problemen. In een software-project worden bestanden voortdurend gewijzigd, bijv. bij het corrigeren van fouten of bij het ontwikkelen van nieuwere versies. Als je dan een bestand wijzigt, dan moet je ook de eventuele kopieën van dat bestand aanpassen. Maar ja, waar stonden al die kopieën ook alweer? Als je er één vergeet en in de oude, ongewijzigde vorm laat, heb je mogelijk later een niet-werkend of nog erger, een half-werkend software-pakket.

In de Unix wereld staat daar allang een oplossing voor, een oplossing die nu ook eindelijk door Microsoft in Windows is geïmplementeerd: de symbolische koppeling (symlink). In plaats van een kopie van een bestand ergens te plaatsen, zet men er een koppeling neer naar het oorspronkelijke bestand. Een programma dat denkt op die plek een bestand te vinden, vindt dat ook, want het besturingssysteem treft een symlink aan het navigeert die vraag transparant door naar het echte oorspronkelijke bestand. Beide problemen opgelost: de bestanden staan op de verschillende, gewenst plekken en zijn altijd identiek.

Uiteraard maakt OpenSSL gebruik van die symlinks, maar het probleem is dat Windows er nog geen raad mee weet en sommige oudere Windows decompressie-programma’s al helemaal niet. De goede decompressie-programma’s vervangen de symlink door een bestand met dezelfde naam maar zonder inhoud (zero size). Na het uitpakken van de OpoenSSL staan er een aantal van die lege bestanden en die geven later problemen als de permissies ervan niet goed staan. Navigeer met Windows Verkenner naar de map:  uw-openssl-map\include\openssl\ en wis alle bestanden die extensie “h” (van header) hebben en bestandsgrootte nul.

WIJ AANVAARDEN GEEN ENKEL RISICO VOOR EVENTUELE SCHADE OF ANDERE NEGATIEVE GEVOLGEN DOOR HET GEBRUIK VAN DOOR ONS GEADVISEERDE OF GEDISTRIBUEERDE SOFTWARE

De volgende aflevering van de Cursus “Veilig digitaal communiceren” zal heten: “Compiler en make”.

8. Door ons gebruikte boeken

Niveau: *: geen voorkennis, **: beginnend programmeur, ***: ervaren programmeur

Print Friendly
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Schrijf een reactie

*