芯片驗(yàn)證的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及芯片驗(yàn)證。特別地,本發(fā)明涉及一種芯片及相關(guān)聯(lián)的用于驗(yàn)證芯片配 置的方法。
【背景技術(shù)】
[0002] 芯片技術(shù)的進(jìn)展導(dǎo)致更小的特征尺寸。這使得創(chuàng)建包括可以在芯片上被選擇性地 使能或禁用以支持該芯片要被包括在其中的特別的裝置或電子設(shè)備所需的特征子集的很 多功能模塊在經(jīng)濟(jì)上具有吸引力。這樣的芯片也被稱為片上系統(tǒng)(SoC)。功能模塊的這種 選擇性使能由一次(one-time)可編程(OTP)存儲(chǔ)器控制。
[0003] 選擇機(jī)制將適當(dāng)?shù)闹稻幊淘谑鼓芑蚪眯酒系墓δ苣K的OTP存儲(chǔ)器中。示例 是特定客戶的專用電路、可選功能和/或許可的IP核。這種機(jī)制使得芯片制造商有可能制 造可以被配置供廣泛范圍的裝置中使用的單一芯片。
[0004] 在芯片制造工藝期間,邏輯電路由在被用來制造芯片的一系列生產(chǎn)掩模中表示的 芯片設(shè)計(jì)拓?fù)湎薅ā_壿嬰娐钒ㄔ谏院蟮纳a(chǎn)步驟初始化的功能模塊。芯片制造還牽涉 電路的測(cè)試、(可選地)將芯片唯一的數(shù)據(jù)編程在OTP中以及封裝芯片。一系列的這些步驟 和測(cè)試階段的數(shù)目在芯片制造商之間可能不同。
[0005] 在圖1中示出示例性現(xiàn)有技術(shù)芯片10的框圖。芯片10包括只讀存儲(chǔ)器(R0M)12、 OTP存儲(chǔ)器14、中央處理單元(CPU)16和公共邏輯模塊18,它們中的全部借助于CPU總線20 連接在一起。芯片還包括若干可配置功能模塊F1......F8。OTP存儲(chǔ)器14包括分別控制功 能模塊F1......F8的使能/激活(或替換地禁用/解激活)的存儲(chǔ)器位置e i......e8。這些 OTP存儲(chǔ)器位置ei......e8均可以取決于是否期望使能或禁用對(duì)應(yīng)的功能模塊F i......F8 而用特別的值(激活/不激活,"0/1")僅寫入一次。一般地,在芯片制造工藝期間使得用于 功能模塊F1......F8的存儲(chǔ)器位置e i......e8保持為未被編程的(即未被寫入),盡管在該 工藝期間可以編程該OTP存儲(chǔ)器14的一些其他值。該編程步驟通常牽涉將秘密密鑰和/ 或類似機(jī)密信息裝載到芯片10上。
[0006] 作為包括這樣的芯片10的裝置的制造的一部分,將(封裝的)芯片10放置在電 路板上,該電路板在特別的裝置所需的各種不同組件之間提供電接口。在制造工藝期間, OTP存儲(chǔ)器14可以被進(jìn)一步編程以依照特別的裝置的要求個(gè)性化(或配置)芯片10。這 些附加的OTP編程步驟牽涉將激活/不激活數(shù)據(jù)值寫入到OTP存儲(chǔ)器14的存儲(chǔ)器位置 θι......e8。這些數(shù)據(jù)值定制芯片10以用于特別的用途。這可以包括禁用芯片10中的某 些功能F1......F8,從而使得只有所意圖的一組電路(即功能模塊F1......F 8)在芯片10上 保持激活。個(gè)性化功能中的一些在裝置制造測(cè)試期間可能引起復(fù)雜情況(例如安全自舉、限 制對(duì)某些存儲(chǔ)器位置或外設(shè)的訪問)。因此,這樣的功能模塊在制造工藝期間在增量步驟中 被激活。
[0007] 在裝置的制造工藝期間,在配置芯片10時(shí)可能發(fā)生誤差。制造工藝中的牽涉對(duì) OTP存儲(chǔ)器14的不正確編程的誤差可能導(dǎo)致芯片14不使適當(dāng)?shù)墓δ苣K使能/禁用。導(dǎo) 致縮減的功能行為的誤差通常在形成制造工藝的一部分的測(cè)試程序期間被捕捉到。然而, 對(duì)OTP存儲(chǔ)器14的不正確編程也可能導(dǎo)致不期望的功能模塊F1......^在制造工藝期間 被錯(cuò)誤地使能。這可能導(dǎo)致裝置中的在形成制造工藝的一部分的功能測(cè)試程序期間并不總 是能夠被檢測(cè)到的(隱藏)附加功能。
[0008] -些芯片配備有一系列安全性功能,例如即使芯片10包括潛在地運(yùn)行流氓或破 壞軟件的通用處理器時(shí)也安全地處理數(shù)據(jù)的能力,或者將引導(dǎo)程序代碼限制成僅單一軟件 供應(yīng)商的引導(dǎo)程序代碼的能力。為了達(dá)到這樣的目的,經(jīng)常用某種密鑰材料來個(gè)性化芯片 10。這樣的密鑰材料可以由負(fù)責(zé)芯片10的總體安全性的受信任第三方(TTP)管理(在SoC 安全性設(shè)計(jì)是合理的假設(shè)下)。
[0009] 這樣的安全性功能通常在工藝中被盡可能快地(永久)使能。然而,芯片10可能經(jīng) 歷若干生產(chǎn)步驟(可能在不同位置),它們都具有遞減的信任級(jí)別。在每一個(gè)步驟處,只有一 部分(而非全部)安全性措施可以被使能。因此,在生產(chǎn)步驟中的每一個(gè)處,可以進(jìn)一步加強(qiáng) OTP存儲(chǔ)器14以在后面的生產(chǎn)步驟期間獲得更高的安全性級(jí)別。實(shí)際上可以跳過OTP編程 步驟中的每一個(gè)。
[0010] 芯片10上不期望的隱藏功能的可能性可以導(dǎo)致在部署裝置期間的問題,并且也 可以影響從其IP核在芯片10上的實(shí)際使用而得到收入的各方。為了緩解這個(gè)問題,裝置 制造商經(jīng)常向許可伙伴和其他相關(guān)方提供OTP存儲(chǔ)器14的讀出。然而,由于OTP存儲(chǔ)器 14在每一類型的裝置中應(yīng)當(dāng)具有用于個(gè)性化功能模塊F1......^的相同存儲(chǔ)器值,所以裝 置制造商并不真的需要實(shí)際提供來自每一個(gè)芯片10的觀測(cè)值。在壓力下,制造商可以偽造 OTP存儲(chǔ)器14的讀出,使得隱藏功能在發(fā)貨的裝置中保持不被檢測(cè)到。
[0011] 大多數(shù)認(rèn)證方法牽涉計(jì)算包括數(shù)據(jù)段的代碼。由于OTP存儲(chǔ)器14中的值中的一 些可以包括機(jī)密信息,所以在認(rèn)證代碼中不可能使用這個(gè)信息。
[0012] 因此,需要一種使得裝置制造商能夠向各種風(fēng)險(xiǎn)承擔(dān)者展示每一個(gè)發(fā)貨的裝置中 的芯片個(gè)性化配置滿足這些風(fēng)險(xiǎn)承擔(dān)者的要求的技術(shù)。本發(fā)明尋求提供這樣的技術(shù)及相關(guān) 聯(lián)的方法。
【發(fā)明內(nèi)容】
[0013] 從上面的討論可知第三方當(dāng)前不能可靠地確立芯片配置。本發(fā)明提供一種芯片及 相關(guān)聯(lián)的方法以使得第三方能夠可靠地確立芯片配置。
[0014] 根據(jù)本發(fā)明的第一方面,提供了一種芯片,其包括可編程來存儲(chǔ)芯片配置數(shù)據(jù)的 一次可編程(OTP)存儲(chǔ)器和可操作來訪問OTP存儲(chǔ)器的驗(yàn)證模塊。驗(yàn)證模塊可操作來接收 關(guān)于OTP存儲(chǔ)器的指定部分的驗(yàn)證請(qǐng)求,該驗(yàn)證請(qǐng)求包括限定OTP存儲(chǔ)器的指定部分的掩 模數(shù)據(jù)。響應(yīng)于驗(yàn)證請(qǐng)求,驗(yàn)證模塊可操作來使用掩模數(shù)據(jù)和OTP存儲(chǔ)器以生成關(guān)于OTP 存儲(chǔ)器的指定部分的驗(yàn)證數(shù)據(jù),該驗(yàn)證數(shù)據(jù)還基于芯片的秘密密鑰而被生成。
[0015] 根據(jù)本發(fā)明的第二方面,提供了一種生成關(guān)于芯片的一次可編程(OTP)存儲(chǔ)器的 指定部分的驗(yàn)證數(shù)據(jù)的芯片實(shí)現(xiàn)的方法。OTP存儲(chǔ)器可編程來存儲(chǔ)芯片配置數(shù)據(jù)。該方法 包括:(a)接收關(guān)于OTP存儲(chǔ)器的指定部分的驗(yàn)證請(qǐng)求,其中驗(yàn)證請(qǐng)求包括限定OTP存儲(chǔ)器 的指定部分的掩模數(shù)據(jù);以及(b)響應(yīng)于驗(yàn)證請(qǐng)求,使用掩模數(shù)據(jù)和OTP存儲(chǔ)器來生成關(guān)于 OTP存儲(chǔ)器的指定部分的驗(yàn)證數(shù)據(jù),其中驗(yàn)證數(shù)據(jù)還基于芯片的秘密密鑰而被生成。
[0016] 密碼學(xué)是充分確立的技術(shù)領(lǐng)域,其使用數(shù)學(xué)運(yùn)算來處理數(shù)字信息和流。對(duì)于本發(fā) 明而言,利用諸如消息認(rèn)證碼(MAC)(即加密鑰的/密碼散列值)之類的公知的密碼原語和 /或可以用來創(chuàng)建證書的數(shù)字簽名。證書被用于各種不同的領(lǐng)域中以展示消息來自合法源。
[0017] 本發(fā)明使用在芯片上的(安全的)驗(yàn)證模塊,該驗(yàn)證模塊可以訪問OTP存儲(chǔ)器中的 芯片配置數(shù)據(jù)并且其使用機(jī)密芯片信息(即秘密密鑰)來生成唯一的(個(gè)性化)消息,該唯一 的消息使得風(fēng)險(xiǎn)承擔(dān)者能夠驗(yàn)證芯片被適當(dāng)?shù)嘏渲糜糜谔貏e的裝置。機(jī)密芯片信息是對(duì)個(gè) 別芯片唯一的,并且在其不能被輕易地從芯片讀取的意義上是"機(jī)密"的??梢詫C(jī)密芯片 信息存儲(chǔ)在(安全的)驗(yàn)證模塊內(nèi)。驗(yàn)證模塊僅檢查OTP存儲(chǔ)器的關(guān)于芯片配置數(shù)據(jù)的子集 的某些存儲(chǔ)器值。掩模數(shù)據(jù)(例如比特掩模)用來選擇正在由驗(yàn)證模塊認(rèn)證的OTP存儲(chǔ)器段 的比特值。
[0018] 有利地,芯片還包括多個(gè)功能模塊,其中芯片配置數(shù)據(jù)可操作來選擇性地使能或 禁用該多個(gè)功能模塊中的每一個(gè)。
[0019] 在一個(gè)實(shí)施例中,OTP存儲(chǔ)器包括比特?cái)?shù)組(B)并且掩模數(shù)據(jù)包括限定比特?cái)?shù)組 的指定部分的比特掩模(M)。
[0020] 可選地,驗(yàn)證請(qǐng)求還包括隨機(jī)數(shù)(nonce),并且驗(yàn)證數(shù)據(jù)還基于該隨機(jī)數(shù)而被生 成。
[0021] 在一個(gè)實(shí)施例中,驗(yàn)證模塊可操作來使用加密鑰的密碼散列函數(shù)生成驗(yàn)證數(shù)據(jù)。
[0022] 秘密密鑰可以是對(duì)稱密鑰或非對(duì)稱密鑰。在一個(gè)實(shí)施例中,秘密密鑰是芯片的私 鑰。該實(shí)施例涉及非對(duì)稱密碼學(xué)。在另一個(gè)實(shí)施例中,秘密密鑰是由芯片和初級(jí)驗(yàn)證系統(tǒng) 共享的對(duì)稱秘密密鑰。該實(shí)施例涉及對(duì)稱密碼學(xué)??蛇x地,驗(yàn)證請(qǐng)求還包括與向芯片提交 驗(yàn)證請(qǐng)求的一方相關(guān)聯(lián)的ID數(shù)據(jù),并且驗(yàn)證數(shù)據(jù)還基于ID數(shù)據(jù)而被生成。
[002