Authenticating a digital image is not an easy task and it depends on how far you want to go with it. First of all it is needed to understand at which level you want to verify the originality of a picture.
Do you want it to be the exact image created by the camera without any alteration (camera-original)? In that case if you uploaded it to Facebook it won't be an original anymore, as Facebook servers will likely recompress it, resize it and add some tags.
There are several methods to verify if the image is a camera-original or not and some are actually very simple, for example:
- check if the format and resolution is supported by the camera
- check if EXIF metadata are present and respect the settings provided by the camera
- check that EXIF metadata don't contain any suspicious software tag containing words like "Photoshop"
- check that the JPEG compression settings (quantization tables) are compatible with the ones of the images generated by the suspect camera
Checking if the pictures are camera-original is quite quick, but we must remember that a skilled attacker with the proper software will be able to fool your analysis. It may be quite easy to modify the EXIF data of an image to make it appear original, but it may be less obvious to encode a tampered image with the camera settings without altering original camera file structure.
The other problem is that you may not care at all that the image is not a camera-original (for example because it has been resized) but you are only interested about the fact that its content has not been faked, for example removing an object or adding a person.
In this case you won't analyze the only the file format and metadata but the actual pixels to perform different kinds of analysis that take into account image statistics and other mathematical properties of the image.
The analysis can be done at a global level or at a local level.
In general, a global analysis will tell you if the image has been modified, but won't tell you where. Conversely, a local analysis may be be able to tell you where exactly the image has been modified.
The most reliable results will be obtained comparing the image under analysis with other pictures coming from the same device that it's supposed to having taken the photo. Analysis techniques based on pixels are much more difficult to fool that the ones based on format, but it's not impossible.
In a forensic setting we won't be able to tell in absolute terms that an image is an original, but only that we weren't able to find any evidence that the image is not an original.
There are not many tools available for image authentication: other than the ones cited by Martheen, you can also take a look at my company's product Amped Authenticate (http://ampedsoftware.com/authenticate).