24-07-2016, 11:16
Der er noget jeg har villet gøre i lang tid, og nu er det endelig sket. Jeg er netop blevet "færdig" med at implementere OpenPGP i PM-systemet. Det vil sige at man nu kan kryptere og dekryptere private beskeder med PGP direkte på siden.
Der er naturligvis altid nogle ting man skal tage i betragtning. Den ene er, at funktionen kræver at du gemmer din private key i browseren for at kunne signere og dekryptere beskeder. Nu har jeg forsøgt at gøre det så gennemsigtigt som muligt, så jeg har valgt ikke at bruge minified versioner af openpgp.js, som er det library der benyttes til de kryptografiske operationer. Dette har gennemgået et par audits og man kan med nogenlunde sikkerhed sige, at det fungerer som det skal.
For at bruge systemet, er du nødt til at offentliggøre din public key. Dette kan gøres på den nye side https://www.shellsec.pw/pgp.php. Hvis du ikke allerede har et keypair, kan du også generere et på siden (Det er vigtigt at du husker at trykke på "gem" efterfølgende). Din public key vil blive gemt i Shellsec's database og din private key bliver gemt i browserens localstorage. Det anbefales at du tager en backup af dit keypair, hvis du en gang skulle få brug for at skifte browser eller reinstallerer dit styresystem. Du har også mulighed for at angive en passphrase, som bruges til at kryptere din nøgle, idet din localstorage ikke er krypteret. Jeg anbefaler at man benytter sig af denne funktion når nu muligheden er der :)
Det er også muligt kun at uploade en public key, hvis man ikke ønsker at angive sin private key på en hjemmeside (en forståelig bekymring). Det har naturligvis bare den konsekvens at du er nødt til selv at dekryptere beskederne udenfor browseren.
For at kryptere din besked, trykker du blot på knappen til venstre i PM systemet.
Det er ikke nødvendigt at angive adgangskoden, men feltet er der fordi jeg arbejder på muligheden for at signere beskeden i samme omgang (Dette virker dog ikke endnu).
Når du modtager en krypteret besked, vil der nederst til højre være en knap til at dekryptere den. Resten af fremgangsmåden kan man nok gætte sig til.
Det er stadig meget work in progress, men systemet virker, så jeg vil ikke afholde jer fra at lege lidt med det og komme med feedback.
I fremtiden kunne det være fedt at lave et web of trust, hvor man kan signere andre brugeres public keys, så det ikke bare er muligt at ændre den og signere ting med den på ny uden at folk bliver opmærksomme på at den er ændret. Jeg har dog ikke undersøgt hvor meget af dette der er understøttet af openpgp.js, men har kigget på muligheden for at bruge en HKP server :)
Før jeg kigger på det, vil jeg dog lige have tilføjet krypter-knappen til quick reply og få lavet et billede til dekrypter-knappen, samt kigge på en modal hvor jeg kan maske den adgangskode man indtaster (I stedet for en javascript prompt, jeg ved det er slemt :))
EDIT: Så er der kommet ikon på knappen :)
EDIT2: Blue Wide og Blue er merget, så der nu kun er Blue, men den indeholder også den nye opsætning.
Der er naturligvis altid nogle ting man skal tage i betragtning. Den ene er, at funktionen kræver at du gemmer din private key i browseren for at kunne signere og dekryptere beskeder. Nu har jeg forsøgt at gøre det så gennemsigtigt som muligt, så jeg har valgt ikke at bruge minified versioner af openpgp.js, som er det library der benyttes til de kryptografiske operationer. Dette har gennemgået et par audits og man kan med nogenlunde sikkerhed sige, at det fungerer som det skal.
For at bruge systemet, er du nødt til at offentliggøre din public key. Dette kan gøres på den nye side https://www.shellsec.pw/pgp.php. Hvis du ikke allerede har et keypair, kan du også generere et på siden (Det er vigtigt at du husker at trykke på "gem" efterfølgende). Din public key vil blive gemt i Shellsec's database og din private key bliver gemt i browserens localstorage. Det anbefales at du tager en backup af dit keypair, hvis du en gang skulle få brug for at skifte browser eller reinstallerer dit styresystem. Du har også mulighed for at angive en passphrase, som bruges til at kryptere din nøgle, idet din localstorage ikke er krypteret. Jeg anbefaler at man benytter sig af denne funktion når nu muligheden er der :)
Det er også muligt kun at uploade en public key, hvis man ikke ønsker at angive sin private key på en hjemmeside (en forståelig bekymring). Det har naturligvis bare den konsekvens at du er nødt til selv at dekryptere beskederne udenfor browseren.
For at kryptere din besked, trykker du blot på knappen til venstre i PM systemet.
Det er ikke nødvendigt at angive adgangskoden, men feltet er der fordi jeg arbejder på muligheden for at signere beskeden i samme omgang (Dette virker dog ikke endnu).
Når du modtager en krypteret besked, vil der nederst til højre være en knap til at dekryptere den. Resten af fremgangsmåden kan man nok gætte sig til.
Det er stadig meget work in progress, men systemet virker, så jeg vil ikke afholde jer fra at lege lidt med det og komme med feedback.
I fremtiden kunne det være fedt at lave et web of trust, hvor man kan signere andre brugeres public keys, så det ikke bare er muligt at ændre den og signere ting med den på ny uden at folk bliver opmærksomme på at den er ændret. Jeg har dog ikke undersøgt hvor meget af dette der er understøttet af openpgp.js, men har kigget på muligheden for at bruge en HKP server :)
Før jeg kigger på det, vil jeg dog lige have tilføjet krypter-knappen til quick reply og få lavet et billede til dekrypter-knappen, samt kigge på en modal hvor jeg kan maske den adgangskode man indtaster (I stedet for en javascript prompt, jeg ved det er slemt :))
EDIT: Så er der kommet ikon på knappen :)
EDIT2: Blue Wide og Blue er merget, så der nu kun er Blue, men den indeholder også den nye opsætning.