Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
  Vulnerabilities in the Systems of Authenticity Control of Digital Photographic Images  Positive Hack Days Dmitry Sklyarov
What is Original Decision Data It is too easy to edit photos… ODD is added to the image file by camera and expected to pro...
My   first DSLR – Canon EOS 350D <ul><li>Great piece of hardware </li></ul><ul><li>Like it very much!  (honestly! :) </li>...
My   next DSLR – Canon EOS 30D <ul><li>Even better than 350D : ) </li></ul><ul><li>Custom Function 19:   Add Original Deci...
EOS 30D: ODD in .JPG file <ul><li>ODD is stored as 160 (0xA0) bytes appended after JPEG EOI ( 0xFFD9 ) marker </li></ul><u...
EOS 30D: ODD dump <ul><li>0000 :  FF FF FF FF   02 00 00 00   59 89 7D ED   86 BE 89 C8 </li></ul><ul><li>0010 :  68 98 52...
ODDv2: Regions layout <ul><li>R0:  Main Image </li></ul><ul><li>R1:  From 0 to Tag 0x0112 of EXIF Main IFD (Orientation ta...
ODDv2: General structure <ul><li>typedef struct { </li></ul><ul><li>DWORD  marker ; //  Marker  ==  ~ 0 </li></ul><ul><li>...
ODDv2: Guessing  unknown s Field before regions definition Represents signature for the whole image file? Field inside reg...
<ul><li>Explore CHDK (Canon Hacker's Development Kit) Wiki and forum </li></ul><ul><li>Dump firmware using “blinking” or s...
ODDv2: Clarified structure <ul><li>typedef struct { </li></ul><ul><li>DWORD  marker ; //  Marker  ==  ~ 0 </li></ul><ul><l...
ODDv2: Region HMAC <ul><li>Hash region data bytes with MD5 </li></ul><ul><li>Repeat 128-bit region hash value 4 times to f...
ODDv2: Image file HMAC <ul><li>Merge four  1 28-bit hash   values for all 4 regions to fill 64-byte buffer </li></ul><ul><...
ODDv2: What is HMAC key <ul><li>Length is 256 bits (32 bytes) </li></ul><ul><li>Builds from two 128-bit parts, each part i...
ODDv2: Notes on HMAC key <ul><li>Key value is the same for all cameras of some particular model (e.g. EOS 30D) </li></ul><...
EOS 40D: New version of ODD <ul><li>ODD is stored within EXIF </li></ul><ul><li>ODD version is 3 </li></ul><ul><li>Image f...
ODDv3: Area layout in .JPG file <ul><li>Main image </li></ul><ul><li>All other data </li></ul><ul><li>Orientation </li></u...
ODDv3: General structure ODDv3 Header Information Image information Area descriptors Padded with zeros Marker and Version ...
ODDv3: Header structure <ul><li>typedef struct { </li></ul><ul><li>DWORD  marker ;   //  Marker  ==  ~ 0 </li></ul><ul><li...
ODDv3: Area structure <ul><li>typedef struct { </li></ul><ul><li>DWORD id;   // Area ID </li></ul><ul><li>DWORD cbSalt ;  ...
ODDv3: Info part structure <ul><li>typedef struct { </li></ul><ul><li>DWORD cbInfo;   //  Length of Info part </li></ul><u...
<ul><li>Ver 2 and 3, OS: DryOS </li></ul><ul><li>Note: Salt is not used  </li></ul><ul><li>(but still stored in ODD) </li>...
<ul><li>Salt values are obtained from weak PRNG </li></ul><ul><li>Seed value is based on total number of shots taken by ca...
ODDv3: HMAC Key <ul><li>DWORD KeyID;   // Encryption key ID </li></ul><ul><li>DWORD BoardID;   // Board ID </li></ul><ul><...
ODDv3: Notes on HMAC key <ul><li>KBoardID value is depends on KeyID and BoardID values </li></ul><ul><li>KeyID is in range...
Verification devices:  DVK-E1 <ul><li>Introduced with the EOS-1Ds in 2002 </li></ul><ul><li>Works in Windows only </li></u...
Verification devices:  DVK-E 2 <ul><li>Introduced in 2004 </li></ul><ul><li>Works in Windows only </li></ul><ul><li>Suppor...
Verification devices: OSK -E 3 <ul><li>Introduced in 2007 </li></ul><ul><li>Works in 32-bit Windows only </li></ul><ul><li...
Model name ODD version V2 key Announced EOS-1D 2001-09-25 EOS-1Ds probably 1 1 2002-09-24 EOS  10D 2003-02-27 EOS  300D 20...
Model name KeyID seen vHash Announced EOS-1D Mark III 1 2007-02-22 EOS-1Ds Mark III 1 2007-08-20 EOS 40D 1 1 2007-08-20 EO...
Summary: What we  can  do? <ul><li>Dump camera’s memory </li></ul><ul><li>Run our code on camera’s processor </li></ul><ul...
Summary: What we  can’t  do [ yet ]? <ul><li>Generate and verify ODDv2 images for models with unknown key </li></ul><ul><l...
Summary: What Canon can do? <ul><li>With currently available models – nothing </li></ul><ul><li>With future models: </li><...
Conclusion <ul><li>We reported to CERT and Canon on September 21, 2010 </li></ul><ul><li>Still no response from Canon… </l...
Sorry, not the end   <ul><li>Canon issued  notice  for customers </li></ul><ul><li>OSK-E3 </li></ul><ul><li>FAQ ID: L0000...
Nikon’s solution <ul><li>Nikon Image Authentication Software  introduced on  Jun. 1, 2006  for  Nikon D2Xs </li></ul><ul><...
Nikon’s solution <ul><li>Verification software is protected from piracy (and reversing ; )  with dongle </li></ul><ul><li>...
Epson’s way <ul><li>Epson Introduced Revolutionary Image Authentication System (IAS) for Epson Digital Cameras on  5 April...
Another approaches <ul><li>JPEGsnoop : analyze JPEG compression and determine which software/firmware most likely was used...
Thank you! ;) Dmitry Sklyarov Уязвимости систем контроля подлинности цифровых фотографических изображений
Upcoming SlideShare
Loading in …5
×

Positive Hack Days. Sklyarov. Vulnerabilities in the Systems of Authenticity Control of Digital Photographic Images

1,952 views

Published on

The report considers practical aspects of reliability of existing systems allowing authentication of photographic evidence originality. The reporter examines a vulnerability in the Canon Original Data Security system of image authenticity verification, which was designed to authenticate originality of images captured by the Canon digital reflex still cameras.

Published in: Technology, Art & Photos
  • Be the first to comment

  • Be the first to like this

Positive Hack Days. Sklyarov. Vulnerabilities in the Systems of Authenticity Control of Digital Photographic Images

  1. 1. Vulnerabilities in the Systems of Authenticity Control of Digital Photographic Images Positive Hack Days Dmitry Sklyarov
  2. 2. What is Original Decision Data It is too easy to edit photos… ODD is added to the image file by camera and expected to provide information to detect any image alteration Modified!
  3. 3. My first DSLR – Canon EOS 350D <ul><li>Great piece of hardware </li></ul><ul><li>Like it very much! (honestly! :) </li></ul><ul><li>Does not support Original Image Verification features :( </li></ul>
  4. 4. My next DSLR – Canon EOS 30D <ul><li>Even better than 350D : ) </li></ul><ul><li>Custom Function 19: Add Original Decision Data to each picture taken </li></ul>
  5. 5. EOS 30D: ODD in .JPG file <ul><li>ODD is stored as 160 (0xA0) bytes appended after JPEG EOI ( 0xFFD9 ) marker </li></ul><ul><li>File offset of ODD is stored as 32-bit value in Tag 0x0083 inside EXIF/MakerNote IFD (Image File Directory) </li></ul>.JPG file JPEG SOI (0xFFF8) marker EXIF data JPEG EOI (0xFFF9) marker ODD: 160 (0xA0) bytes JPEG main image EXIF MakerNote IFD (Canon-specific) Tag 0x0083: ODD offset: 32 bits
  6. 6. EOS 30D: ODD dump <ul><li>0000 : FF FF FF FF 02 00 00 00 59 89 7D ED 86 BE 89 C8 </li></ul><ul><li>0010 : 68 98 52 0F 4C C2 E0 86 1A BF BA DC 04 00 00 00 </li></ul><ul><li>0020 : 00 00 00 00 C6 45 00 00 43 1B 0B 00 D6 15 F0 36 </li></ul><ul><li>0030 : 91 92 21 DC 9B 33 B8 20 C9 C7 F2 EC 04 7C 9E 5B </li></ul><ul><li>0040 : 01 00 00 00 00 00 00 00 36 00 00 00 62 99 34 61 </li></ul><ul><li>0050 : A9 17 AA DB 14 BE 60 0C 20 73 F1 B8 21 DD 6B 90 </li></ul><ul><li>0060 : 02 00 00 00 3A 00 00 00 02 03 00 00 FC 45 9E 9A </li></ul><ul><li>0070 : 8B 1E 7D 26 F0 7C 5D A3 B1 A9 42 17 75 0F 41 0B </li></ul><ul><li>0080 : 03 00 00 00 40 03 00 00 86 42 00 00 9B E2 81 AE </li></ul><ul><li>0090 : 59 D8 21 6D 0F 9B 15 D0 CA 85 28 D8 44 7F 8F 5D </li></ul>ODD marker ODD version Number of Regions Region IDs Region offsets Region lengths
  7. 7. ODDv2: Regions layout <ul><li>R0: Main Image </li></ul><ul><li>R1: From 0 to Tag 0x0112 of EXIF Main IFD (Orientation tag) </li></ul><ul><li>R2: From Orientation tag to ODD Offset tag </li></ul><ul><li>R3: From ODD Offset tag to Main Image </li></ul>Region 1 EXIF Orientation tag (4 bytes) Region 2 EXIF ODD Offset tag (4 bytes) Region 3 Region 0 (Main Image) ODD (160 bytes)
  8. 8. ODDv2: General structure <ul><li>typedef struct { </li></ul><ul><li>DWORD marker ; // Marker == ~ 0 </li></ul><ul><li>DWORD ver; // ODD version == 2 </li></ul><ul><li>BYTE unknown _1[ 20 ]; </li></ul><ul><li>DWORD nRegions; // Number of Regions == 4 </li></ul><ul><li>struct { </li></ul><ul><li>DWORD id; // Region ID </li></ul><ul><li>DWORD o; // Region data offset </li></ul><ul><li>DWORD cb; // Region data length </li></ul><ul><li>BYTE unknown _2[ 20 ]; </li></ul><ul><li>} r[4]; // Regions </li></ul><ul><li>} T_ODD_v2; // sizeof(T_ODD_v2) == 0xA0 </li></ul>
  9. 9. ODDv2: Guessing unknown s Field before regions definition Represents signature for the whole image file? Field inside region definition Hold signature of the particular region data? Signature length is always 20 bytes Too short for asymmetric , but matches SHA-1 length Symmetric SHA-1 based authentication? May be HMAC-SHA-1?
  10. 10. <ul><li>Explore CHDK (Canon Hacker's Development Kit) Wiki and forum </li></ul><ul><li>Dump firmware using “blinking” or some other technique </li></ul><ul><li>Use IDA Pro to analyze dumped ARM code </li></ul>Looking into camera’s firmware Three easy steps :)
  11. 11. ODDv2: Clarified structure <ul><li>typedef struct { </li></ul><ul><li>DWORD marker ; // Marker == ~ 0 </li></ul><ul><li>DWORD ver; // ODD version == 2 </li></ul><ul><li>BYTE imgHMAC[SHA_DIGEST_LENGTH ]; </li></ul><ul><li>DWORD nRegions; // Number of Regions == 4 </li></ul><ul><li>struct { </li></ul><ul><li>DWORD id; // Region ID </li></ul><ul><li>DWORD o; // Region data offset </li></ul><ul><li>DWORD cb; // Region data length </li></ul><ul><li>BYTE HMAC [ SHA_DIGEST_LENGTH ]; </li></ul><ul><li>} r[4]; // Regions </li></ul><ul><li>} T_ODD_v2; // sizeof(T_ODD_v2) == 0xA0 </li></ul>
  12. 12. ODDv2: Region HMAC <ul><li>Hash region data bytes with MD5 </li></ul><ul><li>Repeat 128-bit region hash value 4 times to fill 64-byte buffer </li></ul><ul><li>Calculate HMAC for the buffer, store result in ODDv2.r[i].HMAC </li></ul>MD5 Region[i] data bytes Rgn[i] hash HMAC-SHA-1 Rgn[i] HMAC HMAC key Rgn[i] hash Rgn[i] hash Rgn[i] hash Rgn[i] hash
  13. 13. ODDv2: Image file HMAC <ul><li>Merge four 1 28-bit hash values for all 4 regions to fill 64-byte buffer </li></ul><ul><li>Calculate HMAC for the buffer, store result in ODDv2.imgHMAC </li></ul>HMAC-SHA-1 File HMAC HMAC key Rgn[0] hash Rgn[1] hash Rgn[2] hash Rgn[3] hash
  14. 14. ODDv2: What is HMAC key <ul><li>Length is 256 bits (32 bytes) </li></ul><ul><li>Builds from two 128-bit parts, each part is stored separately in obfuscated form </li></ul><ul><li>Last 32 bits are replaced by camera’s BodyID (stored in EXIF) before HMAC calculation </li></ul>de-obfuscated Left part (128 bits) de-obfuscated Right part (128 bits) BodyID (32 bits)
  15. 15. ODDv2: Notes on HMAC key <ul><li>Key value is the same for all cameras of some particular model (e.g. EOS 30D) </li></ul><ul><li>Different camera models (5D, 20D, 30D) uses different keys </li></ul><ul><li>Knowing key for particular model allows forging ODD for any camera of that model! </li></ul><ul><li>Key can be extracted from the camera! </li></ul>
  16. 16. EOS 40D: New version of ODD <ul><li>ODD is stored within EXIF </li></ul><ul><li>ODD version is 3 </li></ul><ul><li>Image file length is stored inside ODD </li></ul><ul><li>File is treated as set of areas (based on content type) </li></ul><ul><li>Area could contain several regions </li></ul><ul><li>Integrity of each area monitored independently </li></ul>
  17. 17. ODDv3: Area layout in .JPG file <ul><li>Main image </li></ul><ul><li>All other data </li></ul><ul><li>Orientation </li></ul><ul><li>User comment </li></ul><ul><li>Check marks </li></ul><ul><li>Thumbnail </li></ul>Area 2 (other) ODD (excluded from Area 2) Area 1 (Main image) Area 3 (Orientation) Area 4 (User comment) Area 6 (Thumbnail) Area 5 (Check marks) Note: ODD is not included in any area Exif data
  18. 18. ODDv3: General structure ODDv3 Header Information Image information Area descriptors Padded with zeros Marker and Version Image file signature ODD Info signature
  19. 19. ODDv3: Header structure <ul><li>typedef struct { </li></ul><ul><li>DWORD marker ; // Marker == ~ 0 </li></ul><ul><li>DWORD ver; // ODD version == 3 </li></ul><ul><li>DWORD cbImg Sig; // len(Sign( Image) ) </li></ul><ul><li>BYTE i mg Sig [cbImg Sig ]; // Sign (Image ) </li></ul><ul><li>DWORD cbInfo Sig ; // len(Sign (oddInfo )) </li></ul><ul><li>BYTE i nfo Sig [cbInfo Sig ]; // Sign (oddInfo) </li></ul><ul><li>} T_ODDv3_Hdr; </li></ul><ul><li>Note: cbImg Sig and cbInfo Sig are always == 20 == SHA_DIGEST_LENGTH </li></ul>
  20. 20. ODDv3: Area structure <ul><li>typedef struct { </li></ul><ul><li>DWORD id; // Area ID </li></ul><ul><li>DWORD cbSalt ; // Salt length </li></ul><ul><li>BYTE abSalt[cbSalt];// Salt </li></ul><ul><li>DWORD cb Sig ; // Len(Sign(Area)) </li></ul><ul><li>BYTE ab Sig [cb Sig ]; // Sign(Area) </li></ul><ul><li>DWORD nRange; // Ranges count </li></ul><ul><li>struct { </li></ul><ul><li>DWORD o; // Range offset </li></ul><ul><li>DWORD cb; // Range length </li></ul><ul><li>} r[nRange]; // Array of r anges </li></ul><ul><li>} T_ODDv3_Area; </li></ul>
  21. 21. ODDv3: Info part structure <ul><li>typedef struct { </li></ul><ul><li>DWORD cbInfo; // Length of Info part </li></ul><ul><li>DWORD cbSigSalt; // Image/oddInfo salt length </li></ul><ul><li>BYTE s igSalt[cbSigSalt]; // Image/oddInfo salt </li></ul><ul><li>DWORD v3; // Version again? == 3 </li></ul><ul><li>DWORD cbFile; // Total size of file </li></ul><ul><li>DWORD vHash; // 1 : VxWorks, 2 or 3: DryOS </li></ul><ul><li>DWORD KeyID; // Encryption key ID </li></ul><ul><li>DWORD BoardID; // Board ID </li></ul><ul><li>DWORD KeySalt; // HMAC key salt </li></ul><ul><li>DWORD nArea; // Number of areas follows </li></ul><ul><li>T_ODDv3_Area[ nArea ]; // Area descriptions </li></ul><ul><li>BYTE zeros[]; // Zero filling </li></ul><ul><li>} T_ODDv3_Info; </li></ul>
  22. 22. <ul><li>Ver 2 and 3, OS: DryOS </li></ul><ul><li>Note: Salt is not used </li></ul><ul><li>(but still stored in ODD) </li></ul>ODDv3: Hash algorithm version <ul><li>Ver 1, OS: VxWorks </li></ul>SHA-256 Data bytes Result MD5 Data bytes Hash Result PRNG Salt Random1 Random2 MD5 Hash+ Random1 MD5 Hash+ Random 2
  23. 23. <ul><li>Salt values are obtained from weak PRNG </li></ul><ul><li>Seed value is based on total number of shots taken by camera ( Shutter Counter ) </li></ul><ul><li>ODD information could be used to discover actual Shutter Counter value! </li></ul>ODDv3: Notes on Salt values static DWORD seed ; DWORD randCanon (void) { seed = seed * 0x41C64E6D + 0x3039; return ( seed >> 16) & 0x7FFF; }
  24. 24. ODDv3: HMAC Key <ul><li>DWORD KeyID; // Encryption key ID </li></ul><ul><li>DWORD BoardID; // Board ID </li></ul><ul><li>DWORD KeySalt; // HMAC key salt </li></ul>Unknown function KeyID BoardID KBoardID (256 bit) KeySalt BodyID (from EXIF) SHA-1 based 256-bit hash HMAC key (256 bit)
  25. 25. ODDv3: Notes on HMAC key <ul><li>KBoardID value is depends on KeyID and BoardID values </li></ul><ul><li>KeyID is in range 1..9 (inclusive) </li></ul><ul><li>Every camera uses unique KBoardID </li></ul><ul><li>Knowing KeyID, BoardID and KBoardID triplet allows forging ODD for any camera! </li></ul><ul><li>Key can be extracted from the camera! </li></ul>
  26. 26. Verification devices: DVK-E1 <ul><li>Introduced with the EOS-1Ds in 2002 </li></ul><ul><li>Works in Windows only </li></ul><ul><li>Supports EOS-1Ds only </li></ul><ul><li>Discontinued </li></ul>
  27. 27. Verification devices: DVK-E 2 <ul><li>Introduced in 2004 </li></ul><ul><li>Works in Windows only </li></ul><ul><li>Supports: 1Ds, 1Ds Mark II, 1D Mark II, 1D Mark II N, 20D, 30D, 5D </li></ul><ul><li>Discontinued </li></ul>
  28. 28. Verification devices: OSK -E 3 <ul><li>Introduced in 2007 </li></ul><ul><li>Works in 32-bit Windows only </li></ul><ul><li>Supports: all ODD-enabled cameras </li></ul><ul><li>Also support images encryption on 1D[s] Mark III+ </li></ul><ul><li>Costs about $700 </li></ul>
  29. 29. Model name ODD version V2 key Announced EOS-1D 2001-09-25 EOS-1Ds probably 1 1 2002-09-24 EOS 10D 2003-02-27 EOS 300D 2003-08-20 EOS- 1D Mark II 2 2 2004-01-29 EOS 20D 2 3 2004-08-19 EOS- 1Ds Mark II 2 4 2004-09-21 EOS 350D 2005-02-17 EOS 5D 2 5 2005-08-22 EOS- 1D Mark II N 2 6 2005-08-22 EOS 30D 2 7 2006-02-21 EOS 400D 2006-08-24
  30. 30. Model name KeyID seen vHash Announced EOS-1D Mark III 1 2007-02-22 EOS-1Ds Mark III 1 2007-08-20 EOS 40D 1 1 2007-08-20 EOS 450D 2 1 2008-01-24 EOS 1000D 2 1 2008-06-10 EOS 50D 1 2 2008-08-26 EOS 5D Mark II 1 2 2008-09-17 EOS 500D 3 2 2009-03-25 EOS 7D 4 2 2009-09-01 EOS-1D Mark IV 2 2009-10-20 EOS 550D 4 2 2010-02-08 EOS 60D 4 3 2010-08-26
  31. 31. Summary: What we can do? <ul><li>Dump camera’s memory </li></ul><ul><li>Run our code on camera’s processor </li></ul><ul><li>Extract secret keys from the camera </li></ul><ul><li>Calculate and verify ODDv2 for models with known key </li></ul><ul><li>Calculate ODDv3 for any camera using known KeyID/BoardID/KBoardID triplet </li></ul>
  32. 32. Summary: What we can’t do [ yet ]? <ul><li>Generate and verify ODDv2 images for models with unknown key </li></ul><ul><li>Calculate KBoardID from KeyID/BoardID and verify ODDv3 if KBoardID is unknown for given KeyID/BoardID </li></ul>
  33. 33. Summary: What Canon can do? <ul><li>With currently available models – nothing </li></ul><ul><li>With future models: </li></ul><ul><ul><li>Implement HMAC calculation in cryptoprocessor which does not expose secret key </li></ul></ul><ul><ul><li>Prevent camera from running non-Canon’s code to avoid illegal usage of cryptoprocessor </li></ul></ul><ul><li>Hire people who really understands security :) </li></ul>
  34. 34. Conclusion <ul><li>We reported to CERT and Canon on September 21, 2010 </li></ul><ul><li>Still no response from Canon… </li></ul><ul><li>Verdict about image originality obtained via Canon’s OSK can’t be relied upon </li></ul>
  35. 35. Sorry, not the end  <ul><li>Canon issued notice for customers </li></ul><ul><li>OSK-E3 </li></ul><ul><li>FAQ ID: L00000101 , Last modified: 26-Jan-11 </li></ul><ul><li>Issue : </li></ul><ul><li>There is a possibility that retouched images <…> could be incorrectly verified as authentic <…> </li></ul><ul><li>Answer: </li></ul><ul><li><…> customers who have previously purchased the DVK-E1, DVK-E2 and OSK-E3 are asked to please contact our  Help Desk  for more information on the next steps available to them. </li></ul>
  36. 36. Nikon’s solution <ul><li>Nikon Image Authentication Software introduced on Jun. 1, 2006 for Nikon D2Xs </li></ul><ul><li>Offered on Nilkon’s web site for $649.95 </li></ul><ul><li>Software version 1.1.1 supported models: </li></ul><ul><ul><li>D2Xs, D2X , D2Hs , D3 , D3X </li></ul></ul><ul><ul><li>D200 , D300 , D300S , D700 </li></ul></ul><ul><li>Supported cameras price range: </li></ul><ul><ul><li>$1700 (D300S) - $8000 (D3X) </li></ul></ul>
  37. 37. Nikon’s solution <ul><li>Verification software is protected from piracy (and reversing ; ) with dongle </li></ul><ul><li>Digital signature is based on RSA-1024 </li></ul><ul><li>Signing Key stored only within camera </li></ul><ul><li>Signing Key is present in firmware updates (in obfuscated form), and could be extracted without having camera! </li></ul>
  38. 38. Epson’s way <ul><li>Epson Introduced Revolutionary Image Authentication System (IAS) for Epson Digital Cameras on 5 April 1999 </li></ul><ul><li>IAS Version 2.0 supported cameras: </li></ul><ul><ul><li>EPSON PhotoPC 700, 750Z, 800, 850Z </li></ul></ul><ul><li>Software-only verification solution </li></ul><ul><li>Seems to be discontinued in year 2000 </li></ul>
  39. 39. Another approaches <ul><li>JPEGsnoop : analyze JPEG compression and determine which software/firmware most likely was used to encode the image </li></ul><ul><li>Image Authentication by Detecting Traces of Demosaicing </li></ul><ul><li>An Authenticated Camera : paper from 1996 by B. Schneier, J. Kelsey, D. Wagner, and C. Hall </li></ul>
  40. 40. Thank you! ;) Dmitry Sklyarov Уязвимости систем контроля подлинности цифровых фотографических изображений

×