TWI811514B - Computer program product, computer system and computer implement method for compute digital signature authentication sign instruction - Google Patents

Computer program product, computer system and computer implement method for compute digital signature authentication sign instruction Download PDF

Info

Publication number
TWI811514B
TWI811514B TW109101159A TW109101159A TWI811514B TW I811514 B TWI811514 B TW I811514B TW 109101159 A TW109101159 A TW 109101159A TW 109101159 A TW109101159 A TW 109101159A TW I811514 B TWI811514 B TW I811514B
Authority
TW
Taiwan
Prior art keywords
function
signature
instruction
message
computer
Prior art date
Application number
TW109101159A
Other languages
Chinese (zh)
Other versions
TW202040966A (en
Inventor
艾瑞克 M 斯奇瓦茲
強納森 D 布瑞布里
愛德華 T 麥力
克理斯俊 傑可比
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 TW202040966A publication Critical patent/TW202040966A/en
Application granted granted Critical
Publication of TWI811514B publication Critical patent/TWI811514B/en

Links

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/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
    • H04L9/3252Cryptographic 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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3265Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3242Cryptographic 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 using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Abstract

A single architected instruction to produce a signature for a message is obtained. The instruction is executed, and the executing includes determining a sign function of a plurality of sign functions supported by the instruction to be performed. Input for the instruction is obtained, and the input includes a message and a cryptographic key. A signature is produced based on the sign function to be performed and the input. The signature is to be used to verify the message.

Description

用於計算數位簽章認證標記指令之電腦程式產品、電腦系統及電腦實施方法 Computer program product, computer system and computer implementation method for calculating digital signature authentication mark instructions

一或多個態樣大體而言係關於促進計算環境內之處理,且特定言之,係關於促進生成及驗證用於認證計算環境內傳輸之訊息的數位簽章。 One or more aspects relate generally to facilitating processing within a computing environment, and specifically to facilitating the generation and verification of digital signatures used to authenticate messages transmitted within the computing environment.

數位簽章用於驗證數位訊息之真實性。訊息之發送方藉由數位簽章對訊息進行標記,並將經標記訊息發送至接收方。接收方使用數位簽章來驗證訊息之發送方並確認訊息尚未經修改。 Digital signatures are used to verify the authenticity of digital messages. The sender of the message marks the message with a digital signature and sends the marked message to the receiver. The recipient uses the digital signature to verify the sender of the message and confirm that the message has not been modified.

為生成及/或驗證數位簽章,使用認證技術。實例認證技術包括橢圓曲線數位簽章演算法(ECDSA)、愛德華曲線數位簽章演算法(EdDSA)以及其他技術。每一認證技術皆係基於數學建構。舉例而言,橢圓曲線數位簽章演算法及愛德華曲線數位簽章演算法使用橢圓曲線來生成及/或驗證數位簽章。 To generate and/or verify digital signatures, authentication technology is used. Example authentication technologies include Elliptic Curve Digital Signature Algorithm (ECDSA), Edwards Curve Digital Signature Algorithm (EdDSA), and other technologies. Each authentication technology is based on mathematical constructs. For example, the Elliptic Curve Digital Signature Algorithm and the Edwards Curve Digital Signature Algorithm use elliptic curves to generate and/or verify digital signatures.

演算法係在用於生成及/或驗證數位簽章之軟體程式中實施。軟體程式包括用於生成數位簽章之許多基元軟體指令,及/或用以驗證數位簽章之許多基元軟體指令。 Algorithms are implemented in software programs used to generate and/or verify digital signatures. The software program includes a number of primitive software instructions for generating a digital signature, and/or a number of primitive software instructions for verifying the digital signature.

藉由提供用於促進計算環境內之處理的電腦程式產品來克服先前技術之缺點且提供額外優勢。電腦程式產品包括可由處理電路讀取且儲存用於執行一種方法之指令的電腦可讀儲存媒體。該方法包括獲得用以產生用於訊息之簽章的指令。該指令為單個架構化指令。執行指令,且該執行包括判定由待執行之指令支援的複數個標記函式中之標記函式。獲得用於指令之輸入,且該輸入包括訊息及密碼金鑰。基於待執行之標記函式及輸入產生簽章。該簽章待用於驗證訊息。 Overcome the shortcomings of prior technologies and provide additional advantages by providing computer program products for facilitating processing within a computing environment. A computer program product includes a computer-readable storage medium that can be read by processing circuitry and stores instructions for performing a method. The method includes obtaining instructions for generating a signature for the message. This directive is a single architectural directive. The instruction is executed, and the execution includes determining a tagged function of a plurality of tagged functions supported by the instruction to be executed. Input for the command is obtained, and the input includes the message and password key. Generate a signature based on the tagged function to be executed and the input. This signature is used to verify the message.

藉由使用單個架構化指令,由單個架構化指令替換用以執行函式的基元軟體指令之重要子集。藉由單個架構化指令替換彼等基元指令降低程式複雜度且消除對包括用以最佳化基元指令之程式碼的需要。總體效能得到改良。此外,藉由使用單個指令,中間結果經加密,從而增強安全性。 By using a single architected instruction, a significant subset of the primitive software instructions used to execute a function is replaced by a single architected instruction. Replacing these primitive instructions with a single architectural instruction reduces program complexity and eliminates the need to include code to optimize the primitive instructions. Overall performance is improved. Additionally, by using a single command, intermediate results are encrypted, thereby enhancing security.

在一個實例中,訊息為經雜湊訊息。 In one example, the message is a hashed message.

此外,在一個實例中,簽章由複數個值表示。複數個值包括例如介於零與用於待執行之標記函式的曲線之階數之間的第一整數及第二整數。作為一個特定實例,標記函式為愛德華曲線數位簽章演算法標記函式,且複數個值包括經壓縮點及整數。 Furthermore, in one instance, the signature is represented by a plurality of values. The plurality of values includes, for example, a first integer and a second integer between zero and the degree of the curve for the labeling function to be performed. As a specific example, the marking function is an Edwards Curve digital signature algorithm marking function, and the plurality of values includes compressed points and integers.

在另一實例中,輸入進一步包括隨機數。 In another example, the input further includes random numbers.

此外,在一個實施例中,該執行包括測試出隨機數介於第一值與第二值之間;及基於隨機數介於第一值與第二值之間執行簽章產生。作為實例,第一值為零,且第二值表示用於待執行之標記函式的曲線上之基點的階數。 Furthermore, in one embodiment, the execution includes testing that the random number is between the first value and the second value; and performing signature generation based on the random number being between the first value and the second value. As an example, the first value is zero, and the second value represents the order of the base point on the curve for the labeling function to be performed.

在一個實例中,複數個標記函式包括用於複數個質數之複 數個橢圓曲線數位簽章演算法標記函式。複數個質數包括例如國家標準技術研究所(NIST)質數P256、NIST質數P384及NIST質數P521。在另一實例中,複數個標記函式包括用於複數個質數之複數個愛德華曲線數位簽章演算法標記函式。複數個質數包括愛德華曲線質數Ed25519及愛德華曲線質數Ed448。 In one example, a plurality of labeled functions include complex numbers for a plurality of prime numbers. Several elliptic curve digital signature algorithm marking functions. Complex prime numbers include, for example, the National Institute of Standards and Technology (NIST) prime number P256, the NIST prime number P384, and the NIST prime number P521. In another example, the plurality of marking functions includes a plurality of Edwards Curve digital signature algorithm marking functions for a plurality of prime numbers. The complex prime numbers include the Edwards curve prime number Ed25519 and the Edwards curve prime number Ed448.

本文中亦描述及主張與一或多個態樣相關之電腦實施方法及系統。此外,本文中亦描述及可能主張與一或多個態樣相關之服務。 Computer-implemented methods and systems related to one or more aspects are also described and claimed herein. In addition, services related to one or more aspects are described and may be advocated herein.

藉由本文中所描述之技術實現額外特徵及優勢。本文中詳細描述其他實施例及態樣且將其視為所主張態樣之部分。 Additional features and advantages are achieved through the techniques described in this article. Other embodiments and aspects are described in detail herein and are considered a part of the claimed aspects.

10:計算環境 10:Computing environment

12:原生中央處理單元(CPU) 12: Native central processing unit (CPU)

14:記憶體 14:Memory

16:輸入/輸出裝置/介面 16:Input/output device/interface

18:匯流排 18:Bus

20:原生暫存器 20:Native temporary register

22:仿真器程式碼 22: Emulator code

30:客體指令 30:Object command

32:指令提取常式 32: Instruction extraction routine

34:指令轉譯常式 34: Instruction translation routine

36:原生指令 36:Native instructions

40:仿真控制常式 40: Simulation control routine

50:雲端計算環境 50:Cloud computing environment

52:雲端計算節點 52:Cloud computing node

54A:個人數位助理(PDA)/蜂巢式電話 54A: Personal Digital Assistant (PDA)/Cellular Phone

54B:桌上型電腦 54B:Desktop computer

54C:膝上型電腦 54C:Laptop

54N:汽車電腦系統 54N:Automotive computer system

60:硬體及軟體層 60:Hardware and software layer

61:大型電腦 61:Large computer

62:基於精簡指令集電腦(RISC)架構之伺服器 62: Server based on reduced instruction set computer (RISC) architecture

63:伺服器 63:Server

64:刀鋒伺服器 64: Blade Server

65:儲存裝置 65:Storage device

66:網路及網路連接組件 66: Network and network connection components

67:網路應用程式伺服器軟體 67:Web application server software

68:資料庫軟體 68: Database software

70:虛擬化層 70:Virtualization layer

71:虛擬伺服器 71:Virtual server

72:虛擬儲存器 72:Virtual storage

73:虛擬網路 73:Virtual network

74:虛擬應用程式及作業系統 74:Virtual Applications and Operating Systems

75:虛擬用戶端 75:Virtual client

80:管理層 80:Management

81:資源佈建 81: Resource deployment

82:計量及定價 82:Measurement and Pricing

83:使用者入口網站 83:User Portal

84:服務等級管理 84:Service level management

85:服務等級協定(SLA)規劃及實現 85: Service Level Agreement (SLA) Planning and Implementation

90:工作負載層 90:Workload layer

91:地圖測繪及導航 91:Map mapping and navigation

92:軟體開發及生命週期管理 92:Software development and life cycle management

93:虛擬教室教育遞送 93:Virtual classroom education delivery

94:資料分析處理 94:Data analysis and processing

95:異動處理 95: Change processing

96:標記/驗證處理 96: Marking/verification processing

100:計算環境 100:Computing environment

102:處理器 102: Processor

104:記憶體 104:Memory

106:輸入/輸出(I/O)裝置/介面 106: Input/output (I/O) device/interface

108:匯流排 108:Bus

120:指令提取組件 120: Instruction extraction component

122:指令解碼單元 122: Instruction decoding unit

124:指令執行組件 124:Instruction execution component

126:記憶體存取組件 126:Memory access component

130:寫回組件 130: Write back component

136:標記/驗證組件 136: Marking/validating components

155:設施位元 155: Facility bits

200:中央電子裝置複合體(CEC) 200: Central Electronics Complex (CEC)

202:記憶體/主儲存器 202: Memory/main storage

204:處理器/中央處理單元(CPU)/實體處理器資源 204: Processor/Central Processing Unit (CPU)/Physical Processor Resources

206:輸入/輸出子系統 206: Input/output subsystem

208:邏輯分割區 208: Logical partition

210:超管理器 210:Super manager

212:處理器韌體 212:Processor firmware

220:客體作業系統 220:Object operating system

222:不同程式 222: Different programs

230:輸入/輸出控制單元 230: Input/output control unit

240:輸入/輸出(I/O)裝置 240: Input/output (I/O) device

250:資料儲存裝置 250:Data storage device

252:程式 252:Program

254:電腦可讀程式指令 254: Computer readable program instructions

260:標記/驗證組件 260: Marking/validating components

300:計算數位簽章認證(KDSA)指令 300: Computed Digital Signature Authentication (KDSA) command

302:操作碼欄位 302:Operation code field

304:第一暫存器欄位(R1) 304: First register field (R 1 )

306:第二暫存器欄位(R2) 306: Second register field (R 2 )

309:通用暫存器0 309: General register 0

312:函式碼欄位 312: Function code field

313:函式碼0 313: Function code 0

314:通用暫存器1 314: General register 1

315:函式碼1 315: Function code 1

316:邏輯位址 316: Logical address

317:函式碼2 317: Function code 2

319:函式碼3 319: Function code 3

321:函式碼9 321: Function code 9

323:函式碼10 323: Function code 10

325:函式碼11 325: Function code 11

326:通用暫存器R2 326: General register R 2

327:函式碼17 327: Function code 17

328:第二運算元位址 328: Address of the second operand

329:函式碼18 329: Function code 18

330:通用暫存器R2+1 330: General register R 2 +1

331:函式碼19 331: Function code 19

332:第二運算元之長度 332:The length of the second operand

333:函式碼32 333: Function code 32

335:函式碼36 335: Function code 36

337:函式碼40 337: Function code 40

339:函式碼44 339: Function code 44

341:函式碼48 341: Function code 48

343:函式碼52 343: Function code 52

400:參數區塊 400: Parameter block

401:狀態字 401: Status word

402:參數區塊 402: Parameter block

403:簽章(R) 403:Signature(R)

404:簽章(S) 404:Signature(S)

405:經雜湊訊息H(msg) 405: Hash message H(msg)

406:公用密碼金鑰(K) 406: Public cryptographic key (K)

407:經保留保存區域 407: Reserved save area

408:參數區塊 408: Parameter block

409:簽章(R) 409:Signature(R)

410:簽章(S) 410:Signature(S)

411:經雜湊訊息 411: Hash message

412:公用密碼金鑰(K) 412: Public cryptographic key (K)

413:經保留保存區域 413: Reserved save area

414:參數區塊 414: Parameter block

415:簽章(R) 415:Signature (R)

416:簽章(S) 416:Signature(S)

417:經雜湊訊息 417: Hash message

418:公用密碼金鑰 418:Public cryptographic key

419:經保留保存區域 419: Reserved save area

420:參數區塊 420: Parameter block

421:簽章(R) 421:Signature (R)

422:簽章(S) 422:Signature(S)

423:經雜湊訊息 423: Hash message

424:呈純文字之私用密碼金鑰 424: Private password key in plain text

425:隨機數 425: random number

426:經保留保存區域 426: Reserved save area

427:參數區塊 427: Parameter block

428:簽章(R) 428:Signature(R)

429:簽章(S) 429:Signature(S)

430:經雜湊訊息 430: Hash message

431:呈純文字之私用密碼金鑰(K) 431: Private password key in plain text (K)

432:隨機數 432: Random number

433:經保留保存區域 433: Reserved save area

434:參數區塊 434: Parameter block

435:簽章(R) 435:Signature (R)

436:簽章(S) 436:Signature(S)

437:經雜湊訊息 437: Hash message

438:呈純文字之私用密碼金鑰 438: Private password key in plain text

439:隨機數 439: Random number

440:經保留保存區域 440: Reserved save area

441:參數區塊 441: Parameter block

442:簽章(R) 442:Signature(R)

443:簽章(S) 443:Signature(S)

444:經雜湊訊息 444: Hash message

445:加密私用密碼金鑰(WKa(K)) 445: Encryption private cryptographic key (WK a (K))

446:隨機數 446: Random number

447:AES包裝金鑰驗證圖案(WKaVP) 447:AES wrapped key verification pattern (WK a VP)

448:經保留保存區域 448: Reserved save area

449:參數區塊 449: Parameter block

450:簽章(R) 450:Signature (R)

451:簽章(S) 451:Signature(S)

452:經雜湊訊息 452: Hash message

453:加密私用密碼金鑰(WKa(K)) 453: Encryption private cryptographic key (WK a (K))

454:隨機數 454: Random number

455:AES包裝金鑰驗證圖案(WKaVP) 455:AES wrapped key verification pattern (WK a VP)

456:經保留保存區域 456: Reserved save area

457:參數區塊 457: Parameter block

458:簽章(R) 458:Signature (R)

459:簽章(S) 459:Signature(S)

460:經雜湊訊息 460: Hash message

461:加密私用密碼金鑰(WKa(K)) 461: Encryption private cryptographic key (WK a (K))

462:隨機數 462: Random number

463:AES包裝金鑰驗證圖案(WKaVP) 463:AES wrapped key verification pattern (WK a VP)

464:經保留保存區域 464: Reserved save area

468:參數區塊 468: Parameter block

469:簽章(R) 469:Signature (R)

470:簽章(S) 470:Signature(S)

471:公用密碼金鑰(K) 471: Public cryptographic key (K)

472:經保留保存區域 472: Reserved save area

473:參數區塊 473: Parameter block

474:簽章(R) 474:Signature (R)

475:簽章(S) 475:Signature(S)

476:公用密碼金鑰(K) 476: Public cryptographic key (K)

477:經保留保存區域 477: Reserved save area

478:參數區塊 478: Parameter block

479:簽章(R) 479:Signature(R)

480:簽章(S) 480:Signature(S)

481:呈純文字之私用密碼金鑰(K) 481: Private password key in plain text (K)

482:經保留保存區域 482: Reserved save area

483:參數區塊 483: Parameter block

484:簽章(R) 484:Signature (R)

485:簽章(S) 485:Signature(S)

486:呈純文字之私用密碼金鑰(K) 486: Private password key in plain text (K)

487:經保留保存區域 487: Reserved save area

488:參數區塊 488: Parameter block

489:簽章(R) 489:Signature(R)

490:簽章(S) 490:Signature(S)

491:加密私用密碼金鑰(WKa(K)) 491: Encryption private cryptographic key (WK a (K))

492:AES包裝金鑰驗證圖案(WKaVP) 492:AES wrapped key verification pattern (WK a VP)

493:經保留保存區域 493: Reserved save area

494:參數區塊 494: Parameter block

495:簽章(R) 495:Signature (R)

496:簽章(S) 496:Signature(S)

497:加密私用密碼金鑰(WKa(K)) 497: Encryption private cryptographic key (WK a (K))

498:AES包裝金鑰驗證圖案(WKaVP) 498:AES wrapped key verification pattern (WK a VP)

499:經保留保存區域 499: Reserved save area

500:步驟 500: steps

502:查詢 502:Query

504:步驟 504: Step

506:步驟 506: Step

508:步驟 508:Step

510:步驟 510: Steps

512:步驟 512:Step

514:步驟 514:Step

516:步驟 516:Step

600:步驟 600: Steps

602:查詢 602:Query

604:步驟 604: Step

606:步驟 606: Step

608:步驟 608: Step

610:步驟 610: Steps

612:查詢 612:Query

614:步驟 614: Step

616:步驟 616: Steps

618:查詢 618:Query

620:步驟 620: Steps

622:步驟 622: Steps

700:步驟 700: Steps

702:步驟 702: Step

704:步驟 704: Step

706:步驟 706: Step

708:步驟 708:Step

710:步驟 710: Steps

800:步驟 800: Step

802:步驟 802: Step

804:步驟 804: Step

806:步驟 806: Step

808:步驟 808:Step

810:步驟 810: Steps

812:步驟 812: Steps

814:步驟 814: Steps

816:步驟 816: Steps

818:步驟 818: Steps

820:步驟 820: Steps

1000:步驟 1000: steps

1002:步驟 1002: Steps

1004:步驟 1004: Steps

1006:步驟 1006: Steps

1008:步驟 1008: Steps

1010:步驟 1010: Steps

1012:步驟 1012: Steps

1014:步驟 1014: Steps

1016:步驟 1016: Steps

1018:步驟 1018: Steps

1019:步驟 1019: Steps

1020:步驟 1020: Steps

1022:步驟 1022: Steps

1024:步驟 1024: Steps

1026:步驟 1026: Steps

1028:步驟 1028: Steps

1030:步驟 1030: Steps

1032:步驟 1032: Steps

1034:步驟 1034: Steps

在本說明書之結尾處之申請專利範圍中作為實例特定地指出且清楚地主張一或多個態樣。一或多個態樣之前述內容及目標、特徵及優勢自結合隨附圖式進行的以下詳細描述顯而易見,其中:圖1A描繪併有及使用本發明之一或多個態樣的計算環境之一個實例;圖1B描繪根據本發明之一或多個態樣的圖1A之處理器的其他細節;圖2描繪併有及使用本發明之一或多個態樣的計算環境之另一實例;圖3A描繪根據本發明之一態樣的計算數位簽章認證(KDSA)指令之一個格式;圖3B描繪根據本發明之一態樣的由指令使用之隱含暫存器(通用暫存器0)的欄位之一個實例;圖3C描繪根據本發明之一態樣的由指令支援之函式碼之一個實例;圖3D描繪根據本發明之一態樣的由指令使用之隱含暫存器(通用暫存 器1)的欄位之一個實例;圖3E描繪根據本發明之一態樣的由計算數位簽章認證指令指定的暫存器R2之內容的一個實例;圖3F描繪根據本發明之一態樣的由計算數位簽章認證指令使用的暫存器R2+1之內容的一個實例;圖4A至圖4P描繪根據本發明之一態樣的由計算數位簽章認證指令之各種函式使用的參數區塊之內容的實例;圖5描繪根據本發明之一態樣的與使用橢圓曲線數位簽章演算法驗證簽章相關聯之處理的一個實例;圖6描繪根據本發明之一態樣的與使用橢圓曲線數位簽章演算法生成簽章相關聯之處理的一個實例;圖7描繪根據本發明之一態樣的與使用愛德華曲線數位簽章演算法驗證簽章相關聯之處理的一個實例;圖8描繪根據本發明之一態樣的與使用愛德華曲線數位簽章演算法生成簽章相關聯之處理的一個實例;圖9描繪根據本發明之一態樣的用於計算數位簽章認證指令之函式的實例金鑰長度及位移;圖10A至圖10B描繪根據本發明之一態樣的促進計算環境內之處理的一個實例;圖11A描繪併有及使用本發明之一或多個態樣的計算環境之另一實例;圖11B描繪圖11A之記憶體的其他細節;圖12描繪雲端計算環境之一個實施例;及 圖13描繪抽象模型層之一個實例。 One or more aspects are specifically pointed out and distinctly claimed as examples in the patent claims at the end of this specification. The foregoing content and objectives, features and advantages of one or more aspects of the invention will be apparent from the following detailed description taken in conjunction with the accompanying drawings, in which: Figure 1A depicts a computing environment incorporating and using one or more aspects of the invention. One example; Figure 1B depicts additional details of the processor of Figure 1A according to one or more aspects of the invention; Figure 2 depicts another example of a computing environment incorporating and using one or more aspects of the invention; Figure 3A depicts a format of a Computational Digital Signature Authentication (KDSA) instruction according to one aspect of the invention; Figure 3B depicts an implicit register (general purpose register 0) used by the instruction according to one aspect of the invention. ); FIG. 3C depicts an example of a function code supported by an instruction according to an aspect of the invention; FIG. 3D depicts an implicit register used by an instruction according to an aspect of the invention. (An example of the fields of the general register 1); FIG. 3E depicts an example of the contents of the register R 2 specified by the computational digital signature authentication command according to one aspect of the present invention; FIG. 3F depicts an example of the contents of the register R 2 specified by the computational digital signature authentication command according to one aspect of the present invention; An example of the contents of the register R 2 +1 used by the computational digital signature authentication command according to one aspect of the invention; Figures 4A to 4P depict the contents of the computational digital signature authentication command according to one aspect of the invention. Examples of the contents of parameter blocks used by various functions; Figure 5 depicts an example of processing associated with verifying a signature using an elliptic curve digital signature algorithm in accordance with an aspect of the present invention; Figure 6 depicts an example of a signature in accordance with an aspect of the present invention. An example of processing associated with generating a signature using an elliptic curve digital signature algorithm, according to one aspect of the invention; Figure 7 depicts processing associated with verifying a signature using an Edwards curve digital signature algorithm, according to one aspect of the invention. An example of processing; Figure 8 depicts an example of processing associated with generating a signature using an Edwards curve digital signature algorithm according to an aspect of the present invention; Figure 9 depicts a process for generating a signature according to an aspect of the present invention; Example key lengths and displacements of functions that calculate digital signature authentication instructions; Figures 10A-10B depict an example of facilitating processing within a computing environment according to an aspect of the present invention; Figure 11A depicts the implementation and use of the present invention Another example of one or more aspects of a computing environment; Figure 11B depicts additional details of the memory of Figure 11A; Figure 12 depicts an embodiment of a cloud computing environment; and Figure 13 depicts an example of an abstract model layer.

根據本發明之一態樣,提供一種促進計算環境內之處理的能力。作為一個實例,提供單個指令(例如,硬體/軟體介面處之單個架構化硬體機器指令)以執行操作,諸如計算數位簽章認證操作。該指令為通用處理器指令集架構(ISA)之部分,該指令集架構在諸如通用處理器之處理器上由程式(例如,使用者程式)調度。 According to an aspect of the invention, a capability is provided to facilitate processing within a computing environment. As one example, a single instruction (eg, a single architected hardware machine instruction at a hardware/software interface) is provided to perform an operation, such as computing a digital signature authentication operation. The instructions are part of a general-purpose processor instruction set architecture (ISA) that is scheduled by a program (eg, a user program) on a processor, such as a general-purpose processor.

在一個實例中,被稱為計算數位簽章認證指令(KDSA)之指令用於生成簽章,該簽章用於對待傳輸之訊息進行標記且用於在接收到訊息時驗證訊息之真實性。該指令例如為由紐約阿蒙克市(Armonk,New York)之國際商業機器公司(International Business Machines Corporation)提供之z/Architecture®硬體架構的訊息安全輔助擴展(例如,訊息安全輔助擴展9)設施的部分。訊息安全輔助擴展支援訊息之橢圓曲線密碼術認證、橢圓曲線金鑰之生成及純量乘法。計算數位簽章認證指令支援橢圓曲線之標記及驗證。由該指令提供之函式包括例如:KDSA-查詢、KDSA-ECDSA-驗證-P256、KDSA-ECDSA-驗證-P384、KDSA-ECDSA-驗證-P521、KDSA-ECDSA-標記-P256、KDSA-ECDSA-標記-P384、KDSA-ECDSA-標記-P521、KDSA-加密-ECDSA-標記-P256、KDSA-加密-ECDSA-標記-P384、KDSA-加密-ECDSA-標記-P521、KDSA-EdDSA-驗證-Ed25519、KDSA-EdDSA-驗證-Ed448、KDSA-EdDSA-標記-Ed25519、KDSA-EdDSA-標記-Ed448、KDSA-加密-EdDSA-標記-Ed25519及KDSA-加密-EdDSA-標記-Ed448。除了查詢函式外,此等函式用於使用不同的國家標準技術研究所(NIST)質數之各種技術來對訊息進 行標記及驗證。 In one example, a command called a Computational Digital Signature Authentication command (KDSA) is used to generate a signature that is used to mark a message for transmission and to verify the authenticity of the message upon receipt. The instruction is, for example, the Information Security Auxiliary Extension (eg, Information Security Auxiliary Extension 9) of the z/ Architecture® hardware architecture provided by International Business Machines Corporation of Armonk, New York. Facilities section. The message security auxiliary extension supports elliptic curve cryptography authentication of messages, elliptic curve key generation and scalar multiplication. The Computational Digital Signature Authentication command supports elliptic curve marking and verification. The functions provided by this command include, for example: KDSA-query, KDSA-ECDSA-verify-P256, KDSA-ECDSA-verify-P384, KDSA-ECDSA-verify-P521, KDSA-ECDSA-mark-P256, KDSA-ECDSA- Mark-P384, KDSA-ECDSA-Mark-P521, KDSA-Encrypt-ECDSA-Mark-P256, KDSA-Encrypt-ECDSA-Mark-P384, KDSA-Encrypt-ECDSA-Mark-P521, KDSA-EdDSA-Verify-Ed25519, KDSA-EdDSA-authenticate-Ed448, KDSA-EdDSA-mark-Ed25519, KDSA-EdDSA-mark-Ed448, KDSA-encrypt-EdDSA-mark-Ed25519, and KDSA-encrypt-EdDSA-mark-Ed448. In addition to query functions, these functions are used to tag and validate messages using various techniques using different National Institute of Standards and Technology (NIST) primes.

參考圖1A描述併有及使用本發明之一或多個態樣的計算環境之一個實施例。舉例而言,計算環境100包括處理器102(例如,中央處理單元)、記憶體104(例如,主記憶體;亦稱為系統記憶體、主儲存器、中央儲存器、儲存器)及一或多個輸入/輸出(I/O)裝置及/或介面106,前述各者經由例如一或多個匯流排108及/或其他連接而彼此耦接。 One embodiment of a computing environment in which one or more aspects of the present invention are incorporated and used is described with reference to FIG. 1A. For example, computing environment 100 includes processor 102 (eg, central processing unit), memory 104 (eg, main memory; also referred to as system memory, main storage, central storage, storage), and one or A plurality of input/output (I/O) devices and/or interfaces 106, each of which is coupled to one another via, for example, one or more busses 108 and/or other connections.

在一個實例中,處理器102係基於由紐約阿蒙克市之國際商業機器公司提供的z/Architecture硬體架構,且為諸如IBM Z®伺服器之伺服器的部分,該伺服器亦由國際商業機器公司提供且實施z/Architecture硬體架構。z/Architecture硬體架構之一個實施例描述於標題為「z/Architecture操作原理(z/Architecture Principles of Operation)」之公開案(IBM公開案第SA22-7832-11號,第12版,2017年9月)中,該公開案特此以全文引用之方式併入本文中。然而,z/Architecture硬體架構僅為一個實例架構;其他架構及/或其他類型之計算環境可包括及/或使用本發明之一或多個態樣。在一個實例中,處理器執行亦由國際商業機器公司提供之作業系統,諸如z/OS®作業系統。 In one example, processor 102 is based on the z/Architecture hardware provided by International Business Machines Corporation of Armonk, New York, and is part of a server such as an IBM server, also provided by International Business Machines Corporation. Business Machines provides and implements the z/Architecture hardware architecture. One embodiment of the z/Architecture hardware architecture is described in the publication titled "z/Architecture Principles of Operation" (IBM Publication No. SA22-7832-11, 12th Edition, 2017 September), the publication is hereby incorporated into this article by reference in full. However, the z/Architecture hardware architecture is only one example architecture; other architectures and/or other types of computing environments may include and/or utilize one or more aspects of the present invention. In one example, the processor executes an operating system also provided by International Business Machines Corporation, such as the z/ OS® operating system.

處理器102包括用以執行指令之複數個功能組件。如圖1B中所描繪,此等功能組件包括例如:指令提取組件120,其用以提取待執行之指令;指令解碼單元122,其用以解碼所提取指令且用以獲得經解碼指令之運算元;指令執行組件124,其用以執行經解碼指令;記憶體存取組件126,其用以在必要時存取記憶體以用於指令執行;及寫回組件130,其用以提供經執行指令之結果。根據本發明之一或多個態樣,此等組件中之一或多者可包括標記/驗證處理(或可使用本發明之一或多個態樣 的其他處理)中所使用之一或多個其他組件之至少一部分或可存取該一或多個其他組件,如本文中所描述。一或多個其他組件包括例如標記/驗證組件(或其他組件)136。作為實例,標記/驗證處理包括生成簽章、藉由簽章傳輸訊息,及/或使用簽章認證所接收訊息及/或發送方。 Processor 102 includes a plurality of functional components for executing instructions. As depicted in FIG. 1B , these functional components include, for example, an instruction fetch component 120 for fetching instructions to be executed, and an instruction decoding unit 122 for decoding the fetched instructions and obtaining the operands of the decoded instructions. ; instruction execution component 124, which is used to execute the decoded instructions; memory access component 126, which is used to access the memory for instruction execution when necessary; and writeback component 130, which is used to provide the executed instructions the result. In accordance with one or more aspects of the invention, one or more of these components may include a marking/authentication process (or may use one or more aspects of the invention). or may be accessible to at least a portion of one or more other components used in other processes, as described herein. One or more other components include, for example, marking/validation component (or other component) 136 . By way of example, the marking/verification process includes generating a signature, transmitting the message via the signature, and/or using the signature to authenticate the received message and/or the sender.

參考圖2描述併有及使用本發明之一或多個態樣的計算環境之另一實例。在一個實例中,計算環境係基於z/Architecture硬體架構;然而,計算環境可基於由國際商業機器公司或其他公司提供之其他架構。 Another example of a computing environment incorporating and using one or more aspects of the present invention is described with reference to FIG. 2 . In one example, the computing environment is based on the z/Architecture hardware architecture; however, the computing environment may be based on other architectures provided by International Business Machines Corporation or other companies.

參考圖2,在一個實例中,計算環境包括中央電子裝置複合體(CEC)200。CEC 200包括複數個組件,諸如記憶體202(亦稱為系統記憶體、主記憶體、主儲存器、中央儲存器、儲存器),其耦接至一或多個處理器(亦稱為中央處理單元(CPU))204及輸入/輸出子系統206。 Referring to FIG. 2 , in one example, a computing environment includes a central electronics complex (CEC) 200 . CEC 200 includes a plurality of components, such as memory 202 (also referred to as system memory, main memory, main storage, central storage, storage), which is coupled to one or more processors (also referred to as central storage). processing unit (CPU) 204 and input/output subsystem 206.

記憶體202包括例如一或多個邏輯分割區208、管理邏輯分割區之超管理器210,及處理器韌體212。超管理器210之一個實例為由紐約阿蒙克市之國際商業機器公司提供的處理器資源/系統管理器(PR/SMTM)超管理器。如本文中所使用,韌體包括例如處理器之微碼。其包括例如用於實施較高層級機器碼之硬體層級指令及/或資料結構。在一個實施例中,其包括(例如)專屬碼,其通常作為包括受信任軟體或特定於基礎硬體之微碼之微碼進行遞送,且控制對系統硬體之作業系統存取。 Memory 202 includes, for example, one or more logical partitions 208, a hypervisor 210 that manages the logical partitions, and processor firmware 212. One example of hypervisor 210 is the Processor Resource/System Manager (PR/SM ) hypervisor provided by International Business Machines Corporation of Armonk, New York. As used herein, firmware includes, for example, the microcode of a processor. This includes, for example, hardware-level instructions and/or data structures used to implement higher-level machine code. In one embodiment, this includes, for example, proprietary code, typically delivered as microcode that includes trusted software or microcode specific to the underlying hardware, and controls operating system access to the system hardware.

每一邏輯分割區208能夠充當單獨的系統。亦即,每一邏輯分割區可獨立地經重設,運行諸如z/OS作業系統或另一作業系統之客體作業系統220且與不同程式222一起操作。在邏輯分割區中運行之作業系統或應用程式呈現為可存取完整的系統,但實際上,僅其一部分可用。 Each logical partition 208 can act as a separate system. That is, each logical partition can be independently reconfigured to run a guest operating system 220 such as the z/OS operating system or another operating system and operate with different programs 222 . An operating system or application running in a logical partition appears to have access to the complete system, but in reality, only a portion of it is available.

記憶體202耦接至處理器(例如,CPU)204,其為可分配至 邏輯分割區之實體處理器資源。舉例而言,邏輯分割區208包括一或多個邏輯處理器,其中之每一者表示可動態地分配至邏輯分割區之實體處理器資源204中的全部或一部分。 Memory 202 is coupled to a processor (e.g., CPU) 204 that is allocable to The physical processor resources of the logical partition. For example, logical partition 208 includes one or more logical processors, each of which represents all or a portion of the physical processor resources 204 that can be dynamically allocated to the logical partition.

此外,記憶體202耦接至I/O子系統206。I/O子系統206可為中央電子裝置複合體之部分或與其分離。其導引主儲存器202與耦接至中央電子裝置複合體之輸入/輸出控制單元230及輸入/輸出(I/O)裝置240之間的資訊流。 Additionally, memory 202 is coupled to I/O subsystem 206 . I/O subsystem 206 may be part of or separate from the central electronics complex. It directs the flow of information between the main storage 202 and the input/output control unit 230 and input/output (I/O) devices 240 coupled to the central electronic device complex.

可使用許多類型之I/O裝置。一個特定類型為資料儲存裝置250。資料儲存裝置250可儲存一或多個程式252、一或多個電腦可讀程式指令254及/或資料等。電腦可讀程式指令可經組態以進行本發明之態樣的實施例之功能。 Many types of I/O devices can be used. One specific type is data storage device 250. The data storage device 250 may store one or more programs 252, one or more computer-readable program instructions 254, and/or data, etc. Computer readable program instructions may be configured to perform the functions of embodiments of aspects of the invention.

作為一個實例,每一處理器204包括及/或可存取標記/驗證組件(或其他組件)260,該組件用於執行生成用於對訊息進行標記之簽章,使用簽章傳輸訊息及/或驗證數位簽章(及/或本發明之一或多個態樣的其他操作)中之一或多者。在各種實例中,可存在執行此等任務之一或多個組件。許多變化係可能的。 As one example, each processor 204 includes and/or has access to a marking/verification component (or other component) 260 that performs generating a signature for marking a message, transmitting the message using the signature, and/or or one or more of the verification of the digital signature (and/or other operations of one or more aspects of the invention). In various instances, there may be one or more components that perform one of these tasks. Many variations are possible.

中央電子裝置複合體200可包括及/或耦接至抽取式/非抽取式、揮發性/非揮發性電腦系統儲存媒體。舉例而言,其可包括及/或耦接至非抽取式非揮發性磁性媒體(通常被稱作「硬碟機」)、用於自抽取式非揮發性磁碟(例如,「軟碟」)讀取及寫入至抽取式非揮發性磁碟(例如,「軟碟」)之磁碟機,及/或用於自諸如CD-ROM、DVD-ROM或其他光學媒體之抽取式非揮發性光碟讀取或寫入至抽取式非揮發性光碟之光碟機。應理解,可結合中央電子裝置複合體200使用其他硬體及/或軟體組件。實 例包括但不限於:微碼、裝置驅動器、冗餘處理單元、外部磁碟機陣列、RAID系統、磁帶機及資料存檔儲存系統等。 Central electronic device complex 200 may include and/or be coupled to removable/non-removable, volatile/non-volatile computer system storage media. For example, it may include and/or be coupled to non-removable non-volatile magnetic media (commonly referred to as "hard drives"), for self-removable non-volatile disks (e.g., "floppy disks" ) disk drives that read and write to removable non-volatile disks (e.g., "floppy disks") and/or for removable non-volatile disks from such as CD-ROMs, DVD-ROMs, or other optical media. An optical disc drive that reads or writes removable non-volatile optical discs. It should be understood that other hardware and/or software components may be used in conjunction with central electronics complex 200. real Examples include but are not limited to: microcode, device drivers, redundant processing units, external disk arrays, RAID systems, tape drives, and data archiving storage systems.

此外,中央電子裝置複合體200可與眾多其他通用或專用計算系統環境或組態一起操作。可適於與中央電子裝置複合體200一起使用之熟知計算系統、環境及/或組態之實例包括但不限於:個入電腦(PC)系統、伺服器電腦系統、精簡型用戶端、複雜型用戶端、手持型或膝上型電腦裝置、多處理器系統、基於微處理器之系統、機上盒、可程式化消費型電子裝置、網路PC、小型電腦系統、大型電腦系統及包括上文系統或裝置中之任一者的分散式雲端計算環境等。 Additionally, central electronics complex 200 may operate with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations suitable for use with central electronic device complex 200 include, but are not limited to: personal computer (PC) systems, server computer systems, thin clients, complex Clients, handheld or laptop computer devices, multi-processor systems, microprocessor-based systems, set-top boxes, programmable consumer electronic devices, network PCs, small computer systems, mainframe computer systems and other Distributed cloud computing environment of any file system or device, etc.

儘管本文中描述計算環境之各種實例,但本發明之一或多個態樣可與許多類型之環境一起使用。本文中所提供之計算環境僅為實例。 Although various examples of computing environments are described herein, one or more aspects of the invention may be used with many types of environments. The computing environments provided in this article are examples only.

根據本發明之一態樣,諸如計算環境100之計算環境或中央電子裝置複合體200採用提供用以生成數位簽章及/或驗證數位簽章之機制的訊息安全輔助擴展設施。在一個實例中,當設施指示符經設定為例如一時,訊息安全輔助擴展設施(例如,訊息安全輔助擴展9設施)被安裝於系統中。作為z/Architecture硬體架構之一個特定實例,當設施安裝於z/Architecture架構化模式下時,設施位元155經設定為例如一。設施包括例如計算數位簽章認證指令,下文描述其實施例。 According to one aspect of the invention, a computing environment such as computing environment 100 or central electronic device complex 200 employs an information security-assisted extension that provides a mechanism for generating digital signatures and/or verifying digital signatures. In one example, when the facility indicator is set to, for example, one, the Information Security Assistance Extensions facility (eg, the Information Security Assistance Extensions 9 facility) is installed in the system. As a specific example of z/Architecture hardware architecture, when a facility is installed in z/Architecture architectural mode, facility bit 155 is set to, for example, one. Facilities include, for example, computing digital signature authentication instructions, examples of which are described below.

參考圖3A至圖3F描述計算數位簽章認證(KDSA)指令之一個實施例。在一個實例中,使用諸如通用處理器之處理器(例如,處理器102或204)執行該指令。在本文中之描述中,指示特定位置、特定欄位及/或欄位之特定大小(例如,特定位元組及/或位元)。然而,可提供其他位 置、欄位及/或大小。此外,儘管指定將位元設定為例如一或零之特定值,但此僅為實例。在其他實例中,可將位元設定為不同值,諸如相反值或另一值。許多變化係可能的。 One embodiment of a Computational Digital Signature Authentication (KDSA) instruction is described with reference to FIGS. 3A to 3F. In one example, the instructions are executed using a processor such as a general purpose processor (eg, processor 102 or 204). In the descriptions herein, a specific location, a specific field, and/or a specific size of a field (eg, a specific byte and/or bit) are indicated. However, other bits are available position, fields and/or size. Furthermore, although it is specified that a bit be set to a specific value such as one or zero, this is only an example. In other examples, the bits may be set to a different value, such as the opposite value or another value. Many variations are possible.

參考圖3A,在一個實例中,計算數位簽章認證(KDSA)指令300之格式為表示具有擴展操作碼(操作碼)欄位之暫存器及暫存器操作的RRE格式。作為實例,該指令包括:操作碼欄位302(例如,位元0至15),其具有指示計算數位簽章認證操作之操作碼;第一暫存器欄位(R1)304(例如,位元24至27),在一個實例中,其被保留且應包括零;及第二暫存器欄位(R2)306(例如,位元28至31),其指明一對通用暫存器。由R2欄位306指明之暫存器的內容指定(儲存器中)第二運算元之位置。R2+1之內容指定第二運算元之長度。在一個實例中,指令之位元16至23被保留且應含有零;否則,程式在未來可能無法相容地操作。如本文中所使用,程式為發佈該指令之程式。其可為使用者程式或另一類型之程式。 Referring to Figure 3A, in one example, a Computed Digital Signature Authentication (KDSA) command 300 is formatted in an RRE format representing registers and register operations with extended opcode (opcode) fields. As an example, the instruction includes: opcode field 302 (e.g., bits 0 to 15) having an opcode indicating a computed digital signature authentication operation; first register field (R 1 ) 304 (e.g., Bits 24 to 27), which in one example are reserved and should include zero; and second register field (R 2 ) 306 (e.g., bits 28 to 31), which designates a pair of general purpose registers device. The contents of the register specified by R2 field 306 specify the location (in memory) of the second operand. The content of R 2 +1 specifies the length of the second operand. In one example, bits 16 to 23 of the instruction are reserved and should contain zeros; otherwise, the program may not operate consistently in the future. As used in this article, a program is the program that issued the instruction. It may be a user program or another type of program.

在一個實施例中,指令執行包括使用一或多個隱含的通用暫存器(亦即,未由指令明確指明之暫存器)。舉例而言,通用暫存器0及1用於執行指令,如本文中所描述。在一個實例中,通用暫存器0含有影響指令之操作的各種控制,且通用暫存器1用於提供由指令使用之參數區塊的位置。 In one embodiment, instruction execution includes the use of one or more implicit general purpose registers (ie, registers not explicitly specified by the instruction). For example, general purpose registers 0 and 1 are used to execute instructions, as described herein. In one example, general purpose register 0 contains various controls that affect the operation of the instruction, and general purpose register 1 is used to provide the location of the parameter block used by the instruction.

作為實例,參考圖3B,通用暫存器0(309)包括函式碼欄位312,其包括函式碼。在一個特定實例中,通用暫存器0之位元位置57至63含有函式碼;在其他實施例中,其他位元可用於含有函式碼。此外,忽略通用暫存器0之位元0至31,且位元32至56被保留且應含有零;否則,程式在未來可能無法相容地操作。在一個實例中,當通用暫存器0之位元 57至63指明未指派或未安裝之函式碼時,辨識到規範例外狀況。 As an example, referring to Figure 3B, general register 0 (309) includes a function code field 312, which includes a function code. In one specific example, bit locations 57 to 63 of general register 0 contain the function code; in other embodiments, other bit locations may be used to contain the function code. Additionally, bits 0 to 31 of general register 0 are ignored, and bits 32 to 56 are reserved and should contain zeros; otherwise, the program may not operate consistently in the future. In one example, when bits of general register 0 A specification exception is recognized when 57 to 63 specify unassigned or uninstalled function code.

圖3C中展示計算數位簽章認證(KDSA)指令之實例經指派函式碼,且其包括例如:指示KDSA-查詢函式之函式碼0(313);指示KDSA-ECDSA-驗證-P256函式之函式碼1(315);指示KDSA-ECDSA-驗證-P384函式之函式碼2(317);指示KDSA-ECDSA-驗證-P521函式之函式碼3(319);指示KDSA-ECDSA-標記-P256函式之函式碼9(321);指示KDSA-ECDSA-標記-P384函式之函式碼10(323);指示KDSA-ECDSA-標記-P521函式之函式碼11(325);指示KDSA-加密-ECDSA-標記-P256函式之函式碼17(327);指示KDSA-加密-ECDSA-標記-P384函式之函式碼18(329);指示KDSA-加密-ECDSA-標記-P521函式之函式碼19(331);指示KDSA-EdDSA-驗證-Ed25519函式之函式碼32(333);指示KDSA-EdDSA-驗證-Ed448函式之函式碼36(335);指示KDSA-EdDSA-標記-Ed25519函式之函式碼40(337);指示KDSA-EdDSA-標記-Ed448函式之函式碼44(339);指示KDSA-加密-EdDSA-標記-Ed25519函式之函式碼48(341);及指示KDSA-加密-EdDSA-標記-Ed448函式之函式碼52(343)。 Figure 3C shows an example of a Computed Digital Signature Authentication (KDSA) command with assigned function codes, and includes, for example: function code 0 (313) indicating the KDSA-query function; indicating the KDSA-ECDSA-verify-P256 function. Function code 1 (315) of the formula; function code 2 (317) instructing the KDSA-ECDSA-verify-P384 function; function code 3 (319) instructing the KDSA-ECDSA-verify-P521 function; instructing KDSA - Function code 9 (321) for the ECDSA-mark-P256 function; Function code 10 (323) for the KDSA-ECDSA-mark-P384 function; Function code for the KDSA-ECDSA-mark-P521 function 11(325); Function code 17(327) indicating the KDSA-Encryption-ECDSA-Mark-P256 function; Function code 18(329) indicating the KDSA-Encryption-ECDSA-Mark-P384 function; Instructing the KDSA- Function code 19 (331) for the encryption-ECDSA-mark-P521 function; function code 32 (333) for the KDSA-EdDSA-verification-Ed25519 function; function code 32 (333) for the KDSA-EdDSA-verification-Ed448 function Code 36 (335); function code 40 (337) indicating the KDSA-EdDSA-mark-Ed25519 function; function code 44 (339) indicating the KDSA-EdDSA-mark-Ed448 function; indicating KDSA-encryption-EdDSA - Function code 48 (341) of the mark-Ed25519 function; and function code 52 (343) indicating the KDSA-encryption-EdDSA-mark-Ed448 function.

每一函式使用參數區塊且在一個實例中,參數區塊之大小取決於函式。圖3C中描繪用於函式之實例參數區塊大小,以及實例資料區塊大小(若適用)。在此實例中,未指派其他函式碼。儘管描述實例函式及函式碼,但可使用其他函式及/或函式碼。 Each function uses a parameter block and the size of the parameter block depends on the function in an instance. The instance parameter block size used for the function, and the instance data block size (if applicable) are depicted in Figure 3C. In this example, no other function codes are assigned. Although example functions and function codes are described, other functions and/or function codes may be used.

參數區塊由例如通用暫存器1指定。在一個實例中,參考圖3D,通用暫存器1(314)之內容指定例如儲存器中之參數區塊的最左位元組之邏輯位址316。舉例而言,在24位元定址模式中,通用暫存器1之位元位置40至63的內容構成位址,且忽略位元位置0至39之內容。在31位元 定址模式中,通用暫存器1之位元位置33至63的內容構成位址,且忽略位元位置0至32之內容。在64位元定址模式中,通用暫存器1之位元位置0至63的內容構成位址。在存取暫存器模式中,存取暫存器1指定含有參數區塊之位址空間。下文進一步描述關於用於各種函式之參數區塊的額外細節。 The parameter block is specified by, for example, general purpose register 1. In one example, referring to Figure 3D, the contents of general register 1 (314) specify, for example, the logical address 316 of the leftmost byte of the parameter block in memory. For example, in the 24-bit addressing mode, the contents of bit positions 40 to 63 of general register 1 constitute the address, and the contents of bit positions 0 to 39 are ignored. in 31 bits In the addressing mode, the contents of bit positions 33 to 63 of the general register 1 constitute the address, and the contents of bit positions 0 to 32 are ignored. In 64-bit addressing mode, the contents of bit positions 0 to 63 of general-purpose register 1 constitute the address. In access register mode, access register 1 specifies the address space containing the parameter block. Additional details about parameter blocks for various functions are described further below.

返回至圖3A,R2欄位306指明通用暫存器之偶數奇數對,且將指明例如除通用暫存器0以外之偶數編號暫存器;否則,辨識到規範例外狀況。如圖3E中所展示,通用暫存器R2(326)之內容指示第二運算元位址328。舉例而言,取決於定址模式,第二運算元之最左位元組的位置由R2通用暫存器之內容指定。在一個實施例中,在24位元定址模式中,通用暫存器R2之位元位置40至63的內容構成第二運算元之位址,且忽略位元位置0至39之內容;經更新位址之位元40至63替換通用暫存器R2中之對應位元,忽略經更新位址之位元位置40的進位輸出,且通用暫存器R2之位元位置32至39的內容設定成零。在31位元定址模式中,通用暫存器R2之位元位置33至63的內容構成第二運算元之位址,且忽略位元位置0至32之內容;經更新位址之位元33至63替換通用暫存器R2中之對應位元,忽略經更新位址之位元位置33的進位輸出,且通用暫存器R2之位元位置32的內容設定成零。在64位元定址模式中,通用暫存器R2之位元位置0至63的內容構成第二運算元之位址;經更新位址之位元0至63替換通用暫存器R2之內容,且忽略位元位置0之進位輸出。 Returning to Figure 3A, the R2 field 306 specifies the even-odd pair of general-purpose registers, and will specify, for example, even-numbered registers other than general-purpose register 0; otherwise, a specification exception is recognized. As shown in Figure 3E, the contents of general register R2 (326) indicate the second operand address 328. For example, depending on the addressing mode, the position of the leftmost byte of the second operand is specified by the contents of the R2 general-purpose register. In one embodiment, in the 24-bit addressing mode, the contents of bit positions 40 to 63 of the general register R 2 constitute the address of the second operand, and the contents of bit positions 0 to 39 are ignored; Bits 40 to 63 of the updated address replace the corresponding bits in the general register R 2 , ignoring the carry output at bit position 40 of the updated address, and bit positions 32 to 39 of the general register R 2 content is set to zero. In the 31-bit addressing mode, the contents of bit positions 33 to 63 of the general register R 2 constitute the address of the second operand, and the contents of bit positions 0 to 32 are ignored; the bits of the updated address 33 to 63 replace the corresponding bits in general register R 2 , ignore the carry output at bit position 33 of the updated address, and set the content of bit position 32 in general register R 2 to zero. In the 64-bit addressing mode, the contents of bit positions 0 to 63 of the general register R 2 constitute the address of the second operand; the updated address bits 0 to 63 replace the contents of the general register R 2 content, and ignore the carry output from bit position 0.

第二運算元位置中之位元組的數目指定於通用暫存器R2+1中。如圖3F中所展示,通用暫存器R2+1(330)之內容用於判定第二運算元之長度332。在一個實施例中,在24位元及31位元定址模式兩者中,通用 暫存器R2+1之位元位置32至63的內容形成指定第二運算元中之位元組的數目的32位元不帶正負號二進位整數;且經更新值替換通用暫存器R2+1之位元位置32至63的內容。在64位元定址模式中,通用暫存器R2+1之位元位置0至63的內容形成指定第二運算元中之位元組的數目的64位元不帶正負號二進位整數;且經更新值替換通用暫存器R2+1之內容。 The number of bytes in the second operand position is specified in general register R 2 +1. As shown in FIG. 3F, the contents of the general register R 2 +1 (330) are used to determine the length of the second operand 332. In one embodiment, in both 24-bit and 31-bit addressing modes, the contents of bit positions 32 to 63 of general register R 2 +1 form a number specifying the number of bytes in the second operand. 32-bit unsigned binary integer; and the updated value replaces the contents of bit positions 32 to 63 of the general register R 2 +1. In the 64-bit addressing mode, the contents of bit positions 0 to 63 of the general register R 2 +1 form a 64-bit unsigned binary integer specifying the number of bytes in the second operand; And the contents of the general register R 2 +1 are replaced with the updated value.

在24位元或31位元定址模式中,通用暫存器R2及R2+1之位元位置0至31的內容保持不變。在存取暫存器模式中,存取暫存器R2指定用於第二運算元之位址空間。在一個實例中,愛德華曲線運算元以小端序格式逐位元組排序,且第二運算元同樣在第二運算元位址空間內排序。 In the 24-bit or 31-bit addressing mode, the contents of bit positions 0 to 31 of the general registers R 2 and R 2 +1 remain unchanged. In access register mode, access register R2 specifies the address space for the second operand. In one example, the Edwards curve operands are sorted byte-by-byte in little-endian format, and the second operand is also sorted within the second operand address space.

計算數位簽章認證指令支援複數個認證技術,包括例如橢圓曲線數位簽章演算法(ECDSA)及愛德華曲線數位簽章演算法(EdDSA)。此外,維爾斯特拉斯曲線支援三個國家標準技術研究所(NIST)質數欄位:例如使用ECDSA演算法之P256、P384及P521。ECDSA參考曲線參數值,包括例如質數模數、階數、係數、基點x及基點y,該等值由適當函式碼使用且提供於曲線標準(例如,FIPS PUB 186-4,聯邦資訊處理標準出版物,數位簽章標準(DSS),2013年7月發佈)中。 The Compute Digital Signature Authentication command supports multiple authentication technologies, including, for example, Elliptic Curve Digital Signature Algorithm (ECDSA) and Edwards Curve Digital Signature Algorithm (EdDSA). In addition, Weierstrass Curve supports three National Institute of Standards and Technology (NIST) prime number fields: such as P256, P384, and P521 using the ECDSA algorithm. ECDSA reference curve parameter values, including, for example, prime modulus, order, coefficients, base point Publication, Digital Signature Standard (DSS), released July 2013).

此外,支援使用EdDSA演算法之兩個質數欄位,其被稱為例如Ed25519及Ed448。類似地,使用EdDSA之函式碼亦使用曲線標準(例如,愛德華曲線數位簽章演算法(EdDSA),網際網路調研上作小組(IRTF),RFC-8032,2017年1月)中提供之曲線參數值。 In addition, two prime number fields using the EdDSA algorithm are supported, which are called for example Ed25519 and Ed448. Similarly, code that uses EdDSA also uses curve standards (e.g., Edwards Curve Digital Signature Algorithm (EdDSA), Internet Research Task Force (IRTF), RFC-8032, January 2017) Curve parameter values.

以下為此等欄位之模數的定義:P256=2256-2224+2192+296-1 P384=2384-2128-296+232-1 P521=2521-1 Ed25519=2255-19 Ed448=2448-2224-1 The following is the definition of the modulus of these fields: P256=2 256 -2 224 +2 192 +2 96 -1 P384=2 384 -2 128 -2 96 +2 32 -1 P521=2 521 -1 Ed25519= 2 255 -19 Ed448=2 448 -2 224 -1

選定質數由各種標準建議且提供優於諸如隨機質數之其他質數的更佳效能。 Selected primes are suggested by various standards and provide better performance than other primes such as random primes.

在NIST質數上使用ECDSA演算法之標記及驗證函式碼(例如,1、2、3、9、10、11、17、18及19)忽略通用暫存器R2及R2+1之內容。在一個實例中,此等函式利用參數區塊中所含有的具有固定大小之經雜湊訊息。 Mark and verify code using the ECDSA algorithm on NIST prime numbers (e.g., 1, 2, 3, 9, 10, 11, 17, 18, and 19) ignoring the contents of general registers R 2 and R 2 +1 . In one example, these functions utilize a fixed-size hashed message contained in a parameter block.

在一個實例中,愛德華曲線函式:KDSA-EdDSA-驗證、KDSA-EdDSA-標記及KDSA-加密-EdDSA-標記(例如,函式碼32、36、40、44、48及52)使用EdDSA演算法,且經加密訊息未經預雜湊。運算元2為經加密訊息,且係使用通用暫存器R2定址並且其長度由R2+1給出。曲線Ed25519及Ed448支援PureEdDSA變型。在其他實施例中可支援其他及/或不同曲線。 In one example, the Edwards curve functions: KDSA-EdDSA-authenticate, KDSA-EdDSA-mark, and KDSA-encrypt-EdDSA-mark (e.g., function codes 32, 36, 40, 44, 48, and 52) use the EdDSA algorithm method, and the encrypted message is not pre-hashed. Operand 2 is the encrypted message and is addressed using general register R 2 and its length is given by R 2 +1. Curves Ed25519 and Ed448 support PureEdDSA variants. Other and/or different curves may be supported in other embodiments.

在執行計算數位簽章認證指令時,執行由通用暫存器0中之函式碼指定的函式。下文描述所支援函式中之每一者: When executing the calculation digital signature authentication command, the function specified by the function code in general register 0 is executed. Each of the supported functions is described below:

KDSA-查詢(函式碼0)KDSA-query (function code 0)

查詢函式提供指示其他函式之可用性的機制。對於查詢函式,忽略通用暫存器R2及R2+1之內容。 Query functions provide a mechanism for indicating the availability of other functions. For the query function, the contents of general registers R 2 and R 2 +1 are ignored.

參考圖4A描述由查詢函式使用之參數區塊的一個實例。如所示,在一個實例中,參數區塊400包括128位元狀態字401。此欄位之位元0至127分別對應於計算數位簽章認證指令之函式碼0至127。當位元為 例如一時,安裝對應函式;否則,不安裝函式。 An example of a parameter block used by a query function is described with reference to Figure 4A. As shown, in one example, parameter block 400 includes a 128-bit status word 401. Bits 0 to 127 of this field respectively correspond to function codes 0 to 127 of the digital signature authentication command. When the bit is For example, once, the corresponding function is installed; otherwise, the function is not installed.

作為實例,當KDSA-查詢函式之執行完成時設定條件碼0;條件碼1、2及3並不適用於此函式。 As an example, condition code 0 is set when execution of the KDSA-query function completes; condition codes 1, 2, and 3 do not apply to this function.

除了查詢函式之外,計算數位簽章認證指令支援各種驗證及標記函式。驗證函式檢查訊息(例如,經雜湊訊息)之簽章的有效性,並經由條件碼報告憑證是否有效;且標記函式建立用於訊息(例如,經雜湊訊息)之簽章。下文描述各種驗證及標記函式。每一函式由提供正使用曲線之指示的函式碼表示。曲線具有與此相關聯之各種屬性,包括但不限於曲線參數值及/或其他屬性,諸如生成點

Figure 109101159-A0305-02-0017-30
;被稱為n的
Figure 109101159-A0305-02-0017-31
之階數等。此等屬性中之一或多者用於執行函式,如下文所描述。 In addition to query functions, the Compute Digital Signature Authentication command supports various verification and marking functions. The verification function checks the validity of the signature of the message (e.g., the hashed message) and reports whether the certificate is valid via a condition code; and the marking function creates the signature for the message (e.g., the hashed message). The various validation and marking functions are described below. Each function is represented by a function code that provides an indication that the curve is being used. Curves have various properties associated with them, including but not limited to curve parameter values and/or other properties such as generating points
Figure 109101159-A0305-02-0017-30
; called n
Figure 109101159-A0305-02-0017-31
The order, etc. One or more of these properties are used to execute the function, as described below.

KDSA-ECDSA-驗證函式KDSA-ECDSA-verification function

在一個實施例中,支援用於具有NIST質數之維爾斯特拉斯曲線的三個KDSA-ECDSA-驗證函式,且下文提供對應函式碼: In one embodiment, three KDSA-ECDSA-verification functions for Weierstrass curves with NIST primes are supported, and the corresponding function codes are provided below:

KDSA-ECDSA-驗證-P256(函式碼1) KDSA-ECDSA-verification-P256 (function code 1)

KDSA-ECDSA-驗證-P384(函式碼2) KDSA-ECDSA-verification-P384 (function code 2)

KDSA-ECDSA-驗證-P521(函式碼3) KDSA-ECDSA-verification-P521 (function code 3)

圖3D至圖3F中展示由此等函式中之每一者使用的運算元之位置及位址。下文所描述的用於每一函式之參數區塊含有由KDSA-ECDSA-驗證函式使用之運算元且由通用暫存器1定址。 The locations and addresses of the operands used by each of these functions are shown in Figures 3D-3F. The parameter block for each function described below contains the operands used by the KDSA-ECDSA-verify function and is addressed by general purpose register 1.

KDSA-ECDSA-驗證指令檢查經標記訊息之有效性。訊息之發送者具有可用於查看簽章是否匹配訊息(例如,經雜湊訊息)之公開金鑰。簽章包括例如由R及S指明之質數欄位中的兩個整數。發送者及接收者就用於建立簽章之雜湊方案達成一致。KDSA-ECDSA-驗證指令對參數 區塊中表示為H(M)之訊息進行操作,諸如已經雜湊訊息(例如,經預雜湊至固定長度)。發送者之公開金鑰由K表示。橢圓曲線公開金鑰為曲線上之點且在質數欄位內具有X及Y座標(由Xk及Yk表示),從而使其為其他參數的兩倍大。此等運算元經供應至參數區塊中之指令。該操作在條件碼中產生正確或錯誤有效性指示。 KDSA-ECDSA-verify command checks the validity of the tagged message. The sender of the message has a public key that can be used to see if the signature matches the message (e.g., the hashed message). The signature includes, for example, two integers in the prime number fields designated by R and S. The sender and receiver agree on the hash scheme used to create the signature. KDSA-ECDSA-verify command pair parameters The operation is performed on the message represented by H(M) in the block, such as the message that has been hashed (eg, pre-hashed to a fixed length). The sender's public key is represented by K. An elliptic curve public key is a point on the curve and has X and Y coordinates (represented by Xk and Yk) in the prime fields, making it twice as large as the other parameters. These operands are supplied to the instruction in the parameter block. This operation produces a true or false validity indication in the condition code.

作為實例,若簽章有效,則設定條件碼0,若簽章無效,則設定條件碼2,且當公開金鑰由於例如不大於零且小於質數而無效且在曲線上時,設定條件碼1。其他實例為可能的。 As an example, condition code 0 is set if the signature is valid, condition code 2 is set if the signature is invalid, and condition code 1 is set when the public key is invalid and on the curve because, for example, it is not greater than zero and less than a prime number . Other examples are possible.

參考圖5描述使用橢圓曲線數位簽章演算法之驗證處理的一個實例。在此處理中,上劃線指示相較於整數具有x及y座標之點,*指示模乘,+為模加,×為點之純量乘法,且==為用於整數比較相等之布林型測試。 An example of the verification process using the elliptic curve digital signature algorithm is described with reference to FIG. 5 . In this process, an overline indicates a point with x and y coordinates compared to an integer, * indicates modular multiplication, + is modular addition, × is a scalar multiplication of a point, and == is used for integer comparison equality. Bollinger type test.

最初,在一個實例中,

Figure 109101159-A0305-02-0018-1
為生成值,亦即稱為基點或生成點的橢圓曲線上之區分性點;且n為
Figure 109101159-A0305-02-0018-2
之階數,步驟500。在一個實例中,
Figure 109101159-A0305-02-0018-3
及n為由例如執行指令之硬體可存取之記憶體中儲存的函式碼指示的根據曲線(基於標準)之固定常數。作為實例,n大於2160。點
Figure 109101159-A0305-02-0018-32
之階數例如為最小正整數n,使得nx
Figure 109101159-A0305-02-0018-9
專於無窮大的點。檢查簽章R及S是否例如不<1且不>n-1,查詢502。若此檢查失敗,則處理結束,步驟504。否則,將c設定成等於S mod n之模逆=S-1,步驟506。此外,將u1設定成等於(H(msg)* c)mod n,步驟508,且將u2設定成等於(R * c)mod n,步驟510。將(
Figure 109101159-A0305-02-0018-4
,
Figure 109101159-A0305-02-0018-5
)設定成等於(u1 x
Figure 109101159-A0305-02-0018-6
)+(u2 x
Figure 109101159-A0305-02-0018-7
),步驟512。另外,將v設定成等於x1 mod n,步驟514。此亦可寫為
Figure 109101159-A0305-02-0018-8
,其中p為奇質數。在v與簽章(R)之間執行用於整數比較相等之布林型測試,且例如在 條件碼中傳回布林型正確或錯誤,步驟516。 Initially, in an instance,
Figure 109101159-A0305-02-0018-1
is the generated value, that is, the distinguishing point on the elliptic curve called the base point or generating point; and n is
Figure 109101159-A0305-02-0018-2
The order, step 500. In one instance,
Figure 109101159-A0305-02-0018-3
and n is a fixed constant according to the curve (based on the standard) indicated by, for example, function code stored in memory accessible to the hardware executing the instruction. As an example, n is greater than 2 160 . point
Figure 109101159-A0305-02-0018-32
For example, the order of is the smallest positive integer n, such that nx
Figure 109101159-A0305-02-0018-9
Specialize in infinite points. Check whether the signatures R and S are not <1 and not>n-1, for example, query 502. If this check fails, the process ends, step 504. Otherwise, set c equal to the modular inverse of S mod n = S −1 , step 506 . Additionally, u1 is set equal to (H(msg)*c)mod n, step 508, and u2 is set equal to (R*c)mod n, step 510. will(
Figure 109101159-A0305-02-0018-4
,
Figure 109101159-A0305-02-0018-5
) is set equal to (u1 x
Figure 109101159-A0305-02-0018-6
)+(u2 x
Figure 109101159-A0305-02-0018-7
), step 512. Additionally, v is set equal to x1 mod n, step 514. This can also be written as
Figure 109101159-A0305-02-0018-8
, where p is an odd prime number. A Boolean test for integer comparison equality is performed between v and the signature (R), and Boolean true or false is returned, eg, in the condition code, step 516.

在一個實例中,K具有x及y座標且為點,其等於私密金鑰d乘以生成值點

Figure 109101159-A0305-02-0019-29
。 In one example, K has x and y coordinates and is a point, which is equal to the secret key d times the generated value point
Figure 109101159-A0305-02-0019-29
.

如所指示,經由參數區塊提供用於驗證函式之運算元,下文描述參數區塊之實例。在描述用於各種函式之參數區塊之後,描述參數區塊之欄位的額外細節。 As indicated, the operands for the verification function are provided via parameter blocks, examples of which are described below. After describing the parameter blocks used for various functions, additional details about the fields of the parameter block are described.

參考圖4B描述用於KDSA-ECDSA-驗證-P256函式之參數區塊的一個實例。在一個實例中,參數區塊402包括例如以下欄位:簽章(R)403、簽章(S)404、經雜湊訊息H(msg)405、公用密碼金鑰(K)406(例如,公用密碼金鑰X分量(Xk)及Y分量(Yk)),及經保留保存區域407。在一個實例中,每一欄位表示為32位元組或256位元寬,且圖4B中描繪參數區塊內之實例位移。在一個實例中,Xk之位移量為Dec 96/Hex 60且Yk之位移量為Dec 128/Hex 80。 An example of a parameter block for the KDSA-ECDSA-verify-P256 function is described with reference to Figure 4B. In one example, parameter block 402 includes, for example, the following fields: signature (R) 403, signature (S) 404, hashed message H (msg) 405, public cryptographic key (K) 406 (e.g., public The cryptographic key X component (Xk) and Y component (Yk)), and the reserved storage area 407. In one example, each field is represented as 32 bytes, or 256 bits wide, and the instance displacement within the parameter block is depicted in Figure 4B. In one example, the displacement of Xk is Dec 96/Hex 60 and the displacement of Yk is Dec 128/Hex 80.

此外,圖4C中描繪用於KDSA-ECDSA-驗證-P384函式之參數區塊的一個實例。在此實例中,每一欄位為48位元組或384位元寬。如所示,參數區塊408包括例如以下欄位:簽章(R)409、簽章(S)410、經雜湊訊息411、公用密碼金鑰(K)412(例如,Xk及Yk),及經保留保存區域413。圖4C中描繪參數區塊內之實例位移。在一個實例中,Xk之位移量為Dec 144/Hex 90且Yk之位移量為Dec 192/Hex C0。 Additionally, an example of a parameter block for the KDSA-ECDSA-verify-P384 function is depicted in Figure 4C. In this example, each field is 48 bytes, or 384 bits wide. As shown, parameter block 408 includes fields such as: signature (R) 409, signature (S) 410, hashed message 411, public cryptographic key (K) 412 (e.g., Xk and Yk), and Reserved save area 413. Example displacements within the parameter block are depicted in Figure 4C. In one example, the displacement of Xk is Dec 144/Hex 90 and the displacement of Yk is Dec 192/Hex C0.

此外,如圖4D中所展示,用於KDSA-ECDSA-驗證-P521函式之參數區塊414包括例如以下欄位:簽章(R)415、簽章(S)416、經雜湊訊息417、公用密碼金鑰418(例如,Xk、Yk),及經保留保存區域419。每一欄位為例如80位元組或640位元寬。在一個實例中,NIST標準 定義待以8位元寬之八位元組傳遞的資料。因此,在最左有效位元上藉由7個零填補521位元運算元以形成528位元或66位元組(八位元組)。若經更新,則每一參數包括80位元組欄位之最右66位元組。圖4D中描繪參數區塊內之實例位移。作為實例,Xk之位移量為Dec 240/Hex F0且Yk之位移量為Dec 320/Hex 140。 In addition, as shown in Figure 4D, the parameter block 414 for the KDSA-ECDSA-verify-P521 function includes, for example, the following fields: signature (R) 415, signature (S) 416, hashed message 417, Public cryptographic keys 418 (eg, Xk, Yk), and reserved storage area 419. Each field is, for example, 80 bytes or 640 bits wide. In one instance, the NIST standard Defines the data to be passed as 8-bit wide octets. Therefore, the 521-bit operand is padded with 7 zeros on the leftmost significant bit to form a 528-bit or 66-bit group (octet). If updated, each parameter includes the rightmost 66 bytes of the 80-byte field. The instance displacements within the parameter block are depicted in Figure 4D. As an example, the displacement of Xk is Dec 240/Hex F0 and the displacement of Yk is Dec 320/Hex 140.

KDSA-ECDSA-標記函式KDSA-ECDSA-mark function

在一個實施例中,支援三個KDSA-ECDSA-標記函式及三個KDSA-加密-ECDSA-標記函式,且下文提供對應函式碼: In one embodiment, three KDSA-ECDSA-marking functions and three KDSA-encryption-ECDSA-marking functions are supported, and the corresponding function codes are provided below:

KDSA-ECDSA-標記-P256(函式碼9) KDSA-ECDSA-mark-P256 (function code 9)

KDSA-ECDSA-標記-P384(函式碼10) KDSA-ECDSA-mark-P384 (function code 10)

KDSA-ECDSA-標記-P521(函式碼11) KDSA-ECDSA-mark-P521 (function code 11)

KDSA-加密-ECDSA-標記-P256(函式碼17) KDSA-encryption-ECDSA-mark-P256 (function code 17)

KDSA-加密-ECDSA-標記-P384(函式碼18) KDSA-encryption-ECDSA-mark-P384 (function code 18)

KDSA-加密-ECDSA-標記-P521(函式碼19) KDSA-encryption-ECDSA-mark-P521 (function code 19)

KDSA-ECDSA-標記函式使用為用於作者之私密金鑰之純文字金鑰的密碼金鑰(K)。此金鑰待由軟體保護。KDSA-加密-ECDSA-標記函式使用加密金鑰以保存作者之私密金鑰,且具有對應包裝金鑰驗證圖案(WkaVP)以測試金鑰。 The KDSA-ECDSA-tagged function uses the cryptographic key (K) that is the plaintext key for the author's private key. This key is to be protected by software. The KDSA-encryption-ECDSA-mark function uses an encryption key to save the author's private key, and has a corresponding wrapper key verification pattern (Wk a VP) to test the key.

ECDSA演算法使用隨機數以使簽章隨機化。用於具有純文字金鑰之NIST質數(例如,P256、P384及P521)的KDSA-ECDSA-標記函式在參數區塊中利用使用者指定隨機數RN。允許使用者指定隨機數使此指令具確定性且執行速度較快。用於具有加密金鑰之NIST質數的KDSA-加密-ECDSA-標記指令使用指定隨機數,以在指令執行內生成對使用者 隱藏之秘密隨機數,其添加簽章程序之安全性且在相同輸入情況下將發生變化。在另一實施例中,用於具有加密金鑰之NIST質數的KDSA-加密-ECDSA-標記指令允許使用者指定隨機數,且進一步藉由當日時間(TOD)時脈之部分使此數隨機化,從而允許模擬模型具確定性但實際硬體係隨機的。在一個實施例中,EdDSA技術並不使用隨機數。 The ECDSA algorithm uses random numbers to randomize signatures. The KDSA-ECDSA-tagged function for NIST prime numbers with plain text keys (e.g., P256, P384, and P521) utilizes a user-specified random number RN in the parameter block. Allowing the user to specify a random number makes this command deterministic and faster. The KDSA-Crypto-ECDSA-Tag command for NIST primes with encryption keys uses a specified random number to generate a pair of keys to the user within the command execution. A hidden secret random number that adds security to the signature process and will change under the same input. In another embodiment, the KDSA-Crypto-ECDSA-Tag command for NIST primes with encryption keys allows the user to specify a random number and further randomize this number by part of a time-of-day (TOD) clock , thus allowing the simulation model to be deterministic but the actual hard system to be stochastic. In one embodiment, the EdDSA technique does not use random numbers.

標記函式之結果為由兩個整數R及S表示,且儲存在參數區塊中之指明位置中之簽章,該等整數介於例如零的值與特定函式之曲線的階數之間。 The result of a marker function is a signature represented by two integers, R and S, stored in specified locations in the parameter block, between a value such as zero and the degree of the curve of the particular function. .

作為實例,若驗證圖案失配、經雜湊訊息為零或私密金鑰為零或大於或等於曲線之階數或不在曲線上,則設定條件碼1。若隨機數對於ECDSA-標記不可逆,但對於加密-ECDSA-標記並非如此,則設定條件碼2。對於加密-ECDSA-標記,所生成之隱藏隨機數係可逆的。若簽章生成成功,則設定條件碼0。 As an example, condition code 1 is set if the verification pattern mismatches, the hashed message is zero, or the private key is zero or greater than or equal to the degree of the curve or not on the curve. If the random number is irreversible for ECDSA-marks, but not for encryption-ECDSA-marks, then condition code 2 is set. For encrypted-ECDSA-marks, the generated hidden random numbers are reversible. If the signature is generated successfully, condition code 0 is set.

參考圖6描述使用橢圓曲線數位簽章演算法之標記處理的一個實例。在此處理中,上劃線指示具有x及y座標之點。 An example of marking processing using the elliptic curve digital signature algorithm is described with reference to FIG. 6 . In this process, the overline indicates a point with x and y coordinates.

在一個實例中,最初,將變數z設定成等於經雜湊訊息(H(msg))之最左位元的選定數(Ln),其中Ln為用於標記函式之曲線的基點之階數n的長度,步驟600。此外,判定選定隨機數(RN)是否介於第一值(例如,0)與第二值(例如,n)之間,查詢602。若隨機數並不介於兩值之間,則將條件碼設定成選定值(例如,CC=2),步驟604。然而,若隨機數介於兩值之間,則將RN-1設定成等於RN mod n之模逆,步驟606。 In one example, the variable z is initially set equal to a selected number (Ln) of the leftmost bit of the hashed message (H(msg)), where Ln is the order n of the base point of the curve used to label the function length, step 600. Additionally, a query 602 is performed to determine whether the selected random number (RN) is between a first value (eg, 0) and a second value (eg, n). If the random number is not between the two values, the condition code is set to the selected value (for example, CC=2), step 604. However, if the random number is between the two values, then RN -1 is set equal to the modular inverse of RN mod n, step 606.

另外,將座標(

Figure 109101159-A0305-02-0021-10
,
Figure 109101159-A0305-02-0021-11
)設定成等於RN及
Figure 109101159-A0305-02-0021-12
之純量乘法,其中
Figure 109101159-A0305-02-0021-13
為生成點,步驟608。此外,將R設定成等於x1 mod n,其中n為
Figure 109101159-A0305-02-0021-14
之階 數,×為點之純量乘法,且+為模加,步驟610。判定R是否設定成等於諸如零之選定值,查詢612。若R設定成等於零,則將條件碼設定成選定值(例如,CC=2),步驟614。然而,若R並未設定成等於零,則將變數S設定成等於RN-1 *(z+K * R)mod n,步驟616,其中K為金鑰。 In addition, change the coordinates (
Figure 109101159-A0305-02-0021-10
,
Figure 109101159-A0305-02-0021-11
) is set equal to RN and
Figure 109101159-A0305-02-0021-12
scalar multiplication of , where
Figure 109101159-A0305-02-0021-13
To generate points, step 608. Additionally, set R equal to x1 mod n, where n is
Figure 109101159-A0305-02-0021-14
The order of , × is the scalar multiplication of points, and + is the modular addition, step 610. To determine whether R is set equal to a selected value such as zero, query 612. If R is set equal to zero, then the condition code is set to the selected value (eg, CC=2), step 614. However, if R is not set equal to zero, then the variable S is set equal to RN -1 * (z + K * R) mod n, step 616, where K is the key.

判定S是否等於諸如零之選定值,查詢618。若S等於零,則將條件碼設定成選定值(例如,CC=2),步驟620。否則,傳回簽章,步驟622。簽章包括兩個整數R及S。 To determine whether S is equal to a selected value such as zero, query 618. If S equals zero, then the condition code is set to the selected value (eg, CC=2), step 620. Otherwise, return the signature, step 622. The signature includes two integers R and S.

如所指示,經由參數區塊提供用於標記函式之運算元,下文描述參數區塊之實例。 As indicated, the operands for the tagged function are provided via parameter blocks, examples of which are described below.

參考圖4E描述用於具有純文字金鑰之KDSA-ECDSA-標記P256函式的參數區塊之一個實例。在一個實例中,參數區塊420包括例如以下欄位:簽章(R)421、簽章(S)422、經雜湊訊息423、呈純文字之私用密碼金鑰424、隨機數425及經保留保存區域426。圖4E中描繪參數區塊內之實例位移。 An example of a parameter block for the KDSA-ECDSA-Tag P256 function with a plain text key is described with reference to Figure 4E. In one example, the parameter block 420 includes, for example, the following fields: signature (R) 421, signature (S) 422, hashed message 423, private cryptographic key in plain text 424, random number 425, and Save area 426 is reserved. The instance displacements within the parameter block are depicted in Figure 4E.

此外,參考圖4F,用於具有純文字金鑰之KDSA-ECDSA-標記P384函式的參數區塊427包括例如以下欄位:簽章(R)428、簽章(S)429、經雜湊訊息430、呈純文字之私用密碼金鑰(K)431、隨機數432及經保留保存區域433。圖4F中描繪參數區塊內之實例位移。 Additionally, referring to Figure 4F, the parameter block 427 for the KDSA-ECDSA-Tag P384 function with a plain text key includes, for example, the following fields: signature (R) 428, signature (S) 429, hashed message 430. The private password key (K) 431 in plain text, the random number 432 and the reserved storage area 433. The instance displacements within the parameter block are depicted in Figure 4F.

此外,參考圖4G,用於具有純文字金鑰之KDSA-ECDSA-標記P521函式的參數區塊434包括例如以下欄位:簽章(R)435、簽章(S)436、經雜湊訊息437、呈純文字之私用密碼金鑰438、隨機數439,及經保留保存區域440。在一個實例中,除經雜湊訊息外,參數為528位元(66位元組)且在80位元組欄位中右對準。521位元之源參數例如待藉由7個零 填補至最高有效位元左側,如由NIST標準規定。簽章之目的地欄位例如在參數欄位中為右對準之66位元組寬,且剩餘14位元組保持不變。經雜湊訊息例如為80位元組寬。圖4G中描繪參數區塊內之實例位移。 Additionally, referring to Figure 4G, the parameter block 434 for the KDSA-ECDSA-Tag P521 function with a plain text key includes, for example, the following fields: signature (R) 435, signature (S) 436, hashed message 437. Private password key 438 in plain text, random number 439, and reserved storage area 440. In one example, in addition to the hashed message, the parameters are 528 bits (66 bytes) and are right-justified in an 80-byte field. A 521-bit source parameter is represented by 7 zeros Pad to the left of the most significant bit, as specified by the NIST standard. The signature's destination field, for example in the parameter field, is 66 bytes wide, right-aligned, and the remaining 14 bytes remain unchanged. The hashed message is, for example, 80 bytes wide. The instance displacements within the parameter block are depicted in Figure 4G.

繼續參數區塊,參考圖4H,用於使用加密金鑰之KDSA-加密-ECDSA-標記P256函式的參數區塊441包括例如以下欄位:簽章(R)442、簽章(S)443、經雜湊訊息444、加密私用密碼金鑰(WKa(K))445、隨機數446、AES包裝金鑰驗證圖案(WKaVP)447,及經保留保存區域448。圖4H中描繪參數區塊內之實例位移。 Continuing with the parameter block, referring to Figure 4H, the parameter block 441 for the KDSA-Encryption-ECDSA-Mark P256 function using the encryption key includes, for example, the following fields: signature (R) 442, signature (S) 443 , hashed message 444, encrypted private cryptographic key (WK a (K)) 445, random number 446, AES wrapper key verification pattern (WK a VP) 447, and reserved storage area 448. Example displacements within parameter blocks are depicted in Figure 4H.

此外,參考圖4I,用於KDSA-加密-ECDSA-標記-P384函式之參數區塊449包括例如以下欄位:簽章(R)450、簽章(S)451、經雜湊訊息452、加密私用密碼金鑰(WKa(K))453、隨機數454、AES包裝金鑰驗證圖案(WKaVP)455,及經保留保存區域456。圖4I中描繪參數區塊內之實例位移。 In addition, referring to Figure 4I, the parameter block 449 for the KDSA-Encrypt-ECDSA-Mark-P384 function includes, for example, the following fields: signature (R) 450, signature (S) 451, hashed message 452, encryption Private cryptographic key (WK a (K)) 453, random number 454, AES wrapped key verification pattern (WK a VP) 455, and reserved storage area 456. The instance displacements within the parameter block are depicted in Figure 4I.

此外,參考圖4J,用於KDSA-加密-ECDSA-標記-P521函式之參數區塊457包括例如以下欄位:簽章(R)458、簽章(S)459、經雜湊訊息460、加密私用密碼金鑰(WKa(K))461、隨機數462、AES包裝金鑰驗證圖案(WKaVP)463,及經保留保存區域464。在一個實例中,P521格式具有521位元,其中對於在80位元組欄位內右對準的R、S及66位元組之運算元,具有為零之額外最高有效7位元。R及S欄位之剩餘14位元組不變。經雜湊訊息例如為80位元組欄位,且H(msg)及運算元在80位元組欄位內右對準。圖4J中描繪參數區塊內之實例位移。 In addition, referring to Figure 4J, the parameter block 457 for the KDSA-Encrypt-ECDSA-Mark-P521 function includes, for example, the following fields: signature (R) 458, signature (S) 459, hashed message 460, encryption Private cryptographic key (WK a (K)) 461, random number 462, AES wrapped key verification pattern (WK a VP) 463, and reserved storage area 464. In one example, the P521 format has 521 bits, with an additional most significant 7 bits of zero for right-aligned R, S, and 66-byte operands within the 80-byte field. The remaining 14 bytes of the R and S fields remain unchanged. The hashed message is, for example, an 80-byte field, and H(msg) and the operand are right-aligned within the 80-byte field. The instance displacements within the parameter block are depicted in Figure 4J.

KDSA-EdDSA-驗證函式KDSA-EdDSA-verification function

在一個實施例中,支援用於具有特殊質數之愛德華曲線的 兩個KDSA-EdDSA-驗證函式,且下文提供對應函式碼: In one embodiment, support for Edwards curves with special prime numbers is Two KDSA-EdDSA-verification functions, and the corresponding function codes are provided below:

˙KDSA-EdDSA-驗證-Ed25519(函式碼32) ˙KDSA-EdDSA-verification-Ed25519 (function code 32)

˙KDSA-EdDSA-驗證-Ed448(函式碼36) ˙KDSA-EdDSA-verification-Ed448 (function code 36)

由此等函式中之每一者使用的運算元之位置及位址如圖3D至圖3F中展示。下文所描述的用於每一函式之參數區塊含有由KDSA-EdDSA-驗證函式使用之運算元且由通用暫存器1定址。 The locations and addresses of the operands used by each of these functions are shown in Figures 3D-3F. The parameter block for each function described below contains the operands used by the KDSA-EdDSA-verification function and is addressed by general purpose register 1.

在一個實施例中,EdDSA定義為具有以與大部分密碼技術相反之小端序形式編碼之整數。呈小端序八位元組(位元組)形式之Ed25519將32位元組串h編碼為h[0]……h[31],其中h[31]係最高有效的。若A為h[0]之位址,則A+31為最高有效位元組h[31]之位址。對於255位元格式,並不需要最高有效位元組之最高有效位元。對於經壓縮點,y座標置放在255個最低有效位元中,且x座標最低有效位元置放在剩餘最高有效位元(h[31],位元7)中。呈小端序八位元組形式之Ed448藉由57位元組之最低有效56位元組中的56位元組y座標編碼經壓縮點,且x座標最低有效位元置放在57位元組之最高有效位元組的最高有效位元(h[56],位元7)中,且位元組之剩餘位元填充有零。 In one embodiment, EdDSA is defined as having an integer encoded in little endian form as opposed to most cryptographic techniques. Ed25519 in the form of little-endian octets (bytes) encodes the 32-byte string h as h[0]...h[31], where h[31] is the most significant. If A is the address of h[0], then A+31 is the address of the most significant byte h[31]. For the 255-bit format, the most significant bit of the most significant byte is not required. For a compressed point, the y-coordinate is placed in the 255 least significant bits, and the least significant bit of the x-coordinate is placed in the remaining most significant bit (h[31], bit 7). Ed448 in little-endian octet form encodes the compressed point with the 56-byte y-coordinate in the least significant 56 bytes of the 57-byte byte, and the least significant bit of the x-coordinate is placed in bit 57 The most significant bit of the group's most significant byte (h[56], bit 7), and the remaining bits of the byte are filled with zeros.

KDSA-EdDSA-驗證指令檢查經標記訊息之有效性。訊息之發送者具有可用於查看簽章是否匹配訊息(例如,經雜湊訊息)之公開金鑰。簽章包括由R及S指明之質數欄位中的兩個值。在一個實例中,R為經壓縮點,在一個實例中,其被視為整數(雖然可能大於質數之值)且S為整數。發送者及接收者就用於建立簽章之雜湊方案達成一致。KDSA-EdDSA-驗證指令對由運算元2定址之完整訊息進行操作。發送者之公開金鑰由參數區塊中之K表示,且其處於壓縮格式,其中x座標之最低有效 位元級聯至y座標之所有位元。因此,公開金鑰略微寬於佔用Ed448曲線之57位元組的曲線之質數。該操作在條件碼中產生正確或錯誤有效性指示。 KDSA-EdDSA-verify command checks the validity of a tagged message. The sender of the message has a public key that can be used to see if the signature matches the message (e.g., the hashed message). The signature consists of two values in the prime fields specified by R and S. In one example, R is a compressed point, which in one example is treated as an integer (although possibly larger than a prime number) and S is an integer. The sender and receiver agree on the hash scheme used to create the signature. The KDSA-EdDSA-verify command operates on the complete message addressed by operand 2. The sender's public key is represented by K in the parameter block and is in compressed format with the least significant x coordinate The bits are concatenated to all bits of the y coordinate. Therefore, the public key is slightly wider than the prime number of the curve that occupies 57 bytes of the Ed448 curve. This operation produces a true or false validity indication in the condition code.

作為實例,若簽章有效,則設定條件碼0,且若簽章無效,則設定條件碼2。此外,當公開金鑰由於例如不大於零且小於質數而無效且在曲線上時,設定條件碼1。 As an example, if the signature is valid, condition code 0 is set, and if the signature is invalid, condition code 2 is set. Furthermore, condition code 1 is set when the public key is invalid and on the curve because, for example, it is not greater than zero and less than a prime number.

參考圖7描述使用愛德華曲線數位簽章演算法之驗證處理的一個實例。在一個實例中,Ed25519使用SHA-512且Ed448使用SHAKE256以用於雜湊H(x)。此等曲線將

Figure 109101159-A0305-02-0025-15
而非
Figure 109101159-A0305-02-0025-16
用作基點。此外,在此處理中,上劃線指示具有x及y座標之點,+為模加且×為點之純量乘法。K為經壓縮公開金鑰,且對於Ed25519佔用例如32位元組並對於Ed448佔用57位元組。 An example of the verification process using the Edwards Curve digital signature algorithm is described with reference to FIG. 7 . In one example, Ed25519 uses SHA-512 and Ed448 uses SHAKE256 for hash H(x). Such curves will
Figure 109101159-A0305-02-0025-15
rather than
Figure 109101159-A0305-02-0025-16
Used as base point. Furthermore, in this process, the overline - indicates a point with x and y coordinates, + is modular addition and × is scalar multiplication of the point. K is a compressed public key and occupies, for example, 32 bytes for Ed25519 and 57 bytes for Ed448.

參考圖7,在一個實例中,將公開金鑰

Figure 109101159-A0305-02-0025-33
設定成等於點解壓縮(K),其中K為經壓縮公開金鑰點=(x(lsb)∥y),其中lsb為最低有效位元且∥為級聯,步驟700。此外,計算
Figure 109101159-A0305-02-0025-17
,其中
Figure 109101159-A0305-02-0025-18
,其中R=(x(lsb)∥y),步驟702。此外,計算h,其中h=H(R∥K∥msg),步驟704。點解壓縮逆向於點壓縮,此允許使用因此自xp及yp導出之yp及單個額外位元xp緊湊地表示點
Figure 109101159-A0305-02-0025-19
。 Referring to Figure 7, in one example, the public key
Figure 109101159-A0305-02-0025-33
Set equal to point decompression (K), where K is the compressed public key point = (x(lsb)∥y), where lsb is the least significant bit and ∥ is the concatenation, step 700. In addition, calculate
Figure 109101159-A0305-02-0025-17
,in
Figure 109101159-A0305-02-0025-18
, where R=(x(lsb)∥y), step 702. In addition, h is calculated, where h=H(R∥K∥msg), step 704. Point decompression is the inverse of point compression, allowing points to be represented compactly using y p thus derived from x p and y p and a single extra bit x p
Figure 109101159-A0305-02-0025-19
.

此外,將

Figure 109101159-A0305-02-0025-21
設定成等於S×
Figure 109101159-A0305-02-0025-20
(點之純量相乘),步驟706,且將
Figure 109101159-A0305-02-0025-22
設定成等於h×
Figure 109101159-A0305-02-0025-23
(點之純量相乘),步驟708。執行用於整數比較相等之布林型測試(
Figure 109101159-A0305-02-0025-24
),且例如在條件碼中傳回正確或錯誤指示,步驟710。 In addition, it will
Figure 109101159-A0305-02-0025-21
Set equal to S×
Figure 109101159-A0305-02-0025-20
(scalar multiplication of points), step 706, and
Figure 109101159-A0305-02-0025-22
Set equal to h×
Figure 109101159-A0305-02-0025-23
(Scalar multiplication of points), step 708. Performs a Boolean test for integer comparison equality (
Figure 109101159-A0305-02-0025-24
), and returns a correct or error indication, such as in a condition code, step 710.

參考圖4K描述用於KDSA-EdDSA-驗證-Ed25519函式之參 數區塊的一個實例。在一個實例中,參數區塊468包括例如以下欄位:簽章(R)469、簽章(S)470、公用密碼金鑰(K)471及經保留保存區域472。在一個實例中,每一欄位表示為32位元組或256位元寬,且圖4K中描繪參數區塊內之實例位移。 Refer to Figure 4K to describe the parameters used in the KDSA-EdDSA-verify-Ed25519 function. An example of a number block. In one example, parameter block 468 includes fields such as: signature (R) 469, signature (S) 470, public cryptographic key (K) 471, and reserved storage area 472. In one example, each field is represented as 32 bytes, or 256 bits wide, and the instance displacement within the parameter block is depicted in Figure 4K.

此外,參考圖4L,用於KDSA-EdDSA-驗證-Ed448函式之參數區塊473包括例如以下欄位:簽章(R)474、簽章(S)475、公用密碼金鑰(K)476,及經保留保存區域477。在一個實例中,每一欄位為64位元組或512位元寬。S參數由512位元欄位之最右448位元表示,且為經壓縮點之R及K欄位由512位元欄位之最右456位元表示。圖4L中描繪參數區塊內之實例位移。 In addition, referring to Figure 4L, the parameter block 473 for the KDSA-EdDSA-verify-Ed448 function includes, for example, the following fields: signature (R) 474, signature (S) 475, public cryptographic key (K) 476 , and reserved save area 477. In one example, each field is 64 bytes, or 512 bits wide. The S parameter is represented by the rightmost 448 bits of the 512-bit field, and the R and K fields, which are compression points, are represented by the rightmost 456 bits of the 512-bit field. Example displacements within the parameter block are depicted in Figure 4L.

KDSA-EdDSA-標記函式KDSA-EdDSA-marker function

在一個實施例中,支援兩個KDSA-EdDSA-標記函式及兩個KDSA-加密-EdDSA-標記函式,且下文提供對應函式碼: In one embodiment, two KDSA-EdDSA-marking functions and two KDSA-Encryption-EdDSA-marking functions are supported, and the corresponding function codes are provided below:

˙KDSA-EdDSA-標記-Ed25519(函式碼40) ˙KDSA-EdDSA-mark-Ed25519 (function code 40)

˙KDSA-EdDSA-標記-Ed448(函式碼44) ˙KDSA-EdDSA-mark-Ed448 (function code 44)

˙KDSA-加密-EdDSA-標記-Ed25519(函式碼48) ˙KDSA-Encryption-EdDSA-Mark-Ed25519 (function code 48)

˙KDSA-加密-EdDSA-標記-Ed448(函式碼52) ˙KDSA-Encryption-EdDSA-Mark-Ed448 (function code 52)

KDSA-EdDSA-標記函式使用為用於作者之私密金鑰的純文字金鑰的密碼金鑰(K)。此金鑰待由軟體保護。KDSA-加密-EdDSA-標記函式使用加密金鑰以保存作者之私密金鑰,且具有對應包裝金鑰驗證圖案(WKaVP)以測試金鑰。 The KDSA-EdDSA-tagged function uses a cryptographic key (K) that is the plaintext key for the author's private key. This key is to be protected by software. The KDSA-Encryption-EdDSA-Tag function uses an encryption key to store the author's private key, and has a corresponding Wrapping Key Verification Pattern (WK a VP) to test the key.

在一個實施例中,EdDSA技術並不使用隨機數,且因此,對於KDSA-EdDSA-標記函式,未指定任何數字。 In one embodiment, the EdDSA technique does not use random numbers, and therefore, no numbers are specified for the KDSA-EdDSA-Tag function.

KDSA-EdDSA-標記函式之結果為由經壓縮點R及整數S表示,且儲存在參數區塊中之指明位置中的簽章,該整數介於例如零的值與特定函式之曲線的階數之間。 KDSA-EdDSA-The result of a signature function is a signature stored in the specified location in the parameter block, represented by a compressed point R and an integer S between a value such as zero and the value of the curve of the particular function. between levels.

在一個實例中,若簽章生成成功,則設定條件碼0。此外,若驗證圖案失配、訊息為零,或私密金鑰例如為零或大於或等於曲線之階數或不在曲線上,則設定條件碼1。 In one example, if the signature is generated successfully, condition code 0 is set. In addition, condition code 1 is set if the verification pattern does not match, the message is zero, or the private key is, for example, zero or greater than or equal to the degree of the curve or not on the curve.

參考圖8描述使用愛德華曲線數位簽章演算法之標記處理的一個實例。在此處理中,上劃線指示具有x及y座標之點,*指示模乘,×為點之純量乘法;+為模加,且ψ為級聯。作為實例,Ed25519使用SHA-512且Ed448使用SHAKE256以用於雜湊H(x)。 An example of marking processing using the Edwards Curve digital signature algorithm is described with reference to FIG. 8 . In this process, the overline - indicates a point with x and y coordinates, * indicates modular multiplication, × is a scalar multiplication of points; + is modular addition, and ψ is a cascade. As an example, Ed25519 uses SHA-512 and Ed448 uses SHAKE256 for hashing H(x).

參考圖8,在一個實施例中,將h1設定成等於H(K),其為私密金鑰之雜湊,步驟800。將s1設定成等於h1(0:31B),其為位元組0至31,步驟802,且將首碼設定成等於h1(32:63B),步驟804。將

Figure 109101159-A0305-02-0027-25
設定成等於(s1×
Figure 109101159-A0305-02-0027-26
),其為公開金鑰,步驟806。將Ac設定成等於點壓縮(Ax,Ay),其等於Ax(lsb)∥Ay,步驟808。此外,將r設定成等於H(首碼∥msg),步驟810。將
Figure 109101159-A0305-02-0027-27
設定成等於r×
Figure 109101159-A0305-02-0027-28
(等於RFC8032中之R),步驟812。將Rc設定成等於點壓縮(Rx,Ry)=Rx(lsb)∥Ry,步驟814。將k設定成等於H(Rc∥Ac∥msg),步驟818,且將S設定成等於(r+k * s1)mod n,步驟818。傳回Rc及S,步驟820。 Referring to Figure 8, in one embodiment, h1 is set equal to H(K), which is the hash of the private key, step 800. Set s1 equal to h1 (0:31B), which is bytes 0 to 31, step 802, and set the header equal to h1 (32:63B), step 804. will
Figure 109101159-A0305-02-0027-25
Set equal to (s1×
Figure 109101159-A0305-02-0027-26
), which is the public key, step 806. Set Ac equal to point compression (Ax,Ay), which is equal to Ax(lsb)∥Ay, step 808. Additionally, r is set equal to H (first code ∥msg), step 810. will
Figure 109101159-A0305-02-0027-27
Set equal to r×
Figure 109101159-A0305-02-0027-28
(Equal to R in RFC8032), step 812. Set Rc equal to point compression (Rx, Ry) = Rx (lsb) ∥ Ry, step 814. Set k equal to H(Rc∥Ac∥msg), step 818, and set S equal to (r+k*s1)mod n, step 818. Return Rc and S, step 820.

參考圖4M描述用於KDSA-EdDSA-標記-Ed25519函式之參數區塊的一個實例。在一個實例中,參數區塊478包括例如以下欄位:簽章(R)479、簽章(S)480、呈純文字之私用密碼金鑰(K)481,及經保留保存區域482。R、S及K參數為32位元組欄位。在一個實例中,S參數具有 強制為零的欄位之最高有效位元。未指定隨機數,此係由於EdDSA演算法並不需要隨機數。圖4M中描繪參數區塊內之實例位移。 An example of the parameter block for the KDSA-EdDSA-mark-Ed25519 function is described with reference to Figure 4M. In one example, parameter block 478 includes fields such as: signature (R) 479, signature (S) 480, private cryptographic key (K) 481 in plain text, and reserved storage area 482. The R, S, and K parameters are 32-bit fields. In one instance, the S parameters have The most significant bit of the field that is forced to zero. The random number is not specified because the EdDSA algorithm does not require random numbers. The instance displacements within the parameter block are depicted in Figure 4M.

參考圖4N,用於KDSA-EdDSA-標記-Ed448函式之參數區塊483包括例如以下欄位:簽章(R)484、簽章(S)485、呈純文字之私用密碼金鑰(K)486,及經保留保存區域487。在一個實例中,S參數為448位元或56位元組,且與64位元組欄位右對準。R及K參數為456位元或57位元組且右對準。Ed448格式亦使用並不利用隨機數之EdDSA技術。圖4N中描繪參數區塊內之實例位移。 Referring to Figure 4N, the parameter block 483 for the KDSA-EdDSA-mark-Ed448 function includes, for example, the following fields: signature (R) 484, signature (S) 485, private cryptographic key in plain text ( K) 486, and reserved storage area 487. In one example, the S parameter is 448 bytes or 56 bytes and is right aligned with the 64 bytes field. The R and K parameters are 456 bits or 57 bytes and right aligned. The Ed448 format also uses EdDSA technology that does not utilize random numbers. The instance displacements within the parameter block are depicted in Figure 4N.

此外,參考圖4O,用於KDSA-加密-EdDSA-標記-Ed25519函式之參數區塊488包括例如:簽章(R)489、簽章(S)490、加密私用密碼金鑰(WKa(K))491、AES包裝金鑰驗證圖案(WKaVP)492,及經保留保存區域493。在一個實例中,Ed25519格式將255個最右位元用於S(其中零用於最高有效位元),且加密金鑰、R及包裝金鑰驗證圖案使用256位元。圖4O中描繪參數區塊內之實例位移。 In addition, referring to Figure 4O, the parameter block 488 for the KDSA-Encrypt-EdDSA-Mark-Ed25519 function includes, for example: signature (R) 489, signature (S) 490, encryption private cryptographic key (WK a (K)) 491, AES wrapped key verification pattern (WK a VP) 492, and reserved storage area 493. In one example, the Ed25519 format uses 255 rightmost bits for S (with zeros for the most significant bit), and 256 bits are used for the encryption key, R, and wrapping key verification pattern. Example displacements within parameter blocks are depicted in Figure 4O.

參考圖4P,KDSA-加密-EdDSA-標記-Ed448函式之參數區塊494包括例如:簽章(R)495、簽章(S)496、加密私用密碼金鑰(WKa(K))497、AES包裝金鑰驗證圖案(WKaVP)498,及經保留保存區域499。在一個實例中,S參數為448位元或56位元組,且R參數為57位元組且在64位元組欄位內右對準。圖4P中描繪參數區塊內之實例位移。 Referring to Figure 4P, the parameter block 494 of the KDSA-Encryption-EdDSA-Mark-Ed448 function includes, for example: signature (R) 495, signature (S) 496, encryption private cryptographic key (WK a (K)) 497. AES wrapper key verification pattern (WK a VP) 498, and reserved storage area 499. In one example, the S parameter is 448 bytes, or 56 bytes, and the R parameter is 57 bytes and right-justified within a 64-byte field. The instance displacements within the parameter block are depicted in Figure 4P.

下文描述用於KDSA-驗證及KDSA-標記函式之參數區塊的欄位之其他細節。在一個實例中: Additional details of the fields used in the parameter blocks of the KDSA-authenticate and KDSA-mark functions are described below. In one instance:

簽章(R):簽章之第一整數。在一個實例中,R大於零且小於曲線之階數。對於EdDSA函式,R略微寬於質數,此係由於其表示經壓 縮點,其中X之最低有效位元與Y級聯。 Signature (R): the first integer of the signature. In one example, R is greater than zero and less than the degree of the curve. For the EdDSA function, R is slightly wider than the prime numbers because it represents the meridional pressure Contraction point, where the least significant bit of X is concatenated with Y.

簽章(S):簽章之第二整數。在一個實例中,S大於零且小於曲線之階數。 Signature (S): the second integer of the signature. In one example, S is greater than zero and less than the degree of the curve.

經雜湊訊息-H(msg):標記及驗證操作利用用於ECDSA曲線之作者訊息的經雜湊版本。此係在KDSA指令之前執行以允許所支援加密具有較大靈活性。經雜湊訊息例如為大於或等於零且小於曲線之質數的整數。此參數在EdDSA曲線上不可用,此係由於其並不預雜湊訊息,且替代地運算元2定址經加密訊息。 Hashed Message-H(msg): Marking and verification operations utilize a hashed version of the author message used for the ECDSA curve. This is performed before the KDSA command to allow greater flexibility in supported encryption. The hashed message is, for example, an integer greater than or equal to zero and less than a prime number of the curve. This parameter is not available on the EdDSA curve since it does not pre-hashe the message and instead operand 2 addresses the encrypted message.

密碼金鑰(K):用於標記及驗證操作之密碼金鑰在參數區塊之各種位元組處開始。金鑰欄位之大小及其在參數區塊中之位移取決於函式碼,如圖9中所展示。圖9中之*指示零經添加至金鑰長度以提供位元組中之長度。 CryptoKey (K): The cryptographic key used for marking and verifying operations begins at various bytes in the parameter block. The size of the key field and its displacement in the parameter block depend on the function code, as shown in Figure 9. The * in Figure 9 indicates that zeros are added to the key length to provide the length in bytes.

在一個實例中,Ed25519使用256位元32位元組欄位之255個最右位元。用於P521及Ed448之KDSA-標記對於加密金鑰及純文字金鑰使用不同金鑰格式寬度。加密金鑰經編碼且使用128位元邊界。用於標記及驗證之P521純文字金鑰為521位元(65位元組及1位元),其在66位元組欄位之最右位元中對準。 In one example, Ed25519 uses the 255 rightmost bits of a 256-bit 32-byte field. The KDSA-marker used for P521 and Ed448 uses different key format widths for encrypted keys and plain text keys. Encryption keys are encoded and use 128-bit boundaries. The P521 plain text key used for marking and verification is 521 bits (65 bytes and 1 bit), aligned in the rightmost bit of the 66-byte field.

經保留保存區域:經保留保存區域為待用以保存待使用狀態資訊(例如指令是否以部分完成結束)之預定義記憶體量,從而允許在部分完成時重新開始指令。 Reserved Save Area: A reserved save area is a predefined amount of memory that is used to save pending state information (such as whether the command ended with a partial completion), allowing the command to be restarted on partial completion.

AES包裝金鑰驗證圖案(WKaVP):對於KDSA-加密-標記函式(例如,函式碼17至19、48及52),緊接著參數區塊中之金鑰的32位元組含有AES包裝金鑰驗證圖案(WKaVP)。 AES Wrapped Key Verification Pattern (WK a VP): For KDSA-Encryption-Tagged functions (e.g., function codes 17 to 19, 48, and 52), the 32 bytes immediately following the key in the parameter block contain AES Wrapped Key Verification Pattern (WK a VP).

對於KDSA-驗證函式及純文字金鑰KDSA-標記函式,WKaVP欄位不存在於參數區塊中。 For KDSA-verification functions and plain text key KDSA-mark functions, the WK a VP field does not exist in the parameter block.

包裝金鑰驗證:對於具有加密金鑰之KDSA-標記函式(例如,函式碼17至19、48及52),將32位元組WKaVP欄位之內容相比於AES包裝金鑰驗證圖案暫存器(例如,包括256位元AES包裝金鑰驗證圖案之暫存器)之內容。若其失配,則參數區塊位置保持不變,且藉由設定條件碼1完成操作。若其匹配,則使用AES包裝金鑰解密參數區塊之金鑰欄位的內容,以獲得用於本文中所描述之標記處理的密碼金鑰K。在一個實例中,藉由AES-256加密保護經加密ECC金鑰。 Wrapper key verification: For KDSA-tagged functions with encryption keys (e.g., function codes 17 to 19, 48, and 52), compare the contents of the 32-byte WK a VP field to the AES wrapper key The contents of a verification pattern register (for example, a register containing a 256-bit AES wrapped key verification pattern). If they do not match, the parameter block position remains unchanged and the operation is completed by setting condition code 1. If they match, the contents of the key field of the parameter block are decrypted using the AES wrapper key to obtain the cryptographic key K used for the token processing described herein. In one example, the encrypted ECC key is protected with AES-256 encryption.

對於並不使用加密金鑰之KDSA函式,並不執行包裝金鑰驗證。 For KDSA functions that do not use encryption keys, wrapper key verification is not performed.

隨機數(RN):使用NIST質數(例如,P256、P384及P521)之KDSA-ECDSA-標記函式具有輸入隨機數。隨機數將例如大於零。較高有效位元例如經強制為零,且若不低於函式之曲線的階數,則自隨機數減去曲線之階數。在一個實例中,隨機數將係藉由曲線之階數可逆的;否則,參數區塊位置保持不變,且藉由設定條件碼2完成操作。 Random Number (RN): The KDSA-ECDSA-tagged function using NIST prime numbers (e.g., P256, P384, and P521) has input random numbers. The random number will be greater than zero for example. The more significant bits are, for example, forced to zero, and if not lower than the order of the curve of the function, the order of the curve is subtracted from the random number. In one example, the random number will be reversible by the order of the curve; otherwise, the parameter block position remains unchanged and the operation is completed by setting condition code 2.

在一個實例中,對於KDSA-加密-ECDSA-標記函式,隨機數大於零且參數區塊位置保持不變,且藉由設定條件碼2完成操作。對於KDSA-加密-ECDSA-標記函式,隨機數不必係可逆的,此係由於其並不直接用於建立可逆隱藏隨機數,而是替代地用作建立種子。 In one example, for the KDSA-Encryption-ECDSA-Tag function, the nonce is greater than zero and the parameter block position remains unchanged, and the operation is completed by setting condition code 2. For the KDSA-Encryption-ECDSA-Tag function, the random number does not have to be reversible since it is not directly used to create a reversible hidden random number, but is instead used to create a seed.

當PER儲存-更改事件適用於所儲存之參數區塊的部分(包括參數區塊之經保留欄位)時,辨識到該事件。當PER零位址偵測事件適用於第二運算元位置及參數區塊時,辨識到該事件。當針對此等位置中之一 或多者偵測到PER事件時,哪一位置在PER存取識別(PAID)及PER ASCE ID(Al)中被識別係不可預測的。 A PER save-change event is recognized when it applies to a portion of a stored parameter block, including reserved fields of the parameter block. A PER zero address detection event is recognized when it applies to the second operand position and parameter block. When targeting one of these positions Or when a PER event is detected, it is unpredictable which location will be identified in the PER Access Identification (PAID) and the PER ASCE ID (Al).

對於執行加密密碼金鑰與包裝金鑰驗證圖案暫存器之比較的函式,當該比較導致失配且各別運算元之長度為非零時,存取例外狀況及PER零位址偵測事件是否經辨識用於第二運算元係不可預測的。 Access exceptions and PER zero address detection for functions that perform a comparison of an encryption cryptographic key and a wrapper key verification pattern register when the comparison results in a mismatch and the length of the respective operand is non-zero Whether an event is recognized for use in the second operand is unpredictable.

存取例外狀況可經報告用於與在指令之單個執行中處理的運算元之部分相比運算元之較大部分;然而,在一個實施例中,存取例外狀況未經辨識用於超出運算元之長度的位置亦不用於超出被處理的當前位置的大於4K位元組之位置。 Access exceptions may be reported for a larger portion of an operand than the portion of an operand that is processed in a single execution of the instruction; however, in one embodiment, access exceptions are not recognized for use beyond the operation Unit-length positions are also not used for positions larger than 4K bytes beyond the current position being processed.

用於KDSA之實例條件包括例如: Example conditions for KDSA include, for example:

若以下各者中之任一者發生,則辨識到規範例外狀況且不採取其他動作: If any of the following occurs, a specification exception is recognized and no further action is taken:

1.通用暫存器0之位元57至63指定未指派或未安裝之函式碼。 1. Bits 57 to 63 of general register 0 specify unassigned or uninstalled function codes.

2. R2欄位指明奇數編號暫存器或通用暫存器0。 2. The R 2 field specifies the odd numbered register or general register 0.

所得條件碼實例: Example of the resulting condition code:

0 驗證:簽章經驗證用於函式;標記:正常完成。 0 Verification: The signature is verified for use in the function; Flag: Normal completion.

1 驗證:公開金鑰不在曲線上;標記:金鑰驗證圖案失配。 1 Verification: The public key is not on the curve; Mark: The key verification pattern does not match.

2 驗證:簽章不正確;標記:隨機數不可逆(0<RN<曲線之階數)。 2 Verification: The signature is incorrect; Mark: The random number is irreversible (0<RN<the order of the curve).

3 部分完成 3 parts completed

實例程式例外狀況: Example program exceptions:

˙存取(提取,參數區塊欄位,運算元2(僅EdDSA函式);儲存,參數區塊欄位) ˙Access (extract, parameter block field, operand 2 (EdDSA function only); store, parameter block field)

˙操作(在未安裝訊息安全輔助擴展9情況下) ˙Operation (when Message Security Assistant Extension 9 is not installed)

˙規範 ˙Standard

˙異動約束 ˙Change constraints

KDSA執行之實例優先級包括例如: Instance priorities for KDSA execution include, for example:

1.-6.優先級與一般狀況之程式中斷條件之優先級相同的例外狀況。 1.-6. Exception conditions whose priority is the same as the priority of program interruption conditions in general conditions.

7.A 第二指令半字之存取例外狀況。 7.A The access exception of the second instruction half word.

7.B 操作例外狀況。 7.B Operational Exceptions.

7.C 異動約束。 7.C Change constraints.

8.由於無效函式碼或無效暫存器編號之規範例外狀況。 8. Standard exception due to invalid function code or invalid register number.

9.由於無效運算元長度之規範例外狀況。 9. Specification exception due to invalid operand length.

10.A.1 用於存取參數區塊之存取例外狀況。 10.A.1 Access exceptions for accessing parameter blocks.

10.A.2.由於驗證圖案失配或非可逆隨機數或公開金鑰不在曲線上之條件碼1或2。 10.A.2. Condition code 1 or 2 due to verification pattern mismatch or non-reversible random number or public key not on the curve.

10.B 存取第二運算元之存取例外狀況。 10.B Access exceptions for accessing the second operand.

11.由於部分處理之條件碼3。 11. Due to condition code 3 of partial processing.

12.由於正常完成之條件碼0或由於簽章不正確之條件碼2。 12. Condition code 0 due to normal completion or condition code 2 due to incorrect signature.

程式化備註: Programmed notes:

1.在一個實施例中,若程式待頻繁地測試函式之可用性, 則其應在初始化期間執行一次查詢函式;隨後,其應藉由諸如在遮罩下測試之指令檢查查詢函式在記憶體中之儲存結果。 1. In one embodiment, if the program is to frequently test the availability of functions, Then it should execute the query function once during initialization; subsequently, it should check the stored results of the query function in memory through instructions such as testing under a mask.

2.如由此CPU、其他CPU及I/O子系統觀察到,不一致結果可簡單地儲存於第一運算元位置中。 2. Inconsistent results can simply be stored in the first operand location as observed by this CPU, other CPUs, and the I/O subsystem.

3.當設定條件碼3時,通常更新含有運算元位址及長度之通用暫存器以及參數區塊,使得程式可僅進行分支回至指令以繼續操作。 3. When condition code 3 is set, the general register containing the operand address and length and the parameter block are usually updated so that the program can only branch back to the instruction to continue operation.

如本文中所描述,在一個態樣中,提供單個指令(例如,硬體/軟體介面處之單個架構化機器指令,例如計算數位簽章認證指令),以使用例如通用處理器執行簽章生成及/或驗證函式。此指令為例如定義於指令集架構(ISA)中之硬體指令。結果,與標記及/或驗證函式相關之程式的複雜度降低。此外,函式,且因此處理器之效能得到改良。相比於軟體實施,執行單個指令需要明顯較少執行循環來執行相同操作。另外,在一個實施例中,藉由使用單個架構化指令,中間結果得到加密,從而若指令經部分完成,則提供額外安全性。 As described herein, in one aspect, a single instruction (e.g., a single architected machine instruction at a hardware/software interface, such as a compute digital signature authentication instruction) is provided to perform signature generation using, for example, a general-purpose processor and/or verification function. This instruction is, for example, a hardware instruction defined in the Instruction Set Architecture (ISA). As a result, the complexity of programs associated with marking and/or validating functions is reduced. In addition, functions and therefore processor performance are improved. Compared to a software implementation, executing a single instruction requires significantly fewer execution loops to perform the same operation. Additionally, in one embodiment, by using a single architected instruction, intermediate results are encrypted, providing additional security if the instruction is partially completed.

作為實例,計算數位簽章認證指令用於建立簽章,該簽章用於對訊息進行標記並在接收到訊息時驗證訊息及/或訊息之發送方。舉例而言,使用者(發送方或代表發送方之某人)執行計算數位簽章認證指令以獲得簽章R、S。發送方向接收者發送訊息連同簽章R、S。接收者接收訊息及簽章,並使用例如計算數位簽章認證指令執行驗證。若簽章及/或發送方經驗證(例如,指令結果指示正確),則讀取訊息;否則拒絕訊息。 As an example, the Compute Digital Signature Authentication command is used to create a signature that is used to mark a message and to authenticate the message and/or the sender of the message upon receipt. For example, the user (the sender or someone on behalf of the sender) executes a calculation digital signature authentication command to obtain the signatures R, S. The sender sends the message to the receiver along with signatures R and S. The recipient receives the message and signature and performs verification using, for example, a Compute Digital Signature Authentication command. If the signature and/or sender are verified (for example, the command result indicates correct), the message is read; otherwise, the message is rejected.

儘管描述計算數位簽章認證指令之各種欄位及暫存器,但本發明之一或多個態樣可使用其他、額外或較少欄位或暫存器,或欄位及暫存器之其他大小等。許多變化係可能的。舉例而言,可使用隱含暫存器 而非指令之明確指定之暫存器或欄位,及/或可使用明確指定之暫存器或欄位而非隱含暫存器或欄位。其他變化亦係可能的。 Although various fields and registers are described for computing digital signature authentication instructions, one or more aspects of the invention may use other, additional or fewer fields or registers, or a combination of fields and registers. Other sizes etc. Many variations are possible. For example, you can use implicit registers instead of an explicit register or field specified by the instruction, and/or an explicitly specified register or field may be used instead of an implicit register or field. Other variations are also possible.

本發明之一或多個態樣不可避免地與電腦技術相關且促進電腦內之處理,從而改良其效能。執行簽章生成及/或驗證之單個架構化機器指令之使用改良計算環境內之效能。經標記/驗證訊息可用於許多技術領域中,諸如電腦處理、醫療處理、安全性領域等。藉由提供標記/驗證之最佳化,藉由降低執行時間改良此等技術領域。 One or more aspects of the invention are inevitably related to computer technology and facilitate processing within computers, thereby improving their performance. The use of a single structured machine instruction that performs signature generation and/or verification improves performance within a computing environment. Signed/verified messages can be used in many technical fields, such as computer processing, medical processing, security fields, etc. Improves these technical areas by reducing execution time by providing markup/validation optimization.

參考圖10A至圖10B描述促進計算環境內之處理的一個實施例之其他細節,此係因為該計算環境與本發明之一或多個態樣相關。 Additional details of one embodiment for facilitating processing within a computing environment as it relates to one or more aspects of the invention are described with reference to FIGS. 10A-10B.

參考圖10A,獲得用以產生用於訊息之簽章的指令(1000)。該指令為單個架構化指令(1002)。執行指令(1004),且該執行包括判定由待執行之指令支援的複數個標記函式中之一標記函式(1006)。獲得用於指令之輸入,且該輸入包括訊息及密碼金鑰(1008)。基於待執行標記函式及輸入產生簽章(1010)。簽章待用於驗證訊息(1012)。 Referring to Figure 10A, instructions are obtained (1000) to generate a signature for a message. This instruction is a single architected instruction (1002). The instruction is executed (1004), and the execution includes determining one of a plurality of tagged functions supported by the instruction to be executed (1006). Input for the command is obtained and includes the message and password key (1008). A signature is generated based on the mark function to be executed and the input (1010). The signature is to be used to verify the message (1012).

在一個實例中,該訊息為經雜湊訊息(1014)。 In one example, the message is a hashed message (1014).

此外,在一個實例中,簽章由複數個值表示(1016)。複數個值包括例如介於零與用於待執行標記函式之曲線的階數之間的第一整數及第二整數(1018)。作為特定實例,標記函式為愛德華曲線數位簽章演算法標記函式,且複數個值包括經壓縮點及整數(1019)。 Additionally, in one example, the signature is represented by a plurality of values (1016). The plurality of values includes, for example, a first integer and a second integer (1018) between zero and the degree of the curve for the labeled function to be performed. As a specific example, the marking function is an Edwards Curve digital signature algorithm marking function, and the plurality of values includes compressed points and integers (1019).

在另一實例中,輸入進一步包括隨機數(1020)。 In another example, the input further includes random numbers (1020).

此外,在一個實施例中,參考圖10B,該執行包括測試出隨機數介於第一值與第二值之間(1022);及基於隨機數介於第一值與第二值之間執行簽章產生(1024)。作為實例,第一值為零且第二值表示用於待 執行標記函式之曲線的基點之階數(1026)。 Additionally, in one embodiment, referring to FIG. 10B , the execution includes testing that the random number is between the first value and the second value (1022); and executing based on the random number being between the first value and the second value. Signature generation (1024). As an example, the first value is zero and the second value represents the The degree (1026) of the base point of the curve on which the marking function is executed.

在一個實例中,複數個標記函式包括用於複數個質數之複數個橢圓曲線數位簽章演算法標記函式(1028)。複數個質數包括例如國家標準技術研究所(NIST)質數P256、NIST質數P384及NIST質數P521(1030)。在另一實例中,複數個標記函式包括用於複數個質數之複數個愛德華曲線數位簽章演算法標記函式(1032)。複數個質數包括愛德華曲線質數Ed25519及愛德華曲線質數Ed448(1034)。 In one example, the plurality of marking functions includes a plurality of elliptic curve digital signature algorithm marking functions for a plurality of prime numbers (1028). Complex prime numbers include, for example, the National Institute of Standards and Technology (NIST) prime number P256, the NIST prime number P384, and the NIST prime number P521 (1030). In another example, the plurality of marking functions includes a plurality of Edwards Curve Digital Signature Algorithm marking functions for a plurality of prime numbers (1032). The complex prime numbers include the Edwards curve prime number Ed25519 and the Edwards curve prime number Ed448 (1034).

其他變化及實施例為可能的。 Other variations and embodiments are possible.

本發明之態樣可由許多類型之計算環境使用。參考圖11A描述併有及使用本發明之一或多個態樣的計算環境之另一實施例。在此實例中,計算環境10包括例如原生中央處理單元(CPU)12、記憶體14及一或多個輸入/輸出裝置及/或介面16,前述各者經由例如一或多個匯流排18及/或其他連接而彼此耦接。作為實例,計算環境10可包括:由紐約阿蒙克市之國際商業機器公司提供之PowerPC®處理器;由加州帕洛阿爾托(Palo Alto,California)之惠普公司(Hewlett Packard Co.)提供的具有Intel Itanium II處理器之HP Superdome;及/或基於由國際商業機器公司、惠普公司、Intel公司、甲骨文公司或其他公司提供之架構的其他機器。IBM、z/Architecture、IBM Z、z/OS、PR/SM及PowerPC為國際商業機器公司在至少一個司法管轄區中之商標或註冊商標。Intel及Itanium為Intel公司或其子公司在美國及其他國家中之商標或註冊商標。 Aspects of the invention may be used by many types of computing environments. Another embodiment of a computing environment incorporating and using one or more aspects of the present invention is described with reference to FIG. 11A. In this example, computing environment 10 includes, for example, a native central processing unit (CPU) 12 , memory 14 , and one or more input/output devices and/or interfaces 16 , each via, for example, one or more buses 18 and /or other connections to couple each other. By way of example, computing environment 10 may include: a PowerPC® processor provided by International Business Machines Corporation of Armonk, New York; a PowerPC® processor provided by Hewlett Packard Co. of Palo Alto, California; HP Superdome with Intel Itanium II processors; and/or other machines based on architecture provided by International Business Machines Corporation, Hewlett-Packard Company, Intel Corporation, Oracle Corporation, or others. IBM, z/Architecture, IBM Z, z/OS, PR/SM and PowerPC are trademarks or registered trademarks of International Business Machines Corporation in at least one jurisdiction. Intel and Itanium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

原生中央處理單元12包括一或多個原生暫存器20,諸如在環境內之處理期間使用的一或多個通用暫存器及/或一或多個專用暫存器。此等暫存器包括表示在任何特定時間點處之環境狀態之資訊。 Native central processing unit 12 includes one or more native registers 20, such as one or more general purpose registers and/or one or more special purpose registers used during processing within the environment. These registers include information that represents the state of the environment at any particular point in time.

此外,原生中央處理單元12執行儲存於記憶體14中之指令及程式碼。在一個特定實例中,中央處理單元執行儲存於記憶體14中之仿真器程式碼22。此程式碼使得在一個架構中組態之計算環境能夠仿真另一架構。舉例而言,仿真器程式碼22允許基於除z/Architecture硬體架構以外之架構的機器(諸如,PowerPC處理器、HP Superdome伺服器或其他者)仿真z/Architecture硬體架構,且執行基於z/Architecture硬體架構開發之軟體及指令。 In addition, the native CPU 12 executes instructions and program codes stored in the memory 14 . In one particular example, the central processing unit executes emulator code 22 stored in memory 14 . This code enables a computing environment configured in one architecture to emulate another architecture. For example, the emulator code 22 allows machines based on architectures other than the z/Architecture hardware architecture (such as PowerPC processors, HP Superdome servers, or others) to emulate the z/Architecture hardware architecture and execute the z/Architecture-based hardware architecture. /Architecture software and instructions for hardware architecture development.

參考圖11B描述與仿真器程式碼22相關之其他細節。儲存於記憶體14中之客體指令30包含經開發以在除原生CPU 12之架構以外之架構中執行的軟體指令(例如,與機器指令相關)。舉例而言,客體指令30可已經設計以在基於z/Architecture硬體架構之處理器上執行,但替代地,在可為例如Intel Itanium II處理器之原生CPU 12上仿真。在一個實例中,仿真器程式碼22包括指令提取常式32,以自記憶體14獲得一或多個客體指令30且視情況提供對所獲得指令之本端緩衝。該仿真器程式碼亦包括指令轉譯常式34,以判定已獲得之客體指令的類型且將該客體指令轉譯成一或多個對應的原生指令36。此轉譯包括(例如)識別待由客體指令執行之函式及選擇原生指令以執行彼函式。 Additional details related to emulator code 22 are described with reference to Figure 11B. Object instructions 30 stored in memory 14 include software instructions (eg, related to machine instructions) developed for execution in an architecture other than the architecture of native CPU 12 . For example, object instructions 30 may have been designed to execute on a processor based on the z/Architecture hardware architecture, but instead are emulated on a native CPU 12 which may be, for example, an Intel Itanium II processor. In one example, emulator code 22 includes instruction fetch routines 32 to obtain one or more object instructions 30 from memory 14 and optionally provide local buffering of the obtained instructions. The emulator code also includes instruction translation routines 34 to determine the type of object instruction obtained and to translate the object instruction into one or more corresponding native instructions 36 . This translation includes, for example, identifying the function to be executed by the object instruction and selecting the native instruction to execute the function.

此外,仿真器程式碼22包括仿真控制常式40以使得能夠執行原生指令。仿真控制常式40可使原生CPU 12執行仿真一或多個先前所獲得之客體指令之原生指令的常式且在此執行完結時,將控制傳回至指令提取常式以仿真下一客體指令或一組客體指令之獲得。原生指令36之執行可包括將資料自記憶體14載入至暫存器中;將資料自暫存器儲存回至記憶體;或執行某一類型之算術或邏輯運算,如由轉譯常式判定。 Additionally, emulator code 22 includes emulation control routines 40 to enable execution of native instructions. The emulation control routine 40 causes the native CPU 12 to execute a routine that emulates one or more previously obtained object instructions and upon completion of such execution, transfer control back to the instruction fetch routine to emulate the next object instruction. or the acquisition of a set of object instructions. Execution of native instructions 36 may include loading data from memory 14 into a register; storing data from the register back into memory; or performing a certain type of arithmetic or logical operation, as determined by a translation routine. .

每一常式例如實施於軟體中,該軟體儲存於記憶體中且由原生中央處理單元12執行。在其他實例中,一或多個常式或操作實施於韌體、硬體、軟體或其某一組合中。可使用原生CPU之暫存器20或藉由使用記憶體14中之位置來仿真該仿真處理器之暫存器。在實施例中,客體指令30、原生指令36及仿真器程式碼22可駐存於同一記憶體中或可分配於不同記憶體裝置當中。 Each routine is implemented in software, for example, which is stored in memory and executed by the native central processing unit 12 . In other examples, one or more routines or operations are implemented in firmware, hardware, software, or some combination thereof. The registers 20 of the native CPU may be used or by using locations in memory 14 to emulate the registers of the simulated processor. In embodiments, the object instructions 30, the native instructions 36, and the emulator code 22 may reside in the same memory or may be distributed among different memory devices.

上文所描述之計算環境僅為可使用之計算環境的實例。可使用其他環境,包括但不限於其他未經分割之環境、其他經分割之環境及/或其他仿真環境;實施例不限於任何一種環境。 The computing environments described above are only examples of computing environments that may be used. Other environments may be used, including but not limited to other unsegmented environments, other segmented environments, and/or other simulated environments; embodiments are not limited to any one environment.

每一計算環境能夠經組態以包括本發明之一或多個態樣。舉例而言,每一計算環境可經組態以根據本發明之一或多個態樣提供標記/驗證。 Each computing environment can be configured to include one or more aspects of the invention. For example, each computing environment may be configured to provide tagging/authentication in accordance with one or more aspects of this disclosure.

一或多個態樣可涉及雲端計算。 One or more aspects may involve cloud computing.

應理解,儘管本發明包括關於雲端計算之詳細描述,但本文中所敍述之教示的實施不限於雲端計算環境。更確切而言,本發明之實施例能夠結合現在已知或稍後開發之任何其他類型之計算環境來實施。 It should be understood that, although this disclosure includes a detailed description with respect to cloud computing, implementation of the teachings described herein is not limited to cloud computing environments. Rather, embodiments of the invention can be implemented in conjunction with any other type of computing environment now known or later developed.

雲端計算為用於使得能夠對可組態計算資源(例如,網路、網路頻寬、伺服器、處理、記憶體、儲存器、應用程式、虛擬機及服務)之共用集區進行便利之按需網路存取的服務遞送之模型,可組態計算資源可藉由最少的管理工作或與服務提供者之互動而快速地佈建及釋放。此雲端模型可包括至少五個特性、至少三個服務模型及至少四個部署模型。 Cloud computing is a method used to facilitate a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) A service delivery model for on-demand network access where configurable computing resources can be quickly provisioned and released with minimal management effort or interaction with service providers. This cloud model may include at least five features, at least three service models, and at least four deployment models.

特性如下: The characteristics are as follows:

按需自助服務:雲端消費者可視需要自動地單向佈建計算 能力(諸如,伺服器時間及網路儲存器),而無需與服務提供者之人為互動。 On-demand self-service: Cloud consumers automatically provision computing one-way as needed capabilities (such as server time and network storage) without human interaction with the service provider.

寬頻網路存取:可經由網路獲得能力及通過標準機制存取能力,該等標準機制由異質精簡型或複雜型用戶端平台(例如,行動電話、膝上型電腦及PDA)促進使用。 Broadband network access: Capabilities are available over the network and are accessed through standard mechanisms facilitated by heterogeneous thin or complex client platforms (e.g., mobile phones, laptops, and PDAs).

資源集用:提供者之計算資源經集用以使用多租戶模型為多個消費者服務,其中根據需求動態指派及重新指派不同實體及虛擬資源。存在位置獨立性之意義,此係因為消費者通常不具有對所提供資源之確切位置的控制或瞭解,但可能能夠按較高抽象層級(例如,國家、州或資料中心)指定位置。 Resource Aggregation: The provider's computing resources are aggregated to serve multiple consumers using a multi-tenant model, where different physical and virtual resources are dynamically assigned and reassigned based on demand. The sense of location independence exists because consumers typically do not have control or knowledge of the exact location of a provided resource, but may be able to specify the location at a higher level of abstraction (e.g., country, state, or data center).

快速彈性:可快速地且彈性地佈建能力(在一些狀況下,自動地)以迅速地向外延展,且可快速地釋放能力以迅速地向內延展。在消費者看來,可用於佈建之能力常常看起來為無限的且可在任何時間以任何量來購買。 Rapid elasticity: Capacity can be quickly and elastically deployed (in some cases, automatically) to expand outward quickly, and capacity can be released quickly to expand inward quickly. From the consumer's perspective, the capacity available for deployment often appears to be unlimited and can be purchased at any time and in any amount.

所量測服務:雲端系統藉由在適於服務類型(例如,儲存、處理、頻寬及作用中使用者帳戶)之某一抽象層級下充分利用計量能力而自動控制及最佳化資源使用。可監視、控制及報告資源使用狀況,從而為所利用服務之提供者及消費者兩者提供透明度。 Measured services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services utilized.

服務模型如下: The service model is as follows:

軟體即服務(SaaS):提供給消費者之能力係使用在雲端基礎架構上運行之提供者之應用程式。可藉由諸如網路瀏覽器(例如,基於網路之電子郵件)之精簡型用戶端介面自各種用戶端裝置存取應用程式。消費者並不管理或控制包括網路、伺服器、作業系統、儲存器或甚至個別 應用程式能力之基礎雲端基礎架構,其中可能的例外狀況為有限的使用者特定應用程式組態設定。 Software as a Service (SaaS): The capability provided to consumers using the provider's applications running on cloud infrastructure. Applications may be accessed from a variety of client devices through a streamlined client interface such as a web browser (e.g., web-based email). Consumers do not manage or control the network, servers, operating systems, storage or even individual The underlying cloud infrastructure for application capabilities, with the possible exception of limited user-specific application configuration settings.

平台即服務(PaaS):提供給消費者之能力係將使用由提供者所支援之程式設計語言及工具建立的消費者建立或獲取之應用程式部署至雲端基礎架構上。消費者並不管理或控制包括網路、伺服器、作業系統或儲存器之基礎雲端基礎架構,但具有對所部署之應用程式及可能的代管環境組態之應用程式的控制。 Platform as a Service (PaaS): The ability provided to consumers to deploy consumer-created or acquired applications on cloud infrastructure using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have application control over deployed applications and possible hosting environment configurations.

基礎架構即服務(IaaS):提供給消費者之能力係佈建處理、儲存、網路及其他基礎計算資源,其中消費者能夠部署及運行可包括作業系統及應用程式之任意軟體。消費者並不管理或控制基礎雲端基礎架構,但具有對作業系統、儲存器、所部署應用程式之控制,且可能有限地控制選擇網路連接組件(例如,主機防火牆)。 Infrastructure as a Service (IaaS): The ability provided to consumers to deploy processing, storage, networking and other basic computing resources, where consumers can deploy and run any software, including operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but has control over the operating system, storage, deployed applications, and may have limited control over select network connectivity components (e.g., host firewall).

部署模型如下: The deployment model is as follows:

私用雲端:僅針對組織操作雲端基礎架構。私用雲端可由組織或第三方來管理且可存在內部部署或外部部署。 Private Cloud: Operates cloud infrastructure only for the organization. Private clouds can be managed by the organization or a third party and can exist on-premises or off-premises.

群集雲端:雲端基礎架構由若干組織共用且支援分擔問題(例如,任務、安全要求、策略及順應性考量)的特定群集。群集雲端可由組織或第三方來管理且可存在內部部署或外部部署。 Clustered cloud: Cloud infrastructure is shared by several organizations and supports specific clusters that share issues such as tasks, security requirements, policies, and compliance considerations. Cluster clouds can be managed by an organization or a third party and can exist on-premises or off-premises.

公用雲端:該雲端基礎架構可用於公眾或大型工業集團且為出售雲端服務之組織所擁有。 Public cloud: This cloud infrastructure is available to the public or large industrial groups and is owned by an organization that sells cloud services.

混合雲端:該雲端基礎架構為兩個或大於兩個雲端(私用、群集或公用)之組合物,該等雲端保持獨特實體但藉由實現資料及應用程式攜帶性(例如,用於在雲端之間實現負載平衡之雲端爆裂)之標準化或專 屬技術束縛在一起。 Hybrid Cloud: A cloud infrastructure that is a combination of two or more clouds (private, clustered, or public) that remain distinct entities but provide the same functionality by enabling data and application portability (e.g., for use in the cloud) Standardization or dedicated implementation of load balancing between cloud bursts Bound together by technology.

藉由集中於無國界、低耦合、模組化及語義互操作性對雲端計算環境進行服務定向。雲端計算之關鍵為包括互連節點之網路的基礎架構。 Service orientation for cloud computing environments by focusing on borderless, low-coupling, modularization, and semantic interoperability. The key to cloud computing is the infrastructure including the network of interconnected nodes.

現參考圖12,描繪說明性雲端計算環境50。如所示,雲端計算環境50包括一或多個雲端計算節點52,雲端消費者所使用之諸如個人數位助理(PDA)或蜂巢式電話54A、桌上型電腦54B、膝上型電腦54C及/或汽車電腦系統54N的本端計算裝置可與該一或多個雲端計算節點通信。節點52可彼此通信。可在一或多個網路(諸如,如上文所描述之私用、群集、公用或混合雲端或其組合)中將該等節點實體地或虛擬地分組(未展示)。此情形允許雲端計算環境50提供基礎架構、平台及/或軟體作為服務,針對該等服務,雲端消費者不需要在本端計算裝置上維持資源。應理解,圖12中所示之計算裝置54A至54N之類型意欲僅為說明性的,且計算節點52及雲端計算環境50可經由任何類型之網路及/或網路可定址連接(例如,使用網路瀏覽器)與任何類型之電腦化裝置通信。 Referring now to Figure 12, an illustrative cloud computing environment 50 is depicted. As shown, cloud computing environment 50 includes one or more cloud computing nodes 52, such as a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, and/or used by cloud consumers. Or the local computing device of the vehicle computer system 54N may communicate with the one or more cloud computing nodes. Nodes 52 can communicate with each other. The nodes may be grouped physically or virtually (not shown) in one or more networks, such as a private, clustered, public or hybrid cloud as described above, or a combination thereof. This scenario allows the cloud computing environment 50 to provide infrastructure, platform and/or software as services for which the cloud consumer does not need to maintain resources on the local computing device. It should be understood that the types of computing devices 54A-54N shown in Figure 12 are intended to be illustrative only, and that computing node 52 and cloud computing environment 50 may be connected via any type of network and/or network addressable connection (e.g., Use a web browser) to communicate with any type of computerized device.

現參考圖13,展示由雲端計算環境50(圖12)提供之一組功能抽象層。事先應理解,圖13中所示之組件、層及功能意欲僅為說明性的且本發明之實施例不限於此。如所描繪,提供以下層及對應功能。 Referring now to Figure 13, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 12) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 13 are intended to be illustrative only and embodiments of the present invention are not limited thereto. As depicted, the following layers and corresponding functions are provided.

硬體及軟體層60包括硬體及軟體組件。硬體組件之實例包括:大型電腦61;基於精簡指令集電腦(RISC)架構之伺服器62;伺服器63;刀鋒伺服器64;儲存裝置65;以及網路及網路連接組件66。在一些實施例中,軟體組件包括網路應用程式伺服器軟體67及資料庫軟體68。 Hardware and software layer 60 includes hardware and software components. Examples of hardware components include: mainframe computer 61; server 62 based on reduced instruction set computer (RISC) architecture; server 63; blade server 64; storage device 65; and network and network connection components 66. In some embodiments, the software components include web application server software 67 and database software 68.

虛擬化層70提供抽象層,可自該抽象層提供虛擬實體之以 下實例:虛擬伺服器71;虛擬儲存器72;虛擬網路73,包括虛擬私用網路;虛擬應用程式及作業系統74;及虛擬用戶端75。 Virtualization layer 70 provides an abstraction layer from which virtual entities can be provided. Example below: virtual server 71; virtual storage 72; virtual network 73, including virtual private network; virtual application and operating system 74; and virtual client 75.

在一個實例中,管理層80可提供下文所描述之功能。資源佈建81提供計算資源及用以執行雲端計算環境內之任務之其他資源的動態採購。當在雲端計算環境內利用資源時,計量及定價82提供成本追蹤,及對此等資源之消耗之帳務處理或發票開立。在一個實例中,此等資源可包括應用程式軟體授權。安全性提供針對雲端消費者及任務之身分識別驗證,以及對資料及其他資源之保護。使用者入口網站83為消費者及系統管理者提供對雲端計算環境之存取。服務等級管理84提供雲端計算資源分配及管理,使得滿足所需服務等級。服務等級協定(SLA)規劃及實現85提供雲端計算資源之預先配置及採購,針對雲端計算資源之未來要求係根據SLA來預期。 In one example, management layer 80 may provide functionality described below. Resource provisioning 81 provides dynamic procurement of computing resources and other resources for performing tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within a cloud computing environment, and accounting or invoicing for the consumption of such resources. In one example, these resources may include application software authorizations. Security provides identity verification for cloud consumers and tasks, as well as protection of data and other resources. User portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 provides cloud computing resource allocation and management to meet required service levels. Service Level Agreement (SLA) Planning and Implementation 85 provides pre-configuration and procurement of cloud computing resources. Future requirements for cloud computing resources are anticipated based on the SLA.

工作負載層90提供功能性之實例,可針對該功能性利用雲端計算環境。可自此層提供之工作負載及功能的實例包括:地圖測繪及導航91;軟體開發及生命週期管理92;虛擬教室教育遞送93;資料分析處理94;異動處理95;及標記/驗證處理96。 Workload layer 90 provides instances of functionality for which the cloud computing environment can be utilized. Examples of workloads and functions that can be provided from this layer include: mapping and navigation91; software development and lifecycle management92; virtual classroom education delivery93; data analysis processing94; transaction processing95; and tagging/validation processing96.

本發明之態樣可為在任何可能之技術細節整合層級處的系統、方法及/或電腦程式產品。該電腦程式產品可包括一(或多個)電腦可讀儲存媒體,其上具有電腦可讀程式指令以使處理器進行本發明之態樣。 Aspects of the invention may be systems, methods and/or computer program products at any possible level of integration of technical details. The computer program product may include one (or more) computer-readable storage media having computer-readable program instructions thereon to cause the processor to perform aspects of the present invention.

電腦可讀儲存媒體可為有形裝置,其可保留及儲存指令以供指令執行裝置使用。電腦可讀儲存媒體可為(例如但不限於)電子儲存裝置、磁性儲存裝置、光學儲存裝置、電磁儲存裝置、半導體儲存裝置或前述各者之任何合適組合。電腦可讀儲存媒體之較特定實例的非窮盡性清單 包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可擦除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型緊密光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶棒、軟性磁碟、機械編碼裝置(諸如其上記錄有指令之凹槽中之打孔卡片或凸起結構),及前述各者之任何合適組合。如本文中所使用,不應將電腦可讀儲存媒體本身解釋為暫時性信號,諸如無線電波或其他自由傳播之電磁波、藉由波導或其他傳輸媒體傳播之電磁波(例如,穿過光纜之光脈衝),或藉由導線傳輸之電信號。 A computer-readable storage medium may be a tangible device that retains and stores instructions for use by an instruction execution device. The computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media Including the following: portable computer disks, hard drives, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM or flash memory), Static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disc (DVD), memory stick, floppy disk, mechanical encoding device (such as one with instructions recorded on it) punched cards or raised structures in grooves), and any suitable combination of the foregoing. As used herein, computer-readable storage media themselves should not be construed as temporary signals, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagated through waveguides or other transmission media (e.g., pulses of light traveling through fiber optic cables) ), or electrical signals transmitted through wires.

本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別計算/處理裝置或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)下載至外部電腦或外部儲存裝置。網路可包含銅傳輸電纜、光傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一計算/處理裝置中之網路配接卡或網路介面自網路接收電腦可讀程式指令,且轉遞電腦可讀程式指令以用於儲存於各別計算/處理裝置內之電腦可讀儲存媒體中。 Computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to a respective computing/processing device or via a network (e.g., the Internet, a local area network, a wide area network, and/or a wireless network) to an external computer or external storage device. Networks may include copper transmission cables, optical fiber transmission, wireless transmission, routers, firewalls, switches, gateway computers, and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in the respective computing/processing device. Read the storage medium.

用於進行本發明之操作之電腦可讀程式指令可為以一或多種程式設計語言之任何組合撰寫之組譯器指令、指令集架構(ISA)指令、機器指令、機器相關指令、微碼、韌體指令、狀態設定資料、用於積體電路之組態資料,或原始程式碼或目標碼,該一或多種程式設計語言包括諸如Smalltalk、C++等之物件導向式程式設計語言,及程序性程式設計語言,諸如「C」程式設計語言或類似程式設計語言。電腦可讀程式指令可完全在使用者之電腦上執行、部分地在使用者之電腦上執行、作為獨立套裝軟體執行、部分地在使用者之電腦上執行且部分地在遠端電腦上執行或 完全在遠端電腦或伺服器上執行。在後一種情形中,遠端電腦可藉由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可連接至一外部電腦(例如,使用網際網路服務提供者藉由網際網路)。在一些實施例中,電子電路(包括例如可程式化邏輯電路、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA))可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路而執行電腦可讀程式指令,以便執行本發明之態樣。 Computer-readable program instructions for performing operations of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-related instructions, microcode, written in any combination of one or more programming languages. Firmware instructions, state setting data, configuration data for integrated circuits, or source code or object code in one or more programming languages including object-oriented programming languages such as Smalltalk, C++, etc., and procedural A programming language, such as the "C" programming language or similar programming language. Computer-readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone package, partly on the user's computer and partly on a remote computer, or Executed entirely on the remote computer or server. In the latter case, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or it can be connected to an external computer (for example, using Internet service provider via the Internet). In some embodiments, electronic circuits (including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLA)) can be configured individually by utilizing state information from computer-readable program instructions. An electronic circuit is used to execute computer-readable program instructions in order to execute aspects of the present invention.

本文中參考根據本發明之實施例之方法、設備(系統)及電腦程式產品之流程圖說明及/或方塊圖描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖中之每一區塊,及流程圖說明及/或方塊圖中的區塊之組合。 Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer-readable program instructions.

可將此等電腦可讀程式指令提供至通用電腦、專用電腦或其他可程式化資料處理設備之處理器以產生機器,使得經由該電腦或其他可程式化資料處理設備之處理器執行之指令建立用於實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之構件。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,該等指令可指導電腦、可程式化資料處理設備及/或其他裝置以特定方式起作用,使得其中儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施在該一或多個流程圖及/或方塊圖區塊中指定之功能/動作之態樣的指令。 Such computer-readable program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing device to produce a machine such that instructions executed by the processor of the computer or other programmable data processing device create Components used to implement the functions/actions specified in the one or more flowchart and/or block diagram blocks. Such computer-readable program instructions may also be stored in a computer-readable storage medium. Such instructions may instruct computers, programmable data processing equipment, and/or other devices to function in a specific manner, such that the computer in which the instructions are stored The readable storage medium includes an article of manufacture including instructions that implement the functions/actions specified in the one or more flowchart and/or block diagram blocks.

電腦可讀程式指令亦可載入至電腦、其他可程式化資料處理設備或其他裝置上,以使一系列操作步驟在該電腦、其他可程式化設備或其他裝置上執行以產生電腦實施之處理程序,使得在該電腦、其他可程式化設備或其他裝置上執行之指令實施該一或多個流程圖及/或方塊圖區 塊中所指定之功能/動作。 Computer-readable program instructions may also be loaded into a computer, other programmable data processing equipment, or other device to cause a series of operating steps to be executed on the computer, other programmable equipment, or other device to produce computer-implemented processing. A program that causes instructions executed on the computer, other programmable device, or other device to implement the one or more flowchart and/or block diagram areas The function/action specified in the block.

諸圖中之流程圖及方塊圖說明根據本發明之各種實施例之系統、方法及電腦程式產品之可能實施之架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示指令之模組、區段或部分,其包含用於實施一或多個指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中所提及之功能可不按諸圖中所提及之次序發生。舉例而言,取決於所涉及之功能性,連續展示之兩個區塊實際上可實質上同時執行,或該等區塊可有時以相反次序執行。亦將注意,可由執行經指定功能或動作或進行專用硬體及電腦指令之組合的基於專用硬體之系統實施方塊圖及/或流程圖說明之每一區塊及方塊圖及/或流程圖說明中之區塊的組合。 The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the invention. In this regard, each block in the flowchart or block diagrams may represent a module, section, or portion of instructions, which contains one or more executable instructions for implementing the specified logical function or functions. In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may in fact execute substantially concurrently, or the blocks may sometimes execute in the reverse order, depending on the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustrations and the block diagrams and/or flowchart illustrations may be implemented by a special purpose hardware-based system that performs the specified function or action or a combination of special hardware and computer instructions. The combination of blocks in the description.

除了上文情形之外,可由提供客戶環境之管理之服務提供者來提供、部署、管理、服務一或多個態樣等。舉例而言,服務提供者可建立、維持、支援(等)電腦程式碼及/或執行用於一或多個客戶之一或多個態樣的電腦基礎架構。作為回報,服務提供者可在訂用及/或費用合約下接收來自客戶之付款(作為實例)。另外或替代地,服務提供者可接收來自向一或多個第三方出售廣告內容之付款。 In addition to the above, one or more aspects may be provided, deployed, managed, serviced, etc. by a service provider that provides management of the customer environment. For example, a service provider may create, maintain, support(etc.) computer code and/or execute computer infrastructure in one or more aspects for use by one or more customers. In return, the service provider may receive payment from the customer under a subscription and/or fee contract (as an example). Additionally or alternatively, the service provider may receive payment from the sale of advertising content to one or more third parties.

在一態樣中,可部署一應用程式以用於執行一或多個實施例。作為一個實例,應用程式之部署包含提供可操作以執行一或多個實施例之電腦基礎架構。 In one aspect, an application may be deployed for performing one or more embodiments. As one example, deployment of an application includes providing computer infrastructure operable to execute one or more embodiments.

作為又一態樣,可部署計算基礎架構,包含將電腦可讀程式碼整合至計算系統中,其中程式碼結合計算系統能夠執行一或多個實施例。 As yet another aspect, computing infrastructure may be deployed, including integrating computer-readable code into a computing system, where the code in conjunction with the computing system is capable of executing one or more embodiments.

作為又一態樣,可提供一種用於整合計算基礎架構之處理 程序,包含將電腦可讀程式碼整合至電腦系統中。電腦系統包含電腦可讀媒體,其中電腦媒體包含一或多個實施例。程式碼結合電腦系統能夠執行一或多個實施例。 As yet another aspect, a process for integrating computing infrastructure can be provided A program consists of integrating computer-readable code into a computer system. The computer system includes computer-readable media, where the computer media includes one or more embodiments. The program code, in conjunction with a computer system, is capable of executing one or more embodiments.

儘管上文描述各種實施例,但其僅為實例。舉例而言,其他架構之計算環境可用於併有及使用一或多個實施例。此外,可使用不同指令或操作。另外,可使用不同暫存器及/或其他類型之密碼術演算法。許多變化係可能的。 Although various embodiments are described above, they are examples only. For example, other architectural computing environments may be used with and using one or more embodiments. Additionally, different instructions or operations can be used. Additionally, different registers and/or other types of cryptographic algorithms may be used. Many variations are possible.

此外,其他類型之計算環境可為有益的且可加以使用。作為實例,可使用適於儲存及/或執行程式碼之資料處理系統,其包括直接或藉由系統匯流排間接地耦接至記憶體元件之至少兩個處理器。記憶體元件包括(例如)在實際執行程式碼期間採用之本端記憶體、大容量儲存器,及提供至少某一程式碼之臨時儲存以便降低在執行期間必須自大容量儲存器擷取程式碼之次數的快取記憶體。 Additionally, other types of computing environments may be beneficial and may be used. As an example, a data processing system suitable for storing and/or executing program code may be used that includes at least two processors coupled to a memory element, either directly or indirectly through a system bus. Memory components include, for example, local memory used during actual execution of the code, bulk storage, and provision of temporary storage of at least some code in order to reduce the need to retrieve the code from bulk storage during execution. number of caches.

輸入/輸出或I/O裝置(包括(但不限於)鍵盤、顯示器、指標裝置、DASD、磁帶、CD、DVD、隨身碟(Thumb Drive)及其他記憶體媒體等)可直接或藉由介入之I/O控制器耦接至系統。網路配接器亦可耦接至系統以使得資料處理系統能夠變成藉由介入的私用網路或公用網路耦接至其他資料處理系統或遠端印表機或儲存裝置。數據機、電纜數據機及乙太網卡僅為幾個可用類型之網路配接器。 Input/output or I/O devices (including (but not limited to) keyboards, monitors, pointing devices, DASD, tapes, CDs, DVDs, thumb drives and other memory media, etc.) can be directly or through intervention. The I/O controller is coupled to the system. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems, and Ethernet cards are just a few of the available types of network adapters.

本文中所用之術語僅出於描述特定實施例之目的,且並不意欲限制本發明。如本文中所使用,除非上下文另外明確地指示,否則單數形式「一(a/an)」及「該」意欲亦包括複數形式。應進一步理解,術語「包含(comprises及/或comprising)」在用於本說明書中時指定所陳述特 徵、整數、步驟、操作、元件及/或組件之存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組之存在或添加。 The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms "a/an" and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It should be further understood that the terms "comprises and/or composition" when used in this specification designate the stated specific features, integers, steps, operations, elements and/or components, but does not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components and/or groups thereof.

以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物(若存在)意欲包括用於結合如特定主張之其他所主張元件來執行功能的任何結構、材料或動作。已出於說明及描述之目的呈現一或多個實施例之描述,但其不意欲為窮盡性的或限於所揭示之形式。許多修改及變化對於一般熟習技術者將為顯而易見的。實施例經選擇及描述以最佳地解釋各種態樣及實際應用,以使得一般熟習此項技術者能夠理解各種實施例及適於所涵蓋之特定用途的各種修改。 All corresponding structures, materials, acts, and equivalents of all components or step plus function elements within the scope of the following claims, if any, are intended to include any structure, material, or equivalent for performing the function in combination with other claimed elements as specifically claimed. action. The description of one or more embodiments has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiments were chosen and described in order to best explain the various aspects and practical applications, to enable others of ordinary skill in the art to understand the various embodiments and with the various modifications as are suited to the particular use contemplated.

300:計算數位簽章認證(KDSA)指令 300: Computed Digital Signature Authentication (KDSA) command

302:操作碼欄位 302:Operation code field

304:第一暫存器欄位(R1) 304: First register field (R 1 )

306:第二暫存器欄位(R2) 306: Second register field (R 2 )

Claims (20)

一種用於促進一計算環境內之處理的電腦程式產品,該電腦程式產品包含:一電腦可讀儲存媒體,其可由一處理電路讀取且儲存用於執行一方法之指令,該方法包含:獲得用以執行一操作以產生用於一訊息之一簽章的一指令,該指令為一單個架構化指令,該單個架構化指令為一通用處理器指令集架構之部分,該指令表示一暫存器並包括用以指定該操作之至少一操作碼欄位;及實施該指令以執行該操作,該實施包含:判定由待執行之該指令支援的複數個標記函式中之一標記函式,該複數個標記函式包括使用一第一隨機數以隨機化一第一簽章之一第一標記函式及並未使用一第二隨機數以隨機化一第二簽章之一第二標記函式,且該判定包括經由由該指令支援的複數個標記函式之一對應標記函式碼自包括該第一標記函式及該第二標記函式之該複數個標記函式識別該標記函式;獲得用於該指令之輸入,該輸入包含該訊息及一密碼金鑰;及基於待執行之該標記函式及該輸入產生該簽章,該簽章待用以驗證該訊息。 A computer program product for facilitating processing within a computing environment, the computer program product comprising: a computer-readable storage medium readable by a processing circuit and storing instructions for executing a method comprising: obtaining An instruction for performing an operation to generate a signature for a message, the instruction being a single structured instruction that is part of a general-purpose processor instruction set architecture, the instruction representing a buffer and including at least one opcode field for specifying the operation; and implementing the instruction to perform the operation, the implementation including: determining one of a plurality of tagged functions supported by the instruction to be executed, The plurality of marking functions include a first marking function that uses a first random number to randomize a first signature and a second marking function that does not use a second random number to randomize a second signature. function, and the determining includes identifying the tag from the plurality of tag functions including the first tag function and the second tag function via a corresponding tag function code of the plurality of tag functions supported by the instruction. function; obtains input for the command, the input including the message and a cryptographic key; and generates the signature based on the tagged function to be executed and the input, the signature to be used to authenticate the message. 如請求項1之電腦程式產品,其中該訊息為一經雜湊訊息。 For example, the computer program product of claim 1, wherein the message is a hashed message. 如請求項1之電腦程式產品,其中該簽章由複數個值表示。 For example, the computer program product of claim 1, wherein the signature is represented by a plurality of values. 如請求項3之電腦程式產品,其中該複數個值包含介於零與用於待執行之該標記函式的一曲線之一階數之間的一第一整數及一第二整數。 The computer program product of claim 3, wherein the plurality of values includes a first integer and a second integer between zero and an order of a curve for the marking function to be executed. 如請求項3之電腦程式產品,其中該標記函式包含一愛德華曲線數位簽章演算法標記函式,且該複數個值包含一經壓縮點及一整數。 The computer program product of claim 3, wherein the marking function includes an Edwards curve digital signature algorithm marking function, and the plurality of values includes a compressed point and an integer. 如請求項1之電腦程式產品,其中該輸入進一步包含一隨機數。 For example, the computer program product of claim 1, wherein the input further includes a random number. 如請求項6之電腦程式產品,其中該實施進一步包含:測試出該隨機數介於一第一值與一第二值之間;及基於該隨機數介於該第一值與該第二值之間執行該產生該簽章。 For example, the computer program product of claim 6, wherein the implementation further includes: testing that the random number is between a first value and a second value; and based on the random number being between the first value and the second value The signature is generated between executions. 如請求項7之電腦程式產品,其中該第一值為零,且該第二值表示用於待執行之該標記函式的一曲線之一基點的一階數。 The computer program product of claim 7, wherein the first value is zero, and the second value represents the first order of a base point of a curve for the marking function to be executed. 如請求項1之電腦程式產品,其中該複數個標記函式包含用於複數個質數之複數個橢圓曲線數位簽章演算法標記函式。 The computer program product of claim 1, wherein the plurality of marking functions include a plurality of elliptic curve digital signature algorithm marking functions for a plurality of prime numbers. 如請求項9之電腦程式產品,其中該複數個質數包括國家標準技術研究所(NIST)質數P256、NIST質數P384及NIST質數P521。 For example, the computer program product of claim 9, wherein the plurality of prime numbers includes National Institute of Standards and Technology (NIST) prime number P256, NIST prime number P384 and NIST prime number P521. 如請求項1之電腦程式產品,其中該複數個標記函式包含用於複數個質數之複數個愛德華曲線數位簽章演算法標記函式。 The computer program product of claim 1, wherein the plurality of marking functions include a plurality of Edwards curve digital signature algorithm marking functions for a plurality of prime numbers. 如請求項11之電腦程式產品,其中該複數個質數包括愛德華曲線質數Ed25519及愛德華曲線質數Ed448。 For example, the computer program product of claim 11, wherein the plurality of prime numbers includes the Edwards curve prime number Ed25519 and the Edwards curve prime number Ed448. 一種用於促進一計算環境內之處理的電腦系統,該電腦系統包含:一記憶體;及一處理器,其耦接至該記憶體,其中該電腦系統經組態以執行一方法,該方法包含:獲得用以執行一操作以產生用於一訊息之一簽章的一指令,該指令為一單個架構化指令,該單個架構化指令為一通用處理器指令集架構之部分,該指令表示一暫存器並包括用以指定該操作之至少一操作碼欄位;及實施該指令以執行該操作,該實施包含:判定由待執行之該指令支援的複數個標記函式中之一標記函式,該複數個標記函式包括使用一第一隨機數以隨機化一第一簽章之一第一標記函式及並未使用一第二隨機數以隨機化一第二簽章之一第二標記函式,且該判定包括經由由該指令支援的複數個標記函式之一對應標記函式碼自包括該第一標記函式及該第二標記函式之該複數個標記函式識別該標記函式;獲得用於該指令之輸入,該輸入包含該訊息及一密碼金鑰;及基於待執行之該標記函式及該輸入產生該簽章,該簽章待用以 驗證該訊息。 A computer system for facilitating processing within a computing environment, the computer system comprising: a memory; and a processor coupled to the memory, wherein the computer system is configured to perform a method, the method Includes: obtaining an instruction to perform an operation to generate a signature for a message, the instruction being a single architected instruction that is part of a general-purpose processor instruction set architecture, the instruction representing a register and including at least one opcode field for specifying the operation; and implementing the instruction to perform the operation, the implementation including: determining one of a plurality of tagged functions supported by the instruction to be executed Functions, the plurality of marking functions include a first marking function that uses a first random number to randomize a first signature and one that does not use a second random number to randomize a second signature. a second marker function, and the determination includes passing a corresponding marker function code from a plurality of marker functions supported by the instruction from the plurality of marker functions including the first marker function and the second marker function Identify the tagged function; obtain input for the command, the input including the message and a cryptographic key; and generate the signature based on the tagged function to be executed and the input, the signature to be used Verify this message. 如請求項13之電腦系統,其中該訊息為一經雜湊訊息。 For example, the computer system of claim 13, wherein the message is a hashed message. 如請求項13之電腦系統,其中該輸入進一步包含一隨機數。 The computer system of claim 13, wherein the input further includes a random number. 如請求項15之電腦系統,其中該實施進一步包含:測試出該隨機數介於一第一值與一第二值之間;及基於該隨機數介於該第一值與該第二值之間執行該產生該簽章。 Such as the computer system of claim 15, wherein the implementation further includes: testing that the random number is between a first value and a second value; and based on the random number being between the first value and the second value. The signature is generated during execution. 一種用於促進一計算環境內之處理的電腦實施方法,該電腦實施方法包含:由一處理器獲得用以執行一操作以產生用於一訊息之一簽章的一指令,該指令為一單個架構化指令,該單個架構化指令為一通用處理器指令集架構之部分,該指令表示一暫存器並包括用以指定該操作之至少一操作碼欄位;及實施該指令以執行該操作,該實施包含:判定由待執行之該指令支援的複數個標記函式中之一標記函式,該複數個標記函式包括使用一第一隨機數以隨機化一第一簽章之一第一標記函式及並未使用一第二隨機數以隨機化一第二簽章之一第二標記函式,且該判定包括經由由該指令支援的複數個標記函式之一對應標記函式碼自包括該第一標記函式及該第二標記函式之該複數個標記函式識別該標記函式; 獲得用於該指令之輸入,該輸入包含該訊息及一密碼金鑰;及基於待執行之該標記函式及該輸入產生該簽章,該簽章待用以驗證該訊息。 A computer-implemented method for facilitating processing within a computing environment, the computer-implemented method comprising: obtaining, from a processor, an instruction for performing an operation to generate a signature for a message, the instruction being a single an architected instruction, the single architected instruction being part of a general-purpose processor instruction set architecture, the instruction representing a register and including at least one opcode field used to specify the operation; and implementing the instruction to perform the operation , the implementation includes: determining one of a plurality of tagged functions supported by the instruction to be executed, the plurality of tagged functions including using a first random number to randomize one of the first signatures. a marking function and a second marking function that does not use a second random number to randomize a second signature, and the determination includes passing a corresponding marking function of a plurality of marking functions supported by the instruction The code identifies the marked function from the plurality of marked functions including the first marked function and the second marked function; Obtain input for the command, the input including the message and a cryptographic key; and generate the signature based on the tagged function to be executed and the input, the signature to be used to authenticate the message. 如請求項17之電腦實施方法,其中該訊息為一經雜湊訊息。 The computer implementation method of claim 17, wherein the message is a hashed message. 如請求項17之電腦實施方法,其中該簽章由複數個值表示。 Such as the computer implementation method of claim 17, wherein the signature is represented by a plurality of values. 如請求項17之電腦實施方法,其中該輸入進一步包含一隨機數,且其中該實施進一步包含:測試出該隨機數介於一第一值與一第二值之間;及基於該隨機數介於該第一值與該第二值之間執行該產生該簽章。 As claimed in claim 17, the computer implementation method, wherein the input further includes a random number, and the implementation further includes: testing that the random number is between a first value and a second value; and based on the random number Generating the signature is performed between the first value and the second value.
TW109101159A 2019-02-15 2020-01-14 Computer program product, computer system and computer implement method for compute digital signature authentication sign instruction TWI811514B (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/276,730 US11303456B2 (en) 2019-02-15 2019-02-15 Compute digital signature authentication sign instruction
US16/276,730 2019-02-15

Publications (2)

Publication Number Publication Date
TW202040966A TW202040966A (en) 2020-11-01
TWI811514B true TWI811514B (en) 2023-08-11

Family

ID=69500752

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109101159A TWI811514B (en) 2019-02-15 2020-01-14 Computer program product, computer system and computer implement method for compute digital signature authentication sign instruction

Country Status (3)

Country Link
US (1) US11303456B2 (en)
TW (1) TWI811514B (en)
WO (1) WO2020165021A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11108567B2 (en) * 2019-02-15 2021-08-31 International Business Machines Corporation Compute digital signature authentication verify instruction
US11075763B2 (en) 2019-02-15 2021-07-27 International Business Machines Corporation Compute digital signature authentication sign with encrypted key instruction
US11150298B1 (en) * 2020-12-11 2021-10-19 International Business Machines Corporation Converting formal verification testbench drivers with nondeterministic inputs to simulation monitors

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150350171A1 (en) * 2014-06-02 2015-12-03 Qualcomm Incorporated Semi-deterministic digital signature generation
US20160191543A1 (en) * 2014-12-31 2016-06-30 Dell Software Inc. Secure neighbor discovery (send) using pre-shared key
US9680653B1 (en) * 2016-10-13 2017-06-13 International Business Machines Corporation Cipher message with authentication instruction
US20190007219A1 (en) * 2017-06-29 2019-01-03 Intel Corporation Technologies for robust computation of elliptic curve digital signatures

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5214698A (en) 1991-03-20 1993-05-25 International Business Machines Corporation Method and apparatus for validating entry of cryptographic keys
US6058187A (en) 1997-04-17 2000-05-02 At&T Corp. Secure telecommunications data transmission
US7171559B1 (en) 1998-03-18 2007-01-30 Kent Ridge Digital Labs Method of exchanging digital data
US20030035547A1 (en) 2001-03-27 2003-02-20 John Newton Server with multiple encryption libraries
US20060136721A1 (en) 2003-01-24 2006-06-22 Jeremy Bruestle Method and apparatus for secure communications and resource sharing between anonymous non-trusting parties with no central administration
US8467535B2 (en) 2005-01-18 2013-06-18 Certicom Corp. Accelerated verification of digital signatures and public keys
CN101198998A (en) 2005-04-27 2008-06-11 松下电器产业株式会社 Information security device and elliptic curve operating device
DE102005041102A1 (en) 2005-08-30 2007-03-15 Siemens Ag Method for scalar multiplication of points on an elliptic curve
US20070168669A1 (en) 2006-01-13 2007-07-19 Lockheed Martin Corporation Anti-tamper system
US8942373B2 (en) 2010-11-29 2015-01-27 Beijing Z & W Technology Consulting Co., Ltd. Data encryption and decryption method and apparatus
JP5790319B2 (en) * 2011-08-29 2015-10-07 ソニー株式会社 Signature verification apparatus, signature verification method, program, and recording medium
EP2918037A1 (en) 2012-11-12 2015-09-16 Cryptography Research Inc. Methods and systems for glitch-resistant cryptographic discrete-log based signing
US9350550B2 (en) 2013-09-10 2016-05-24 M2M And Iot Technologies, Llc Power management and security for wireless modules in “machine-to-machine” communications
US9425953B2 (en) * 2013-10-09 2016-08-23 Intel Corporation Generating multiple secure hashes from a single data buffer
US9178699B2 (en) 2013-11-06 2015-11-03 Blackberry Limited Public key encryption algorithms for hard lock file encryption
US10700856B2 (en) 2013-11-19 2020-06-30 Network-1 Technologies, Inc. Key derivation for a module using an embedded universal integrated circuit card
CN106330850B (en) 2015-07-02 2020-01-14 创新先进技术有限公司 Security verification method based on biological characteristics, client and server
DE102016210786A1 (en) * 2016-02-18 2017-08-24 Volkswagen Aktiengesellschaft Component for connection to a data bus and method for implementing a cryptographic functionality in such a component
US9800411B1 (en) 2016-05-05 2017-10-24 ISARA Corporation Using a secret generator in an elliptic curve cryptography (ECC) digital signature scheme
IT201600076089A1 (en) 2016-07-20 2018-01-20 St Microelectronics Srl PROCEDURE FOR THE GENERATION OF A DIGITAL SIGNATURE OF A MESSAGE, CORRESPONDING GENERATION UNITS, ELECTRONIC EQUIPMENT AND COMPUTER PRODUCT
TWI734729B (en) 2017-01-19 2021-08-01 香港商阿里巴巴集團服務有限公司 Method and device for realizing electronic signature and signature server
US10263793B2 (en) 2017-07-18 2019-04-16 Square, Inc. Devices with modifiable physically unclonable functions
US10826707B2 (en) 2017-10-16 2020-11-03 Assa Abloy Ab Privacy preserving tag
US10733291B1 (en) 2018-06-11 2020-08-04 Square, Inc. Bi-directional communication protocol based device security
US10432405B1 (en) * 2018-09-05 2019-10-01 Accelor Ltd. Systems and methods for accelerating transaction verification by performing cryptographic computing tasks in parallel
US11178190B2 (en) * 2018-11-06 2021-11-16 Blackberry Limited Methods and devices for establishing secure communication channels
US11501483B2 (en) 2018-12-10 2022-11-15 ImageKeeper, LLC Removable sensor payload system for unmanned aerial vehicle performing media capture and property analysis
US11012425B2 (en) * 2018-12-28 2021-05-18 Micron Technology, Inc. Replay protection nonce generation
US11075763B2 (en) 2019-02-15 2021-07-27 International Business Machines Corporation Compute digital signature authentication sign with encrypted key instruction
US11108567B2 (en) 2019-02-15 2021-08-31 International Business Machines Corporation Compute digital signature authentication verify instruction

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150350171A1 (en) * 2014-06-02 2015-12-03 Qualcomm Incorporated Semi-deterministic digital signature generation
US20160191543A1 (en) * 2014-12-31 2016-06-30 Dell Software Inc. Secure neighbor discovery (send) using pre-shared key
US9680653B1 (en) * 2016-10-13 2017-06-13 International Business Machines Corporation Cipher message with authentication instruction
US20190007219A1 (en) * 2017-06-29 2019-01-03 Intel Corporation Technologies for robust computation of elliptic curve digital signatures

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
網路文獻 C. F. Kerry, et al., "Digital Signature Standard (DSS)," FIPS PUB 186-4, FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION, Information Technology Laboratory, National Institute of Standards and Technology, Gaithersburg, MD 20899-8900, July 2013. https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.186-4.pdf *
網路文獻 S. Josefsson, et al., "Edwards-Curve Digital Signature Algorithm (EdDSA)," Request for Comments: 8032, Internet Research Task Force (IRTF), January 2017. https://www.rfc-editor.org/rfc/rfc8032; *

Also Published As

Publication number Publication date
WO2020165021A1 (en) 2020-08-20
US20200267001A1 (en) 2020-08-20
US11303456B2 (en) 2022-04-12
TW202040966A (en) 2020-11-01

Similar Documents

Publication Publication Date Title
TWI773960B (en) Computer program product, computer system and computer implement method for omputing digital signature authentication sign with encrypted key instruction
TWI811514B (en) Computer program product, computer system and computer implement method for compute digital signature authentication sign instruction
TWI743654B (en) Computer program product, computer system and computer implement method for compute digital signature authentication verify instruction
JP2019535036A (en) Computer program product, computer system, and computer-implemented method for realizing encrypted message including authentication instruction
US11930099B2 (en) Implementing resilient deterministic encryption
US11917072B2 (en) Implementing opportunistic authentication of encrypted data
JP2022522627A (en) Incremental decryption and integrity verification of secure operating system images
JP2019533359A (en) Computer program product, computer system, and computer-implemented method for facilitating processing in a computing environment
US20230083083A1 (en) Storing diagnostic state of secure virtual machines
TW202307711A (en) Secure guest image and metadata update
TWI777122B (en) Computer program product, system and method for performing cryptographic computation scalar multiply instruction
JP2024510893A (en) Generating hybrid security certificates using multiple cryptosystems