[go: up one dir, main page]

TWI721602B - 記憶體裝置及其安全讀取方法 - Google Patents

記憶體裝置及其安全讀取方法 Download PDF

Info

Publication number
TWI721602B
TWI721602B TW108137081A TW108137081A TWI721602B TW I721602 B TWI721602 B TW I721602B TW 108137081 A TW108137081 A TW 108137081A TW 108137081 A TW108137081 A TW 108137081A TW I721602 B TWI721602 B TW I721602B
Authority
TW
Taiwan
Prior art keywords
content
host device
encrypted
content block
blocks
Prior art date
Application number
TW108137081A
Other languages
English (en)
Other versions
TW202101433A (zh
Inventor
吳聖倫
蘇俊聯
Original Assignee
旺宏電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 旺宏電子股份有限公司 filed Critical 旺宏電子股份有限公司
Publication of TW202101433A publication Critical patent/TW202101433A/zh
Application granted granted Critical
Publication of TWI721602B publication Critical patent/TWI721602B/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/165Management of the audio stream, e.g. setting of volume, audio stream path
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Bioethics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Multimedia (AREA)
  • Storage Device Security (AREA)

Abstract

主機裝置從記憶體裝置接收安全資料,安全資料包括第一內容區塊及第二內容區塊。在確定第一內容區塊被加密時,主機裝置對第一內容區塊進行解密以獲得對應的第一明文資料。在確定第二內容區塊未被加密時,主機裝置從第二內容區塊獲得對應的第二明文資料。當從記憶體裝置接收安全資料的過程完成時,主機裝置從簽章區塊獲得與安全資料一起發送的第一簽章。主機裝置對由主機裝置所獲得的明文資料計算第二簽章,並將第一簽章與第二簽章加以比較。若主機裝置確定第一簽章等於第二簽章,則主機裝置將明文資料視為合法而加以接受。

Description

記憶體裝置及其安全讀取方法
以下揭露大體而言是有關於安全記憶體,且具體而言有關於和對記憶體裝置的安全讀取操作有關的方法、設備及系統。
記憶體裝置包括儲存記憶體(例如,快閃記憶體)及管理儲存記憶體的記憶體控制器。記憶體控制器從主機裝置接收命令以執行記憶體操作,例如將內容寫入儲存記憶體或從儲存記憶體讀取內容。
本揭露闡述用於在記憶體裝置執行安全讀取操作的方法、裝置及系統,例如以密碼安全方式(例如,利用加密或帶有數位簽章的認證或者該二者)從記憶體裝置讀取內容。記憶體裝置包括儲存記憶體及記憶體控制器,儲存記憶體用於儲存資料,記憶體控制器用於管理由耦接至記憶體裝置的主機裝置對儲存記憶體進行的存取。在從主機裝置接收讀取命令時,記憶體控制器從儲存記憶體擷取所請求的內容,並在向主機裝置發送所述內容的安全版本之前對明文內容執行密碼操作。在一些實施例中,記憶體控制器以區段(section)為單位對明文內容執行密碼操作,其中每一區段包括一或多個明文內容區塊。作為密碼操作的一部分,記憶體控制器對一或多個區段之間的明文內容區塊計算數位簽章。記憶體控制器亦利用適合的加密機制或演算法對內容區塊的子集中的明文內容進行加密,以產生該些區塊的密文內容,同時使剩餘內容區塊中的內容呈明文形式。在一些實施例中,記憶體控制器在加密之前將隨機值(nonce)(例如,隨機數字)與明文內容加以組合,其中隨機值與主機裝置同步更新。在一些實施例中,記憶體控制器使用多種加密機制,例如,藉由利用第一加密演算法對一些內容區塊進行加密,同時利用不同的第二加密演算法對一些其他內容區塊進行加密。在密碼操作之後,記憶體控制器向主機裝置發送安全內容,其中安全內容包括數位簽章,以及在一或多個區段中的每一個區段中的一或多個加密密文資料區塊或一或多個未加密明文資料區塊或者該二者。
在此背景下,內容區段指代從記憶體裝置發送至主機裝置的所請求內容(例如,碼或資料)的已知部分。總體內容是由一或多個區段構成。內容區塊指代區段內的內容的一部分,進而使得區段包括一或多個內容區塊。舉例而言,在一些實施例中,內容區段的大小為512位元組,而內容區塊則為32位元組。因此,在此實施例中,區段包括16個內容區塊。若所請求內容的總大小為1百萬位元組,則所請求內容包括各自為512位元組的2000個區段,其中每一區段具有16個內容區塊,所請求內容存在總共32000個內容區塊。作為另一實例,在一些其他實施例中,內容區段的大小為1千位元組,而內容區塊則為128位元組。因此,在此實施例中,區段包括8個內容區塊。對於大小為1百萬位元組的所請求內容,所請求內容包括各自為1千位元組的1000個區段,其中每一區段具有8個內容區塊,所請求內容存在總共8000個內容區塊。在一些實施例中,在交換安全內容之前,區段的大小或區段內的內容區塊的大小或者該二者被確定且為主機裝置及記憶體裝置所知曉。在一些實施例中,區段的大小或區段內的內容區塊的大小或者該二者是能夠配置的。例如,由使用者藉由耦接至主機裝置的使用者介面來設定。
主機裝置對從記憶體裝置接收的安全內容執行互補操作以恢復明文內容。在一些實施例中,主機裝置擷取並臨時儲存作為安全內容的一部分而由記憶體裝置發送的簽章。主機裝置在所接收內容的每一區段中確定被加密的內容區塊(例如,密文)及未被加密的內容區塊(例如,明文)。對於加密內容區塊,主機裝置利用適合的解密機制,例如與對相應的內容區塊使用的加密演算法對應的解密演算法,來執行解密操作以從密文獲得明文。當主機裝置確定所有加密內容區塊皆已被解密時,主機裝置對從加密內容區塊及未加密內容區塊獲得的組合明文計算簽章。主機裝置將從記憶體裝置接收的簽章與所計算出的簽章加以比較。若所述兩個簽章匹配,則主機裝置將明文視為合法而加以接受。若所述兩個簽章不匹配,則主機裝置將明文視為非法或被破解(例如,已經歷未經授權的修改)而加以拒絕。在一些實施例中,當對內容區塊進行解密時,主機裝置辨識並移除與明文相組合地由記憶體裝置發送的隨機值,其中隨機值與記憶體裝置同步更新。在一些實施例中,主機裝置使用多個解密機制,例如,藉由利用第一解密演算法對內容區塊中的一些內容區塊進行解密,同時利用不同的第二解密演算法對一些其他內容區塊進行解密。
在一些實施例中,以上述方式保護的內容包括儲存於記憶體裝置中的碼,例如啟動碼(boot code)。在一些實施例中,以上述方式保護的內容包括儲存於記憶體裝置中的啟動碼與使用者資料(例如,公共使用者資料或私人使用者資料)二者。
在一般態樣中,主機裝置從耦接至主機裝置的記憶體裝置接收安全資料,所述安全資料包括第一內容區塊及第二內容區塊。所述主機裝置確定第一內容區塊被加密。在確定第一內容區塊被加密時,主機裝置對第一內容區塊進行解密以獲得對應的第一明文資料。主機裝置確定第二內容區塊未被加密。在確定第二內容區塊未被加密時,主機裝置從第二內容區塊獲得對應的第二明文資料。主機裝置判斷從記憶體裝置接收安全資料的過程是否完成。在確定從記憶體裝置接收安全資料的過程完成時,主機裝置從簽章區塊獲得與安全資料一起由記憶體裝置發送的第一簽章。主機裝置對由主機裝置所獲得的明文資料計算第二簽章,明文資料包括第一明文資料及第二明文資料。主機裝置將第一簽章與第二簽章加以比較。在作為比較的結果由主機裝置確定第一簽章等於第二簽章的條件下,主機裝置將明文資料視為合法而加以接受。
具體實施例可包括以下特徵中的一或多者。在作為比較的結果由主機裝置確定第一簽章不等於第二簽章的條件下,主機裝置可將明文資料視為被破解而加以捨棄。
主機裝置可確定第一內容區塊利用第一加密機制而加密。對第一內容區塊進行解密可包括利用第一加密機制對第一內容區塊進行解密。主機裝置可從記憶體裝置接收安全資料的第三內容區塊,且可確定第三內容區塊利用與第一加密機制不同的第二加密機制而加密。在確定第三內容區塊利用第二加密機制而加密時,主機裝置可利用第二加密機制對第三內容區塊進行解密以獲得第三明文資料,其中可對包括第一明文資料、第二明文資料及第三明文資料的明文資料計算第二簽章。
主機裝置可以多個區段從記憶體裝置接收安全資料,所述多個區段中的每一者包括加密內容區塊及未加密內容區塊。主機裝置可包括計數器以對所接收的安全資料的內容區塊的數量進行計數。主機裝置可藉由確定計數器的值小於第一臨限值來確定第一內容區塊利用第一加密機制而加密,第一臨限值對應於區段中利用第一加密機制而加密的內容區塊的數量。主機裝置可藉由確定計數器的值大於第一臨限值但小於第二臨限值來確定第三內容區塊利用第二加密機制而加密,第二臨限值對應於區段中利用第一加密機制及第二加密機制而加密的內容區塊的數量。主機裝置可藉由確定計數器的值大於所述第二臨限值但小於第三臨限值來確定第二內容區塊未被加密,第三臨限值對應於區段中的內容區塊的總數量。
主機裝置可在確定從記憶體裝置接收安全資料的過程並未完成時,對計數器進行遞增。主機裝置可判斷計數器是否等於第三臨限值。在確定計數器等於第三臨限值的條件下,主機裝置可重置計數器以處理從記憶體裝置接收的安全資料的新區段。在確定計數器不等於第三臨限值的條件下,主機裝置可處理當前區段的一或多個額外內容區塊,所述一或多個額外內容區塊包括利用第一加密機制而加密的內容區塊、利用第二加密機制而加密的內容區塊或未加密內容區塊中的至少一者。
第一臨限值、第二臨限值或第三臨限值中的一或多者可能夠由使用者進行配置。第一臨限值、第二臨限值或第三臨限值中的一或多者可儲存於耦接至記憶體裝置的暫存器中。
從記憶體裝置接收的安全資料可包括多個加密內容區塊及未加密內容區塊。主機裝置可與記憶體裝置接收額外資訊,所述額外資訊是關於加密內容區塊及未加密內容區塊在安全資料中的相對排列、第一加密機制或第二加密機制中的至少一者。主機裝置可藉由以下方式確定第一內容區塊利用第一加密機制而加密:對從記憶體裝置接收的額外資訊進行分析,以確定第一內容區塊被加密或第一加密機制被用於對第一內容區塊進行加密中的至少一者。主機裝置可藉由以下方式確定第三內容區塊利用第二加密機制而加密:對從記憶體裝置接收的額外資訊進行分析,以確定第三內容區塊被加密或第二加密機制被用於對第三內容區塊進行加密中的至少一者。主機裝置可藉由以下方式確定第二內容區塊未被加密:對從記憶體裝置接收的額外資訊進行分析,以確定第二內容區塊未被加密。
對第一內容區塊進行解密以獲得對應的第一明文資料可包括在對第一內容區塊進行解密時,辨識第一內容區塊中所包括的隨機值。主機裝置可從經解密的第一內容區塊移除隨機值以獲得第一明文資料。隨機值可在主機裝置與記憶體裝置之間同步。
在另一通常態樣中,記憶體裝置從耦接至記憶體裝置的主機裝置接收對資料的請求。因應於所述請求,記憶體裝置處理所述資料以傳輸至主機裝置,其中所述處理包括:將資料劃分成多個區段,所述多個區段中的每一區段包括一或多個內容區塊;對所述多個區段中所包括的內容區塊計算簽章;在每一區段中對所述區段中所包括的內容區塊的子集進行加密;以及將剩餘數量的未加密內容區塊作為明文包括於每一區段中。記憶體裝置向主機裝置發送所述多個區段以及簽章,所述多個區段中的每一者包括加密內容區塊及未加密內容區塊。
具體實施例可包括以下特徵中的一或多者。記憶體裝置可包括計數器以對每一區段中的內容區塊的數量進行計數。記憶體裝置可藉由判斷計數器的值是否小於第一臨限值來對每一區段中的內容區塊的子集進行加密,第一臨限值對應於區段中利用第一加密機制而加密的內容區塊的數量。在確定計數器的值小於第一臨限值時,記憶體裝置可利用第一加密機制對內容區塊的子集中的第一內容區塊進行迭代加密,並對計數器進行遞增。
記憶體裝置可判斷計數器的值是否小於第二臨限值,第二臨限值對應於區段中利用與第一加密機制不同的第二加密機制而加密的內容區塊的數量。在確定計數器的值小於第二臨限值時,記憶體裝置可利用第二加密機制對內容區塊的子集中的第二內容區塊進行迭代加密,並對計數器進行遞增。記憶體裝置可確定計數器的值等於第三臨限值,第三臨限值對應於區段中的內容區塊的總數量。在確定計數器的值等於第三臨限值時,記憶體裝置可重置計數器並處理多個區段中的下一區段。
記憶體裝置可從主機裝置接收由使用者所配置的第一臨限值、第二臨限值或第三臨限值中的一或多者。記憶體裝置可將第一臨限值、第二臨限值或第三臨限值中的一或多者儲存於耦接至記憶體裝置的暫存器中。
記憶體裝置可藉由將隨機值包括於內容區塊的子集中的一或多個內容區塊中來對每一區段中的內容區塊的子集進行加密。記憶體裝置可在將隨機值包括於內容區塊的子集中的所述一或多個內容區塊中之後對內容區塊的子集進行加密,其中隨機值可與主機裝置同步。
在另一一般態樣中,一種記憶體裝置包括儲存記憶體及記憶體控制器,儲存記憶體用於儲存資料,記憶體控制器用於管理對儲存記憶體的存取。記憶體控制器適以從耦接至記憶體裝置的主機裝置接收對資料的請求,且因應於所述請求處理所請求的資料以傳輸至主機裝置。記憶體裝置適以藉由以下方式處理所請求的資料:從儲存記憶體存取所請求的資料;將所請求的資料劃分成多個區段,所述多個區段中的每一區段包括一或多個內容區塊;對所述多個區段中所包括的內容區塊計算簽章;在每一區段中對所述區段中所包括的內容區塊的子集進行加密;以及將剩餘數量的未加密內容區塊作為明文包括於每一區段中。記憶體控制器適以向主機裝置發送所述多個區段以及簽章,所述多個區段中的每一者包括加密內容區塊及未加密內容區塊。
具體實施例可包括以下特徵中的一或多者。記憶體控制器可包括計數器以對每一區段中的內容區塊的數量進行計數。記憶體控制器可藉由判斷計數器的值是否小於第一臨限值來對每一區段中的內容區塊的子集進行加密,第一臨限值對應於區段中利用第一加密機制而加密的內容區塊的數量。在確定計數器的值小於第一臨限值時,記憶體控制器可利用第一加密機制對內容區塊的子集中的第一內容區塊進行迭代加密,並對計數器進行遞增。
記憶體控制器可判斷計數器的值是否小於第二臨限值,第二臨限值對應於區段中利用與第一加密機制不同的第二加密機制而加密的內容區塊的數量。在確定計數器的值小於第二臨限值時,記憶體控制器可利用第二加密機制對內容區塊的子集中的第二內容區塊進行迭代加密,並對計數器進行遞增。記憶體控制器可確定計數器的值等於第三臨限值,第三臨限值對應於區段中的內容區塊的總數量。在確定計數器的值等於第三臨限值時,記憶體控制器可重置計數器並處理多個區段中的下一區段。記憶體控制器可從主機裝置接收由使用者所配置的第一臨限值、第二臨限值或第三臨限值中的一或多者。記憶體控制器可將第一臨限值、第二臨限值或第三臨限值中的一或多者儲存於耦接至記憶體控制器的暫存器中。
記憶體控制器可藉由將隨機值包括於內容區塊的子集中的一或多個內容區塊中來對每一區段中的內容區塊的子集進行加密。記憶體控制器可在將隨機值包括於內容區塊的子集中的所述一或多個內容區塊中之後對內容區塊的子集進行加密,其中隨機值與主機裝置同步。
記憶體控制器可藉由以下方式對每一區段中的內容區塊的子集進行加密:選擇子集中的一或多個第一內容區塊並利用第一加密機制對所述一或多個第一內容區塊進行加密。記憶體控制器可向主機裝置發送額外資訊,額外資訊包括一或多個第一內容區塊的位置資訊或第一加密機制中的至少一者。
記憶體控制器可藉由以下方式對每一區段中的內容區塊的子集進行加密:選擇子集中的一或多個第一內容區塊以及一或多個第二內容區塊。記憶體控制器可利用第一加密機制對所述一或多個第一內容區塊進行加密,且可利用第二加密機制對所述一或多個第一內容區塊進行加密。記憶體控制器可向主機裝置發送額外資訊,額外資訊包括所述一或多個第一內容區塊的位置資訊、所述一或多個第二內容區塊的位置資訊、第一加密機制或第二加密機制中的至少一者。
以上技術的實施例包括方法、設備、系統及電腦程式產品。一種此類電腦程式產品適合地實施於儲存由一或多個處理器執行的指令的非暫態機器可讀取媒體(non-transitory machine-readable medium)中。所述指令用以使所述一或多個處理器執行上述動作。
利用以上所闡述的及在本說明書後面的部分中闡述的新穎特徵,可在維持操作效率的同時以強的安全性(security)對記憶體裝置執行讀取操作。藉由對內容進行局部加密且同時使從記憶體裝置發送至主機裝置的內容的剩餘部分維持明文形式,強的安全性與高效的效能達成平衡。相比之下,若所有內容皆被加密(如傳統方案),則加密及解密(其可為計算密集型(computationally intensive))的計算負擔(computational overhead)較高,進而使得更穩健的安全性是在以較差的效能(例如,對內容進行加密或解密的處理時間顯著較長)為代價的條件下達成。本說明書中所揭露的技術作出折衷以使安全性與效能達成平衡。例如當讀取對於主機裝置的操作而言重要的內容例如啟動碼或其他臨界碼或資料時,此方法較為有利。在啟動階段期間存在一些未經授權修改風險,例如偽造(例如,攻擊者藉由探測記憶體裝置的輸入/輸出(input/output,IO)引腳來複製啟動碼)或篡改(例如,攻擊者藉由修復I/O級或重寫在主機裝置的隨機存取記憶體中的內容值來更改啟動碼)。利用所揭露技術對啟動碼進行局部加密會防止偽造或篡改,同時使執行速度維持在可接受水準處。對一些內容區塊進行加密使記憶體裝置與主機裝置之間的通訊通道(例如,匯流排)上的竊聽者不能夠偽造整個內容,乃因竊聽者無法根據經由通訊通道發送的對應密文確定加密內容區塊的明文內容。利用簽章來確認內容使攻擊者不能夠篡改內容中的一些內容。
在一些實施例中,所揭露技術所提供的安全性是藉由對不同內容區塊使用不同加密方案來增強。舉例而言,為使效能維持在目標水準處,使用例如數位加密標準(Digital Encryption Standard,DES)、進階加密標準(Advanced Encryption Standard,AES)、橢圓曲線密碼學(Elliptic Curve Cryptography,ECC)或里維斯特密碼5(Rivest Cipher,RC5)等強密碼加密演算法對內容區塊的第一子集進行加密;使用例如互斥或(Exclusive-OR,XOR)或格式保留加密(Format-Preserving Encryption,FPE)等簡化密碼加密演算法對內容區塊的第二子集進行加密;而剩餘內容區塊則被以明文形式發送。使用隨機值以及加密有助於防止重放攻擊(replay attack)。在一些實施例中,使用例如訊息摘要版本5(Message Digest version 5,MD5)、安全散列演算法(Secure Hash Algorithm,SHA)或循環冗餘檢查(Cyclic Redundancy Check,CRC)等非密集型計算演算法來進行簽章產生/驗證。
所揭露技術可應用於各種類型的非揮發性記憶體裝置,例如反及(NAND)快閃記憶體或反或(NOR)快閃記憶體、通用快閃儲存器(universal flash storage,UFS)、快速周邊元件互連(peripheral component interconnect express,PCIe)儲存器或相變記憶體(phase-change memory,PCM)等。另外或作為另一選擇,所述技術可應用於各種類型的主記憶體裝置或快取記憶體裝置,例如靜態隨機存取記憶體(static random access memory,SRAM)、動態隨機存取記憶體(dynamic random access memory,DRAM)、電阻式隨機存取記憶體(resistive random access memory,ReRAM)或磁阻式隨機存取記憶體(magnetoresistive random-access memory,MRAM)等。所述技術亦可應用於磁碟或光碟等。
附圖及以下說明中闡述一或多個所揭露實施例的細節。藉由閱讀說明、圖式及申請專利範圍,其他特徵、態樣及優點將變得顯而易見。
圖1示出對記憶體裝置110執行安全讀取操作的系統100的實例。系統100包括記憶體裝置110,記憶體裝置110利用匯流排118耦接至主機裝置120。記憶體裝置110包括記憶體控制器112及儲存記憶體116。在一些實施例中,記憶體控制器包括一或多個暫存器,其統稱為暫存器114。主機裝置120包括一或多個處理器,例如處理器122。
在一些實施例中,記憶體裝置110為儲存裝置。舉例而言,記憶體裝置110可為嵌入式多媒體卡(embedded multimedia card,eMMC)、安全數位(secure digital,SD)卡、固態驅動機(solid-state drive,SSD)或一些其他適合的儲存器。在一些實施例中,記憶體裝置110為耦接至主機裝置120的客戶端裝置。舉例而言,記憶體裝置110可為耦接至作為主機裝置120的數位照相機或多媒體播放機的SD卡。
記憶體控制器112為通用微處理器或應用專用微處理器。記憶體控制器112管理對儲存記憶體116的存取及對儲存記憶體116執行的操作。以下部分基於其中使用記憶體控制器112管理儲存記憶體116的實施例來闡述各種技術。然而,以下部分中所闡述的技術亦適用於其中使用記憶體裝置110中與記憶體控制器不同的另一種類型的控制器管理儲存記憶體的實施例。
在一些實施例中,儲存記憶體116為被配置用於長期儲存指令及/或資料的非揮發性記憶體,例如NAND快閃記憶體或NOR快閃記憶體或者一些其他適合的非揮發性記憶體。在其中儲存記憶體116為NAND快閃記憶體或NOR快閃記憶體的實施例中,記憶體裝置110為快閃記憶體裝置,例如快閃記憶卡,且記憶體控制器112為快閃控制器。出於示例目的,以下說明使用快閃記憶體作為儲存記憶體116的實例。
主機裝置120利用匯流排118向記憶體控制器112發送記憶體命令,以對記憶體裝置110執行操作。記憶體命令包括讀取命令、程式/寫入命令以及抹除命令。讀取命令涉及獲取儲存於儲存記憶體116中的內容以供主機裝置120使用。舉例而言,在一些實施例中,當主機裝置120通電時,主機裝置120發送讀取命令以從儲存記憶體116獲取啟動碼。啟動碼由處理器122執行以確認耦接至主機裝置120的系統100中的周邊元件。讀取命令亦可為獲取儲存於儲存記憶體116中的其他種類的碼或使用者資料。
如下文進一步詳細論述,在一些實施例中,當主機裝置120向記憶體控制器112發送讀取命令時,記憶體控制器從儲存記憶體116中的相應儲存位置擷取所請求的內容;藉由對一或多個內容區塊進行加密或向內容添加加密的數位簽章或者該二者來對內容進行密碼安全;以及向主機裝置120發送具有一或多個加密內容區塊及/或數位簽章的安全內容。主機裝置120對加密內容區塊進行解密,藉由檢查數位簽章來對內容進行認證,且若簽章得到成功驗證,則接受未加密內容。
在一些實施例中,記憶體控制器112發送安全內容,其中內容的每一區段中的內容區塊的子集被加密,而區段中的剩餘內容區塊則未被加密。在一些實施例中,記憶體控制器112利用不同的加密機制,例如利用一或多個強加密演算法以及一或多個簡化加密演算法,來對區段中的內容區塊的子集中的不同內容區塊進行加密。在一些實施例中,記憶體控制器112在對內容區塊進行加密之前向內容區塊添加隨機值,其中隨機值隨主機裝置120而改變且與主機裝置120同步。在一些實施例中,隨機值週期性地改變。在一些實施例中,隨機值非週期性地改變。
在一些實施例中,記憶體控制器112以上述方式發送安全內容,而在以下部分中,當主機裝置120發送針對啟動碼的讀取命令時,記憶體控制器112發送安全內容。在一些實施例中,當主機裝置120發送讀取命令以獲取欲由處理器122執行的任何形式的碼時,記憶體控制器112發送安全內容。在一些實施例中,當主機裝置120發送讀取命令以獲取碼或使用者資料時,記憶體控制器112發送安全內容。
圖2示出對系統100中的裝置的安全內容記憶體讀取操作的實例。在一些實施例中,內容以未加密形式(例如,以明文形式)儲存於記憶體裝置110的儲存器(例如,儲存記憶體116)中。當主機裝置120向記憶體裝置110發送讀取命令時,記憶體裝置110的記憶體控制器從儲存記憶體116擷取所請求的明文內容並對明文內容的區塊例如內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N) (在此實施例中,內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N)為明文內容區塊)執行密碼操作。
作為密碼操作的一部分,記憶體裝置110(例如,記憶體控制器112)對內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N)計算數位簽章。在一些實施例中,數位簽章為CRC(例如,CRC 202),如圖所示。在一些實施例中,計算不同形式的數位簽章,例如MD5或SHA。在一些實施例中,例如基於橢圓曲線密碼學(ECC)來計算基於公鑰的數位簽章。
在計算數位簽章之後,記憶體裝置110藉由對明文內容區塊的子集進行加密來執行對內容區塊的局部加密。舉例而言,如圖所示,記憶體裝置110對內容區塊P(1)及P(2)進行加密以分別產生內容區塊C(1)及C(2) (在此實施例中,內容區塊C(1)及C(2)為密文內容區塊)。相似地,記憶體控制器112對明文內容區塊P(N+1)及P(N+2)進行加密以分別產生內容區塊C(N+1)及C(N+2) (在此實施例中,內容區塊C(N+1)及C(N+2)為密文內容區塊)。在一些實施例中,記憶體裝置110在對內容區塊進行加密以產生密文之前,向明文內容區塊添加隨機值。然而,剩餘明文內容區塊不被加密,例如內容區塊P(N)及P(2N)不被轉換成密文。藉由此種方式,記憶體裝置110產生安全內容。安全內容包括:一定數量的加密內容區塊,例如內容區塊C(1)、C(2)、C(N+1)及C(N+2);一定數量的未加密內容區塊,例如內容區塊P(N)及P(2N);以及數位簽章,例如CRC 202。記憶體裝置110接著經由匯流排118向主機裝置120發送安全內容。
主機裝置120從匯流排118接收安全內容,並對所接收內容執行反向密碼操作以獲得及驗證明文內容。舉例而言,如圖所示,主機裝置120(例如,處理器122)對所接收的內容區塊C(1)及C(2)進行解密以獲得對應的內容區塊P(1)及P(2)。相似地,主機裝置120對內容區塊C(N+1)及C(N+2)進行解密以獲得對應的內容區塊P(N+1)及P(N+2)。在一些實施例中,在對密文內容區塊進行解密之後,主機裝置120移除隨機值以獲得明文。所接收的未加密內容區塊(例如,內容區塊P(N)及P(2N))不經歷進一步的密碼處理。
為對密文內容區塊進行解密,主機裝置120使用與記憶體控制器112所使用的加密演算法對應的一或多個解密演算法。舉例而言,在一些實施例中,記憶體裝置110使用DES、AES、Blowfish、RC5、ECC或XOR中的一者來進行加密。因此,主機裝置120亦分別使用DES、AES、Blowfish、RC5、ECC或XOR中的一者來進行解密。在一些實施例中,記憶體裝置110使用基於公鑰的演算法。舉例而言,在一些實施例中,記憶體裝置110使用里維斯特-沙米爾-阿德爾曼演算法(Rivest–Shamir–Adleman,RSA)或ECC中的一者來進行加密。因此,主機裝置120亦分別使用RSA或ECC中的一者來進行解密。
如下文所進一步闡述,主機裝置120及記憶體裝置110對用於一致操作的加密演算法與簽章演算法進行同步。在一些實施例中,主機裝置120及記憶體裝置110亦對用於加密、解密及簽章的密碼密鑰(crptographic key)進行同步,以使主機裝置120可成功地對密文內容區塊進行解密或驗證數位簽章或者該二者。所述同步是當裝置進行初始耦接時(例如,在通電時)執行。另外或作為另一選擇,所述同步是以特定時間間隔執行。在一些實施例中,主機裝置120及記憶體裝置110亦對隨機值進行同步,所述同步是在初始通電時執行、以特定時間間隔執行、或每當任一裝置改變隨機值時執行或者在該些情形的任意組合的情況下執行。
在產生所有內容區塊皆為明文內容區塊的經解密內容之後,主機裝置120對內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N)計算數位簽章。主機裝置120使用與記憶體控制器112所使用的簽章演算法相同的簽章演算法。例如,如圖所示,主機裝置120對經解密的內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N)計算CRC簽章,例如CRC 204。主機裝置120接著將所計算的簽章(例如,CRC 204)與由記憶體裝置110發送且從安全內容獲得的簽章(例如,CRC 202)進行比較。
若所述兩個簽章的值匹配,則主機裝置120將內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N)視為合法而加以接受,例如將其視為由記憶體裝置110發送的內容的真實複本(其尚未被第三方(例如,竊聽攻擊者實體)以未經授權的方式更改)而加以接受。主機裝置120接著處理內容,例如處理器122執行啟動碼。另一方面,若所述兩個簽章的值不匹配,則主機裝置120將內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N)視為非法而加以拒絕,例如將其視為已被第三方偽造或篡改後而與儲存於記憶體裝置110中的內容不同而加以拒絕。
藉由以上方式,主機裝置120及記憶體裝置110可在系統100中提供安全讀取操作。藉由以加密形式發送一些明文內容區塊,竊聽匯流排的攻擊者無法知曉及複製內容,乃因攻擊者在不知曉密碼演算法及/或密碼密鑰(其僅為主機裝置120及記憶體裝置110所知曉)的條件下無法對密文內容區塊進行解密。藉由發送對明文內容區塊計算的數位簽章,攻擊者無法對內容做手腳(例如,篡改),乃因攻擊者在不知曉所有明文內容區塊的條件下無法產生數位簽章。藉由以上方式,對內容的偽造或篡改得到防止。
然而,藉由對內容區塊的有限子集執行局部加密,加密操作的計算負擔是有限的,進而使得相較於對所有內容區塊進行加密的情形而言,可較高效地進行安全記憶體讀取操作(例如,時間較少或者記憶體裝置110及主機裝置120的能量消耗較少或者該二者)。
圖3A至圖3E示出用於讀取操作的安全內容傳送的加密機制300A至300E的實例。在一些實施例中,加密機制300A至300E由記憶體裝置110及主機裝置120使用,如上所述。圖3A示出加密機制300A,其中內容區塊被劃分成多個區段,例如區段312及314等。每一區段中的明文內容區塊的子集利用加密演算法而加密,而剩餘明文內容區塊則未被加密。舉例而言,在區段312中,內容區塊P(1)被加密以產生內容區塊C(1),而內容區塊P(2)及P(N)則以未加密的形式發送。在區段314中,內容區塊P(N+1)及P(N+2)被加密以分別產生內容區塊C(N+1)及C(N+2),而內容區塊P(2N)則以未加密的形式發送。
除對每一區段中的明文內容區塊的子集進行加密以外,加密機制300A亦藉由改變每區段被加密的內容區塊的數量來增強安全性。舉例而言,如圖所示,在區段312中有僅一個明文內容區塊(例如,內容區塊P(1))被加密,但在區段314中有兩個內容區塊(例如,內容區塊P(N+1)及P(N+2))被加密。
在一些實施例中,一區段內的加密內容區塊及未加密內容區塊的相對次序可與其他區段有所不同。作為實例,在一些實施例中,在區段312中,內容區塊P(1) (在此實施例中,內容區塊P(1)為第一明文內容區塊)被加密,但內容區塊P(2) (在此實施例中,內容區塊P(2)為第二明文內容區塊)未被加密,如圖所示,而在內容區塊P(2)之後的內容區塊P(3) (在此實施例中,內容區塊P(3)為第三明文內容區塊)亦被加密。相比之下,在區段314中,內容區塊P(N+1) (在此實施例中,內容區塊P(N+1)為第一明文內容區塊)及內容區塊P(N+2) (在此實施例中,內容區塊P(N+2)為第二明文內容區塊)被加密,而內容區塊P(N+3) (在此實施例中,內容區塊P(N+3)為第三明文內容區塊)未被加密。在此種實施例中,除加密/解密演算法以外,主機裝置120與記憶體控制器112之間亦共享額外參數(例如,每一區段中的相對加密次序)。
圖3B示出加密機制300B,其中內容區塊被劃分成多個區段,例如區段322及324等,且隨機值被添加至每一區段以增強安全性。如在機制300A中一樣,在機制300B中,每一區段中的明文內容區塊的子集利用加密演算法而加密,而剩餘明文內容區塊則未被加密。舉例而言,在區段322中,內容區塊P(1)被加密以產生內容區塊C(1),而內容區塊P(2)及P(N)則以未加密的形式發送;且在區段314中,內容區塊P(N+1)被加密以產生內容區塊C(N+1),而內容區塊P(N+2)及P(2N)則以未加密的形式發送。
然而,在對區段中的內容區塊進行加密之前,若在機制300B中向每一區塊中的明文內容添加隨機值,則接著對>隨機值+明文>內容進行加密。添加隨機值(其以特定時間間隔改變)確保重放攻擊得到防止。舉例而言,因應於第一時間處的讀取命令,記憶體裝置110在加密之前向明文內容區塊添加第一隨機值,進而產生包括所述第一隨機值的密文內容區塊。然而,因應於第二時間處的讀取命令,記憶體裝置110在加密之前向相同的明文內容區塊添加不同的第二隨機值,進而產生包括所述第二隨機值的密文內容區塊。由於第一時間處的密文內容區塊與第二時間處的密文內容區塊是利用不同的隨機值產生,因此密文內容區塊在第一時間處與在第二時間處有所不同。因此,在第一時間處獲得(例如,藉由探測記憶體裝置110的I/O引腳)一些密文內容區塊的竊聽者將不能夠在第二時間處使用該些密文內容區塊,乃因第二時間處的密文內容區塊將有所不同。藉由此種方式,重放攻擊得到防止。
如先前所述,在一些實施例中,隨機值是以特定時間間隔改變的隨機數字。為確保記憶體裝置110及主機裝置120執行一致的加密操作及解密操作,每當隨機值改變時便在所述兩個裝置之間對隨機值進行同步。舉例而言,記憶體裝置110可產生新的隨機值,且接著向主機裝置120發送更新。作為另一選擇,主機裝置120可產生新的隨機值,且接著向記憶體裝置110發送更新。在一些實施例中,隨機值的改變頻率是由使用者進行配置。由於在主機裝置120與記憶體裝置110之間對隨機值進行同步的額外負擔,隨機值改變頻率越高,則系統效能越低。
在一些實施例中,加密機制300A與加密機制300B被加以組合。在此種實施例中,如在機制300A中一樣,每一區段中被加密的明文內容區塊的數量在各個區段之間不同。另外,如在機制300B中一樣,隨機值在加密之前被添加至明文內容區塊。
在一些實施例中,在加密機制300A或300B或者該二者中使用相同的加密演算法(例如,DES、AES、Blowfish、RC5、ECC或XOR等中的一者)對不同區段中的內容區塊進行加密。然而,在其他實施例中,在加密機制300A或300B或者該二者中,在不同區段中使用不同的加密演算法。舉例而言,在區段312或322中可使用AES,而在區段314或324中則可使用RC5。
圖3C示出加密機制300C,其中內容區塊被劃分成多個區段,例如區段332及334等。在機制300C中,每一區段中的所有明文內容區塊皆被加密,但對區段中的內容區塊的子集使用不同的加密機制。舉例而言,在區段332中,內容區塊P(1)利用加密演算法A1而加密以產生內容區塊C(1),而內容區塊P(2)及P(N)則利用不同的加密演算法A2而加密以分別產生內容區塊C(2)及C(N)。相似地,在區段334中,內容區塊P(N+1)利用加密演算法A1而加密以產生內容區塊C(N+1),而內容區塊P(N+2)及P(2N)則利用加密演算法A2而加密以分別產生內容區塊C(N+2)及C(2N)。
圖3D示出加密機制300D,其中內容區塊被劃分成多個區段,例如區段342及344等,每一區段中的明文內容區塊的不同子集利用不同的加密機制而加密,而區段中的剩餘明文內容區塊則未被加密。舉例而言,在區段342中,內容區塊P(1)利用加密演算法A1而加密以產生內容區塊C(1),內容區塊P(2)利用加密演算法A2而加密以產生內容區塊C(2),而內容區塊P(N)則未被加密。相似地,在區段344中,內容區塊P(N+1)利用加密演算法A1而加密以產生內容區塊C(N+1),內容區塊P(N+2)利用加密演算法A2而加密以產生內容區塊C(N+2),而內容區塊P(2N)則未被加密。
在一些實施例中,在加密機制300C或300D或者該二者中,加密演算法A1是標準加密演算法,例如DES、AES、Blowfish、ECC或RC5中的一者)。而加密演算法A2是簡化加密演算法,例如利用前綴法的XOR或快閃項目加密器(Flash Project Encryptor,FPE)中的一者)。在一些其他實施例中,在加密機制300C或300D或者該二者中,加密演算法A1是簡化加密演算法(例如,利用前綴法的XOR或FPE中的一者),而加密演算法A2是標準加密演算法(例如,DES、AES、Blowfish、ECC或RC5中的一者)。在此背景下,簡化加密演算法相較於標準加密演算法而言具有較低的計算負擔,例如較小的處理循環、較少的處理時間或較低的能量消耗。因此,相較於其中使用簡化加密的情形,當使用標準加密時,記憶體裝置110或主機裝置120或者該二者相較於使用簡化加密花費更多的時間來對內容區塊進行加密或解密或耗費更多的能量來進行該些密碼操作或者存在該兩種現象。藉由此種方式,混合利用標準加密演算法與簡化加密演算法進行局部加密,可獲得適當的安全性,同時相較於其中使用僅標準加密演算法的傳統情形而言,可進一步使計算負擔降低。
在一些實施例中,計算負擔亦藉由利用簡化加密演算法對每一區段中較大數量的明文內容區塊(相較於區段中利用標準加密演算法而加密的明文內容區塊的數量而言)進行加密來降低。舉例而言,如圖所示,在區段332中,由一個明文內容區塊P(1)構成的子集利用加密演算法A1(在此實施例中,加密演算法A1可以是標準加密演算法)而加密,但由多個內容區塊P(2)、……、P(N)構成的較大子集則利用加密演算法A2(在此實施例中,加密演算法A2可以是簡化加密演算法)而加密。相似地,在區段334中,由一個內容區塊P(N+1)構成的子集利用加密演算法A1而加密,但由多個內容區塊P(N+2)、……、P(2N)構成的較大子集則利用加密演算法A2而加密。此外,機制300D的計算負擔相較於機制300C的計算負擔而言較小,乃因相較於機制300C(例如,每一區段中所有明文內容區塊皆被加密)而言,機制300D中有較少數量的明文內容區塊被加密(例如,每一區段中有一些明文內容區塊未被加密)。
在一些實施例中,在加密機制300C或300D或者該二者中,在每一區段中使用多於一個標準加密演算法或多於一個簡化加密演算法或者該二者。舉例而言,在此種情形中,區段中的第一明文內容區塊利用加密演算法A1而加密,區段中的第二明文內容區塊利用加密演算法A2而加密,且區段中的第三明文內容區塊利用不同的加密演算法A3(未繪示,在此實施例中,加密演算法A3可以是簡化加密演算法)而加密。作為另一選擇,區段中的第一明文內容區塊利用加密演算法A1而加密,區段中的第二明文內容區塊利用不同的加密演算法A1’ (未繪示,在此實施例中,加密演算法A1’可以是不同於加密演算法A1的另一種標準加密演算法)而加密,而區段中的第三明文內容區塊則利用加密演算法A2而加密。可使用加密演算法的不同排列方案,例如每一區段中兩個或三個標準加密演算法或者每一區段中兩個或三個簡化加密演算法。
在一些實施例中,在加密機制300C或300D或者該二者中使用相似的幾組加密演算法來對不同區段中的內容區塊進行加密。舉例而言,在所有區段中使用相同的加密演算法A1及相同的加密演算法A2,如圖所示。然而,在其他實施例中,在加密機制300C或300D或者該二者中,在不同區段中使用不同的幾組加密演算法。舉例而言,在區段332中所使用的標準加密演算法及/或簡化加密演算法可分別不同於在區段334中所使用的標準加密演算法及/或簡化加密演算法。在一些實施例中,除在每一區段中使用多種加密演算法以外,亦例如以與機制300B中的方式相似的方式使用隨機值。
在一些實施例中,記憶體裝置110及主機裝置120使用預先選擇的值來確定區段中將利用標準加密演算法或簡化加密演算法或者該二者而加密的明文內容區塊的數量,以及將以未加密的形式傳輸的明文內容區塊的數量。舉例而言,慮及其中使用加密機制300D的實施例,第一數值SEC_CNT指示區段中的明文內容區塊的總數量,所述總數量在不同區段之間是相同的。第二數值STD_CNT指示區段中欲利用標準加密演算法而加密的明文內容區塊的數量,且第三數值SMP_CNT指示區段中欲利用簡化加密演算法而加密的明文內容區塊的數量。因此,將保持未加密的內容區塊的數量是藉由從SEC_CNT減去(STD_CNT + SMP_CNT)給出,乃因: STD_CNT + SMP_CNT + (明文內容區塊的數量) = SEC_CNT。
為例示起見,慮及其中內容區段(例如,區段342及344)各自具有五個內容區塊(SEC_CNT=5)並且STD_CNT=1且SMP_CNT=2的實例。在此種情形中,在每一區段中,由於STD_CNT=1,因此一個明文內容區塊(例如,內容區塊P(1)或P(N+1))利用標準加密演算法而加密。另外,在每一區段中,由於SMP_CNT=2,因此兩個明文內容區塊(例如,內容區塊P(2)及P(3)(未示出)或P(N+2)及P(N+3)(未示出))利用簡化加密演算法而加密。由於SEC_CNT - (STD_CNT + SMP_CNT) = 5 - (1+2) = 2,因此,每一區段中的剩餘兩個明文內容區塊以未加密的形式發送。
在一些實施例中,當記憶體裝置110準備向主機裝置120發送安全內容時,記憶體裝置110使用計數器來追蹤(例如,進行計數)區段中利用標準加密演算法而加密的內容區塊的數量(例如,等於STD_CNT)、區段中利用簡化加密演算法而加密的內容區塊的數量(例如,等於SMP_CNT)及區段中以未加密的形式發送的內容區塊的數量(例如,SEC_CNT與(STD_CNT + SMP_CNT)之差)。另外或作為另一選擇,在一些實施例中,當主機裝置120處理因應於讀取請求而從記憶體裝置110接收的安全內容時,主機裝置120使用計數器來追蹤(例如,進行計數)區段中由主機裝置120利用標準加密演算法而解密的內容區塊的數量(例如,等於STD_CNT)、區段中由主機裝置120利用簡化加密演算法而解密的內容區塊的數量(例如,等於SMP_CNT)及區段中由主機裝置120以未加密的形式接收的剩餘內容區塊的數量(例如,SEC_CNT - (STD_CNT + SMP_CNT))。下文參照進程600及700詳細闡述預先選擇的值的使用。
在一些實施例中,數值SEC_CNT、STD_CNT及SMP_CNT儲存於記憶體裝置110中(例如,暫存器114中)。在其他實施例中,數值SEC_CNT、STD_CNT及SMP_CNT儲存於儲存記憶體116(例如,晶載記憶體(processor on-chip memory))中的記憶位置中。在一些實施例中,數值SEC_CNT、STD_CNT及SMP_CNT能夠例如由使用者進行配置。在一些實施例中,使用者藉由耦接至主機裝置120的使用者介面來設定SEC_CNT、STD_CNT及SMP_CNT的值,且所述值隨後被儲存於記憶體裝置110中。
在一些實施例中,加密內容區塊的數量、加密內容區塊的相對排列、所使用的加密演算法或該些的任何適合的組合在各個讀取操作之間不同。圖3E示出加密機制300E,其中由分散的明文內容區塊構成的一或多個群組被加密,而剩餘的明文內容區塊則未被加密。舉例而言,如圖所示,在一些實施例中,內容區塊P(1)、P(2)、P(3)、P(4)及P(6) (在此實施例中,內容區塊P(1)、P(2)、P(3)、P(4)及P(6)為明文內容區塊)被加密以產生相應的內容區塊C(1)、C(2)、C(3)、C(4)及C(6) (在此實施例中,內容區塊C(1)、C(2)、C(3)、C(4)及C(6)為密文內容區塊),而剩餘的明文內容區塊(例如,內容區塊P(5)及P(N))則未被加密。可使用不同的加密機制來對內容區塊進行加密。舉例而言,內容區塊P(1)及P(3)利用加密演算法A1而加密以分別產生內容區塊C(1)及C(3),而內容區塊P(2)、P(4)及P(6)則利用加密演算法A2而加密以產生內容區塊C(2)、C(4)及C(6)。在一些實施例中,加密演算法A1是標準加密演算法且加密演算法A2是簡化加密演算法。在一些其他實施例中,加密演算法A1是簡化加密演算法且加密演算法A2是標準加密演算法。
如圖所示,在一些實施例中,利用一種加密演算法而加密的內容區塊(例如,內容區塊P(1)及P(3))可與利用不同的加密演算法而加密的內容區塊(例如,內容區塊P(2)及P(4))混合。此外,在一些實施例中,加密內容區塊(例如,內容區塊C(4)及C(6))可與未加密內容區塊(例如,明文內容區塊P(5))混合。在一些其他實施例中,利用任何特定的專用加密演算法(加密演算法A1或A2)而加密的內容區塊是連續的。另外或作為另一選擇,在一些實施例中,加密內容區塊是連續的且未加密內容區塊亦是連續的。
在一些實施例中,利用加密演算法A1或加密演算法A2或者該二者而加密的內容區塊的數量在各個讀取操作之間不同。在一些實施例中,利用加密演算法A1或加密演算法A2或者該二者而加密的內容區塊的相對排列以及加密內容區塊的數量在各個讀取操作之間不同。在一些實施例中,應用加密演算法A1或加密演算法A2的次序在各個讀取操作之間不同。
因此,在使用加密機制300E的實施例中,加密內容區塊及未加密內容區塊的數量、加密內容區塊及未加密內容區塊的相對排列、所使用的加密演算法、或應用一或多種加密演算法的次序或者該些的任何適合的組合在各個讀取操作之間不同。在此種實施例中,加密操作與解密操作的相關參數(例如加密內容區塊及未加密內容區塊的數量、利用第一加密演算法或第二加密演算法而加密的內容區塊的數量、所使用的演算法、應用所述演算法的次序、或加密內容區塊及未加密內容區塊的相對排列以及其他參數)在主機裝置120與記憶體控制器112之間交換以成功地進行讀取操作。在此種實施例中,所述參數規定加密內容區塊及未加密內容區塊的位置,而非未使用的計數器值。
圖4示出讀取從記憶體裝置110接收的安全內容的進程400的實例。在一些實施例中,進程400是由主機裝置120(例如,利用處理器122)在因應於讀取命令從記憶體裝置110接收安全內容時執行。因此,以下部分參照主機裝置120來闡述進程400。然而,進程400亦可由其他裝置執行。
進程400在主機裝置120從從記憶體接收的安全內容中選擇內容區塊時開始。舉例而言,主機裝置120向記憶體裝置110發送讀取命令。作為響應,記憶體裝置110以安全版本發送回所請求的內容,其中安全內容包括多個區段,每一區段具有一或多個內容區塊。舉例而言,記憶體裝置110發送回加密密文內容區塊與未加密明文內容區塊以及簽章區塊的混合體,例如參照圖2所述的內容區塊C(1)、P(2)、……、P(N)、C(N+1)、P(N+2)、……、P(2N)以及CRC 202。每一區段中的內容區塊的子集以密文形式加密(例如,利用先前所述加密演算法(例如AES、DES、RC5、ECC、XOR或FPE)中的一者),而每一區段中的剩餘內容區塊則為未加密明文形式。舉例而言,內容區塊C(1)及C(N+1)是加密密文內容區塊,而內容區塊P(2)、……、P(N)、P(N+2)、……、P(2N)則為未加密明文內容區塊。在接收安全內容時,主機裝置120處理內容的每一區段。在處理區段的同時,主機裝置120選擇所述區段中的內容區塊。
主機裝置120判斷內容區塊是否被加密(404)。舉例而言,對於所選擇內容區塊,主機裝置120檢查所述內容區塊是加密密文還是未加密明文。在一些實施例中,區段內的特定內容區塊被加密,區段內的加密內容區塊及未加密內容區塊的配置為記憶體裝置110與主機裝置120二者所知曉(例如,藉由早前的「握手(handshake)」訊息交換)。舉例而言,在一些實施例中,使用加密機制300B,其中每一區段中的第一內容區塊被加密,而所述區段中的剩餘內容區塊則未被加密。因此,藉由在早前的握手機制中與記憶體裝置110就特定加密機制達成一致,主機裝置120將知曉何時處理區段、所述區段內的哪些內容區塊被加密。作為另一實例,在一些實施例中,使用加密機制300E,其中,對於每一讀取操作,不同數量的內容區塊被加密,加密內容區塊及未加密內容區塊的相對排列不同,所使用的所述一或多種加密演算法不同,或者利用不同加密演算法而加密的內容區塊的排列有所不同,或者存在該些參數的任何適合的組合。因此,藉由利用握手機制與記憶體裝置110交換該些特定參數,主機裝置120將知曉何時針對讀取操作處理內容區塊、哪些內容區塊被加密或所使用的加密演算法或者該二者。
若主機裝置120確定內容區塊被加密,則主機裝置120將內容區塊解密成明文(406)。舉例而言,主機裝置120確定所選擇內容區塊是當前區段中被加密(例如,利用加密機制300B)的第一內容區塊。基於此判斷,主機裝置120對內容區塊進行解密以獲得對應的明文。如先前所述,主機裝置120使用與記憶體裝置110所使用的密碼機制互補的密碼機制來進行加密。舉例而言,主機裝置120對內容區塊C(1)及C(N+1)進行解密以分別獲得對應的內容區塊P(1)及P(N+1)。
在一些實施例中,在對內容區塊進行解密時,結果為隨機值與明文內容的組合(例如,當使用加密機制300B時)。在此種情形中,在對內容區塊進行解密之後,主機裝置120從結果移除隨機值以獲得明文內容。
另一方面,若主機裝置120確定內容區塊未被加密,則主機裝置120直接從內容區塊獲得明文內容(408)。舉例而言,主機裝置120確定所選擇內容區塊是當前區段中未被加密(例如,利用加密機制300B)的第二內容區塊或後續的內容區塊。基於此判斷,主機裝置120提取內容區塊的明文內容。舉例而言,主機裝置120確定內容區塊是P(2)、P(N)、P(N+2)或P(2N)中的一者,主機裝置120在不進行解密的條件下直接從其獲得明文。
主機裝置120判斷是否已獲得完整的明文內容(410)。舉例而言,主機裝置120檢查其是否已完成對從記憶體裝置110接收的安全內容的所有區段中的所有內容區塊的處理。
若主機裝置120確定尚未獲得完整的明文內容,則主機裝置120繼續處理從記憶體裝置110接收的安全內容的剩餘區段,選擇並處理剩餘區段的內容區塊(402)-(408)。另一方面,若主機裝置120確定已獲得完整的明文內容,則主機裝置120對明文內容計算簽章(412)。舉例而言,主機裝置120對所有區段中已被其處理的明文內容區塊(例如內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N))計算數位簽章(例如CRC 204)。如先前所述,主機裝置120使用適合的密碼演算法(例如,CRC、MD5或SHA)來計算簽章。主機裝置120所使用的密碼演算法與被記憶體裝置110用於在向主機裝置120發送數位簽章之前對所請求內容產生數位簽章的演算法匹配。
主機裝置120檢查所計算出的簽章是否與所接收的簽章匹配(414)。舉例而言,主機裝置120比較其在(412)處計算出的數位簽章(例如,CRC 204)與被其作為安全內容的一部分而從記憶體裝置110接收的數位簽章(例如,CRC 202)。
若所計算出的簽章不與所接收的簽章匹配,則主機裝置120捨棄明文內容(416)。舉例而言,若主機裝置120確定其在(412)處計算出的簽章(例如,簽章CRC 204)不與被其作為安全內容的一部分而從記憶體裝置110接收的簽章(例如,簽章CRC 202)匹配,則主機裝置120確定從記憶體裝置110接收的安全內容已被偽造或篡改,且因此捨棄其從安全內容獲得的明文內容(例如,內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N))。
另一方面,若所計算出的簽章與所接收的簽章匹配,則主機裝置120接受明文內容(418)。舉例而言,若主機裝置120確定在(412)處計算出的簽章(例如,簽章CRC 204)與被作為安全內容的一部分而從記憶體裝置110接收的簽章(例如,簽章CRC 202)匹配,則主機裝置120確定從記憶體裝置110接收的安全內容合法,且因此接受從安全內容獲得的明文內容(例如,內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N))。主機裝置120隨後對安全內容執行進一步的處理。舉例而言,若所請求內容為啟動碼,則主機裝置120執行啟動碼。
圖5示出在主機裝置120與記憶體裝置110之間對安全性機制進行同步的進程500的實例。在一些實施例中,進程500是由記憶體裝置110(例如,由記憶體控制器112)或主機裝置120(例如,由處理器122)或者該二者執行以確定將由記憶體裝置110及主機裝置120使用的密碼加密/解密、簽章產生/驗證或隨機值更新中的一或多者。因此,以下部分參照記憶體裝置110及主機裝置120來闡述進程500。然而,進程500亦可由其他裝置執行。
在一些實施例中,進程500是在安全記憶體讀取操作初始化期間(例如,當主機裝置120或記憶體裝置110或者該二者通電時)執行。在一些實施例中,進程500是與上述進程400或者下文所述進程600或700相結合地執行,以及在上述進程400或者下文所述進程600或700之前執行。
進程500在接收到裝置通訊(502)時開始。舉例而言,主機裝置120可從記憶體裝置110接收握手訊息以就密碼加密/解密、簽章產生/驗證或隨機值初始化達成一致,進而使得安全內容可在所述兩個裝置之間成功交換。作為另一選擇,記憶體裝置110可從主機裝置120接收握手訊息以就密碼加密/解密、簽章產生/驗證或隨機值初始化達成一致,進而使得安全內容可在所述兩個裝置之間成功交換。
對裝置通訊進行認證(504)。舉例而言,在一些實施例中,在從記憶體裝置110接收握手訊息時,主機裝置120檢查與所述訊息一起發送的數位簽章以判斷所述訊息是否確實由記憶體裝置110發送,以及證實所述訊息未被偽造或篡改。作為另一選擇,在一些實施例中,在從主機裝置120接收握手訊息時,記憶體裝置110檢查與所述訊息一起發送的數位簽章,以判斷所述訊息是否由主機裝置120發送以及證實所述訊息未被偽造或篡改。
判斷認證是否成功(506)。舉例而言,在一些實施例中,在對從記憶體裝置110接收的握手訊息進行認證時,主機裝置120判斷與所述訊息一起發送的數位簽章是否被成功驗證。作為另一選擇,在一些實施例中,在對從主機裝置120接收的握手訊息進行認證時,記憶體裝置110判斷與所述訊息一起發送的數位簽章是否被成功驗證。
若認證未成功,則中止進程(508)。舉例而言,若主機裝置120無法成功驗證與握手訊息一起從記憶體裝置110發送的數位簽章,則主機裝置120拒絕來從記憶體裝置110的握手請求。作為另一選擇,若記憶體裝置110無法成功驗證與握手訊息一起從主機裝置120發送的數位簽章,則記憶體裝置110拒絕來從主機裝置120的握手請求。
另一方面,若認證成功,則對隨機值與mac_count進行同步,並設定計數器(510)。舉例而言,若主機裝置120成功驗證與握手訊息一起從記憶體裝置110發送的數位簽章,則主機裝置120接受來從記憶體裝置110的握手請求並繼續操作以對用於從記憶體裝置110接收安全內容的參數進行同步。作為另一選擇,若記憶體裝置110成功驗證與握手訊息一起從主機裝置120發送的數位簽章,則記憶體裝置110接受來從主機裝置120的握手請求並繼續進行以對用於向主機裝置120發送安全內容的參數進行同步。
所述參數包括隨機值及mac_count的初始值。在此背景下,mac_count是用於確定隨機值被重覆使用的次數的位元計數器(例如,8位元計數器或16位元計數器)。舉例而言,對於8位元mac_count,隨機值可被重覆使用256次(乃因mac_count值的範圍介於0至255)。每當使用隨機值時,便對mac_count計數器進行遞增。當計數器值達到255時,對隨機值進行再新(例如,產生新的隨機值)且將mac_count值重置為0。藉由此種方式,mac_count參數被用於降低與頻繁改變隨機值以防止重放攻擊相關聯的負擔。
所述參數亦包括以下一系列參數:加密/解密演算法、簽章演算法、密鑰種子(key seed)以及STD_CNT(例如,每區段有多少明文內容區塊將利用所選擇標準加密演算法而加密)、SMP_CNT(例如,每區段有多少明文內容區塊將利用所選擇簡化加密演算法而加密)及SEC_CNT(例如,每區段有多少內容區塊將包括於每一區段中)的值。
在一些實施例中,握手訊息自身中包括所述參數的值。在此種情形中,主機裝置120接受與握手訊息一起從記憶體裝置110發送的值。作為另一選擇,記憶體裝置110接受與握手訊息一起從主機裝置120發送的值。在其他實施例中,在接受握手訊息之後,主機裝置120或記憶體裝置110(視情形而定)與其他裝置進行進一步的訊息交換以就上述參數的值達成一致。
一旦就參數值達成一致,記憶體裝置110便因應於讀取命令而向主機裝置120發送安全內容,從而利用達成一致的參數值而使所述內容安全,且主機裝置120依據達成一致的參數值來處理安全內容。
另外,在一些實施例中,接收並處理隨機值改變請求(512)。舉例而言,在如參照(502)-(510)闡述的初始成功握手訊息交換之後,記憶體裝置110或主機裝置120可不時地更新隨機值。為執行更新,向另一裝置發送隨機值改變請求(例如,對隨機值使用新的值),且接收裝置處理隨機值改變請求以將隨機值的所述新值與其在本地儲存的值進行同步。
圖6示出讀取從記憶體裝置110接收的安全內容的進程600的實例。在一些實施例中,進程600是由主機裝置120執行以因應於讀取命令讀取從記憶體裝置110接收的安全內容,其中利用加密機制300D而使所述內容安全。因此,以下部分參照主機裝置120來闡述進程600。然而,進程600亦可由其他裝置執行。
進程600在主機裝置120將計數器初始化(602)時開始。舉例而言,如先前所述,在一些實施例中,主機裝置120使用計數器來確定在主機裝置120從記憶體裝置110接收的安全內容的每一區段中,所述區段中由主機裝置120利用標準加密演算法而解密的內容區塊的數量(例如,等於STD_CNT)、所述區段中由主機裝置120利用簡化加密演算法而解密的內容區塊的數量(例如,等於SMP_CNT)及所述區段中由主機裝置120作為未加密明文接收的剩餘內容區塊的數量(例如,SEC_CNT - (STD_CNT + SMP_CNT))。如先前所述,SEC_CNT、STD_CNT及SMP_CNT的值是由主機裝置120及記憶體裝置110預先選擇且主機裝置120與記憶體裝置110就所述值達成一致。
在此種實施例中,在處理安全內容的每一所選擇區段的過程開始時,主機裝置120選擇與區段對應的內容區塊並將其計數器初始化(例如,藉由將計數器值設定為零)。舉例而言,主機裝置120向記憶體裝置110發送讀取命令,且作為響應,記憶體裝置110以安全版本發送回所請求的內容,所述內容包括加密密文內容區塊及未加密明文內容區塊以及簽章區塊的混合體,例如內容區塊C(1)、C(2)、……、P(N)、C(N+1)、C(N+2)、……、P(2N)以及CRC 202。每一區段中的內容區塊的子集以密文形式加密,而每一區段中的剩餘內容區塊則為未加密明文形式。舉例而言,如圖3D中所示,在區段342中,內容區塊C(1)及C(2)是加密密文內容區塊,而內容區塊P(N)則為未加密明文內容區塊;且在區段344中,內容區塊C(N+1)及C(N+2)是加密密文內容區塊,而內容區塊P(2N)則為未加密明文內容區塊。在接收安全內容時,主機裝置120處理內容的每一區段。在藉由選擇區段中的第一內容區塊(例如,內容區塊C(1)或C(N+1))來選擇用於處理的區段的同時,主機裝置120將計數器值初始化。
主機裝置120判斷計數器的值是否小於CNT_1(604)。舉例而言,利用加密機制300D,在一些實施例中,主機裝置120按以下順序處理所選擇區段中的內容區塊且在處理每一內容區塊之後使計數器值遞增一:利用標準加密演算法對內容區塊的第一子集(例如,等於STD_CNT的值)進行解密,利用簡化加密演算法對內容區塊的第二子集(例如,等於SMP_CNT的值)進行解密,而區段中的剩餘內容區塊則未被加密(例如,等於SEC_CNT – (STD_CNT + SMP_CNT) 的值)。為例示起見,作為實例,在圖3D中的機制300D的一些實施例中,STD_CNT = 1且SMP_CNT = 1,此指示在區段342中,內容區塊C(1)利用標準加密演算法而加密(例如,STD_CNT = 1)且內容區塊C(2)利用簡化加密演算法而加密(例如,SMP_CNT = 1),而剩餘內容區塊(例如P(N))則為未加密明文內容區塊。相似地,在區段344中,內容區塊C(N+1)及C(N+2)分別為利用標準加密演算法及簡化加密演算法而加密的密文內容區塊,而內容區塊P(2N)則為未加密明文內容區塊。在此種實施例中,CNT_1 == STD_CNT。因此,在此種實施例中,當讀取所接收安全內容的所選擇區段中的所選擇內容區塊時,主機裝置120遵循以上順序而首先藉由將其計數器值與STD_CNT加以比較來檢查當前所選擇區段中利用標準加密的所有密文內容區塊是否皆已被處理。
在一些實施例中,標準加密演算法及簡化加密演算法的使用次序相反。在此種實施例中,按以下順序處理每一區段中的內容區塊:利用簡化加密演算法對內容區塊的第一子集(例如,等於SMP_CNT的值)進行加密或解密,利用標準加密演算法對內容區塊的第二子集(例如,等於STD_CNT的值)進行加密或解密,而區段中的剩餘內容區塊則未被加密。作為例示性實例,在圖3D中的機制300D的一些實施例中,SMP_CNT = 1且STD_CNT = 1。在此種實施例中,在區段342中,內容區塊C(1)利用簡化加密演算法而加密(例如,SMP_CNT = 1)且內容區塊C(2)利用標準加密演算法而加密(例如,STD_CNT = 1),而剩餘內容區塊(例如內容區塊P(N))則為未加密明文內容區塊。相似地,在區段344中,內容區塊C(N+1)及C(N+2)分別為利用簡化加密演算法及標準加密演算法而加密的密文內容區塊,而內容區塊P(2N)則為未加密明文內容區塊。在此種實施例中,CNT_1 == SMP_CNT。因此,在此種實施例中,當讀取所接收安全內容的所選擇區段中的所選擇內容區塊時,主機裝置120遵循以上順序而首先藉由將其計數器值與SMP_CNT加以比較來檢查當前所選擇區段中利用標準加密的所有密文內容區塊是否皆已被處理。
若主機裝置120確定計數器的值小於CNT_1,則主機裝置120利用第一加密演算法將當前所選擇區段中的當前所選擇密文內容區塊解密成明文(606)。舉例而言,在其中CNT_1 == STD_CNT的實施例中,第一加密演算法是標準加密演算法。在此種實施例中,當計數器值小於STD_CNT時,則主機裝置120確定例如區段中的內容區塊的第一子集中利用標準加密演算法而加密的所有密文內容區塊並非皆已被處理。因此,對於區段的當前所選擇密文內容區塊,主機裝置120利用標準加密演算法對密文進行解密。舉例而言,在此種實施例中,主機裝置120利用標準加密演算法對區段342中的內容區塊C(1)進行解密,以獲得對應的內容區塊P(1)。相似地,當處理區段344時,主機裝置120利用標準加密演算法對內容區塊C(N+1)進行解密,以獲得對應的內容區塊P(N+1)。
作為另一實例,在其中CNT_1 == SMP_CNT的實施例中,第一加密演算法是簡化加密演算法。在此種實施例中,當計數器值小於SMP_CNT時,則主機裝置120確定例如區段中的內容區塊的第一子集中利用簡化加密演算法而加密的所有密文內容區塊並非皆已被處理。因此,對於區段的當前所選擇密文內容區塊,主機裝置120利用簡化加密演算法對密文進行解密。舉例而言,在此種實施例中,主機裝置120利用簡化加密演算法對區段342中的內容區塊C(1)進行解密,以獲得對應的內容區塊P(1)。相似地,當處理區段344時,主機裝置120利用簡化加密演算法對內容區塊C(N+1)進行解密,以獲得對應的內容區塊P(N+1)。
另一方面,若主機裝置120確定計數器的值等於或大於CNT_1,則主機裝置120進一步檢查計數器的值是否小於CNT_1 + CNT_2(608)。舉例而言,在其中CNT_1 == STD_CNT的實施例中,CNT_2 == SMP_CNT。在此種實施例中,當區段中的內容區塊的第一子集已被處理、進而使得計數器的值至少等於STD_CNT時,主機裝置120接著藉由將經處理的內容區塊的總數量與STD_CNT + SMP_CNT加以比較、例如利用簡化加密演算法來檢查區段中的內容區塊的第二子集中是否有任何內容區塊仍待處理。在其中CNT_1 == SMP_CNT的實施例中,CNT_2 == STD_CNT。在此種實施例中,當區段中的內容區塊的第一子集已被利用簡化加密演算法處理、進而使得計數器的值至少等於SMP_CNT時,主機裝置120接著藉由將經處理的內容區塊的總數量與SMP_CNT + STD_CNT加以比較、例如利用標準加密演算法來檢查區段中的內容區塊的第二子集中是否有任何內容區塊仍待處理。
若主機裝置120確定計數器的值小於CNT_1 + CNT_2,則主機裝置120利用第二加密演算法將密文內容解密成明文(610)。舉例而言,在其中CNT_1 == STD_CNT且CNT_2 == SMP_CNT的實施例中,第二加密演算法是簡化加密演算法(而第一加密演算法則為標準加密演算法,如上所述)。在此種實施例中,當計數器值大於STD_CNT但小於STD_CNT + SMP_CNT時,則主機裝置120確定例如區段中的內容區塊的第二子集中利用簡化加密演算法而加密的所有密文內容區塊並非皆已被處理。因此,對於區段的當前所選擇密文內容區塊,主機裝置120利用簡化加密演算法對密文進行解密。舉例而言,主機裝置120利用簡化加密演算法對區段342中的內容區塊C(2)進行解密,以獲得對應的內容區塊P(2)。相似地,當處理區段344時,主機裝置120利用簡化加密演算法對內容區塊C(N+2)進行解密,以獲得對應的內容區塊P(N+2)。作為另一實例,在其中CNT_1 == SMP_CNT且CNT_2 == STD_CNT的實施例中,第二加密演算法是標準加密演算法(而第一加密演算法則為簡化加密演算法,如上所述)。在此種實施例中,當計數器值大於SMP_CNT但小於SMP_CNT + STD_CNT時,則主機裝置120確定例如區段中的內容區塊的第二子集中利用標準加密演算法而加密的所有密文內容區塊並非皆已被處理。因此,對於區段的當前所選擇密文內容區塊,主機裝置120利用標準加密演算法對密文進行解密。舉例而言,主機裝置120利用標準加密演算法對區段342中的內容區塊C(2)進行解密,以獲得對應的內容區塊P(2)。相似地,當處理區段344時,主機裝置120利用標準加密演算法對內容區塊C(N+2)進行解密,以獲得對應的內容區塊P(N+2)。
另一方面,若主機裝置120確定計數器的值等於或大於CNT_1 + CNT_2,則主機裝置120從未加密內容區塊獲得明文內容(612)。舉例而言,當區段中的內容區塊的第一子集及第二子集已被處理、進而使得計時器的值至少等於CNT_1 + CNT_2時,則區段中的剩餘內容區塊為未加密內容區塊。因此,主機裝置120在不進行任何進一步的密碼操作的條件下從該些未加密內容區塊獲得明文內容。舉例而言,主機裝置120從區段342中的內容區塊P(N)獲得明文內容。相似地,當處理區段344時,主機裝置120從內容區塊P(2N)獲得明文內容。
在處理每一內容區塊之後(例如,在利用第一加密演算法對所選擇內容區塊進行解密(606)或利用第二加密演算法對所選擇內容區塊進行解密(610)之後,或在從未加密內容區塊獲得明文內容(612)之後),主機裝置120檢查是否已從所接收安全內容獲得完整的明文內容(614)。若主機裝置120確定尚未獲得完整的明文內容(例如,所有區段或區段中的所有內容區塊並非皆已被處理),則主機裝置120對計數器進行遞增(616)。舉例而言,在處理區段中的每一內容區塊之後,若主機裝置120確定在當前區段或在新區段中有額外的內容區塊仍待處理,則主機裝置120對其計數器值進行遞增並繼續操作以選擇當前區段或新區段中的另一內容區塊。舉例而言,在處理區段342中的內容區塊C(1)之後,主機裝置120確定區段中有額外的內容區塊(例如內容區塊C(2)及P(N))待處理。主機裝置接著對計數器進行遞增並選擇區段中的下一內容區塊(例如內容區塊C(2))。
主機裝置120判斷計數器的值是否等於SEC_CNT(618)。舉例而言,主機裝置120判斷當前區段中的所有內容區塊(密文內容區塊的第一子集及第二子集以及剩餘明文內容區塊)是否皆已被處理,此是由主機裝置120計數器的值等於SEC_CNT(例如,區段中的內容區塊的總數量)來指示。
若主機裝置120確定計數器的值不等於SEC_CNT(618),則主機裝置120繼續處理當前所選擇區段中的額外區塊(604)-(616)。舉例而言,當當前所選擇區段中的(內容區塊的第一子集中(604)-(606)或內容區塊的第二子集中(608)-(610)或者剩餘明文內容區塊中(612)的)所有內容區塊並非皆已被處理時,則主機裝置120計數器的值小於SEC_CNT。因此,主機裝置120繼續處理當前區段中的剩餘內容區塊。舉例而言,在處理區段342中的內容區塊C(2)之後,主機裝置120確定區段342中的所有內容區塊並非皆已被處理,且計數器值小於SEC_CNT。主機裝置120接著選擇區段342中的下一內容區塊以進行處理。
另一方面,若主機裝置120確定計數器的值等於SEC_CNT(618),則主機裝置120在如參照(604)-(616)所述的操作之後選擇新的區段並將計數器值初始化(602)以處理所新選擇的區段中的內容區塊。舉例而言,在處理區段342中的內容區塊P(N)之後,主機裝置120確定區段342中的所有內容區塊皆已被處理,且計數器值等於SEC_CNT。主機裝置120接著將其計數器值重置為零並處理安全內容的下一區段(例如,區段344)。
回到(614),若主機裝置120確定已獲得完整的明文內容(例如,所接收安全內容的所有區段皆已被處理),則主機裝置120對明文內容計算簽章(620)。舉例而言,在如上所述處理所接收內容的所有區段中的所有內容區塊之後,主機裝置120對其已獲得的完整的明文內容計算數位簽章。舉例而言,主機裝置120對所有區段中已被其處理的明文內容區塊(例如內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N))計算數位簽章(例如CRC 204)。如先前所述,主機裝置120使用適合的密碼演算法(例如,CRC、MD5或SHA)來計算簽章。主機裝置120所使用的密碼演算法與被記憶體裝置110用於在向主機裝置120發送數位簽章之前對所請求內容產生數位簽章的演算法匹配。
主機裝置120檢查所計算出的簽章是否與所接收的簽章匹配(622)。舉例而言,主機裝置120比較其計算出的數位簽章(例如,CRC 204)與被其作為安全內容的一部分而從記憶體裝置110接收的數位簽章(例如,CRC 202)。
若所計算出的簽章不與所接收的簽章匹配,則主機裝置120捨棄明文內容(626)。舉例而言,若主機裝置120確定其計算出的簽章(例如,簽章CRC 204)不與被其作為安全內容的一部分而從記憶體裝置110接收的簽章(例如,簽章CRC 202)匹配,則主機裝置120確定從記憶體裝置110接收的安全內容已被偽造或篡改,且因此捨棄其從安全內容獲得的明文內容(例如,內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N))。
另一方面,若所計算出的簽章與所接收的簽章匹配,則主機裝置120接受明文內容(628)。舉例而言,若主機裝置120確定其計算出的簽章(例如,簽章CRC 204)與被其作為安全內容的一部分而從記憶體裝置110接收的簽章(例如,簽章CRC 202)匹配,則主機裝置120確定從記憶體裝置110接收的安全內容合法,且因此接受其從安全內容獲得的明文內容(例如,內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……、P(2N))。主機裝置120隨後對安全內容執行進一步的處理。舉例而言,若所請求內容為啟動碼,則主機裝置120執行啟動碼。
圖7示出產生安全內容以發送至主機裝置120的進程700的實例。在一些實施例中,進程700是由記憶體裝置110執行以因應於來從主機裝置120的讀取命令來產生安全內容,其中所述內容是利用加密機制300D而安全。因此,以下部分參照記憶體裝置110來闡述進程700。然而,進程700亦可由其他裝置執行。
進程700在記憶體裝置110接收讀取命令(702)時開始。舉例而言,記憶體裝置110從主機裝置120接收讀取命令,其中讀取命令請求向主機裝置120發送安全內容(例如,儲存於儲存記憶體116中的啟動碼)。
記憶體裝置110從儲存記憶體擷取所請求內容區塊(704)。舉例而言,記憶體裝置110(例如,記憶體控制器112)對儲存記憶體116進行存取並從儲存記憶體116中的相應記憶位置擷取所請求內容。
記憶體裝置110對明文內容區塊計算簽章(706)。舉例而言,記憶體裝置110擷取包括未加密明文內容區塊P(1)、P(2)、……、P(N)、P(N+1)、P(N+2)、……及P(2N)的所請求內容。記憶體裝置110對該些明文內容區塊計算簽章(例如CRC 202)。
記憶體裝置110選擇明文內容區塊並將計數器初始化(708)。舉例而言,如先前所述,在一些實施例中,記憶體裝置110使用計數器來確定在所請求內容的每一區段中,所述區段中欲利用標準加密演算法而加密的內容區塊的數量(例如,等於STD_CNT)、所述區段中欲利用簡化加密演算法而加密的內容區塊的數量(例如,等於SMP_CNT)及所述區段中欲作為未加密明文發送的剩餘內容區塊的數量(例如,SEC_CNT - (STD_CNT + SMP_CNT))。如先前所述,SEC_CNT、STD_CNT及SMP_CNT的值是由主機裝置120及記憶體裝置110預先選擇且主機裝置120與記憶體裝置110就所述值達成一致。
在此種實施例中,在處理所請求內容的每一所選擇區段的過程開始時,記憶體裝置110選擇與區段對應的內容區塊並將其計數器初始化(例如,藉由將計數器值設定為零)。每一區段中的內容區塊的子集以密文形式加密,而每一區段中的剩餘內容區塊則為未加密明文形式。舉例而言,如圖3D中所示,當藉由選擇相應區段中的第一內容區塊(例如,內容區塊P(1)或P(N+1))來選擇用於處理的區段342或344時,記憶體裝置110將其計數器值初始化為零。
記憶體裝置110判斷計數器的值是否小於CNT_1(710)。舉例而言,在利用加密機制300D的一些實施例中,記憶體裝置110按以下順序處理所選擇區段中的內容區塊且在處理每一內容區塊之後將計數器值遞增一:利用標準加密演算法對內容區塊的第一子集(例如,等於STD_CNT的值)進行加密,利用簡化加密演算法對內容區塊的第二子集(例如,等於SMP_CNT的值)進行加密,而區段中的剩餘內容區塊則未被加密(例如,等於SEC_CNT - (STD_CNT + SMP_CNT))。為示例起見,作為實例,在圖3D中的機制300D的一些實施例中,STD_CNT = 1且SMP_CNT = 1,此指示在區段342中,記憶體裝置110利用標準加密演算法對內容區塊P(1)進行加密(例如,STD_CNT = 1)且利用簡化加密演算法對內容區塊P(2)進行加密(例如,SMP_CNT = 1),而剩餘內容區塊(例如內容區塊P(N))則被作為未加密明文內容區塊而發送。相似地,在區段344中,記憶體裝置110分別利用標準加密演算法及簡化加密演算法對內容區塊P(N+1)及P(N+2)進行加密,而內容區塊P(2N)則被作為未加密明文內容區塊而發送。在此種實施例中,CNT_1 == STD_CNT。因此,在此種實施例中,當讀取所請求內容的所選擇區段中的所選擇內容區塊時,記憶體裝置110遵循以上順序而首先藉由將其計數器值與STD_CNT加以比較,來檢查當前所選擇區段中欲利用標準加密而加密的所有明文內容區塊是否皆已被處理。
在一些實施例中,以與以上次序相反的次序使用標準加密演算法及簡化加密演算法。在此種實施例中,按以下順序處理每一區段中的內容區塊:利用簡化加密演算法對內容區塊的第一子集(例如,等於SMP_CNT的值)進行加密或解密,利用標準加密演算法對內容區塊的第二子集(例如,等於STD_CNT的值)進行加密或解密,而區段中的剩餘內容區塊則未被加密。作為例示性實例,在圖3D中的機制300D的一些實施例中,SMP_CNT = 1且STD_CNT = 1。在此種實施例中,在區段342中,記憶體裝置110利用簡化加密演算法對內容區塊P(1)進行加密(例如,SMP_CNT = 1)且利用標準加密演算法對內容區塊P(2)進行加密(例如,STD_CNT = 1),而剩餘內容區塊(例如內容區塊P(N))則被作為未加密明文內容區塊而發送。相似地,在區段344中,記憶體裝置110分別利用簡化加密演算法及標準加密演算法對內容區塊P(N+1)及P(N+2)進行加密,而內容區塊P(2N)則被作為未加密明文內容區塊而發送。在此種實施例中,CNT_1 == SMP_CNT。因此,在此種實施例中,當讀取所請求內容的所選擇區段中的所選擇內容區塊時,記憶體裝置110遵循以上順序而首先藉由將其計數器值與SMP_CNT加以比較,來檢查當前所選擇區段中欲利用簡化加密而加密的所有明文內容區塊是否皆已被處理。
若記憶體裝置110確定計數器的值小於CNT_1,則記憶體裝置110利用第一加密演算法對當前所選擇區段中的當前所選擇明文內容區塊進行加密(712)。舉例而言,在其中CNT_1 == STD_CNT的實施例中,第一加密演算法是標準加密演算法。在此種實施例中,當計數器值小於STD_CNT時,則記憶體裝置110確定當前區段中的內容區塊的第一子集中欲利用標準加密演算法而加密的所有明文內容區塊並非皆已被處理。因此,對於區段的當前所選擇明文內容區塊,記憶體裝置110利用標準加密演算法對明文進行加密。舉例而言,記憶體裝置110利用標準加密演算法對區段342中的內容區塊P(1)進行加密,以獲得對應的內容區塊C(1)。相似地,當處理區段344時,記憶體裝置110利用標準加密演算法對內容區塊P(N+1)進行加密,以獲得對應的內容區塊C(N+1)。
作為另一實例,在其中CNT_1 == SMP_CNT的實施例中,第一加密演算法是簡化加密演算法。在此種實施例中,當計數器值小於SMP_CNT時,則記憶體裝置110確定當前區段中的內容區塊的第一子集中欲利用簡化加密演算法而加密的所有明文內容區塊並非皆已被處理。因此,對於區段的當前所選擇明文內容區塊,記憶體裝置110利用簡化加密演算法對明文進行加密。舉例而言,記憶體裝置110利用簡化加密演算法對區段342中的內容區塊P(1)進行加密,以獲得對應的內容區塊C(1)。相似地,當處理區段344時,記憶體裝置110利用簡化加密演算法對內容區塊P(N+1)進行加密,以獲得對應的內容區塊C(N+1)。
另一方面,若記憶體裝置110確定計數器的值等於或大於CNT_1,則記憶體裝置110進一步檢查計數器的值是否小於CNT_1 + CNT_2(714)。舉例而言,在其中CNT_1 == STD_CNT的實施例中,CNT_2 == SMP_CNT。在此種實施例中,當區段中的內容區塊的第一子集已被加密、進而使得計數器的值至少等於STD_CNT時,則記憶體裝置110藉由將經處理的內容區塊的總數量與STD_CNT + SMP_CNT加以比較、例如利用簡化加密演算法來檢查區段中的內容區塊的第二子集中是否有任何內容區塊仍待加密。在其中CNT_1 == SMP_CNT的實施例中,CNT_2 == STD_CNT。在此種實施例中,當區段中的內容區塊的第一子集已被加密、進而使得計數器的值至少等於SMP_CNT時,則記憶體裝置110藉由將經處理的內容區塊的總數量與SMP_CNT + STD_CNT加以比較、例如利用標準加密演算法來檢查區段中的內容區塊的第二子集中是否有任何內容區塊仍待加密。
若記憶體裝置110確定計數器的值小於CNT_1 + CNT_2,則記憶體裝置110利用第二加密演算法對明文內容區塊進行加密(716)。舉例而言,在其中CNT_1 == STD_CNT且CNT_2 == SMP_CNT的實施例中,第二加密演算法是簡化加密演算法(而第一加密演算法則為標準加密演算法,如上所述)。在此種實施例中,當計數器值大於STD_CNT但小於STD_CNT + SMP_CNT時,記憶體裝置110確定區段中的內容區塊的第二子集中的所有明文內容區塊並非皆已被處理。因此,對於區段的當前所選擇密文內容區塊,記憶體裝置110利用簡化加密演算法對明文內容進行加密。舉例而言,記憶體裝置110利用簡化加密演算法對區段342中的內容區塊P(2)進行加密,以獲得對應的內容區塊C(2)。相似地,當處理區段344時,記憶體裝置110利用簡化加密演算法對內容區塊P(N+2)進行加密,以獲得對應的內容區塊C(N+2)。作為另一實例,在其中CNT_1 == SMP_CNT且CNT_2 == STD_CNT的實施例中,第二加密演算法是標準加密演算法(而第一加密演算法則為簡化加密演算法,如上所述)。在此種實施例中,當計數器值大於SMP_CNT但小於SMP_CNT + STD_CNT時,記憶體裝置110確定區段中的內容區塊的第二子集中的所有明文內容區塊並非皆已被處理。因此,對於區段的當前所選擇密文內容區塊,記憶體裝置110利用標準加密演算法對明文內容進行加密。舉例而言,記憶體裝置110利用標準加密演算法對區段342中的內容區塊P(2)進行加密,以獲得對應的內容區塊C(2)。相似地,當處理區段344時,記憶體裝置110利用標準加密演算法對內容區塊P(N+2)進行加密,以獲得對應的內容區塊C(N+2)。
另一方面,若記憶體裝置110確定計數器的值等於或大於CNT_1 + CNT_2,則記憶體裝置110將明文內容區塊以其未加密形式加以保留(718)。舉例而言,當區段中的內容區塊的第一子集及第二子集已被處理、進而使得計時器的值至少等於CNT_1 + CNT_2時,則區段中的剩餘內容區塊不被加密。因此,記憶體裝置110在不進行任何進一步的密碼操作的條件下保留該些未加密內容區塊的明文內容。舉例而言,記憶體裝置110將區段342中的內容區塊P(N)以未加密形式加以保留。相似地,當處理區段344時,記憶體裝置110將內容區塊P(2N)以未加密形式加以保留。
在一些實施例中,記憶體裝置110藉由利用單一加密演算法(例如,利用加密機制300A或300B)對區段中的內容區塊的子集進行加密來處理所請求內容。在此種實施例中,進程700中不包括操作(714)及(716)。
在處理每一內容區塊之後(例如,在利用第一加密演算法對所選擇內容區塊進行加密(712)或利用第二加密演算法對所選擇內容區塊進行加密(716)之後,或在保留來從未加密內容區塊的明文內容(718)之後),記憶體裝置110檢查是否已處理所請求內容的完整的明文內容(720)。若記憶體裝置110確定尚未處理完整的明文內容(例如,所有區段或區段中的所有內容區塊並非皆已被處理),則記憶體裝置110對計數器進行遞增(722)。舉例而言,在處理區段中的每一內容區塊之後,若記憶體裝置110確定在當前區段或在新區段中有額外的內容區塊仍待處理,則記憶體裝置110對其計數器值進行遞增並繼續操作以選擇當前區段或新區段中的另一內容區塊。舉例而言,在處理區段342中的內容區塊P(1)之後,記憶體裝置110確定區段中有額外的內容區塊(例如內容區塊P(2)及P(N))待處理。記憶體裝置110接著對計數器進行遞增並選擇區段中的下一內容區塊(例如內容區塊P(2))。
記憶體裝置110判斷計數器的值是否等於SEC_CNT(724)。舉例而言,記憶體裝置110判斷當前區段中的所有內容區塊(明文內容區塊的第一子集及第二子集以及剩餘明文內容區塊)是否皆已被處理,此是由記憶體裝置110計數器的值等於SEC_CNT(例如,區段中的內容區塊的總數量)來指示。
若記憶體裝置110確定計數器的值不等於SEC_CNT(724),則記憶體裝置110繼續處理當前所選擇區段中的額外區塊(710)-(718)。舉例而言,當當前所選擇區段中的(內容區塊的第一子集中(710)-(712)或內容區塊的第二子集(714)-(716)中或者剩餘明文內容區塊中(718)的)所有內容區塊並非皆已被處理時,則記憶體裝置110計數器的值小於SEC_CNT。因此,記憶體裝置110繼續處理當前區段中的剩餘內容區塊。舉例而言,在處理區段342中的內容區塊P(2)之後,記憶體裝置110確定區段342中的所有內容區塊並非皆已被處理,且計數器值小於SEC_CNT。記憶體裝置110接著選擇區段342中的下一內容區塊以進行處理。
另一方面,若記憶體裝置110確定計數器的值等於SEC_CNT(724),則記憶體裝置110在如參照(708)-(720)所述的操作之後選擇新的區段並將計數器值初始化(708)以處理所新選擇的區段中的內容區塊。舉例而言,在處理區段342中的內容區塊P(N)之後,記憶體裝置110確定區段342中的所有內容區塊皆已被處理,且計數器值等於SEC_CNT。記憶體裝置110接著將其計數器值重置為零並處理所請求內容的下一區段(例如,區段344)。
回到(720),若記憶體裝置110確定所有內容區塊皆已被處理(例如,所請求內容的所有區段皆已被處理),則記憶體裝置110向主機裝置120發送具有加密內容區塊及未加密內容區塊以及簽章的安全內容(726)。舉例而言,在如上所述處理所請求內容的所有區段中的所有內容區段之後,記憶體裝置110準備安全內容以使所述安全內容包括經處理的內容區塊(例如內容區塊C(1)、C(2)、……、P(N)、C(N+1)、C(N+2)、……、P(2N))以及數位簽章(例如,CRC 202)。記憶體裝置110接著例如利用匯流排118向主機裝置120發送安全內容。在接收安全內容時,主機裝置120例如參照進程400或進程600所述般處理所述安全內容。
所揭露實例及其他實例可實施為一或多種電腦程式產品,例如編碼於電腦可讀取媒體上以由資料處理設備執行或控制資料處理設備的操作的電腦程式指令的一或多個模組。電腦可讀取媒體可為機器可讀取儲存裝置、機器可讀取儲存基底、記憶體裝置110或者它們中的一或多者的組合。用語「資料處理設備」囊括用於處理資料的所有設備、裝置及機器,包括例如可程式化處理器、電腦或者多個處理器或電腦。除硬體以外,所述設備亦可包括為所討論電腦程式創建執行環境的碼(例如,構成處理器韌體的碼)、協定堆疊、資料庫管理系統、作業系統(operating system)或者它們中的一或多者的組合。
系統可囊括用於處理資料的所有設備、裝置及機器,包括例如可程式化處理器、電腦或者多個處理器或電腦。除硬體以外,系統可包括為所討論電腦程式創建執行環境的碼(例如,構成處理器韌體的碼)、協定堆疊、資料庫管理系統、作業系統或者它們中的一或多者的組合。
電腦程式(亦稱為程式、軟體、軟體應用程式、腳本或碼)可以包括編譯語言或解釋語言在內的任何形式的程式化語言寫入,且其可以包括作為獨立程式或者作為模組、元件、子程式或其他適合用於計算環境中的單元在內的任何形式進行部署。電腦程式不必對應於檔案系統中的檔案。程式可儲存於保存其他程式或資料(例如,儲存於標記語言文件中的一或多個腳本)的檔案的一部分中、儲存於專用於所討論程式的單一檔案中或儲存於多個協調的檔案(例如,儲存一或多個模組、子程式或碼的部分的檔案)中。電腦程式可被部署用於在位於一個地點處的一個電腦上或在分佈於多個地點之間且藉由通訊網路而互連的多個電腦上執行。
本文件中所述的進程及邏輯流程可由執行一或多個電腦程式的一或多個可程式化處理器來執行,以執行本文中所述的功能。所述進程及邏輯流程亦可由專用邏輯電路系統(例如,現場可程式化閘陣列(field programmable gate array,FPGA)或特殊應用積體電路(application specific integrated circuit,ASIC))執行,且設備亦可被實施為專用邏輯電路系統。
適合用於執行電腦程式的處理器包括例如通用微處理器與專用微處理器二者以及任何種類的數位電腦的任意一或多個處理器。適合用於儲存電腦程式指令及資料的電腦可讀取媒體可包括所有形式的非揮發性記憶體、媒體及記憶體裝置。處理器及記憶體可藉由專用邏輯電路系統來補充或者包含於專用邏輯電路系統中。
儘管本文件可闡述諸多細節,然而該些細節不應被解釋為對所主張或可主張的發明範圍的限制,而是應被解釋為對特定實施例特有的特徵的說明。本文件中在不同實施例的背景下闡述的某些特徵亦可結合單一實施例來實施。反之,在單一實施例的背景下闡述的各種特徵亦可單獨地或以任何適合的子組合實施於多個實施例中。此外,儘管以上可將特徵闡述為在某些組合中起作用且甚至最初亦如此主張,然而在一些情形中,可從所主張組合中去除來從所述組合的一或多個特徵,且所主張組合可涉及子組合或子組合的變型。相似地,儘管圖式中以特定次序繪示操作,然而此不應被理解為要求以所示特定次序或以順序次序來執行此種操作或者要求執行所有所示操作以便達成所期望結果。
僅揭露了若干個實例及實施例。可基於所揭露的內容對所述實例及實施例以及其他實施例作出改變、修改及改進。
100:系統 110:記憶體裝置 112:記憶體控制器 114:暫存器 116:儲存記憶體 118:匯流排 120:主機裝置 122:處理器 202、204:CRC/簽章 300A、300B、300C、300D:機制/加密機制 300E:加密機制 312、314、322、324、332、334、342、344:區段 400、500、600、700:進程 402、404、406、408、410、412、414、416、418、502、504、506、508、510、512、602、604、606、608、610、612、614、616、618、620、622、626、628、702、704、706、708、710、712、714、716、718、720、722、724、726:步驟 A1、A2:加密演算法 C(1)、C(2)、C(N+1)、C(N+2)、C(3)、C(4)、C(6)、C(N)、C(2N)、P(1)、P(N+1)、P(2)、P(N+2)、P(3)、P(4)、P(5)、P(6)、P(N)、P(2N):內容區塊
圖1示出對記憶體裝置執行安全讀取操作的系統的實例。 圖2示出安全內容記憶體讀取操作的實例。 圖3A至圖3E示出用於讀取操作的安全內容傳送的加密機制的實例。 圖4示出讀取從記憶體裝置接收的安全內容的進程實例。 圖5示出在主機裝置與記憶體裝置之間對安全性機制進行同步的進程實例。 圖6示出讀取從記憶體裝置接收的安全內容的進程實例。 圖7示出產生安全內容以發送至主機裝置的進程實例。
110:記憶體裝置 118:匯流排 120:主機裝置 202、204:CRC/簽章 C(1)、C(2)、C(N+1)、C(N+2)、P(1)、P(N+1)、P(2)、P(N+2)、P(N)、P(2N):內容區塊

Claims (22)

  1. 一種記憶體裝置的安全讀取方法,包括:在主機裝置處從耦接至所述主機裝置的所述記憶體裝置接收安全資料,所述安全資料包括第一內容區塊及第二內容區塊;由所述主機裝置確定所述第一內容區塊被加密;在確定所述第一內容區塊被加密時,由所述主機裝置對所述第一內容區塊進行解密以獲得對應的第一明文資料;由所述主機裝置確定所述第二內容區塊未被加密;在確定所述第二內容區塊未被加密時,由所述主機裝置從所述第二內容區塊獲得對應的第二明文資料;由所述主機裝置判斷從所述記憶體裝置接收安全資料的過程是否完成;在確定從所述記憶體裝置接收安全資料的過程完成時,由所述主機裝置從簽章區塊獲得與所述安全資料一起由所述記憶體裝置發送的第一簽章;由所述主機裝置對由所述主機裝置所獲得的明文資料計算第二簽章,所述明文資料包括所述第一明文資料及所述第二明文資料;由所述主機裝置將所述第一簽章與所述第二簽章加以比較;以及在所述主機裝置確定所述比較的結果為所述第一簽章等於所述第二簽章的條件下,所述主機裝置將所述明文資料視為合法而 加以接受。
  2. 如申請專利範圍第1項所述的方法,更包括:在由所述主機裝置確定所述比較的結果為所述第一簽章不等於所述第二簽章的條件下,所述主機裝置將所述明文資料視為被破解而加以捨棄。
  3. 如申請專利範圍第1項所述的方法,其中確定所述第一內容區塊被加密包括確定所述第一內容區塊利用第一加密機制而加密,且其中對所述第一內容區塊進行解密包括利用所述第一加密機制對所述第一內容區塊進行解密。
  4. 如申請專利範圍第3項所述的方法,更包括:在所述主機裝置處從所述記憶體裝置接收所述安全資料的第三內容區塊;由所述主機裝置確定所述第三內容區塊利用與所述第一加密機制不同的第二加密機制而加密;以及在確定所述第三內容區塊利用所述第二加密機制而加密時,由所述主機裝置利用所述第二加密機制對所述第三內容區塊進行解密以獲得第三明文資料,其中對包括所述第一明文資料、所述第二明文資料及所述第三明文資料的明文資料計算所述第二簽章。
  5. 如申請專利範圍第4項所述的方法,其中所述主機裝置以多個區段從所述記憶體裝置接收所述安全資料,所述多個區段中的每一者包括加密內容區塊及未加密內容區塊,其中所述主機 裝置包括計數器以對所接收的所述安全資料的內容區塊的數量進行計數,其中確定所述第一內容區塊利用所述第一加密機制而加密包括確定所述計數器的值小於第一臨限值,所述第一臨限值對應於區段中利用所述第一加密機制而加密的內容區塊的數量,確定所述第三內容區塊利用所述第二加密機制而加密包括確定所述計數器的所述值大於第一臨限值但小於第二臨限值,所述第二臨限值對應於區段中利用所述第一加密機制及所述第二加密機制而加密的內容區塊的數量,且確定所述第二內容區塊未被加密包括確定所述計數器的所述值大於所述第二臨限值但小於第三臨限值,所述第三臨限值對應於區段中的內容區塊的總數量。
  6. 如申請專利範圍第5項所述的方法,更包括:在確定從所述記憶體裝置接收安全資料的過程未完成時,對所述計數器進行遞增;判斷所述計數器是否等於所述第三臨限值;在確定所述計數器等於所述第三臨限值的條件下,重置所述計數器以處理從所述記憶體裝置接收的所述安全資料的新區段;以及在確定所述計數器不等於所述第三臨限值的條件下,處理當前區段的一或多個額外內容區塊,所述一或多個額外內容區塊包括利用所述第一加密機制而加密的內容區塊、利用所述第二加密 機制而加密的內容區塊或未加密內容區塊中的至少一者。
  7. 如申請專利範圍第5項所述的方法,其中所述第一臨限值、所述第二臨限值或所述第三臨限值中的一或多者能夠由使用者進行配置,且其中所述第一臨限值、所述第二臨限值或所述第三臨限值中的一或多者儲存於耦接至所述記憶體裝置的暫存器中。
  8. 如申請專利範圍第4項所述的方法,其中從所述記憶體裝置接收的所述安全資料包括多個加密內容區塊及未加密內容區塊,其中所述主機裝置與所述記憶體裝置接收額外資訊,所述額外資訊是關於所述加密內容區塊及所述未加密內容區塊在所述安全資料中的相對排列、所述第一加密機制或所述第二加密機制中的至少一者,其中確定所述第一內容區塊利用所述第一加密機制而加密包括對從所述記憶體裝置接收的所述額外資訊進行分析,以確定所述第一內容區塊被加密或所述第一加密機制被用於對所述第一內容區塊進行加密中的至少一者,確定所述第三內容區塊利用所述第二加密機制而加密包括對從所述記憶體裝置接收的所述額外資訊進行分析,以確定所述第三內容區塊被加密或所述第二加密機制被用於對所述第三內容區塊進行加密中的至少一者,且確定所述第二內容區塊未被加密包括對從所述記憶體裝置接收的所述額外資訊進行分析,以確定所述第二內容區塊未被加 密。
  9. 如申請專利範圍第1項所述的方法,其中對所述第一內容區塊進行解密以獲得對應的第一明文資料包括:在對所述第一內容區塊解密時,辨識所述第一內容區塊中所包括的隨機值;以及從經解密的所述第一內容區塊移除所述隨機值以獲得所述第一明文資料,其中所述隨機值在所述主機裝置與所述記憶體裝置之間同步。
  10. 一種記憶體裝置的安全讀取方法,包括:在記憶體裝置處從耦接至所述記憶體裝置的主機裝置接收對資料的請求,其中所述資料以明文形式儲存於所述記憶體裝置;在接收所述請求後,由所述記憶體裝置處理所述資料以傳輸至所述主機裝置,其中所述處理包括:將所述資料劃分成多個區段,所述多個區段中的每一區段包括一或多個內容區塊;對所述多個區段中所包括的所述內容區塊計算簽章;在每一區段中對所述區段中所包括的所述內容區塊的子集進行加密;以及將每一區段中剩餘數量的未加密內容區塊作為明文包括於每一區段中;以及向所述主機裝置發送所述多個區段以及所述簽章,所述多個 區段中的每一者包括加密內容區塊及未加密內容區塊。
  11. 如申請專利範圍第10項所述的方法,其中所述記憶體裝置包括計數器以對每一區段中的內容區塊的數量進行計數,且其中對每一區段中的所述內容區塊的所述子集進行加密包括:判斷所述計數器的值是否小於第一臨限值,所述第一臨限值對應於區段中利用第一加密機制而加密的內容區塊的數量;以及在確定所述計數器的所述值小於所述第一臨限值時,利用所述第一加密機制對所述內容區塊的所述子集中的第一內容區塊進行迭代加密,並對所述計數器進行遞增。
  12. 如申請專利範圍第11項所述的方法,更包括:判斷所述計數器的所述值是否小於第二臨限值,所述第二臨限值對應於區段中利用與所述第一加密機制不同的第二加密機制而加密的內容區塊的數量;在確定所述計數器的所述值小於所述第二臨限值時,利用所述第二加密機制對所述內容區塊的所述子集中的第二內容區塊進行迭代加密,並對所述計數器進行遞增;確定所述計數器的所述值等於第三臨限值,所述第三臨限值對應於區段中的內容區塊的總數量;以及在確定所述計數器的所述值等於所述第三臨限值時,重置所述計數器並處理所述多個區段中的下一區段。
  13. 如申請專利範圍第12項所述的方法,更包括:從所述主機裝置接收由使用者所配置的所述第一臨限值、所 述第二臨限值或所述第三臨限值中的一或多者;以及將所述第一臨限值、所述第二臨限值或所述第三臨限值中的一或多者儲存於耦接至所述記憶體裝置的暫存器中。
  14. 如申請專利範圍第10項所述的方法,其中對每一區段中的所述內容區塊的所述子集進行加密包括:將隨機值包括於所述內容區塊的所述子集中的一或多個內容區塊中;以及在將所述隨機值包括於所述內容區塊的所述子集中的所述一或多個內容區塊中之後,對所述內容區塊的所述子集進行加密,其中所述隨機值與所述主機裝置同步。
  15. 一種記憶體裝置,包括:儲存記憶體,用於儲存資料;記憶體控制器,用於管理對所述儲存記憶體的存取,其中所述記憶體控制器適用於執行以下操作,包括:從耦接至所述記憶體裝置的主機裝置接收對資料的請求,其中所述資料以明文形式儲存於所述儲存記憶體;在接收所述請求後,處理所請求的所述資料以傳輸至所述主機裝置,其中所述處理包括:從所述儲存記憶體存取所請求的所述資料;將所請求的所述資料劃分成多個區段,所述多個區段中的每一區段包括一或多個內容區塊;對所述多個區段中所包括的所述內容區塊計算簽章; 在每一區段中對所述區段中所包括的所述內容區塊的子集進行加密;以及將每一區段中剩餘數量的未加密內容區塊作為明文包括於每一區段中;以及向所述主機裝置發送所述多個區段以及所述簽章,所述多個區段中的每一者包括加密內容區塊及未加密內容區塊。
  16. 如申請專利範圍第15項所述的記憶體裝置,其中所述記憶體控制器包括計數器以對每一區段中的內容區塊的數量進行計數,且其中對每一區段中的所述內容區塊的所述子集進行加密包括:判斷所述計數器的值是否小於第一臨限值,所述第一臨限值對應於區段中利用第一加密機制而加密的內容區塊的數量;以及在確定所述計數器的所述值小於所述第一臨限值時,利用所述第一加密機制對所述內容區塊的所述子集中的第一內容區塊進行迭代加密,並對所述計數器進行遞增。
  17. 如申請專利範圍第16項所述的記憶體裝置,其中所述操作更包括:判斷所述計數器的所述值是否小於第二臨限值,所述第二臨限值對應於區段中利用與所述第一加密機制不同的第二加密機制而加密的內容區塊的數量;在確定所述計數器的所述值小於所述第二臨限值時,利用所述第二加密機制對所述內容區塊的所述子集中的第二內容區塊進 行迭代加密,並對所述計數器進行遞增;確定所述計數器的所述值等於第三臨限值,所述第三臨限值對應於區段中的內容區塊的總數量;以及在確定所述計數器的所述值等於所述第三臨限值時,重置所述計數器並處理所述多個區段中的下一區段。
  18. 如申請專利範圍第17項所述的記憶體裝置,其中所述操作更包括:從所述主機裝置接收由使用者所配置的所述第一臨限值、所述第二臨限值或所述第三臨限值中的一或多者;以及將所述第一臨限值、所述第二臨限值或所述第三臨限值中的一或多者儲存於耦接至所述記憶體控制器的暫存器中。
  19. 如申請專利範圍第15項所述的記憶體裝置,其中對每一區段中的所述內容區塊的所述子集進行加密包括:將隨機值包括於所述內容區塊的所述子集中的一或多個內容區塊中;以及在將所述隨機值包括於所述內容區塊的所述子集中的所述一或多個內容區塊中之後,對所述內容區塊的所述子集進行加密,其中所述隨機值與所述主機裝置同步。
  20. 如申請專利範圍第15項所述的記憶體裝置,其中對每一區段中的所述內容區塊的所述子集進行加密包括選擇所述子集中的一或多個第一內容區塊並利用第一加密機制對所述一或多個第一內容區塊進行加密,且 其中所述操作更包括向所述主機裝置發送額外資訊,所述額外資訊包括所述一或多個第一內容區塊的位置資訊或者所述第一加密機制中的至少一者。
  21. 如申請專利範圍第15項所述的記憶體裝置,其中對每一區段中的所述內容區塊的所述子集進行加密包括:選擇所述子集中的一或多個第一內容區塊及一或多個第二內容區塊;利用第一加密機制對所述一或多個第一內容區塊進行加密;以及利用第二加密機制對所述一或多個第二內容區塊進行加密。
  22. 如申請專利範圍第21項所述的記憶體裝置,其中所述操作更包括:向所述主機裝置發送額外資訊,所述額外資訊包括所述一或多個第一內容區塊的位置資訊、所述一或多個第二內容區塊的位置資訊、所述第一加密機制或所述第二加密機制中的至少一者。
TW108137081A 2019-06-17 2019-10-15 記憶體裝置及其安全讀取方法 TWI721602B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/442,722 2019-06-17
US16/442,722 US20200396054A1 (en) 2019-06-17 2019-06-17 Secure Memory Read

Publications (2)

Publication Number Publication Date
TW202101433A TW202101433A (zh) 2021-01-01
TWI721602B true TWI721602B (zh) 2021-03-11

Family

ID=73744834

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108137081A TWI721602B (zh) 2019-06-17 2019-10-15 記憶體裝置及其安全讀取方法

Country Status (3)

Country Link
US (1) US20200396054A1 (zh)
CN (1) CN112100696B (zh)
TW (1) TWI721602B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI857273B (zh) * 2021-07-27 2024-10-01 美商萬國商業機器公司 用於安全端點之安全記憶體隔離

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11354415B2 (en) * 2019-06-29 2022-06-07 Intel Corporation Warm boot attack mitigations for non-volatile memory modules
US11483147B2 (en) * 2020-01-23 2022-10-25 Bank Of America Corporation Intelligent encryption based on user and data properties
JP7549909B2 (ja) * 2020-08-14 2024-09-12 株式会社アイルソフト 端末装置、コンピュータプログラム
US20220278963A1 (en) * 2021-03-01 2022-09-01 Samsung Electronics Co., Ltd. Storage device, storage system, and method of secure data movement between storage devices
US11665148B2 (en) * 2021-03-22 2023-05-30 Cisco Technology, Inc. Systems and methods for addressing cryptoprocessor hardware scaling limitations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007094857A1 (en) * 2006-02-09 2007-08-23 Thomson Licensing Method and apparatus for securing digital content
TW201303814A (zh) * 2011-03-10 2013-01-16 松下電器產業股份有限公司 內容發送系統、內容發送子系統及再生裝置
US20170346628A1 (en) * 2016-05-30 2017-11-30 Samsung Electronics Co., Ltd. Computing system having an on-the-fly encryptor and an operating method thereof

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6845159B1 (en) * 1998-10-07 2005-01-18 Protego Information Ab Processing method and apparatus for converting information from a first format into a second format
US20100303229A1 (en) * 2009-05-27 2010-12-02 Unruh Gregory Modified counter mode encryption
US8566952B1 (en) * 2009-12-24 2013-10-22 Intuit Inc. System and method for encrypting data and providing controlled access to encrypted data with limited additional access
US8677148B2 (en) * 2011-01-27 2014-03-18 Security First Corp. Systems and methods for securing data
US9547774B2 (en) * 2012-07-18 2017-01-17 Nexenta Systems, Inc. System and method for distributed deduplication of encrypted chunks
US9705674B2 (en) * 2013-02-12 2017-07-11 Amazon Technologies, Inc. Federated key management
US9882720B1 (en) * 2014-06-27 2018-01-30 Amazon Technologies, Inc. Data loss prevention with key usage limit enforcement
MX366491B (es) * 2014-12-03 2019-07-10 Nagravision Sa Método criptográfico en bloques para encriptar/desencriptar mensajes y dispositivos criptográficos para implementar este método.
US10212138B1 (en) * 2015-06-19 2019-02-19 Amazon Technologies, Inc. Hardware security accelerator
US10277611B2 (en) * 2015-08-21 2019-04-30 Adobe Inc. Abating padding oracle attacks
US10754988B2 (en) * 2016-08-30 2020-08-25 Winbond Electronics Corporation Anti-rollback version upgrade in secured memory chip
CN106972924B (zh) * 2017-03-23 2020-06-23 联想(北京)有限公司 加密、解密、电子签章、验证签章的方法及装置
US11087011B2 (en) * 2017-07-13 2021-08-10 Western Digital Technologies, Inc. Data storage device with secure access based on tap inputs
CN109361508B (zh) * 2018-10-11 2022-11-18 联洋国融(北京)科技有限公司 数据传输方法、电子设备及计算机可读存储介质
CN109600228B (zh) * 2018-10-31 2021-07-27 如般量子科技有限公司 基于公共密钥池的抗量子计算的签章方法和签章系统
US11088846B2 (en) * 2019-03-28 2021-08-10 Intel Corporation Key rotating trees with split counters for efficient hardware replay protection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007094857A1 (en) * 2006-02-09 2007-08-23 Thomson Licensing Method and apparatus for securing digital content
TW201303814A (zh) * 2011-03-10 2013-01-16 松下電器產業股份有限公司 內容發送系統、內容發送子系統及再生裝置
US20170346628A1 (en) * 2016-05-30 2017-11-30 Samsung Electronics Co., Ltd. Computing system having an on-the-fly encryptor and an operating method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI857273B (zh) * 2021-07-27 2024-10-01 美商萬國商業機器公司 用於安全端點之安全記憶體隔離

Also Published As

Publication number Publication date
CN112100696A (zh) 2020-12-18
US20200396054A1 (en) 2020-12-17
CN112100696B (zh) 2024-08-09
TW202101433A (zh) 2021-01-01

Similar Documents

Publication Publication Date Title
TWI721602B (zh) 記憶體裝置及其安全讀取方法
US11487908B2 (en) Secure memory
US11876791B2 (en) Message authentication with secure code verification
CN110134424B (zh) 固件升级方法及系统、服务器、智能设备、可读存储介质
CN106797317B (zh) 安全共享密钥共享系统及方法
US9537657B1 (en) Multipart authenticated encryption
US8607072B2 (en) Storage device content authentication
CN109478214B (zh) 用于证书注册的装置和方法
US20140281587A1 (en) Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor
CN115549910A (zh) 一种数据传输方法、设备以及存储介质
CN108197439A (zh) 一种文件加密方法、装置及服务器
CN114726536A (zh) 一种时间戳生成方法、装置、电子设备及存储介质
US10972439B2 (en) System and method for obfuscating initiation values of a cryptography protocol
CN108199836B (zh) 一种密钥与设备绑定、解绑定的方法及装置
WO2025065411A1 (zh) 一种设备制造商在线验证方法、装置及存储介质
WO2023198036A1 (zh) 一种密钥生成方法、装置及设备
CN115174063B (zh) 软件许可生成、验证方法及装置