{"id":53,"date":"2016-03-22T09:00:59","date_gmt":"2016-03-22T09:00:59","guid":{"rendered":"http:\/\/konukoii.com\/blog\/?p=53"},"modified":"2016-03-28T18:46:45","modified_gmt":"2016-03-28T18:46:45","slug":"physical-unclonable-functions","status":"publish","type":"post","link":"https:\/\/konukoii.com\/blog\/2016\/03\/22\/physical-unclonable-functions\/","title":{"rendered":"Physical Unclonable Functions"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>Last quarter I took my first grad class at UCSB called CS:290T \"Computational Algebra\". It was a very eclectic class where different speakers would come to lecture us on some aspect of their research. Needless to say, there were many interesting topics brought forth that ranged from Boolean Functions (on which I wrote a paper and will post later), distributed security, error tolerant functions, LLL Algorithm, etc. Among all of those, there was one that intrigued me quite a lot: Physical Unclonable Functions. What got me, is that the concept is easy to understand and the implementation can be done with virtually anything you want. So without further ado, lets take a plunge into the fascinating world of PUFs.<\/p>\n<p><span style=\"text-decoration: underline; font-size: 14pt;\"><strong>1. Definition<\/strong><\/span><\/p>\n<p>Physical Unclonable Function (PUF) is a hardware implemented function\u00a0in which the mapping between a challenge and its response is dependent on the hardware variations\u00a0(eg. materials, electric params, design, etc.).<\/p>\n<p>For example, your PUF could rely on the time (in milliseconds) it takes for electricity to go through a wire. Although the wire is cut similarly in all computers, the small fluctuations in length might be enough for two computers to get different results. Now the trick is to choose a physical property that would vary greatly from machine to machine, but within the same computer the result doesn't change too much.<\/p>\n<p><span style=\"text-decoration: underline;\"><span style=\"font-size: 14pt;\"><strong>2. Key Principles<\/strong><\/span><\/span><\/p>\n<ul>\n<li>PUF<em><sub>i<\/sub><\/em> should be unique to each device<em> i<\/em><\/li>\n<li>Each (xi,yi) pair should be independent and not linkable.<\/li>\n<\/ul>\n<figure id=\"attachment_65\" aria-describedby=\"caption-attachment-65\" style=\"width: 711px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-65 size-large\" src=\"http:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/challenge-1024x577.png\" alt=\"PUF Challenge\" width=\"711\" height=\"401\" srcset=\"https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/challenge-1024x577.png 1024w, https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/challenge-300x169.png 300w, https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/challenge-768x433.png 768w, https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/challenge-621x350.png 621w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><figcaption id=\"caption-attachment-65\" class=\"wp-caption-text\">PUF Challenge<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline; font-size: 14pt;\"><strong>3. Usages<\/strong><\/span><\/p>\n<ul>\n<li>Device Authentication<\/li>\n<li>Tamper Protection (e.g: Anti-Counterfeit, Intellectual Property Protection, etc.)<\/li>\n<li>Cryptography (e.g: Key generation)<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline; font-size: 14pt;\"><strong>4. Types of PUF<\/strong><\/span><\/p>\n<p>You can get pretty creative with what you want to use as a basis for your PUF. (I've seen some cool ideas such as\u00a0<strong><a href=\"https:\/\/www.google.com\/patents\/US8817123\" target=\"_blank\">camera CCDs<\/a><\/strong>\u00a0or <strong><a href=\"http:\/\/www.magneprint.com\/\" target=\"_blank\">magstripes<\/a><\/strong>). However, the most typical types of PUF are:<\/p>\n<ul>\n<li><strong>SRAM PUF<\/strong>\n<ul>\n<li>These use the SRAM memory on board.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Delay PUF<\/strong>\n<ul>\n<li>These use the variation in delays of wires and gates on silicon wafers.<\/li>\n<li>Some of these implementations are: Ring Oscillator, Arbiter, Multiplexor-based<\/li>\n<\/ul>\n<\/li>\n<li><strong>Butterfly PUF<\/strong>\n<ul>\n<li>These are similar to the SRAM PUF but can be impmented on SRAM FPGAs because they are implemented by cross-coupling two latches or flip-flops.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Optical PUFs, Metal Resistance PUF, and so many more...<\/strong><\/li>\n<\/ul>\n<figure id=\"attachment_86\" aria-describedby=\"caption-attachment-86\" style=\"width: 711px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-86 size-large\" src=\"http:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/allpuf-1024x749.png\" alt=\"Some PUF examples\" width=\"711\" height=\"520\" srcset=\"https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/allpuf-1024x749.png 1024w, https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/allpuf-300x220.png 300w, https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/allpuf-768x562.png 768w, https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/allpuf-478x350.png 478w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><figcaption id=\"caption-attachment-86\" class=\"wp-caption-text\">Some PUF examples<\/figcaption><\/figure>\n<p><span style=\"text-decoration: underline;\"><span style=\"font-size: 14pt;\"><strong>5. Properties of a PUF<\/strong><\/span><\/span><\/p>\n<ul>\n<li><em><strong>Steadiness:<\/strong><\/em> A PUF that always generate the same response even when varying operating conditions (e.g: supply voltage, and temperature) is said to be steady.\u00a0<a href=\"https:\/\/books.google.com\/books?id=BCXUBQAAQBAJ&amp;pg=PA125&amp;lpg=PA125&amp;dq=puf+steadines&amp;source=bl&amp;ots=UBoN4Tz7KD&amp;sig=Bo9WnhebbEfczzEHhNKKgTgebto&amp;hl=en&amp;sa=X&amp;ved=0ahUKEwjYiJinwtPLAhVBJCYKHQlIA4IQ6AEIHDAA#v=onepage&amp;q=puf%20steadines&amp;f=false\" target=\"_blank\">[1]<\/a><\/li>\n<li><em><strong>Randomness:\u00a0<\/strong><\/em>The measure of bias among all challenges on all PUF instances. <a href=\"http:\/\/repository.cmu.edu\/cgi\/viewcontent.cgi?article=1236&amp;context=dissertations\" target=\"_blank\">[2]<\/a><\/li>\n<li><strong><em>Diffuseness:<\/em>\u00a0<\/strong>The degree of difference (Hamming distance) among different responses to different challenges for the same PUF. (The expected diffuseness is 50%). <a href=\"https:\/\/www.ncbi.nlm.nih.gov\/pmc\/articles\/PMC4523939\/\" target=\"_blank\">[3]<\/a><\/li>\n<li><strong><em>Uniqueness:<\/em>\u00a0<\/strong>Reliability measures the consistency with which a given PUF reproduces a response to repeated application of a given challenge. <a href=\"https:\/\/www.ncbi.nlm.nih.gov\/pmc\/articles\/PMC4523939\/\" target=\"_blank\">[3]<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\"><span style=\"font-size: 14pt;\"><strong>6. PUF Mathematical Notation<\/strong><\/span><\/span><\/p>\n<ul>\n<li>Creation of a PUF Instance:\u00a0<span class='MathJax_Preview'><img src='https:\/\/konukoii.com\/blog\/wp-content\/plugins\/latex\/cache\/tex_fa833affdf1773896b22c6c409375da2.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script><\/li>\n<li>Evaluation of a PUF Instance: <span class='MathJax_Preview'><img src='https:\/\/konukoii.com\/blog\/wp-content\/plugins\/latex\/cache\/tex_07e020258d5ac589918c7d447867b0d9.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script><\/li>\n<li><span class='MathJax_Preview'><img src='https:\/\/konukoii.com\/blog\/wp-content\/plugins\/latex\/cache\/tex_841752d2052766fe401c63e40c4fd34d.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script> and <span class='MathJax_Preview'><img src='https:\/\/konukoii.com\/blog\/wp-content\/plugins\/latex\/cache\/tex_ee08dcb985552d7dd000bec2cc164c2c.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script> represent randomized fair coin tosses.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline; font-size: 14pt;\"><strong>7. Measuring PUFs<\/strong><\/span><\/p>\n<p>There are two basic measurements that we will use to calculate the properties of a PUF.<\/p>\n<ul>\n<li><span style=\"text-decoration: underline;\"><strong>Intra-Distance <\/strong><\/span>refers to the distance between two responses from the <strong>same PUF instance<\/strong> using the <strong>same challenge.<\/strong>\n<ul>\n<li><span class='MathJax_Preview'><img src='https:\/\/konukoii.com\/blog\/wp-content\/plugins\/latex\/cache\/tex_7fc2f639ed44281f0a18dedc741e3861.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script>\n<ul>\n<li><span class='MathJax_Preview'><img src='https:\/\/konukoii.com\/blog\/wp-content\/plugins\/latex\/cache\/tex_47a435ab809a6f3462628c026ee5f984.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script> and <span class='MathJax_Preview'><img src='https:\/\/konukoii.com\/blog\/wp-content\/plugins\/latex\/cache\/tex_6c4b45073afeaccc0a5ef5fa14b0bbf1.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script> refer to distinct random evaluations of the <strong>same<\/strong>\u00a0<strong>puf<em><sub>i\u00a0<\/sub><\/em><\/strong>and<strong> dist[_;_]<\/strong> denotes the hamming distance between two random variables.<\/li>\n<\/ul>\n<\/li>\n<li>Intra-distance will give us an idea of how reproducible or reliable this given PUF is. Remember that we want to find a PUF that is consistent within the same device.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li><span style=\"text-decoration: underline;\"><strong>Inter-Distance\u00a0<\/strong><\/span>refers to the distance between two responses from <strong>different PUF instances<\/strong> using the <strong>same challenge.<\/strong>\n<ul>\n<li><span class='MathJax_Preview'><img src='https:\/\/konukoii.com\/blog\/wp-content\/plugins\/latex\/cache\/tex_d75fc6dca731fd24b6d0418082d89cea.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script>\n<ul>\n<li><span class='MathJax_Preview'><img src='https:\/\/konukoii.com\/blog\/wp-content\/plugins\/latex\/cache\/tex_4abe92c4c08129dd71e444eb54aea9ca.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script> and <span class='MathJax_Preview'><img src='https:\/\/konukoii.com\/blog\/wp-content\/plugins\/latex\/cache\/tex_84cc93d3ae30cdcbdaef940103b48be4.gif' style='vertical-align: middle; border: none; ' class='tex' alt=\"\" \/><\/span><script type='math\/tex'><\/script> refer to distinct random evaluations of the <strong>\u00a0two<\/strong>\u00a0<strong>puf<span style=\"font-size: 13.3333px; line-height: 20px;\"><i>s.<\/i><\/span><\/strong><\/li>\n<\/ul>\n<\/li>\n<li>Inter-distance will give us an idea of how distinct this PUF will be across multiple devices. Remember that we want this function to be as different as possible across multiple devices.<\/li>\n<\/ul>\n<\/li>\n<li><em>For more in depth calculations check out this <a href=\"https:\/\/staff.aist.go.jp\/hori.y\/images\/puf\/puf_bits.gif\" target=\"_blank\">link<\/a>.<\/em><\/li>\n<\/ul>\n<figure id=\"attachment_75\" aria-describedby=\"caption-attachment-75\" style=\"width: 711px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-75 size-large\" src=\"http:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/distances-1024x298.png\" alt=\"Quantative tests yield to model a PUF by Hori et al., Quantitative and Statistical Performance Evaluation of Arbiter Physical Unclonable Functions on FPGAs. ReConFig2010, pp.298-303, 2010.\" width=\"711\" height=\"207\" srcset=\"https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/distances-1024x298.png 1024w, https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/distances-300x87.png 300w, https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/distances-768x223.png 768w, https:\/\/konukoii.com\/blog\/wp-content\/uploads\/2016\/03\/distances-700x204.png 700w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><figcaption id=\"caption-attachment-75\" class=\"wp-caption-text\">Quantative tests yield to model a PUF by Hori et al., Quantitative<br \/> and Statistical Performance Evaluation of Arbiter Physical Unclonable<br \/> Functions on FPGAs. ReConFig2010, pp.298-303, 2010.<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<hr \/>\n<p><strong>Sources and Further Reading:<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/repository.cmu.edu\/cgi\/viewcontent.cgi?article=1236&amp;context=dissertations\" target=\"_blank\">Mudit Bhargava - Reliable, Secure, Efficient Physical Unclonable Functions<\/a><\/li>\n<li><a href=\"https:\/\/books.google.com\/books?id=BCXUBQAAQBAJ&amp;pg=PA125&amp;lpg=PA125&amp;dq=puf+steadines&amp;source=bl&amp;ots=UBoN4Tz7KD&amp;sig=Bo9WnhebbEfczzEHhNKKgTgebto&amp;hl=en&amp;sa=X&amp;ved=0ahUKEwjYiJinwtPLAhVBJCYKHQlIA4IQ6AEIHDAA#v=onepage&amp;q=puf%20steadines&amp;f=false\" target=\"_blank\">Bernard Candaele, et al. - Trusted Computing for Embedded Systems<\/a><\/li>\n<li><a href=\"https:\/\/www.ncbi.nlm.nih.gov\/pmc\/articles\/PMC4523939\/\" target=\"_blank\">Yangsong Gao - Memristive crypto primitive for building highly secure physical unclonable functions<\/a><\/li>\n<li><a href=\"https:\/\/www.linkedin.com\/in\/ismail-san-b1908814\" target=\"_blank\">Ismail San<\/a> - Physical Unclonable Functions Presentation @ UCSB - CS290T - February 2016<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last quarter I took my first grad class at UCSB called CS:290T \"Computational Algebra\". It&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/konukoii.com\/blog\/2016\/03\/22\/physical-unclonable-functions\/\">Read the post<span class=\"screen-reader-text\">Physical Unclonable Functions<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":97,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,4,10],"tags":[29,31,30,28],"class_list":["post-53","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-compsci","category-cryptography","category-theory","tag-computational-algebra","tag-hardware","tag-puf","tag-ucsb","excerpt","zoom","full-without-featured","even","excerpt-0"],"_links":{"self":[{"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/posts\/53","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/comments?post=53"}],"version-history":[{"count":39,"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/posts\/53\/revisions"}],"predecessor-version":[{"id":129,"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/posts\/53\/revisions\/129"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/media\/97"}],"wp:attachment":[{"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/media?parent=53"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/categories?post=53"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/konukoii.com\/blog\/wp-json\/wp\/v2\/tags?post=53"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}