IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特許-演算装置 図1
  • 特許-演算装置 図2
  • 特許-演算装置 図3
  • 特許-演算装置 図4
  • 特許-演算装置 図5
  • 特許-演算装置 図6
  • 特許-演算装置 図7
  • 特許-演算装置 図8
  • 特許-演算装置 図9
  • 特許-演算装置 図10
  • 特許-演算装置 図11
  • 特許-演算装置 図12
  • 特許-演算装置 図13
  • 特許-演算装置 図14
  • 特許-演算装置 図15
  • 特許-演算装置 図16
  • 特許-演算装置 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-06
(45)【発行日】2024-12-16
(54)【発明の名称】演算装置
(51)【国際特許分類】
   H03M 7/30 20060101AFI20241209BHJP
【FI】
H03M7/30 Z
【請求項の数】 11
(21)【出願番号】P 2021047658
(22)【出願日】2021-03-22
(65)【公開番号】P2022146609
(43)【公開日】2022-10-05
【審査請求日】2023-09-11
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】井上 万輝
【審査官】川口 貴裕
(56)【参考文献】
【文献】米国特許出願公開第2019/0319782(US,A1)
【文献】米国特許第06829355(US,B2)
【文献】特開2004-053716(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H03M 3/00-9/00
(57)【特許請求の範囲】
【請求項1】
第1ハッシュ関数と、前記第1ハッシュ関数より入力データ幅が大きい第2ハッシュ関数とを実行可能な演算装置であって、
前記第1ハッシュ関数を示す選択信号に対して第1入力データを前記第2ハッシュ関数の入力データ幅に合わせて変換し第2入力データを生成する入力データ編集回路と、
前記選択信号が前記第1ハッシュ関数を示す場合に前記入力データ編集回路により前記変換された第2入力データを選択して出力し、前記選択信号が前記第2ハッシュ関数を示す場合に前記第1入力データを選択して出力する選択回路と、
前記選択回路から出力された第2入力データ又は第1入力データに対して前記選択信号に基づいて、前記第1ハッシュ関数のロジック関数および前記第2ハッシュ関数のロジック関数のいずれかを実行し、前記第2ハッシュ関数の出力データ幅に沿った出力データを生成するハッシュ演算回路と、
前記選択信号が前記第1ハッシュ関数を示す場合前記第2ハッシュ関数による出力データ幅より小さい前記第1ハッシュ関数による出力データ幅に合わせて、前記出力データを変換する出力データ編集回路と、
前記選択信号が前記第1ハッシュ関数を示す場合に前記出力データ編集回路により変換された出力データを出力し、前記選択信号が前記第2ハッシュ関数を示す場合に前記ハッシュ演算回路により生成された出力データを出力するハッシュ値出力回路と、
を備える演算装置。
【請求項2】
前記ハッシュ演算回路は、前記第1ハッシュ関数のロジック関数および前記第2ハッシュ関数のロジック関数のいずれかを実行する回路を選択する
請求項1に記載の演算装置。
【請求項3】
前記ハッシュ演算回路は、
前記ハッシュ演算回路に入力された入力データのビット数増やす拡張処理回路と、
前記拡張処理回路から入力された入力データを圧縮する圧縮処理回路と
を備える、
請求項1に記載の演算装置。
【請求項4】
前記圧縮処理回路は、64ビット幅で演算するモジュールを有し、前記第1ハッシュ関数のロジック関数および前記第2ハッシュ関数のロジック関数を選択可能である、
請求項に記載の演算装置。
【請求項5】
前記圧縮処理回路は、複数ラウンド分の前記ロジック関数を含む論理演算および加算演算を1度に実行する、
請求項に記載の演算装置。
【請求項6】
前記拡張処理回路は、64ビット幅で演算するモジュールを有し、前記第1ハッシュ関数のロジック関数および前記第2ハッシュ関数のロジック関数を選択可能である、
請求項に記載の演算装置。
【請求項7】
前記拡張処理回路は、複数ラウンド分の前記ロジック関数を含む論理演算および加算演算を1度に実行する、
請求項に記載の演算装置。
【請求項8】
前記ハッシュ値出力回路により出力されたハッシュ値を用いた署名処理をする署名処理部をさらに備える、
請求項1に記載の演算装置。
【請求項9】
前記第1ハッシュ関数は、SHA-256の関数であり、前記第2ハッシュ関数は、SHA-512の関数である、
請求項1に記載の演算装置。
【請求項10】
前記入力データ編集回路は、前記第1入力データにダミーデータを追加することにより前記第1入力データを変換する
請求項1に記載の演算装置。
【請求項11】
前記第1入力データのサイズが32ビット×16である場合、前記ダミーデータが追加された第2入力データのサイズは、64ビット×16である
請求項10に記載の演算装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、演算装置に関する。
【背景技術】
【0002】
従来から、デジタル署名処理の際、ハッシュ関数が用いられる。
【先行技術文献】
【特許文献】
【0003】
【文献】米国特許出願公開第2020/349866号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
一つの実施形態は、複数のハッシュ関数を実行するにあたり、より小さな回路規模のハッシュ関数回路を有する演算装置を提供することを目的とする。
【課題を解決するための手段】
【0005】
一つの実施形態によれば、演算装置は、第1ハッシュ関数と、前記第1ハッシュ関数より入力データ幅が大きい第2ハッシュ関数とを実行可能な演算装置であって、前記第1ハッシュ関数を示す選択信号に対して、第1入力データを前記第2ハッシュ関数の入力データ幅に合わせて変換し第2入力データを生成する入力データ編集回路と、前記選択信号が前記第1ハッシュ関数を示す場合に前記入力データ編集回路により前記変換された第2入力データを選択して出力し、前記選択信号が前記第2ハッシュ関数を示す場合に前記第1入力データを選択して出力する選択回路と、前記選択回路から出力された第2入力データ又は第1入力データに対して前記選択信号に基づいて、前記第1ハッシュ関数のロジック関数および前記第2ハッシュ関数のロジック関数のいずれかを実行し、前記第2ハッシュ関数の出力データ幅に沿った出力データを生成するハッシュ演算回路と、前記選択信号が前記第1ハッシュ関数を示す場合前記第2ハッシュ関数による出力データ幅より小さい前記第1ハッシュ関数による出力データ幅に合わせて、前記出力データを変換する出力データ編集回路と、前記選択信号が前記第1ハッシュ関数を示す場合に前記出力データ編集回路により変換された出力データを出力し、前記選択信号が前記第2ハッシュ関数を示す場合に前記ハッシュ演算回路により生成された出力データを出力するハッシュ値出力回路と、を備える。
【図面の簡単な説明】
【0006】
図1図1は、本実施形態にかかる演算装置が適用されたメモリシステムの構成の一例を示す図である。
図2図2は、本実施形態にかかるメモリシステムの機能構成の一例を示すブロック図である。
図3図3は、比較例に係る演算装置によるハッシュ値算出手順を示すフローチャートである。
図4図4は、比較例に係る演算装置の拡張処理を実行する回路である拡張処理回路の例を示す図である。
図5図5は、比較例に係る演算装置の圧縮処理を実行する回路である圧縮処理回路の例を示す図である。
図6図6は、SHA-256およびSHA-512の内容を示す図である。
図7図7は、本実施形態にかかるハッシュ値算出部を実現する回路図である。
図8図8は、本実施形態にかかるブロックデータの編集例を説明する図である。
図9図9は、本実施形態にかかる拡張処理回路の例を示す図である。
図10図10は、本実施形態にかかる圧縮処理回路の例を示す図である。
図11図11は、本実施形態にかかるハッシュ値算出処理手順を示すフローチャートである。
図12図12は、本実施形態にかかる署名生成処理手順を示すフローチャートである。
図13図13は、本実施形態にかかる署名検証処理手順を示すフローチャートである。
図14図14は、第2実施形態にかかる拡張圧縮回路の拡張処理回路を示す図である。
図15図15は、第2実施形態にかかる拡張圧縮回路の圧縮処理回路を示す図である。
図16図16は、第3実施形態にかかる拡張圧縮回路の圧縮処理回路を示す図である。
図17図17は、第4実施形態にかかる圧縮処理回路の例を示す図である。
【発明を実施するための形態】
【0007】
以下では、一例として、実施形態にかかる演算装置が適用されたメモリシステムについて説明する。なお、実施形態にかかる演算装置を適用できる装置はメモリシステムだけに限定されない。実施形態にかかる演算装置は、コンピュータプログラムが格納されるメモリと、当該コンピュータプログラムを実行するプロセッサと、を備えた任意の装置に適用され得る。以下に添付図面を参照して、実施形態にかかる演算装置が適用されたメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0008】
(第1実施形態)
図1は、本実施形態にかかる演算装置が適用されたメモリシステムの構成の一例を示す図である。このメモリシステム1は、例えば、SSD(Solid State Drive)である。以下では、不揮発性メモリとしてNAND型のフラッシュメモリ(以下、NANDメモリという)を用いる場合を例に挙げる。
【0009】
メモリシステム1は、ホスト2と接続可能に構成されている。例えばCPU(Central Processing Unit)、パーソナルコンピュータ、携帯用情報機器、サーバ、等がホスト2に該当する。メモリシステム1とホスト2との間の通信のインタフェース規格としては、任意のインタフェース規格が採用可能である。2以上のホスト2がメモリシステム1に同時に接続されてもよい。ホスト2とメモリシステム1とは、ネットワークを介して接続されてもよい。
【0010】
メモリシステム1は、ホスト2からのアクセスコマンドに応じてホスト2との間でデータの送受信を実行する。
【0011】
メモリシステム1は、NANDメモリ12とメモリコントローラ10を含む。メモリコントローラ10は、例えば、ホストインタフェース部11、NANDメモリ12、NANDコントローラ13、RAM(Random Access Memory)14、および制御部15を備える。
【0012】
制御部15は、例えば、1以上のプロセッサを含んで構成される。制御部15は、予めメモリシステム1内の所定の位置に格納されているプログラムを実行することによって、メモリシステム1の制御を実行する。プログラムの格納位置は任意に設計される。例えば、プログラムは、予めNANDメモリ12に格納され、起動時にRAM14にロードされる。制御部15は、RAM14にロードされたプログラムを実行する。メモリシステム1の制御は、複数の処理によって構成される。制御部15が実行する複数の処理のうちの一部または全部はハードウェア回路によって実現されてもよい。また、制御部15を、ハードウェア回路である制御回路(Control Circuit)によって構成してもよい。制御部15が実行する各処理については後述する。
【0013】
ホストインタフェース部11は、メモリシステム1がホスト2と通信を行うためのインタフェース装置である。例えばホストインタフェース部11は、制御部15の制御下で、ホスト2とRAM14との間のユーザデータの転送を実行する。
【0014】
NANDコントローラ13は、NANDメモリ12に対するアクセスのためのインタフェース装置である。NANDコントローラ13は、制御部15による制御下で、RAM14とNANDメモリ12との間のユーザデータまたは管理情報の転送を実行する。詳細を省略するが、NANDコントローラ13は、誤り訂正処理行うことができる。
【0015】
NANDメモリ12は、ストレージとして機能する不揮発性の記憶媒体である。NANDメモリ12は、1以上のチップによって構成される。
【0016】
RAM14は、データを一時的に記憶するための記憶媒体である。RAM14は、メモリコントローラ10に内蔵されてもよいし、メモリコントローラ10の外部に搭載されてもよい。RAM14としては、例えば、NANDメモリ12よりも高速な種類の記憶媒体が採用可能である。RAM14としては、例えば、揮発性または不揮発性の記憶媒体が採用可能である。RAM14としては、例えば、DRAM(Dynamic RAM)、SRAM(Static RAM)、FeRAM(Ferroelectric RAM)、MRAM(Magnetoresistive RAM)、PRAM(Phase change RAM)などが採用可能である。
【0017】
図2は、本実施形態にかかるメモリシステム1の機能構成の一例を示すブロック図である。図2に示すように、メモリシステム1は、記憶部30と、署名処理部31と、ハッシュ値算出部32と、公開鍵暗号処理部33とを備える。
【0018】
記憶部30は、各種情報を記憶する。記憶部30は、例えば、秘密鍵、公開鍵、メッセージ、および署名情報を記憶する。記憶部30は、RAM14、NANDメモリ12により実現する。
【0019】
署名処理部31は、署名処理をする。署名処理部31は、制御部15により実現する。署名処理部31は、ハッシュ値に基づいて署名生成したり、署名検証したりする。
【0020】
ハッシュ値算出部32は、ハッシュ値を算出する回路である。ハッシュ値算出部32は、例えば、メモリコントローラ10に含まれる。ハッシュ値算出部32の詳細は後述する。公開鍵暗号処理部33は、公開鍵暗号処理をする。公開鍵暗号処理部33は、例えば、メモリコントローラ10に含まれる。
【0021】
(比較例に係る演算装置によるハッシュ値算出方法)
ハッシュ値算出部32の詳細を説明する前に、図3を用いて、本実施形態の演算装置と比較される技術(比較例)に係る演算装置によるハッシュ値算出手順の説明をする。図3は、比較例に係る演算装置によるハッシュ値算出手順を示すフローチャートである。まず、演算装置は、入力データを取得する(ステップS1)。演算装置は、入力データを512ビットまたは1024ビット毎にブロック分割する(ステップS2)。続いて、演算装置は、ブロックのデータを拡張する処理である拡張処理をする(ステップS3)。例えば、演算装置は、入力データが512ビットの場合、2048ビットにする。
【0022】
続いて、演算装置は、拡張したデータを圧縮する圧縮処理をする(ステップS4)。例えば、演算装置は、拡張処理により2048ビットに拡張したデータを256ビットに圧縮する。
【0023】
続いて、演算装置は、圧縮したデータを1つ前に処理した結果と加算して保持する(ステップS5)。全ブロックについて演算を完了しているか否かを判断し(ステップS6)。全ブロックについて演算を完了していない場合(ステップS6:No)、ステップS2へ進む。全ブロックについて演算を完了している場合(ステップS6:Yes)、演算装置は、ハッシュ値を出力する(ステップS7)。
【0024】
上述のように、演算装置は、拡張処理を実行する回路および圧縮処理を実行する回路を有する。ここで、拡張処理を実行する回路の例を図4に示す。
【0025】
図4は、比較例に係る演算装置の拡張処理を実行する回路である拡張処理回路の例を示す図である。図4に示すように、拡張処理回路は、レジスタw0~w15と、ロジック関数演算器51、ロジック関数演算器52、加算演算器53~56を有する。
【0026】
なお、ロジック関数演算器51およびロジック関数演算器52は、ハッシュ関数の種類によって処理内容が異なる。すなわち、SHA-256のハッシュ関数を実行する場合と、SHA-512のハッシュ関数実行する場合で、ロジック関数演算器の処理内容が異なる。
【0027】
続いて、圧縮処理を実行する回路の例を図5に示す。図5は、比較例に係る演算装置の圧縮処理を実行する回路である圧縮処理回路の例を示す図である。図5に示すように、圧縮処理回路は、レジスタr0~r8と、加算演算器71と、ロジック関数演算器72と、ロジック関数演算器73と、ロジック関数演算器74と、ロジック関数演算器75と、加算演算器76~80と、加算演算器88とを有する。
【0028】
なお、ロジック関数演算器72およびロジック関数演算器74は、ハッシュ関数の種類によって処理内容が異なる。すなわち、SHA-256のハッシュ関数を実行する場合と、SHA-512のハッシュ関数を実行する場合で、ロジック関数演算器の処理内容が異なる。
【0029】
ここで、ロジック関数演算器72におけるSHA-256の場合の実行内容を、次の数式1に示す。
【数1】
【0030】
続いて、ロジック関数演算器73における実行内容を、次の数式2に示す。
【数2】
【0031】
続いて、ロジック関数演算器74における実行内容を、次の数式3に示す。
【数3】
【0032】
ここで、ロジック関数演算器75におけるSHA-256の場合の実行内容を、次の数式4に示す。
【数4】
【0033】
圧縮処理回路では、拡張後の入力データと、定数とが加算演算器76に入力されることをトリガとして、圧縮処理を実行する。
【0034】
ここで、本実施形態では、SHA-256のハッシュ関数およびSHA-512のハッシュ関数を実行することを検討する。ここで、図6に、SHA-256およびSHA-512についての違いを示す。図6は、SHA-256およびSHA-512の内容を示す図である。
【0035】
図6に示すように、SHA256の方が、出力データ幅、入力データ幅、演算幅、およびround回数がSHA512より少ない。また、SHA512は、SHA256より入力データ幅や出力データ幅が大きいので、セキュリティレベルが高い。使用性・安全性を考慮すると、SHA256およびSHA512の双方を適用できることが望ましい。
【0036】
SHA-256のハッシュ関数を実行するための回路とSHA512のハッシュ関数を実行するための回路を単に組み合わせてしまうと、回路面積が広くなってしまう。そこで、本実施形態では、より小さな回路規模のハッシュ関数回路を有するメモリシステム1について説明する。
【0037】
まず、図7を用いて、ハッシュ値算出部32を示す回路を説明する。図7は、本実施形態にかかるハッシュ値算出部32を実現する回路図である。図7に示すように、ハッシュ値算出部32は、入力バッファ321と、並び替え回路322と、選択器323と、拡張圧縮回路324と、並び替え回路325と、出力バッファ326とを有する。
【0038】
入力バッファ321は、署名処理部31から入力データを取得する。また、入力バッファ321は、適用するハッシュ関数を示す選択信号を取得する。なお、当該選択信号は、選択器323、拡張圧縮回路324、出力バッファ326へも出力する。署名処理部31が、選択信号をハッシュ値算出部32へ出力するようにしてもよい。
【0039】
入力バッファ321は、入力データを選択信号に基づいて入力データを分割したブロックデータを出力する。例えば、選択信号がSHA-256のハッシュ関数を実行することを示す場合、入力バッファ321は、並び替え回路322へブロックデータを並び替え回路322へ出力する。また、選択信号がSHA-512のハッシュ関数を実行することを示す場合、入力バッファ321は、選択器323へブロックデータを出力する。
【0040】
並び替え回路322は、入力バッファ321から取得したブロックデータを編集する。ここで、並び替え回路322が、ブロックデータを編集する例について、図8を用いて説明する。図8は、本実施形態にかかるブロックデータの編集例を説明する図である。並び替え回路322は、32ビット×16のブロックデータを取得する。並び替え回路322は、64ビット×16のブロックデータに編集する。ここで、並び替え回路322は、64ビットの内半分のデータをダミーデータとする。例えば、図8に示すように、64ビット×16のブロックデータにおける、斜線部に編集前の32ビット×16のデータを配置し、白抜き部分にダミーデータを配置する。
【0041】
並び替え回路322は、編集したブロックデータを選択器323へ出力する。選択器323は、選択信号に基づいてブロックデータを拡張圧縮回路324へ出力する。選択信号がSHA-256のハッシュ関数を実行することを示す場合、選択器323は、並び替え回路322から出力されたブロックデータを拡張圧縮回路324へ出力する。また、選択器323は、選択信号がSHA-512のハッシュ関数を実行することを示す場合、入力バッファ321から出力されたブロックデータを拡張圧縮回路324へ出力する。
【0042】
拡張圧縮回路324は、拡張処理および圧縮処理をする回路である。拡張圧縮回路324は、レジスタサイズは64ビットとする。ここで、拡張圧縮回路324の内、拡張処理回路部分を図9に示す。図9は、本実施形態にかかる拡張処理回路の例を示す図である。図9に示すように、拡張処理回路41は、レジスタw0~w15と、ロジック関数演算器51aと、ロジック関数演算器51bと、ロジック関数演算器52aと、ロジック関数演算器52bと、加算演算器53~55と、選択器57と、選択器58とを有する。
【0043】
ロジック関数演算器51aは、SHA-256に対応する演算器であり、ロジック関数演算器51bは、SHA-512に対応する演算器である。ロジック関数演算器51aおよびロジック関数演算器51bは、演算結果を選択器57へ出力する。
【0044】
また、ロジック関数演算器52aは、SHA-256に対応する演算器であり、ロジック関数演算器52bは、SHA-512に対応する演算器である。ロジック関数演算器52aおよびロジック関数演算器52bは、演算結果を選択器58へ出力する。
【0045】
選択器57は、選択信号がSHA-256のハッシュ関数を実行することを示す場合、ロジック関数演算器51aから出力された演算結果を加算演算器53へ出力する。また、選択器57は、選択信号がSHA-512のハッシュ関数を実行することを示す場合、ロジック関数演算器51bから出力された演算結果を加算演算器53へ出力する。
【0046】
選択器58は、選択信号がSHA-256のハッシュ関数を実行することを示す場合、ロジック関数演算器52aから出力された演算結果を加算演算器55へ出力する。また、選択器58は、選択信号がSHA-512のハッシュ関数を実行することを示す場合、ロジック関数演算器52bから出力された演算結果を加算演算器55へ出力する。
【0047】
このように、拡張圧縮回路324の拡張処理部分の回路である拡張処理回路41は、レジスタの部分や加算演算器を共通化して、SHA256およびSHA512で処理内容が異なるロジック関数演算器51およびロジック関数演算器52のみ備えておくことで、拡張処理回路全体を複数備える場合と比較して、回路面積を小さくすることができる。
【0048】
続いて、拡張圧縮回路324の内、圧縮処理回路部分を図10に示す。図10は、本実施形態にかかる圧縮処理回路の例を示す図である。図10に示すように、圧縮処理回路42は、レジスタr0~r8と、加算演算器71と、ロジック関数演算器72aと、ロジック関数演算器72bと、ロジック関数演算器73と、ロジック関数演算器74aと、ロジック関数演算器74bと、ロジック関数演算器75と、加算演算器76~80と、選択器81と、選択器82と、加算演算器88とを有する。
【0049】
ロジック関数演算器72aは、SHA-256に対応する演算器であり、ロジック関数演算器72bは、SHA-512に対応する演算器である。ロジック関数演算器72aおよびロジック関数演算器72bは、演算結果を選択器81へ出力する。
【0050】
また、ロジック関数演算器74aは、SHA-256に対応する演算器であり、ロジック関数演算器74bは、SHA-512に対応する演算器である。ロジック関数演算器74aおよびロジック関数演算器74bは、演算結果を選択器82へ出力する。
【0051】
選択器81は、選択信号がSHA-256のハッシュ関数を実行することを示す場合、ロジック関数演算器72aから出力された演算結果を加算演算器80へ出力する。また、選択器81は、選択信号がSHA-512のハッシュ関数を実行することを示す場合、ロジック関数演算器72bから出力された演算結果を加算演算器80へ出力する。
【0052】
選択器82は、選択信号がSHA-256のハッシュ関数を実行することを示す場合、ロジック関数演算器74aから出力された演算結果を加算演算器78へ出力する。また、選択器82は、選択信号がSHA-512のハッシュ関数を実行することを示す場合、ロジック関数演算器74bから出力された演算結果を加算演算器78へ出力する。
【0053】
このように、拡張圧縮回路324の圧縮処理部分の回路である圧縮処理回路42は、レジスタの部分や加算演算器を共通化して、SHA256およびSHA512で処理内容が異なるロジック関数演算器72およびロジック関数演算器74のみ備えておくことで、圧縮処理回路全体を複数備える場合と比較して、回路面積を小さくすることができる。
【0054】
図7に戻り、拡張圧縮回路324は、選択信号がSHA-256のハッシュ関数を実行することを示す場合、演算した結果である512ビットの値を並び替え回路325へ出力する。また、選択信号がSHA-512のハッシュ関数を実行することを示す場合、演算した結果である512ビットの値を出力バッファ326へ出力する。並び替え回路325は、512ビットのブロックデータを32ビット×8のデータに変換する。すなわち、並び替え回路325は、SHA-256のハッシュ関数を実行した場合を想定して、有効なデータ部分のみ抽出するようにする。並び替え回路325は、変換した32ビット×8のデータを出力バッファ326へ出力する。
【0055】
出力バッファ326は、並び替え回路325および拡張圧縮回路324からハッシュ値を取得する。出力バッファ326は、選択信号がSHA-256のハッシュ関数を実行することを示す場合、並び替え回路325から取得したハッシュ値を署名処理部31に出力する。また、出力バッファ326は、選択信号がSHA-512のハッシュ関数を実行することを示す場合、拡張圧縮回路324から取得したハッシュ値を署名処理部31に出力する。
【0056】
続いて、ハッシュ値算出部32が実行するハッシュ値算出処理手順について、図11を用いて説明する。図11は、本実施形態にかかるハッシュ値算出処理手順を示すフローチャートである。まず、入力バッファ321は、入力データを取得する(ステップS11)。ここで、選択信号がSHA-512のハッシュ関数を実行することを示す場合(ステップS12:Yes)、入力バッファ321は、1024ビットのブロックを拡張圧縮回路324へ出力する(ステップS15)。
【0057】
選択信号がSHA-512のハッシュ関数を実行することを示さない場合(ステップS12:No)、入力バッファ321は、512ビットのブロックデータを並び替え回路322へ出力する(ステップS13)。そして、並び替え回路322は、1024ビットのブロックを生成して、拡張圧縮回路324へ出力する(ステップS14)。
【0058】
拡張圧縮回路324は、選択信号に基づいて拡張処理を実行し(ステップS16)、圧縮処理を実行する(ステップS17)。
【0059】
選択信号がSHA-512のハッシュ関数を実行することを示す場合(ステップS18:Yes)、512ビットのハッシュ値を出力バッファ326へ出力する(ステップS21)。また、ステップS18において、選択信号がSHA-512のハッシュ関数を実行することを示さない場合(ステップS18:No)、並び替え回路325は、変換した32ビット×8のデータを生成し(ステップS19)、出力バッファ326へ出力する(ステップS20)。
【0060】
(署名生成処理の説明)
続いて、図12を用いて、署名生成処理の手順を説明する。図12は、本実施形態にかかる署名生成処理手順を示すフローチャートである。
【0061】
まず、署名処理部31は、記憶部30からメッセージを読み出す(ステップS31)。当該メッセージとは、署名処理対象をいい、例えば、コンピュータプログラムコードである。
【0062】
署名処理部31は、当該メッセージをハッシュ値算出部32へ入力する。ハッシュ値算出部32は、当該メッセージを入力データとしてハッシュ値を出力する(ステップS32)。
【0063】
続いて、署名処理部31は、秘密鍵を記憶部30から読み出す(ステップS33)。
【0064】
署名処理部31は、ハッシュ値および秘密鍵を公開鍵暗号処理部33に入力し、公開鍵暗号処理部33により出力されたデータに基づいて、公知技術を適用して署名データを生成し(ステップS34)、当該署名データを記憶部30に出力する(ステップS35)。
【0065】
(署名検証の説明)
続いて、図13を用いて署名検証の手順を説明する。図13は、本実施形態にかかる署名検証処理手順を示すフローチャートである。
【0066】
まず、署名処理部31は、記憶部30からメッセージを読み出す(ステップS41)。
【0067】
続いて、署名処理部31は、当該メッセージをハッシュ値算出部32へ入力する。ハッシュ値算出部32は、当該メッセージを入力データとしてハッシュ値を出力する(ステップS42)。
【0068】
続いて、署名処理部31は、署名データ、公開鍵を記憶部30から読み出す(ステップS43)。
【0069】
続いて、署名処理部31は、署名検証をする。例えば、署名処理部31は、署名データおよび公開鍵を公開鍵暗号処理部33へ入力し、公開鍵暗号処理部33により出力されたデータおよびハッシュ値に基づいて、公知技術を適用して署名検証する(ステップS44)。署名処理部31は、署名が一致したか否かを示す結果を出力する(ステップS45)。
【0070】
上述の実施形態では、ハッシュ値算出部32は、SHA-256のハッシュ関数を実行する場合、入力データをSHA-512の入力データ幅に合わせて編集する並び替え回路322と、SHA-256のロジック関数およびSHA-512のロジック関数を選択可能な拡張圧縮回路324と、拡張圧縮回路324から出力された出力値がSHA-256のハッシュ関数による出力値である場合、当該出力値をSHA-256による出力データ幅に合わせて編集する並び替え回路325を有する。
【0071】
この場合、ハッシュ値算出部32は、SHA-256のハッシュ関数を実行する場合、入力データをSHA-512の入力データ幅に合わせて編集し、拡張圧縮回路324において、SHA-256のロジック関数およびSHA-512のロジック関数を選択して処理するので、拡張圧縮回路324におけるレジスタの部分や加算演算器を共通化することができ、この結果、回路面積を小さくすることができる。
【0072】
(第2実施形態)
第1実施形態では、拡張圧縮回路324が、レジスタサイズを64ビットとする場合について述べたが、第2実施形態における拡張圧縮回路324は、レジスタサイズを32ビットとするモジュールを2つ有する。ここで、第2実施形態にかかる拡張圧縮回路324の拡張処理回路を図14に示す。
【0073】
図14に示すように、拡張処理回路41aおよび拡張処理回路41bを有する。すなわち、第2実施形態にかかる拡張処理回路は、図9に示した拡張処理回路を2つ有する。拡張処理回路41aは、下位32ビットのモジュールであり、拡張処理回路41bは、上位32ビットのモジュールである。
【0074】
また、図14に示すように、第2実施形態における拡張圧縮回路324は、下位32ビット側と上位ビット側とをデータ共有するためのインタフェースL1、インタフェースL2、インタフェースL4、およびインタフェースL5を有する。また、第2実施形態における拡張圧縮回路324は、加算結果をキャリーするためのインタフェースL3を有する。
【0075】
続いて、第2実施形態における拡張圧縮回路324の圧縮処理回路を図15に示す。図15に示すように、圧縮処理回路42aおよび圧縮処理回路42bを有する。すなわち、第2実施形態にかかる圧縮処理回路は、図10に示した圧縮処理回路を2つ有する。圧縮処理回路42aは、下位32ビットのモジュールであり、圧縮処理回路42bは、上位32ビットのモジュールである。
【0076】
また、図15に示すように、第2実施形態における圧縮処理回路は、下位32ビット側と上位ビット側とをデータ共有するためのインタフェースL12、インタフェースL13、インタフェースL15、およびインタフェースL16を有する。また、第2実施形態における圧縮処理回路は、加算結果をキャリーするためのインタフェースL11およびインタフェースL14を有する。
【0077】
このように、第2実施形態における拡張圧縮回路324では、レジスタサイズ32ビットの回路を複数備えておき、情報共有や加算結果をキャリーするためのインタフェースを備えておくことにより、レジスタサイズ32ビットのハッシュ関数だけでなく、レジスタサイズ64ビットのハッシュ関数も実行可能となる。
【0078】
また、第2実施形態における拡張圧縮回路324は、選択信号として、SHA-256のハッシュ関数を並列して実行することを示すものをさらに含めるようにしてもよい。このように、第2実施形態における拡張圧縮回路324は、32ビットのハッシュ関数を実行する回路を複数有する構成であるので、SHA-256のハッシュ関数を並列して実行することができる。
【0079】
(第3実施形態)
第2実施形態における圧縮処理回路は、加算結果をキャリーするためのインタフェースL11およびインタフェースL14を有するが、第3実施形態における圧縮回路では、図16に示すように、保持機構85を有するインタフェースL21、保持機構83を有するインタフェースL22を有する。また、インタフェースL21およびインタフェースL22は、それぞれ加算演算器86および加算演算器84に接続する。
【0080】
このように、インタフェースL21およびインタフェースL22は、保持機構85や保持機構83を介して加算結果をキャリーするので、加算結果をキャリーするタイミングを1サイクル遅らせることができ、クリティカルパスを短くすることができる。
【0081】
(第4実施形態)
第4実施形態における圧縮処理回路では、複数のラウンド処理をまとめて実行するものである。ここで、図17に、第4実施形態にかかる圧縮処理回路の例を示す。図17に示すように、レジスタr1~レジスタr8と、第1のラウンド処理回路90と第2のラウンド処理回路91とを有する。
【0082】
ここで、第1のラウンド処理回路90および第2のラウンド処理回路91のそれぞれは、図10に示したロジック関数演算器72aと、ロジック関数演算器72bと、ロジック関数演算器73と、ロジック関数演算器74aと、ロジック関数演算器74bと、ロジック関数演算器75と、加算演算器76~80と、選択器81と、選択器82、加算演算器88とを有する。
【0083】
このように、第4実施形態における圧縮処理回路では、第1のラウンド処理回路90と第2のラウンド処理回路91とを有するので、複数ラウンド分の論理演算および加算をまとめて実行することができ、処理効率を上げることができる。
【0084】
なお、拡張処理回路も、複数のラウンド処理をまとめて実行するようにしてもよい。例えば、図9に示したレジスタw1~レジスタw15と、第1のラウンド処理回路と、第2のラウンド処理回路とを有するようにして、第1のラウンド処理回路および第2のラウンド処理回路は、ロジック関数演算器51aと、ロジック関数演算器51bと、ロジック関数演算器52aと、ロジック関数演算器52bと、加算演算器53~55と、選択器57と、選択器58とを有するようにしてもよい。
【0085】
なお、上述の実施形態では、拡張圧縮回路324の拡張処理部分の回路は、レジスタの部分や加算演算器を共通化して、SHA256およびSHA512で処理内容が異なるロジック関数演算器51およびロジック関数演算器52のみSHA256およびSHA512のそれぞれのロジック関数演算器を有する場合について述べたが、図4に示したような、比較例に係る演算装置のSHA256用の拡張回路やSHA512用の拡張回路を単に接続するような構成としてもよい。
【0086】
また、上述の実施形態では、ハッシュ値算出部32が、SHA256のハッシュ関数およびSHA512のハッシュ関数を実行する場合について述べたが、ハッシュ値算出部32が、SHA256のハッシュ関数およびSHA384のハッシュ関数を実行するようにしてもよい。
【0087】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0088】
1 メモリシステム、2 ホスト、10 メモリコントローラ、11 ホストインタフェース部、12 NANDメモリ、13 NANDコントローラ、14 RAM、15 制御部、30 記憶部、31 署名処理部、32 ハッシュ値算出部、33 公開鍵暗号処理部、41 拡張処理回路、42 圧縮処理回路、321 入力バッファ、322 並び替え回路、324 拡張圧縮回路、325 並び替え回路、326 出力バッファ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17