Fiziksel klonlanamaz fonksiyonlar yardımıyla anahtar üretimi ve lisans doğrulama
Key generation and license authentication using physical unclonable functions
Yazar: ŞAHİN BAŞ
Danışman: PROF. DR. MÜŞTAK ERHAN YALÇIN
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Elektronik ve Haberleşme Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2015
Konu: Elektrik ve Elektronik Mühendisliği = Electrical and Electronics Engineering

Özet:
Sahtecilik faaliyetleri global ekonomi için büyük bir tehdittir. Klonlama, istek fazlası üretim, kurcalama (tampering), tersine mühendislik başlıca sahtecilik yöntemlerindendir. Lisansız kullanılan veya sahte ürünler birçok firmanın ekonomisine ve marka değerine büyük zararlar vermektedir. Özellikle askeri uygulamalar ile havacılık ve tıp elektroniği uygulamalarında yapılan sahtecilik faaliyetlerinin ölümcül sonuçları olabilmektedir. Sahtecilik faaliyetlerini engellemek için güçlü kriptografik protokollere ve güvenli tanımlama bilgilerine ihtiyaç duyulmaktadır. Fiziksel klonlanamaz fonksiyonlar (PUF) içlerinde çalıştıkları fiziksel ortama özel değerler üretmeleri ve kopyalanamaz olmaları sayesinde güvenli tanımlama bilgilerinin üretilmesinde kullanılabilirler. Bu yapılarla daha güçlü yetkilendirme protokolleri oluşturularak elektronik tasarımların güvenliği
arttırılabilir.
Günümüzdeki kriptografik sistemlerin birçoğunda kullanılan anahtarlar ve diğer tanımlama bilgileri bir bellek üzerinde saklanır. Bu gibi kritik bilgilerin sistem içerisinde sürekli varolması zaman zaman güvenlik zaafiyeti oluşturmaktadır. Ayrıca anahtarların üretilmesi ve dağıtılması da sistem güvenliği açısından son derece kritiktir. PUF gibi gerektiği zaman sonucu kolayca okunabilen ve kullanıldığı
donanıma özgü çıkış veren fonksiyonlar gerek anahtarın üretilmesi problemine gerekse anahtarın sürekli saklanması problemine karşılık çözüm üretebilirler. Fakat PUF'lar çevresel etkiler ve elektronik gürültü gibi sebeplerle tekrar tekrar okunduklarında çoğu zaman aynı çıkışı veremezler. Kriptografik uygulamalarda kullanılan anahtarlarda hatalı verinin olmaması gerekir. Bu nedenle PUF'lar üzerinde hata giderme işlemi yapılması gerekmektedir. Hata giderme işlemi için sayısal haberleşme sistemlerinde uzun zamandır kullanılan hata düzeltme kodlarının kullanılması (error correction codes) önerilmiştir. Hata düzeltme kodları ile hatasız PUF verileri elde edebilmek için elde edilmek istenen hatasız bit sayısından çok daha fazla PUF bitine ihtiyaç duyulmaktadır. PUF ve hata giderme sisteminin kapladığı alanın bunlarla gerçeklenecek sistemlerin geri kalanını baskı altına alacak şekilde büyük olmaması istenmiştir. Bu nedenle seçilecek PUF yapısının az alanda çok sayıda bit sağlaması istenmektedir.
Çalışma kapsamında FPGA platformu üzerinde PUF hataları giderilerek anahtar üretimi gerçeklenmiş ve bu anahtarı kullanan bir lisans doğrulama protokolü oluşturulmuştur. FPGA üzerinde gerçeklemeye uygun olması bakımından halka osilatörlü PUF (RO-PUF) yapısı seçilmiştir. Standart halka osilatörlü PUF yapısı daha az alandan daha fazla bit alabilmek amacıyla yeniden konfigure edilebilir halka osilatörlü PUF yapısına çevrilmiştir. Ayrıca sayıcı çıkışları üzerinde Lehmer ve Gray kodlama yapılmıştır. Hata düzeltme kodu olarak kodlayıcı ve kod çözücüsünün kolay tasarlanabilmesi bakımından birinci derece Reed Muller kodları kullanılmıştır. Elde edilen hatasız PUF bitleri bir LFSR tabanlı Toeplitz özet fonksiyonundan geçirilerek 128 bitlik anahtar elde edilmiştir. Elde edilen anahtar ile bir lisans doğrulama sistemi (dongle) tasarlanmıştır. Buna göre bir IP veya ürün bu lisans doğrulama sistemi ile iletişime geçerek kendisinin lisanslı olup olmadığını kontrol edebilmekte eğer doğru dongle takılı değil ise çalışmamaktadır. Sistemin güvenliği için kritik olan anahtarın dongle dışına çıkmamasını sağlamak üzere bu sistemde RSA açık anahtar kriptografisi tercih edilmiştir. RSA anahtarlarının bazı koşulları sağlaması gerektiğinden PUF çıkışından elde edilen 128 bitlik değer doğrudan anahtar olarak kullanılamamıştır. Bu nedenle PUF çıkışlarından açık ve gizli RSA anahtarlarını üreten bir anahtar üretici blok tasarlanmıştır. Ayrıca RSA şifreleme, şifre çözme, imzalama ve doğrulama işlemlerini gerçekleyen bloklar tasarlanmıştır. Tüm RSA sistemleri yazılımsal olarak gerçeklenmiştir. Platform olarak Microblaze işlemcisi ve büyük sayılarla yapılan işlemler için BigDigits kütüphanesi kullanılmıştır. Çalışma sonunda FPGA platformu üzerinde çalışan PUF tabanlı bir anahtar üretici sistem ve bu sistemi kullanan bir lisans doğrulama sistemi elde edilmiştir.

Abstract:
Counterfeiting products is a serious concern for global economy. Cloning, overproduction, tampering and reverse engineering are some methods of counterfeiting. High tech designs are particularly affected by this threat. Counterfeits of R&D based products are much more damaging than their counterparts. Since there is no R&D expense for counterfeits, producers of these items can make huge profits. Many companies' brand names and economies are damaged by counterfeit or unlicensed products. Counterfeits could also end up being fatal if they are to be used in military, medical and aviation applications. In order to deal with the counterfeiting strong cryptographic algorithms, protocols and secure identifiers are needed.
Physical unclonable functions (PUFs) are functions that create values unique to the physical environments they operate in. They are unclonable due to the impossibility of cloning the physical environment. In semiconductor devices same circuit structures behave different because of the manufacturing process variations. These process variations can not be known prior to characterization of the device. Electronic PUFs exploit these process variations and generates some secret bits from the device. These secret bits can be used as a fingerprint of that device. Tampering with the device that PUF operates in changes the behaviour of the physical device and so changes the PUF responses. Being tamper evident and unclonable, PUFs offer promising security solutions. Such properties of PUFs enables them to be used in cryptographic algorithms. Some examples of PUF structures are SRAM PUFs, ring
oscillator PUFs, arbiter PUFs. SRAM PUFs uses the power up behaviour of SRAM cells. Initial state of an SRAM cell is determined by process variations. Ring oscillator PUFs output a response with comparing the nominally identical ring oscillator's oscillation frequencies. Arbiter PUFs uses the race between two paths of same logic structure and determines the winner to give a response. SRAM PUFs and arbiter PUFs are not as suitable to FPGA implementation as ring oscillator PUFs. Because most of the FPGA's initialize the entire chip in a known state at power up SRAM PUFs are not suitable for FPGA implementation. Also symmetry of the paths in arbiter PUFs is crucial and this requirement is very hard to fulfill in FPGAs. In this work mentioned PUFs and many other different PUF structures are examined.
In cryptographic systems generation, distribution and storage of keys are crucial for the security of the systems. Many cryptographic systems store keys and other identification information in memories continuously. This storage mechanism includes many security risks such as probing. Also generation and distribution of the keys brings additional complexity and security risks for the systems. Using PUFs as
a key generator is a promising solution against these problems. Identification values can be easily generated when needed without storing the values continuously with PUFs. Also structures of the PUFs are not complex. However PUF responses do not always generate exactly the same response because of the effects such as noise and temperature. This is a problem for the cryptographic algorithms because even one bit error in a key is not acceptable in these algorithms. An error correction mechanism is
needed to correct PUF errors in order to use PUFs as a key generator. There are several methods to correct the errors in a PUF response such as helper data algorithms or fuzzy extractors. In helper data algorithms using error correction codes are offered to correct the PUF errors.
Error correction codes have been widely used in telecommunication applications. They are encoding and decoding mechanisms to transfer messages securely over an unreliable communication channel. Encoding adds redundant bits to the message and decoding corrects the errors and recovers the real message with the help of the redundant bits. In helper data error correction scheme first a random message is chosen and encoded using an error correction code. Then a reference PUF response which is chosen to be the real PUF response is XORed with the generated random code. This data is called an helper data and used for correcting the noisy PUF responses. When a noisy PUF response is generated this response is XORed with the helper data. The result of that operation ends up with the noisy random code.
Decoding the code recovers the chosen random message and resulting random code. A final XOR operation of helper data with the recovered code gives the reference PUF response. Using this error correction scheme requires much more PUF bits than generated error free PUF bits used in key generation. Because encoding adds redundant bits to the message but in terms of entropy number of bits are not increased. So area efficient PUF designs are needed in order to supply sufficient amount of PUF bits to the error correction block.
In this work generating error free keys from PUF responses using helper data error correction scheme and using this key in a license authentication system is aimed. All blocks designed in this study are implemented in FPGA platform. Ring oscillator physical unclonable function (RO-PUF) is chosen for its easy implementation in FPGAs. Standard ring oscillator PUF structure is converted to reconfigurable ring
oscillator PUF structure to create higher number of bits while occupying smaller area. Also, Lehmer and Gray encoding is applied to the counter outputs to increase the number of bits further. First order Reed Muller codes are chosen as an error correcting code for the helper data key extractor due to its low overhead encoder and decoder structure. Generated error free PUF bits are mapped to a 128 bit key by using LFSR based Toeplitz hash function in order to accumulate the entropy of the entire PUF bits into a 128 bit key.
After generating the error free PUF bits a license authentication protocol is proposed. According to this protocol design of an license authentication dongle is aimed. This license verification dongle can communicate with an IP or a product to confirm its license and if the dongle is not connected to the system it will not funtion. Public key cryptography is chosen for the communication between dongle and the main system. Since in the public key cryptography scheme there is a pair of keys (one is public and the other one is private), there is no problem of key distribution. In this structure the private key does not leave the dongle. But error free PUF responses can not be used as public or private key since these keys have to comply with some mathematical properties. In this work error free PUF responses are used as a seed for the RSA key generator. This secondary key generator and all of the RSA systems are implemented in software. Microblaze processor is used as a platform for the RSA systems. BigDigits software library is used for the operations in very big numbers such as modular exponentiation, modular multiplicative inverse. All of the encryption, decryption, error correction and PUF blocks are implemented and tested in Spartan 3E family FPGAs. Encryption and decryption systems are implemented in Microblaze platform and rest of the blocks are implemented in hardware. Matlab is used for characterization and testing of the PUF and error correction blocks.