- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
拟似乱数生成器PANAMA
Copyright ? Hitachi, Ltd. 2000. All Right Reserved
PAGE 4
仕様書MULTI-S01暗号
(株)日立製作所
目次 TOC \o 1-3
1. 準備 PAGEREF _Toc487856742 \h 3
1.1. 変数、記号の表記について PAGEREF _Toc487856743 \h 3
1.2. ワード中のバイトデータの順序(エンディアン) PAGEREF _Toc487856744 \h 3
1.3. 有限体上の演算 PAGEREF _Toc487856745 \h 4
2. アルゴリズム PAGEREF _Toc487856746 \h 6
2.1. 全体概要 PAGEREF _Toc487856747 \h 6
2.2. 機能 PAGEREF _Toc487856748 \h 7
2.3. 擬似乱数生成器 PAGEREF _Toc487856749 \h 7
2.4. 擬似乱数生成器PANAMA PAGEREF _Toc487856750 \h 8
2.5. PANAMAによるA,B,Sの生成 PAGEREF _Toc487856751 \h 12
2.6. 暗号化処理のデータ攪拌部 PAGEREF _Toc487856752 \h 13
2.7. 復号化処理のデータ攪拌部 PAGEREF _Toc487856753 \h 14
3. 大きなデータの処理 PAGEREF _Toc487856754 \h 15
準備
変数、記号の表記について
本仕様書では、整数の演算子を以下のように定義する。
?:ビットごとの排他的論理和、変数の長さは文脈から明らか
?:有限体F264上の乗算(後述)
+:整数加算
×:整数乗算
OR:ビット毎の論理和演算(32ビット)
NOT:1変数演算子。ビット毎の論理反転(32ビット)
ROTLk(X ):32ビットのバイナリXに対するkビット左巡回シフト
変数の長さを明示する場合、そのビット長を括弧付きスーパースクリプトとして表記する。たとえば、変数Xのビット長が8ビットである場合X (8)と表記する。
また、列については、変数名にサブスクリプトとして引数を書くことで要素を表す。たとえば、変数列Xの引数8に相当する要素をX8と書き表す。列の引数は、特に明記しない限り、最初の要素を1とする。
ワード中のバイトデータの順序(エンディアン)
鍵、平文、暗号文、冗長データ、初期値はバイト単位の列として扱う。これらは64ビットのデータ型との変換の際、Big-Endianにより変換される;たとえば、64ビットのワード列Yに、バイト文字列Xを格納する手順は以下のようになる。
Y i = ?j =1,…,8 X8(i –1) +j 2(64–8j)
このアルゴリズムではバイト列を64ビットブロックへの埋め込みを行う。この場合、64ビットのデータ型に埋め込まれるバイト列Xiの順序は以下のようになる。
[MSB]X1 X2 X3 X4 X5 X6 X7 X8[LSB]
有限体上の演算
MULTI-S01では、有限体F264上の演算を用いる。ここでは、この演算の実装に必要な性質と演算方法を簡単に説明する。
本稿では64ビットの変数AとBのF264の乗算(以下、演算子を記号?で示す)を考えるとき、変数、Bはそれぞれの値に応じて、以下のようにして63次以下のxについての多項式(係数は0または1)を対応づける。
1ビット値ai={0,1}をAの上位からi番目のビット値であると定義する。すなわち、 (a1, a2, a3,...,a64)=A。これらaiを用いてAに対応づけられる多項式A(x )を以下のように定義する。A(x ) = a1x 63 + a2x 62 + a3x 61 + ... + a63x + a64 = ?i =1...64 aix (64–i )
bi ={0,1}についてもAと同様に、多項式B (x )を対応づける。(b 1, b 2, b 3,...,b 64)=BB(x ) = b 1x 63 + b 2x 62 + b 3x 61 + ... + b 63 x + b 64 = ?i =1...64 bix (64–i )
ここで多項式の剰余演算のために記号を定義する。二つの多項式A(x )、P(x )についてA(x ) mod P(x )を、A(x )をP(x )で割ったときの剰余、と定義する。
本稿ではP(x )=x64+x4+x3+x +1を使って、多項式の(剰余)乗算結果であるC(x )を次のように定義する。
C (x ) = A (x ) ? B (
文档评论(0)