UCID ile Koruma
UCID, Nuvoton mikrodenetleyicilerde kullanılan bir yazılım koruma yöntemidir. UCID, "Unique Chip ID" (Benzersiz Yonga Kimliği) kısaltmasıdır ve her bir mikrodenetleyiciye özgü bir kimlik numarasını temsil eder.
UCID, mikrodenetleyiciyi sahtecilere veya yetkisiz kullanıcılara karşı korumak için tasarlanmış bir güvenlik önlemidir. Mikrodenetleyicinin içinde yerleşik bir donanım modülü bulunur ve bu modül, yongaya özgü bir kimlik numarası oluşturur. Bu kimlik numarası, mikrodenetleyicinin üretim sürecinde kalıcı olarak programlanır ve her bir yonga için benzersizdir.
UCID, yazılımın yonga üzerinde çalıştırılması sırasında kimlik doğrulama işlemlerinde kullanılabilir. Bu sayede, yalnızca geçerli ve yetkilendirilmiş yonga kimlikleriyle çalışan yazılımın yürütülmesi sağlanır. UCID, yonga üzerindeki güvenlik önlemlerini artırmaya yardımcı olur ve yasadışı kopyalama, sahtecilik veya yetkisiz kullanım gibi tehditleri azaltır.
Aşağıya malzemeleri ve tarifi eklemeden önce, tarifinizi özetleyen son bir cümle yazın. Ayrıca, kaç porsiyonluk olduğunu ve hazırlık için gereken toplam zamanı da yazabilirsiniz.
Yukarda UCID ile koruma yönteminin akış diyagramı bulunmaktadır. Bu akışa göre öncelikle mikrodenetleyicimizin UCID kodunu okumalıyız. Bunun için aşağıdaki kodu kullanabilirsiniz.
UCID KODU
#include <stdio.h>
#include "NuMicro.h"
void UART_Open(UART_T *uart, uint32_t u32baudrate);
// Sistem Baslangic Ayarlari
void SYS_Init(void)
{
/* Korumali regleri ac */
SYS_UnlockReg();
/* Enable HIRC clock (Internal RC 48MHz) */
// HIRC -> High Speed Internal RC osilator
CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);
/* HIRC osilator hazir olana kadar bekle */
CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);
/* Hıgh Speed clock HCLK ve HIRC divided 1 */
CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));
/* Enable UART0 clock */
CLK_EnableModuleClock(UART0_MODULE);
CLK_EnableSysTick(CLK_CLKSEL0_STCLKSEL_HCLK, 0);
/* UART0 saat kaynağını HIRC'e değiştir kenetle */
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HIRC, CLK_CLKDIV0_UART0(1));
/* Update System Core Clock */
SystemCoreClockUpdate();
/* UART0 RXD=PB.12 ve TXD=PB.13 için PB multi-fonksiyon pinlerini ayarla */
SYS->GPB_MFPH = (SYS->GPB_MFPH & ~(SYS_GPB_MFPH_PB12MFP_Msk | SYS_GPB_MFPH_PB13MFP_Msk)) | \
(SYS_GPB_MFPH_PB12MFP_UART0_RXD | SYS_GPB_MFPH_PB13MFP_UART0_TXD);
/* Lock protected registers */
SYS_LockReg();
}
int main()
{
SYS_Init();
/* UART0'u 115200-8n1 kullanarak mesaj yazdırmak için başlat */
UART_Open(UART0, 115200);
SYS_UnlockReg();
FMC_Open();
FMC_ReadUID(2);
if(FMC->ISPDAT==0000){
printf("\n ID CORRECT \n");
}
else{
while(1){
printf("XXX Invalid ID ---> %d XXX\n",FMC->ISPDAT);
}
}
}
Kullanacağız ID'leri elde ettikten sonra basit bir koruma algoritması işimizi görecektir. Eğer kod tanımlı ID'lerin haricinde bir ID'ye gömülmeye çalışılıyorsa burada yazılımı sonsuz loop'a düşüreceğiz.
ICP Tools ile Koruma
Nuvoton ICP (In-Circuit Programming) Tools, Nuvoton mikrodenetleyicileri için yazılım koruması sağlamak için kullanılan bir araç setidir. ICP Tools, yazılımı mikrodenetleyici üzerine programlamak, yazılımı korumak ve hata ayıklamak için kullanılan bir dizi yazılım ve donanım aracı içerir.
ICP Tools ile mikrodenetleyici bağlantısı sağlayın. Eğer koruma yoksa Flash'taki verilerinizi okuyabileceksiniz. Flash'taki verilerin okunmasını istemiyoruz bu yüzden aşağıdaki bir dizi işlemi gerçekleştirelim:
Sonuç olarak, UCID yöntemi ve ICP Tools gibi yazılım koruma yöntemleri, mikrodenetleyici tabanlı sistemlerin güvenliğini sağlamak ve yetkisiz erişim veya sahtecilik girişimlerini önlemek için etkili bir şekilde kullanılabilir. Her iki yöntem de, yazılımın güvenliğini ve bütünlüğünü sağlamak için farklı yaklaşımlar sunar. Yazılım geliştiricileri, ihtiyaçlarına ve sistem gereksinimlerine uygun olan yöntemi seçerek güvenli bir uygulama geliştirebilirler.
Comments