{"id":28321,"date":"2018-01-09T23:23:51","date_gmt":"2018-01-09T21:23:51","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=28321"},"modified":"2018-01-09T23:23:51","modified_gmt":"2018-01-09T21:23:51","slug":"zero-width-characters","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2018\/01\/09\/zero-width-characters\/","title":{"rendered":"Zero-Width Characters"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p><a href=\"https:\/\/www.zachaysan.com\/writing\/2017-12-30-zero-width-characters\">This article<\/a> shows a couple of interesting zero-width characters techniques for the invisible fingeprinting of text.<\/p>\n<blockquote><p>In early 2016 I realized that it was possible to use zero-width characters, like\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Zero-width_non-joiner\">zero-width non-joiner<\/a>\u00a0or other zero-width characters like the\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Zero-width_space\">zero-width space<\/a>\u00a0to fingerprint text. Even with just a single type of zero-width character the presence or non-presence of the non-visible character is enough bits to fingerprint even the shortest text.<\/p>\n<p>[&#8230;]<\/p>\n<p>I also realized that it is possible to use\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Homoglyph\">homoglyph<\/a>\u00a0substitution (e.g., replacing the letter &#8220;a&#8221; with its Cyrillic counterpart, &#8220;\u0430&#8221;), but I dismissed this as too easy to detect due to the differences in character rendering across fonts and systems. However, differences in dashes (en, em, and hyphens), quotes (straight vs curly), word spelling (color vs colour), and the number of spaces after sentence endings could probably go undetected due to their frequent use in real text.<\/p>\n<p>[&#8230;]<\/p>\n<p>The reason I&#8217;m writing about this now is that it appears both\u00a0<a href=\"https:\/\/www.researchgate.net\/publication\/308044170\">homoglyph substitution<\/a>\u00a0and\u00a0<a href=\"http:\/\/blog.fastforwardlabs.com\/2017\/06\/23\/fingerprinting-documents-with-steganography.html\">zero-width fingerprinting<\/a>have been discovered by others, so journalists should be informed of the existence of these techniques.<\/p><\/blockquote>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>This article shows a couple of interesting zero-width characters techniques for the invisible fingeprinting of text. In early 2016 I realized that it was possible to use zero-width characters, like\u00a0zero-width non-joiner\u00a0or other zero-width characters like the\u00a0zero-width space\u00a0to fingerprint text. Even with just a single type of zero-width character the presence or non-presence of the non-visible &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2018\/01\/09\/zero-width-characters\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Zero-Width Characters<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Zero-Width Characters #copyright #unicode #writing #WebDev #journalism","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[401,1253,23,1330,1203],"keyring_services":[],"class_list":["post-28321","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-copyright","tag-journalism","tag-unicode","tag-web-development","tag-writing"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":24732,"url":"https:\/\/mamchenkov.net\/wordpress\/2015\/09\/12\/when-monospace-fonts-arent-the-unicode-character-width-nightmare\/","url_meta":{"origin":28321,"position":0},"title":"When monospace fonts aren&#8217;t: The Unicode character width nightmare","author":"Leonid Mamchenkov","date":"September 12, 2015","format":false,"excerpt":"I don't deal with Unicode and other character encoding on the daily basis, but when I do, I need every piece of information that has been written on the subject. \u00a0Hence the link to this interesting issue\u00a0: As long as you stick to precomposed Unicode characters, and Western scripts, things\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":22239,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/07\/21\/fitting-and-inflating-text-and-videos-with-responsive-web-design\/","url_meta":{"origin":28321,"position":1},"title":"Fitting and inflating text and videos with responsive web design","author":"Leonid Mamchenkov","date":"July 21, 2014","format":false,"excerpt":"There are plenty of solutions around for scaling images. Text and videos on the other hand - not so much. Here are a few that are handy: FitVids.js - a lightweight, easy-to-use jQuery plugin for fluid width video embeds. FitText.js - a jQuery plugin for inflating web type. Letterings.js -\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26808,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/10\/30\/base32-advantages-over-base64\/","url_meta":{"origin":28321,"position":2},"title":"base32 advantages over base64","author":"Leonid Mamchenkov","date":"October 30, 2016","format":false,"excerpt":"Andrey shares some of the advantages of base32 over base64 encoding: The resulting character set is all one case, which can often be beneficial when using a case-insensitive filesystem, spoken language, or human memory. The result can be used as a file name because it can not possibly contain the\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12202,"url":"https:\/\/mamchenkov.net\/wordpress\/2010\/02\/25\/gmail-labs-it-sucks-being-a-minority\/","url_meta":{"origin":28321,"position":3},"title":"Gmail Labs : it sucks being a minority","author":"Leonid Mamchenkov","date":"February 25, 2010","format":false,"excerpt":"The latest announcement at Gmail blog covers some of the experimental features (Gmail Labs) that will graduate the Labs, or, in other words, will become a part of the Gmail service, and some features that will retire, or, in other words, will be completely removed. \u00a0While usually changes like this\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2010\/02\/fixed_width_font.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":9970,"url":"https:\/\/mamchenkov.net\/wordpress\/2006\/03\/15\/daily-del-icio-us-bookmarks\/","url_meta":{"origin":28321,"position":4},"title":"Daily del.icio.us bookmarks","author":"Leonid Mamchenkov","date":"March 15, 2006","format":false,"excerpt":"Shared bookmarks for del.icio.us user tvset on 2006-03-14 Inbox Zero: Five sneaky email cheats | 43 Folders Tagged as: email productivity tips Inbox Zero: Articles of faith | 43 Folders -- Few good ideas on how to minimize the time spent in inbox. Tagged as: email productivity tips Bubblegeneration Strategy\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":18948,"url":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/12\/socketmaster-zero-downtime-restarts-for-your-apps\/","url_meta":{"origin":28321,"position":5},"title":"socketmaster &#8211; zero downtime restarts for your apps","author":"Leonid Mamchenkov","date":"December 12, 2013","format":"link","excerpt":"socketmaster - zero downtime restarts for your apps","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/28321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=28321"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/28321\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=28321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=28321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=28321"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=28321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}