epep
Aktiv medlem
Ett problem som förefaller uppkomma allt mer ofta är att bilder publiceras mot copyright-havarens tillstånd. Det kan också vara svårt att bevisa sin rätt till en bild. Ett annat problem som finns är att det är svårt att visa att en bild är tagen innan en viss tidpunkt vilket kan ha betydelse för att bl.a. kunna hävda rätten till en bild.
Först några klarläggande i enkel form:
--------------------------------------
En kryptografisk message digest-funktion (MD) är en funktion som tar en arbiträr indata och från denna genererar ett digitalt "fingeravtryck". Funktionen är sådan att det är tidsmässigt omöjligt att, även om man har såväl meddelandet som fingeravtrycket, generera en annan text som ger samma fingeravtryck. Det går heller inte att utifrån enbart fingeravtrycket ta reda på vilket meddelande som genererat fingeravtrycket.
Har man en mängd data så är det dock trivialt att generera fingeravtrycket.
Ex MD5 (dock bruten - ska ej användas längre)
SHA-1 (ska ej heller användas längre)
SHA-256
etc
En HMAC/MAC är en "message authentiation code" som visar att en mängd data är äkta och inte har förvanskats. En HMAC använder tex en MD och ett "lösenord" för att generera koden, och om meddelandet ändrats så kommer inte koden och den kod som beräknas från meddelandet att överensstämma, vilket betyder att meddelandet förvanskats. Sändare och mottagare måste komma överens om "lösenordet" på något sätt.
ex:
HMAC-MD5
HMAC-SHA1
etc
En digital signatur liknar en HMAC men det finns vissa skillnader. En digital signatur använder assymetrisk kryptografi (öppen nyckel-kryptografi), och kan användas för att signera vilken digital data som helst. Vid öppen kryptografi används 2 nycklar - en hemlig och en öppen. Den öppna kan användas för att kryptera ett meddelande eller verifiera signaturen av ett meddelande, men kan inte singera ett meddelande och kan inte dekryptera ett meddelande (detta kan bara den hemliga nyckeln göra).
En digital signatur kan verifieras varmed mottagaren kan kontrollera att ENBART den som äger den hemliga nyckeln kan ha signerat meddeladet.
ex
RSA
ElGamal
Cramer-Shoup
(Diffie-Hellman nyckelutbyte)
Bakgrund (överhoppningsbart):
-----------------------------
Nikon har i åtminstone sina dyrare kamror någon form av funktionalitet som ska ange att en bild inte förvanskats. Jag har dock inte sett någon beskrivning av vilket protokoll Nikon använder för detta, och hur Nikon kan avgöra att bilden inte förvanskats. Detta är av central betydelse!
Frånvaro av angivelse av protokoll brukar tyda på ett dåligt protokoll som inte motstår egentliga försök till förvanskning av professionella.
Det är också inneboende svårt att generera system för att kontrollera att data inte förvanskats. Låt säga att Nikon använder någon message-digest-funktion (MD) eller en HMAC, där koden sedan inbäddas i bilden. I fallet med en MD så är krävs i princip bara att ta reda på vilken MD som använts och var den lagras, och sedan är det fritt fram att ändra i bilden. I fallet med HMAC så blir det svårare, då HMAC-koden måste vara lagrad i kameran, men i princip så går detta också att ta reda på. I värsta fall kanske koden lagras i firmware. Samma problem om Nikon använder sig av reguljära certifikat för signering - de måste i så fall finnas i kameran och är då principiellt tillgängliga för en professionell som önskar förvanska bilden.
Hur som helst är det inte känt HUR nikon gör, och som jag ser det så är det svårt att garantera det Nikon garanterar.
Är det någon som vet hur Nikon gör? Har nikon publicerat någon information om detta? Inbäddas också information om från vilken kamera bilden är tagen så att kameraägaren åtminstone kan hävda att bilden är tagen av hans kamera? Ingår även EXIF-informationen i det som "äkthetskontrolleras"?
Nikon ska i varje fall ha en eloge för att de inbäddar information om äktheten i en bild, men de anger som sagt inte HUR de gör.
Dessutom hjälper detta bara de som har DYRA nikon-kameror - har D200 eller D300 något liknande? Finns det andra tillverkare som har något liknande?
En försök till lösning av delar av problemet:
---------------------------------------------
Ett enkelt försökt som kan lösa delar av problemet, som dock är utan fullständigt bevisvärde, vore att man kan kunde generera en message-digest av en bildfil tillsamman med eventuell övrigt information man önskade, som tex plats där bilden tagits, mm mm. Denna MD har naturligvis inget som helst bevisvärde eftersom man kan plocka en bild och göra vad man vill med den och ange vilken metadata man önskar till bilden.
Låt dock säga att man sedan skickar den extra informationen tillsammans med MD till ett ställe där man la till datum då datan inskickats, mailadress från vilken datan kommit etc, och sedan detta ställe (tex fotosidan) signerade bilden med sin nyckel. Data skickades sedan tillbaka till den som skickade in den. Denna person sparar sedan denna minimala fil. (Kanske skulle man kunna lägga informationen i IPTC)
Om någon ifrågasätter tex när bilden är tagen etc så skulle denna person kunna visa 1) signaturens äkthet, 2) samt att MD som är signerad motsvarar bildfilen.
På detta sätt skulle man otvivelaktigt kunna bevisa att bilden var tagen INNAN den tidpunkt som signaturen angav. Fortfarande skulle det vara möjligt att plocka andras bilder och göra samma sak, men OM man gör på detta sätt med sin orginalbild från kameran, eventuellt med sina behandlade kopior så får man en signatur-"kedja" som skulle vara mycket svår att få om man inte tagit bilden.
Inkluderar man dessutom information som bara man själv som fotograf känner till i den metadata som man skickar in, och som dessutom framgår av bilden, så får det sannolikt bevisvärde (ex för ett landskapsfoto mer precist var det är taget, för ett modellfoto modellensnamn, plats eller tex hennes personnummer etc etc).
Detta skulle dock inte alls kunna bevisa att en bild är oförvanskad, men skulle kunna innebära en möjlighet att visa att man tagit en viss bild, samt att säkert bevisa att bilden är tagen innan en viss tidpunkt (vilket kan hjälpa att visa att man tagit bilden). Om man tex hittar en bild i tidningen som är en egen så kan man enkelt visa att man har en signatur av bilden som är tagen innan tidningen publicerat bilden, att man vid det tidigare datumet vet exakt platsen där bilden är tagen (vilket ju kan verifieras genom att gå dit) eller någon mer av den unika metadatan man signerat, och att det sålunda är sannolikt att bilden är ens egen etc.
Det skulle inte vara svårt att koda ett java-prog som gjorde det som klienten behöver göra, och på servern skulle det bara vara att lägga till datum och epostadress och sedan använda gpg för att signera meddelanden som kommer in till en viss epostadress. Vill man göra det än mer avancerat kan man göra det möjligt att söka på signaturer, men det tillför inte så mycket.
Kommentarer? Förbättringar? Förslag? Ideer?
/erik
Först några klarläggande i enkel form:
--------------------------------------
En kryptografisk message digest-funktion (MD) är en funktion som tar en arbiträr indata och från denna genererar ett digitalt "fingeravtryck". Funktionen är sådan att det är tidsmässigt omöjligt att, även om man har såväl meddelandet som fingeravtrycket, generera en annan text som ger samma fingeravtryck. Det går heller inte att utifrån enbart fingeravtrycket ta reda på vilket meddelande som genererat fingeravtrycket.
Har man en mängd data så är det dock trivialt att generera fingeravtrycket.
Ex MD5 (dock bruten - ska ej användas längre)
SHA-1 (ska ej heller användas längre)
SHA-256
etc
En HMAC/MAC är en "message authentiation code" som visar att en mängd data är äkta och inte har förvanskats. En HMAC använder tex en MD och ett "lösenord" för att generera koden, och om meddelandet ändrats så kommer inte koden och den kod som beräknas från meddelandet att överensstämma, vilket betyder att meddelandet förvanskats. Sändare och mottagare måste komma överens om "lösenordet" på något sätt.
ex:
HMAC-MD5
HMAC-SHA1
etc
En digital signatur liknar en HMAC men det finns vissa skillnader. En digital signatur använder assymetrisk kryptografi (öppen nyckel-kryptografi), och kan användas för att signera vilken digital data som helst. Vid öppen kryptografi används 2 nycklar - en hemlig och en öppen. Den öppna kan användas för att kryptera ett meddelande eller verifiera signaturen av ett meddelande, men kan inte singera ett meddelande och kan inte dekryptera ett meddelande (detta kan bara den hemliga nyckeln göra).
En digital signatur kan verifieras varmed mottagaren kan kontrollera att ENBART den som äger den hemliga nyckeln kan ha signerat meddeladet.
ex
RSA
ElGamal
Cramer-Shoup
(Diffie-Hellman nyckelutbyte)
Bakgrund (överhoppningsbart):
-----------------------------
Nikon har i åtminstone sina dyrare kamror någon form av funktionalitet som ska ange att en bild inte förvanskats. Jag har dock inte sett någon beskrivning av vilket protokoll Nikon använder för detta, och hur Nikon kan avgöra att bilden inte förvanskats. Detta är av central betydelse!
Frånvaro av angivelse av protokoll brukar tyda på ett dåligt protokoll som inte motstår egentliga försök till förvanskning av professionella.
Det är också inneboende svårt att generera system för att kontrollera att data inte förvanskats. Låt säga att Nikon använder någon message-digest-funktion (MD) eller en HMAC, där koden sedan inbäddas i bilden. I fallet med en MD så är krävs i princip bara att ta reda på vilken MD som använts och var den lagras, och sedan är det fritt fram att ändra i bilden. I fallet med HMAC så blir det svårare, då HMAC-koden måste vara lagrad i kameran, men i princip så går detta också att ta reda på. I värsta fall kanske koden lagras i firmware. Samma problem om Nikon använder sig av reguljära certifikat för signering - de måste i så fall finnas i kameran och är då principiellt tillgängliga för en professionell som önskar förvanska bilden.
Hur som helst är det inte känt HUR nikon gör, och som jag ser det så är det svårt att garantera det Nikon garanterar.
Är det någon som vet hur Nikon gör? Har nikon publicerat någon information om detta? Inbäddas också information om från vilken kamera bilden är tagen så att kameraägaren åtminstone kan hävda att bilden är tagen av hans kamera? Ingår även EXIF-informationen i det som "äkthetskontrolleras"?
Nikon ska i varje fall ha en eloge för att de inbäddar information om äktheten i en bild, men de anger som sagt inte HUR de gör.
Dessutom hjälper detta bara de som har DYRA nikon-kameror - har D200 eller D300 något liknande? Finns det andra tillverkare som har något liknande?
En försök till lösning av delar av problemet:
---------------------------------------------
Ett enkelt försökt som kan lösa delar av problemet, som dock är utan fullständigt bevisvärde, vore att man kan kunde generera en message-digest av en bildfil tillsamman med eventuell övrigt information man önskade, som tex plats där bilden tagits, mm mm. Denna MD har naturligvis inget som helst bevisvärde eftersom man kan plocka en bild och göra vad man vill med den och ange vilken metadata man önskar till bilden.
Låt dock säga att man sedan skickar den extra informationen tillsammans med MD till ett ställe där man la till datum då datan inskickats, mailadress från vilken datan kommit etc, och sedan detta ställe (tex fotosidan) signerade bilden med sin nyckel. Data skickades sedan tillbaka till den som skickade in den. Denna person sparar sedan denna minimala fil. (Kanske skulle man kunna lägga informationen i IPTC)
Om någon ifrågasätter tex när bilden är tagen etc så skulle denna person kunna visa 1) signaturens äkthet, 2) samt att MD som är signerad motsvarar bildfilen.
På detta sätt skulle man otvivelaktigt kunna bevisa att bilden var tagen INNAN den tidpunkt som signaturen angav. Fortfarande skulle det vara möjligt att plocka andras bilder och göra samma sak, men OM man gör på detta sätt med sin orginalbild från kameran, eventuellt med sina behandlade kopior så får man en signatur-"kedja" som skulle vara mycket svår att få om man inte tagit bilden.
Inkluderar man dessutom information som bara man själv som fotograf känner till i den metadata som man skickar in, och som dessutom framgår av bilden, så får det sannolikt bevisvärde (ex för ett landskapsfoto mer precist var det är taget, för ett modellfoto modellensnamn, plats eller tex hennes personnummer etc etc).
Detta skulle dock inte alls kunna bevisa att en bild är oförvanskad, men skulle kunna innebära en möjlighet att visa att man tagit en viss bild, samt att säkert bevisa att bilden är tagen innan en viss tidpunkt (vilket kan hjälpa att visa att man tagit bilden). Om man tex hittar en bild i tidningen som är en egen så kan man enkelt visa att man har en signatur av bilden som är tagen innan tidningen publicerat bilden, att man vid det tidigare datumet vet exakt platsen där bilden är tagen (vilket ju kan verifieras genom att gå dit) eller någon mer av den unika metadatan man signerat, och att det sålunda är sannolikt att bilden är ens egen etc.
Det skulle inte vara svårt att koda ett java-prog som gjorde det som klienten behöver göra, och på servern skulle det bara vara att lägga till datum och epostadress och sedan använda gpg för att signera meddelanden som kommer in till en viss epostadress. Vill man göra det än mer avancerat kan man göra det möjligt att söka på signaturer, men det tillför inte så mycket.
Kommentarer? Förbättringar? Förslag? Ideer?
/erik