<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://shaw.cocolog-nifty.com/blog/">
<title>Ｓ．Ｗ．の日記</title>
<link>http://shaw.cocolog-nifty.com/blog/</link>
<description></description>
<dc:language>ja-JP</dc:language>
<dc:creator></dc:creator>
<dc:date>2012-02-18T16:20:11+09:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.typepad.com/" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://shaw.cocolog-nifty.com/blog/2012/02/post-b879.html" />
<rdf:li rdf:resource="http://shaw.cocolog-nifty.com/blog/2011/12/des-d865.html" />
<rdf:li rdf:resource="http://shaw.cocolog-nifty.com/blog/2011/12/post-73ed.html" />
<rdf:li rdf:resource="http://shaw.cocolog-nifty.com/blog/2011/11/post-3bce.html" />
<rdf:li rdf:resource="http://shaw.cocolog-nifty.com/blog/2011/07/12424-95b8.html" />
<rdf:li rdf:resource="http://shaw.cocolog-nifty.com/blog/2011/06/post-cb96.html" />
<rdf:li rdf:resource="http://shaw.cocolog-nifty.com/blog/2011/04/post-83a5.html" />
<rdf:li rdf:resource="http://shaw.cocolog-nifty.com/blog/2011/04/fmpsg015----9d3.html" />
<rdf:li rdf:resource="http://shaw.cocolog-nifty.com/blog/2011/03/313-a7a2.html" />
<rdf:li rdf:resource="http://shaw.cocolog-nifty.com/blog/2011/03/post-eef7.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://shaw.cocolog-nifty.com/blog/2012/02/post-b879.html">
<title>多倍長整数 の処理考察</title>
<link>http://shaw.cocolog-nifty.com/blog/2012/02/post-b879.html</link>
<description>ＣＰＵの演算命令で扱える範囲を超える整数の演算方法。 やはり、機械語レベルのコー...</description>
<content:encoded>&lt;p&gt;ＣＰＵの演算命令で扱える範囲を超える整数の演算方法。 &lt;/p&gt;

&lt;p&gt;やはり、機械語レベルのコードを考えると、Ｃ言語で記述すると無駄なコードを吐きまくる気がしてならない。 &lt;br /&gt;
Ｃ言語には、『キャリー付きの演算』をする命令が無いから。 &lt;br /&gt;
加算・減算は確実にアセンブリ言語で書く方が処理速度が速くなりそう。 &lt;/p&gt;

&lt;p&gt;例えば、足し算はMASM風にかくと、これで行けると思う。 &lt;/p&gt;

&lt;p&gt;;　ecx : 扱う整数のバイト数を入れて。 &lt;br /&gt;
;　edi : 整数のポインタ &lt;br /&gt;
;　esi : 整数のポインタ &lt;br /&gt;
;　ebx : 返値 &lt;/p&gt;

&lt;p&gt;　　xor edx, edx &lt;br /&gt;
　　clc &lt;br /&gt;
　　.repeat &lt;br /&gt;
　　　　mov eax, [edi + edx * 4] &lt;br /&gt;
　　　　adc eax, [esi + edx * 4] &lt;br /&gt;
　　　　mov [ebx + edx * 4], eax &lt;br /&gt;
　　　　inc edx &lt;br /&gt;
　　.untilcxz &lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
掛け算も、ようは筆算の要領でシフトと加算で表現する。 &lt;br /&gt;
シフトも、アセンブリ言語でキャリー付きのシフトを使うと速い。 &lt;/p&gt;

&lt;p&gt;割り算も、掛け算どうよう、筆算の要領で。 &lt;br /&gt;
割る数をシフトして、割られる数から引き算だから。 &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
さて、ＲＳＡ暗号処理に必要な演算 を考えてみる。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;ＲＳＡ暗号における暗号化と複合化は以下の計算式を計算する。&lt;br /&gt;
もちろん、ｙやｅやｎは、１０進数にすると６００桁とかそういうレベルの整数。&lt;/p&gt;

&lt;p&gt;　x = y^e (mod n) &lt;/p&gt;

&lt;p&gt;yのe乗というのは、掛け算を相当する数繰り返すことになる。 &lt;br /&gt;
しかし、べき乗には性質があって、 &lt;/p&gt;

&lt;p&gt;　x ＝ y^e (mod n) &lt;br /&gt;
　　＝ y^(a+b) (mod n) &lt;br /&gt;
　　＝ y^a (mod n) * y^b (mod n) &lt;/p&gt;

&lt;p&gt;が成り立つ。 &lt;br /&gt;
つまり、べき乗する数eを、２の倍数どおしの足算に変換すれば、 &lt;br /&gt;
従来より早いべき乗計算が実現できる。 &lt;/p&gt;

&lt;p&gt;つまり、 &lt;br /&gt;
e ＝ 2^s1 ＋ 2^s2 ＋ ... 2^sn &lt;br /&gt;
とする。 &lt;/p&gt;

&lt;p&gt;　x ＝ y^e (mod n) &lt;br /&gt;
　　＝ y^(2^s1 ＋ 2^s2 ＋ ... 2^sn) (mod n) &lt;br /&gt;
　　＝ y^(2^s1) (mod n) × y^(2^s2) (mod n) × ... y^(2^sn) (mod n) &lt;/p&gt;

&lt;p&gt;で、こう仮定する。 &lt;/p&gt;

&lt;p&gt;　t[0] ＝ y　　 ＝　y^ 1　＝　y^(2^0) &lt;br /&gt;
　t[1] ＝ t0^2　＝　y^ 2　＝　y^(2^1) &lt;br /&gt;
　t[2] ＝ t1^2　＝　y^ 4　＝　y^(2^2) &lt;br /&gt;
　t[3] ＝ t2^2　＝　y^ 8　＝　y^(2^3) &lt;br /&gt;
　t[4] ＝ t3^2　＝　y^16　＝　y^(2^4) &lt;br /&gt;
　・・・ &lt;/p&gt;

&lt;p&gt;勘のいい人は解ると思うけど、まず、このt[n]を求めればいい。 &lt;br /&gt;
で、必要なt[n]を掛け算すれば、y^e(mod n)が求まる。 &lt;/p&gt;

&lt;p&gt;例として、2^100(mod 101)を求めてみる。 &lt;/p&gt;

&lt;p&gt;t[0] ＝ 2　　　　　　　　　　　　　　　　　　　… 2^(2^0) mod 101 &lt;br /&gt;
t[1] ＝ t[0]^2 ＝ 2^2 ＝ 4 ≡ 4 (mod 101) … 2^(2^1) mod 101 &lt;br /&gt;
t[2] ＝ t[1]^2 ＝ 4^2 ＝ 16 ≡ 16 (mod 101) … 2^(2^2) mod 101 &lt;br /&gt;
t[3] ＝ t[2]^2 ＝ 16^2 ＝ 256 ≡ 54 (mod 101) … 2^(2^3) mod 101 &lt;br /&gt;
t[4] ＝ t[3]^2 ＝ 54^2 ＝ 2919 ≡ 88 (mod 101) … 2^(2^4) mod 101 &lt;br /&gt;
t[5] ＝ t[4]^2 ＝ 88^2 ＝ 7744 ≡ 68 (mod 101) … 2^(2^5) mod 101 &lt;br /&gt;
t[6] ＝ t[5]^2 ＝ 68^2 ＝ 4624 ≡ 79 (mod 101) … 2^(2^6) mod 101 &lt;/p&gt;

&lt;p&gt;さて、ｘを計算してみる。 &lt;/p&gt;

&lt;p&gt;x ＝ 2^100(mod 101) &lt;br /&gt;
　＝ 2^(64 ＋ 32 ＋ 4)(mod 101) &lt;br /&gt;
　＝ 2^(2^6 ＋ 2^5 ＋ 2^2)(mod 101) &lt;br /&gt;
　＝ 2^(2^6)(mod 101) × 2^(2^5)(mod 101) × 2^(2^2)(mod 101) &lt;/p&gt;

&lt;p&gt;であるから、これの式をt[n]に置き換えると &lt;/p&gt;

&lt;p&gt;　＝ t[6] × t[5] × t[2](mod 101) &lt;br /&gt;
　＝ 79 × 68 × 16 (mod 101) &lt;br /&gt;
　＝ 85952 ≡ 1(mod 101) &lt;/p&gt;

&lt;p&gt;つまり、 &lt;/p&gt;

&lt;p&gt;2^100 ≡ 1 (mod 101) &lt;/p&gt;

&lt;p&gt;である事が求まる。 &lt;br /&gt;
（※フェルマーの小定理『 ａ^(p-1) ≡ 1 (mod p) 』から、計算結果は正しいことがわかる。）&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
正直にべき乗の為の掛け算を100回する必要はなく、かなり掛け算の回数が減っており、高速化できる。 &lt;br /&gt;
この辺はＣ言語で書いて、掛け算や足算は、アセンブリ言語でかいた関数を呼ぶのが良い気がする。 &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;あとは、mod の高速化だな。 &lt;br /&gt;
これも、割り算で筆算の要領で余りを求めるのが良い気がしていたが、 &lt;br /&gt;
論文を色々読んでみたが、それよりも早いアルゴリズムがあるらしい。 &lt;br /&gt;
様は「商」は要らなくて「余」だけが欲しいのだから、法ｎの世界の性質を利用するらしい。 &lt;/p&gt;

&lt;p&gt;あとで、勉強予定。 &lt;br /&gt;
&lt;/p&gt;</content:encoded>


<dc:subject>パソコン・インターネット</dc:subject>

<dc:creator>Ｓ．Ｗ．</dc:creator>
<dc:date>2012-02-18T16:20:11+09:00</dc:date>
</item>
<item rdf:about="http://shaw.cocolog-nifty.com/blog/2011/12/des-d865.html">
<title>DES暗号高速化の検討</title>
<link>http://shaw.cocolog-nifty.com/blog/2011/12/des-d865.html</link>
<description>DES暗号のもっとも処理速度のネックになる、IP()及び、その逆関数FP()につ...</description>
<content:encoded>&lt;p&gt;DES暗号のもっとも処理速度のネックになる、IP()及び、その逆関数FP()について、高速化を検討してみた。&lt;/p&gt;&lt;p&gt;IPについて。&lt;/p&gt;

&lt;p&gt;以下は、流れのフロー。&lt;br /&gt;
&lt;a href=&quot;http://shaw.cocolog-nifty.com/.shared/image.html?/photos/uncategorized/2011/12/22/ip_2.jpg&quot; onclick=&quot;window.open(this.href, &#39;_blank&#39;, &#39;width=1600,height=916,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39;); return false&quot;&gt;&lt;img alt=&quot;Ip_2&quot; title=&quot;Ip_2&quot; src=&quot;http://shaw.cocolog-nifty.com/blog/images/2011/12/22/ip_2.jpg&quot; width=&quot;400&quot; height=&quot;229&quot; border=&quot;0&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C言語のコードにすると、こんな感じ。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;br /&gt;
//==============================================================&lt;br /&gt;
//			Initial Premutation (IP)&lt;br /&gt;
//--------------------------------------------------------------&lt;br /&gt;
//	●引数&lt;br /&gt;
//		unsigned	__int64	data	Input&lt;br /&gt;
//	●返値&lt;br /&gt;
//		unsigned	__int64			Output&lt;br /&gt;
//==============================================================&lt;br /&gt;
unsigned	__int64	DES::IP(unsigned	__int64	data)&lt;br /&gt;
{&lt;br /&gt;
	unsigned	__int64	temp;&lt;br /&gt;
	unsigned	int	temp_l,temp_r;&lt;br /&gt;
	unsigned	int	l, r;&lt;/p&gt;

&lt;p&gt;	const	unsigned	int	iMaskL =	0x40100401;&lt;br /&gt;
	const	unsigned	int	iMaskR =	0x80200802;&lt;/p&gt;

&lt;p&gt;	//L, R 逆転&lt;br /&gt;
	temp  = ( data      &amp; 0xFF) &lt;&lt; 32;	//最上位&lt;br /&gt;
	temp |= ((data&gt;&gt; 8) &amp; 0xFF);&lt;br /&gt;
	temp |= ((data&gt;&gt;16) &amp; 0xFF) &lt;&lt; 40;&lt;br /&gt;
	temp |= ((data&gt;&gt;24) &amp; 0xFF) &lt;&lt;  8;&lt;br /&gt;
	temp |= ((data&gt;&gt;32) &amp; 0xFF) &lt;&lt; 48;&lt;br /&gt;
	temp |= ((data&gt;&gt;40) &amp; 0xFF) &lt;&lt; 16;&lt;br /&gt;
	temp |= ((data&gt;&gt;48) &amp; 0xFF) &lt;&lt; 56;&lt;br /&gt;
	temp |= ((data&gt;&gt;56) &amp; 0xFF) &lt;&lt; 24;&lt;/p&gt;

&lt;p&gt;	r			 =  (unsigned int)(temp&gt;&gt;32);&lt;br /&gt;
	temp_l		 = (r &amp; iMaskL);&lt;br /&gt;
	r			 =  (unsigned int)(temp &amp; 0xFFFFFFFF);&lt;br /&gt;
	temp_r		 = (r &amp; iMaskR);&lt;/p&gt;

&lt;p&gt;	temp_l		|= (r &amp; iMaskL) &lt;&lt; 1;&lt;br /&gt;
	r			 = ((unsigned int)(temp&gt;&gt;32) &gt;&gt;      8 );&lt;br /&gt;
	l			 = ((unsigned int)(temp&gt;&gt;32) &lt;&lt; (32- 8));&lt;br /&gt;
	temp_r		|= (r &amp; iMaskR) &lt;&lt; 1;&lt;br /&gt;
	temp_r		|= (l &amp; iMaskR) &gt;&gt; 7;&lt;/p&gt;

&lt;p&gt;	temp_l		|= (r &amp; iMaskL) &lt;&lt; 2;&lt;br /&gt;
	temp_l		|= (l &amp; iMaskL) &gt;&gt; 6;&lt;br /&gt;
	r			 = ((unsigned int)(temp &amp; 0xFFFFFFFF) &gt;&gt;      8 );&lt;br /&gt;
	l			 = ((unsigned int)(temp &amp; 0xFFFFFFFF) &lt;&lt; (32- 8));&lt;br /&gt;
	temp_r		|= (r &amp; iMaskR) &lt;&lt; 2;&lt;br /&gt;
	temp_r		|= (l &amp; iMaskR) &gt;&gt; 6;&lt;/p&gt;

&lt;p&gt;	temp_l		|= (r &amp; iMaskL) &lt;&lt; 3;&lt;br /&gt;
	temp_l		|= (l &amp; iMaskL) &gt;&gt; 5;&lt;br /&gt;
	r			 = ((unsigned int)(temp&gt;&gt;32) &gt;&gt;     16 );&lt;br /&gt;
	l			 = ((unsigned int)(temp&gt;&gt;32) &lt;&lt; (32-16));&lt;br /&gt;
	temp_r		|= (r &amp; iMaskR) &lt;&lt; 3;&lt;br /&gt;
	temp_r		|= (l &amp; iMaskR) &gt;&gt; 5;&lt;/p&gt;

&lt;p&gt;	temp_l		|= (r &amp; iMaskL) &lt;&lt; 4;&lt;br /&gt;
	temp_l		|= (l &amp; iMaskL) &gt;&gt; 4;&lt;br /&gt;
	r			 = ((unsigned int)(temp &amp; 0xFFFFFFFF) &gt;&gt;     16 );&lt;br /&gt;
	l			 = ((unsigned int)(temp &amp; 0xFFFFFFFF) &lt;&lt; (32-16));&lt;br /&gt;
	temp_r		|= (r &amp; iMaskR) &lt;&lt; 4;&lt;br /&gt;
	temp_r		|= (l &amp; iMaskR) &gt;&gt; 4;&lt;/p&gt;

&lt;p&gt;	temp_l		|= (r &amp; iMaskL) &lt;&lt; 5;&lt;br /&gt;
	temp_l		|= (l &amp; iMaskL) &gt;&gt; 3;&lt;br /&gt;
	r			 = ((unsigned int)(temp&gt;&gt;32) &gt;&gt;     24 );&lt;br /&gt;
	l			 = ((unsigned int)(temp&gt;&gt;32) &lt;&lt; (32-24));&lt;br /&gt;
	temp_r		|= (r &amp; iMaskR) &lt;&lt; 5;&lt;br /&gt;
	temp_r		|= (l &amp; iMaskR) &gt;&gt; 3;&lt;/p&gt;

&lt;p&gt;	temp_l		|= (r &amp; iMaskL) &lt;&lt; 6;&lt;br /&gt;
	temp_l		|= (l &amp; iMaskL) &gt;&gt; 2;&lt;br /&gt;
	r			 = ((unsigned int)(temp &amp; 0xFFFFFFFF) &gt;&gt;     24 );&lt;br /&gt;
	l			 = ((unsigned int)(temp &amp; 0xFFFFFFFF) &lt;&lt; (32-24));&lt;br /&gt;
	temp_r		|= (r &amp; iMaskR) &lt;&lt; 6;&lt;br /&gt;
	temp_r		|= (l &amp; iMaskR) &gt;&gt; 2;&lt;/p&gt;

&lt;p&gt;	temp_l		|= (r &amp; iMaskL) &lt;&lt; 7;&lt;br /&gt;
	temp_l		|= (l &amp; iMaskL) &gt;&gt; 1;&lt;br /&gt;
	l			 =  (unsigned int)(temp&gt;&gt;32);&lt;br /&gt;
	temp_r		|= (l &amp; iMaskR) &gt;&gt; 1;&lt;/p&gt;

&lt;p&gt;	temp	 = temp_l;&lt;br /&gt;
	temp	&lt;&lt;=32;&lt;br /&gt;
	temp	|= temp_r;&lt;/p&gt;

&lt;p&gt;	return(temp);&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;・FPについて。&lt;br /&gt;
これは、IPの逆関数。&lt;br /&gt;
こんな流れで処理する。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://shaw.cocolog-nifty.com/.shared/image.html?/photos/uncategorized/2011/12/22/ip1.jpg&quot; onclick=&quot;window.open(this.href, &#39;_blank&#39;, &#39;width=1529,height=968,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39;); return false&quot;&gt;&lt;img alt=&quot;Ip1&quot; title=&quot;Ip1&quot; src=&quot;http://shaw.cocolog-nifty.com/blog/images/2011/12/22/ip1.jpg&quot; width=&quot;400&quot; height=&quot;253&quot; border=&quot;0&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C言語のコードにすると、こんな感じ。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
//==============================================================
//			Inverse Initial Premutation (IP-1)
//--------------------------------------------------------------
//	●引数
//		unsigned	__int64	data	Input
//	●返値
//		unsigned	__int64			Output
//==============================================================
unsigned	__int64	DES::invIP(unsigned	__int64	data)
{
	unsigned	__int64	temp;

&lt;p&gt;	unsigned	__int64	temp0;&lt;br /&gt;
	unsigned	__int64	temp1;&lt;br /&gt;
	unsigned	__int64	temp2;&lt;br /&gt;
	unsigned	__int64	temp3;&lt;br /&gt;
	unsigned	__int64	temp4;&lt;br /&gt;
	unsigned	__int64	temp5;&lt;br /&gt;
	unsigned	__int64	temp6;&lt;br /&gt;
	unsigned	__int64	temp7;&lt;/p&gt;

&lt;p&gt;	const	unsigned	__int64	iMask =	0x8040201008040201;&lt;/p&gt;

&lt;p&gt;	//L, R 逆転&lt;br /&gt;
	temp  = ( data      &amp; 0xFF);	//最上位&lt;br /&gt;
	temp |= ((data&gt;&gt; 8) &amp; 0xFF) &lt;&lt; 16;&lt;br /&gt;
	temp |= ((data&gt;&gt;16) &amp; 0xFF) &lt;&lt; 32;&lt;br /&gt;
	temp |= ((data&gt;&gt;24) &amp; 0xFF) &lt;&lt; 48;&lt;/p&gt;

&lt;p&gt;	temp |= ((data&gt;&gt;32) &amp; 0xFF) &lt;&lt;  8;&lt;br /&gt;
	temp |= ((data&gt;&gt;40) &amp; 0xFF) &lt;&lt; 24;&lt;br /&gt;
	temp |= ((data&gt;&gt;48) &amp; 0xFF) &lt;&lt; 40;&lt;br /&gt;
	temp |= ((data&gt;&gt;56) &amp; 0xFF) &lt;&lt; 56;&lt;/p&gt;

&lt;p&gt;	temp0  = ( temp				) &amp; iMask;&lt;/p&gt;

&lt;p&gt;	temp1  = ((temp &gt;&gt;      8	) &amp; iMask) &lt;&lt; 1;&lt;br /&gt;
	temp1 |= ((temp &lt;&lt; (64- 8)	) &amp; iMask) &gt;&gt; 7;&lt;/p&gt;

&lt;p&gt;	temp2  = ((temp &gt;&gt;     16	) &amp; iMask) &lt;&lt; 2;&lt;br /&gt;
	temp2 |= ((temp &lt;&lt; (64-16)	) &amp; iMask) &gt;&gt; 6;&lt;/p&gt;

&lt;p&gt;	temp3  = ((temp &gt;&gt;     24	) &amp; iMask) &lt;&lt; 3;&lt;br /&gt;
	temp3 |= ((temp &lt;&lt; (64-24)	) &amp; iMask) &gt;&gt; 5;&lt;/p&gt;

&lt;p&gt;	temp4  = ((temp &gt;&gt;     32	) &amp; iMask) &lt;&lt; 4;&lt;br /&gt;
	temp4 |= ((temp &lt;&lt; (64-32)	) &amp; iMask) &gt;&gt; 4;&lt;/p&gt;

&lt;p&gt;	temp5  = ((temp &gt;&gt;     40	) &amp; iMask) &lt;&lt; 5;&lt;br /&gt;
	temp5 |= ((temp &lt;&lt; (64-40)	) &amp; iMask) &gt;&gt; 3;&lt;/p&gt;

&lt;p&gt;	temp6  = ((temp &gt;&gt;     48	) &amp; iMask) &lt;&lt; 6;&lt;br /&gt;
	temp6 |= ((temp &lt;&lt; (64-48)	) &amp; iMask) &gt;&gt; 2;&lt;/p&gt;

&lt;p&gt;	temp7  = ((temp &gt;&gt;     56	) &amp; iMask) &lt;&lt; 7;&lt;br /&gt;
	temp7 |= ((temp &lt;&lt; (64-56)	) &amp; iMask) &gt;&gt; 1;&lt;/p&gt;

&lt;p&gt;	return(temp0 | temp1 | temp2 | temp3 | temp4 | temp5 | temp6 | temp7);&lt;/p&gt;

&lt;p&gt;}&lt;br /&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
しかし、このcocologは・・・&lt;br /&gt;
&quot;pre&quot;タグを書いても、その中もhtmlタグを自動でいれちゃうのは、どうにかならんのか・・・。&lt;br /&gt;
preタグの中でも、改行を二回すると、&quot;p&quot;タグをいれちゃうし。&lt;br /&gt;
ソースコードを書くときには、「テキストの挿入」が欲しい。&lt;/p&gt;</content:encoded>


<dc:subject>趣味</dc:subject>

<dc:creator>Ｓ．Ｗ．</dc:creator>
<dc:date>2011-12-22T14:22:02+09:00</dc:date>
</item>
<item rdf:about="http://shaw.cocolog-nifty.com/blog/2011/12/post-73ed.html">
<title>暗号技術の研究</title>
<link>http://shaw.cocolog-nifty.com/blog/2011/12/post-73ed.html</link>
<description>最近、ぼちぼち、やってます。 とりあえず、以下の技術をＣ++で書くことができまし...</description>
<content:encoded>&lt;p&gt;最近、ぼちぼち、やってます。&lt;br /&gt;
とりあえず、以下の技術をＣ++で書くことができました。&lt;br /&gt;
これで、ＣＭＳ（暗号メッセージ構文）で標準化されているフォーマットで、&lt;br /&gt;
パスワードを用いた暗号文を生成するプログラムが書ける！&lt;/p&gt;

&lt;p&gt;●暗号関数&lt;br /&gt;
・ＤＥＳ&lt;br /&gt;
・Ｔ－ＤＥＳ&lt;br /&gt;
・ＡＥＳ&lt;br /&gt;
●ハッシュ関数&lt;br /&gt;
・SHA-1&lt;br /&gt;
・SHA-224&lt;br /&gt;
・SHA-256&lt;br /&gt;
●鍵付きハッシュ関数&lt;br /&gt;
・HMAC&lt;br /&gt;
●鍵導出関数&lt;br /&gt;
・PBKDF2&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;さて、世の中の暗号化のフリーソフトを見てみると、全然、規格に沿って無く、ある暗号文攻撃方法に弱いのではないか？と思うのです。&lt;br /&gt;
例えば、とあるソフトでは、パスワードをハッシュ関数を1000回通した値をそのままコンテンツ暗号化鍵に使用しています。初期化ベクターも0固定です。&lt;br /&gt;
つまり、あるパスワードを入力すると、生成されるコンテンツ暗号鍵が同一になり、初期化ベクターも0固定なため、同一のファイルと、同一のパスワードで暗号化すると、必ず同じ暗号文が生成されるわけです。&lt;/p&gt;

&lt;p&gt;まず、パスワードで暗号鍵が同じになってしまう事については、辞書攻撃の耐性がなさそうです。&lt;br /&gt;
英語の辞書をかたっぱしから試したり、誕生日として想定される辞書を試したり。&lt;br /&gt;
つまり、暗号文を攻撃するプログラムが仕込まれたウイルスを作って、感染したコンピュータで一斉に暗号文攻撃をすれば、比較的早く、暗号文の攻撃が出来てしまいそうです。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;そういった暗号攻撃にも耐性を持つためにも、ＣＭＳで規定されたパスワードによる暗号メッセージ構文は、非常に多くの乱数（暗号論的疑似乱数生成器等）を使います。暗号化のプロセスは、以下の通りです。&lt;/p&gt;

&lt;p&gt;(1) コンテンツ暗号化鍵を、乱数で生成する。&lt;br /&gt;
(2) 初期化ベクタIVを、乱数で生成する。&lt;br /&gt;
(3) コンテンツを、乱数から生成した鍵で暗号化する。&lt;br /&gt;
(4) 入力されたパスワードから、鍵暗号化用の暗号鍵を導出する。&lt;br /&gt;
　推奨される鍵導出関数&quot;PBKDF2&quot;のパラメータは&lt;br /&gt;
　　・HMAC関数へのSaltは、乱数で生成する。&lt;br /&gt;
　　・繰り返し回数は1000回が推奨。&lt;br /&gt;
　　・HMAC関数は、デフォルトではHMAC with SHA-1&lt;br /&gt;
(5) コンテンツ暗号鍵をラップ（暗号化）する。&lt;br /&gt;
　デフォルトの&quot;PWRI-KEK&quot;では、&lt;br /&gt;
　　・初期化ベクタIVは、乱数で生成する。&lt;br /&gt;
　　・パディングデータも、乱数で生成する。&lt;br /&gt;
　　・『チェック用のヘッダー、コンテンツ暗号化鍵、パディング』を、パスワードから導出した暗号鍵で”２回”暗号化する。&lt;/p&gt;

&lt;p&gt;といった手順を踏みます。&lt;br /&gt;
暗号メッセージ構文（暗号ファイル中）には、どういった内容が含まれるかというと、&lt;/p&gt;

&lt;p&gt;・受信者情報（これは、パスワードを使ったという情報が記録される）&lt;br /&gt;
　　・どの鍵導出関数を使ったか（以下、PBKDF2のパラメータ）&lt;br /&gt;
　　　　・Salt（乱数で生成された）&lt;br /&gt;
　　　　・繰り返し回数（推奨は1000）&lt;br /&gt;
　　　　・使用するHMAC関数（デフォルトはHMAC with SHA-1）&lt;br /&gt;
　　・鍵ラップの方法（以下、PWRI-KEKのパラメータ）&lt;br /&gt;
　　　　・コンテンツ暗号化鍵を暗号化すした暗号について（以下、パラメータ）&lt;br /&gt;
　　　　　　・その初期化ベクタIV（乱数で生成された）&lt;br /&gt;
　　・ラッピング（暗号化）された、コンテンツ暗号化鍵&lt;br /&gt;
・暗号文情報&lt;br /&gt;
　　・コンテンツを暗号化した暗号について（以下、パラメータ）&lt;br /&gt;
　　　　・その初期化ベクタIV（乱数で生成された）&lt;br /&gt;
　　・暗号文本体&lt;/p&gt;

&lt;p&gt;と、多くの情報が含まれることになる。&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
コンテンツの暗号化の暗号鍵は暗号論的疑似乱数生成器で生成するので、直接の辞書攻撃はまず不可能になる。&lt;br /&gt;
また、パスワードから鍵導出するにしても、同じパスワードを使用しても、Saltによって同一の暗号鍵が生成されることは無いので、辞書攻撃に掛かる時間ははるかに膨大となる。&lt;/p&gt;

&lt;p&gt;Saltは、暗号化データの中には含めず、他の媒体とすることもできる。&lt;br /&gt;
この場合は、Saltが判明しない限りは、鍵導出は不可能になる。&lt;br /&gt;
つまり、パスワードと、他媒体に記録されたSaltが無いと、暗号文の復号はまず不可能になる&lt;br /&gt;
（軍事用途などで、機密文書をパスワードだけが解っても解読されないようにしたい場合のものだと思う。）&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
これが、ＲＦＣやＰＫＣＳ、ＩＴＵ等で規定された規格に準拠する暗号のファイルフォーマット。&lt;br /&gt;
（ASN.1でエンコードしないといけないので、またこれも、ヤヤコシイ。）&lt;br /&gt;
&lt;/p&gt;</content:encoded>


<dc:subject>パソコン・インターネット</dc:subject>

<dc:creator>Ｓ．Ｗ．</dc:creator>
<dc:date>2011-12-01T13:56:02+09:00</dc:date>
</item>
<item rdf:about="http://shaw.cocolog-nifty.com/blog/2011/11/post-3bce.html">
<title>【出演】今年の残りは、上福岡での２公演</title>
<link>http://shaw.cocolog-nifty.com/blog/2011/11/post-3bce.html</link>
<description>今年、参加する公演は、上福岡での公演があと2回になりました。 ・上福岡ウインドオ...</description>
<content:encoded>&lt;p&gt;今年、参加する公演は、上福岡での公演があと2回になりました。&lt;/p&gt;

&lt;p&gt;・&lt;a href=&quot;http://kamifuku-wind.xrea.jp/concert/concert.cgi?mode=plan&quot;&gt;上福岡ウインドオーケストラ 創立30周年記念コンサート &lt;/a&gt;&lt;br /&gt;
・&lt;a href=&quot;http://kpo.music.coocan.jp/concert/detail.php?id=20111204&quot;&gt;上福岡フィルハーモニー管弦楽団　特別演奏会&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;●&lt;a href=&quot;http://kamifuku-wind.xrea.jp/concert/concert.cgi?mode=plan&quot;&gt;上福岡ウインドオーケストラ 創立30周年記念コンサート &lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://shaw.cocolog-nifty.com/photos/uncategorized/2011/11/10/30th__color.jpg&quot;&gt;&lt;img alt=&quot;30th__color&quot; title=&quot;30th__color&quot; src=&quot;http://shaw.cocolog-nifty.com/blog/images/2011/11/10/30th__color.jpg&quot; width=&quot;100&quot; height=&quot;87&quot; border=&quot;0&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;公演日：2011年11月27日(日) 　開演14:00　（開場13:30） &lt;br /&gt;
場所　：ふじみ野市勤労福祉センターホール &lt;br /&gt;
　　　　（埼玉県 ふじみ野市／最寄り駅：東武東上線 上福岡駅） &lt;br /&gt;
主催　：&lt;a href=&quot;http://kamifuku-wind.xrea.jp/&quot;&gt;上福岡ウインドオーケストラ&lt;/a&gt; &lt;br /&gt;
指揮　：佐藤 知之 &lt;br /&gt;
入場料：無料（入場整理券不要） &lt;/p&gt;

&lt;p&gt;今年は、上福岡ウィンドが設立してちょうど30年となりました。 &lt;br /&gt;
この記念に、演奏会を開催予定です。 &lt;br /&gt;
こうご期待。 &lt;/p&gt;

&lt;p&gt;【第１部】 &lt;br /&gt;
祝典行進曲 ／ 團 伊玖磨 &lt;br /&gt;
SONGS of WALES ／ Albert Oliver Davis &lt;br /&gt;
風紋 ／ 保科 洋 &lt;br /&gt;
The Hounds of Spring ／ Alfred Reed &lt;/p&gt;

&lt;p&gt;【第２部】 &lt;br /&gt;
Omems of Love （T-SQUARE） ／ 和泉 宏隆, 真島 俊夫 編 &lt;br /&gt;
We&#39;re All Alone ／ 小野崎 孝輔 編 &lt;br /&gt;
The Syncopated Clock ／ Leroy Anderson &lt;br /&gt;
ロッキーのテーマ ／ Bill Conti, 岩井 直溥 編 &lt;br /&gt;
Yesterday Once More ／ John Bettis, Richard Carpenter, 岩井 直溥 編 &lt;br /&gt;
スーパーマリオブラザーズ ／ 近藤 浩冶, 星出 尚志 編 （© Nintendo Co.,Ltd. 1985） &lt;br /&gt;
ありがとう ／ 水野 良樹, 小島 里見 編 &lt;br /&gt;
Disney Medley ／ 岩井 直溥 編 （© Walt Disney Music. Co. / © WONDERLAND MUSIC CO.,INC. 1963 / © Bourne Inc. 1938） &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;●&lt;a href=&quot;http://kpo.music.coocan.jp/concert/detail.php?id=20111204&quot;&gt;上福岡フィルハーモニー管弦楽団　特別演奏会&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://shaw.cocolog-nifty.com/photos/uncategorized/2011/11/10/20111204_handout.jpg&quot;&gt;&lt;img alt=&quot;20111204_handout&quot; title=&quot;20111204_handout&quot; src=&quot;http://shaw.cocolog-nifty.com/blog/images/2011/11/10/20111204_handout.jpg&quot; width=&quot;100&quot; height=&quot;141&quot; border=&quot;0&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;公演日：2011年12月4日(日)　14:00開演（13:30開場） &lt;br /&gt;
場所　：ふじみ野市勤労福祉センター　ホール &lt;br /&gt;
　　　　（埼玉県 ふじみ野市／最寄り駅：東武東上線 上福岡駅） &lt;br /&gt;
ピアノ：松村 英臣 &lt;br /&gt;
管弦楽：&lt;a href=&quot;http://kpo.music.coocan.jp/&quot;&gt;上福岡フィルハーモニー管弦楽団&lt;/a&gt; &lt;br /&gt;
指揮　：芳賀 大和 &lt;br /&gt;
入場料：2,000円（当日は2,100円） &lt;/p&gt;

&lt;p&gt;【演奏曲目】 &lt;br /&gt;
□L.v.Beethoven &lt;br /&gt;
　Egmont Ouverture Op.84 &lt;br /&gt;
□W.A.Mozart &lt;br /&gt;
　Konzert für Klavier und Orchester Nr.24 c-moll, K.491 &lt;br /&gt;
□M.P.Mussorgsky / 徳備康純 編 &lt;br /&gt;
　Tableaux d&#39;une exposition（展覧会の絵） &lt;/p&gt;

&lt;p&gt;松村英臣によるモーツァルト ピアノ協奏曲第24番 &lt;/p&gt;

&lt;p&gt;本演奏会の目玉、モーツァルト（1756-1791）のピアノ協奏曲第24番ハ短調K.491では、世界三大コンクールの１つ、チャイコフスキー国際コンクールのファイナリストである、ピアニスト 松村英臣 をソロに迎え共演致します。 &lt;br /&gt;
この作品は、他の「モーツァルトらしい明るい曲」とは異なり、暗く情熱的な曲です。 モーツァルトが生きた時代は明るい曲が人気でしたが、この暗く情熱的な曲は、モーツァルトが本当に書きたかった曲ではないでしょうか？ &lt;/p&gt;

&lt;p&gt;第1楽章のカデンツァや、第2楽章、第3楽章のアインガングは、モーツァルト自身のものは残されておらず、その他にもピアノのパートを完成させていない部分が幾つかあります。 これらは、モーツァルトが自身の演奏会で即興演奏した部分であると推測されております。 今回、ピアニスト松村英臣によりどのようにモーツァルトの世界が展開されるか、聞きどころです！！ &lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
チケットの前売りは、喫茶「歩歩」（ 上福岡公民館、 上福岡西公民館、 上福岡図書館、 フクトピア内 ）にて取扱中です。 &lt;/p&gt;

&lt;p&gt;オケ專♪会員様限定の&lt;a href=&quot;http://okesen.snacle.jp/ticket/ticketlist&quot;&gt;ご優待チケット&lt;/a&gt;の応募も開始されております。 &lt;/p&gt;

&lt;p&gt;また、私に電話かメールなどで連絡頂ければ、手配可能です。 &lt;/p&gt;</content:encoded>



<dc:creator>Ｓ．Ｗ．</dc:creator>
<dc:date>2011-11-10T15:27:48+09:00</dc:date>
</item>
<item rdf:about="http://shaw.cocolog-nifty.com/blog/2011/07/12424-95b8.html">
<title>【出演します】(12/4)松村秀臣：モーツァルトピアノ協奏曲第24番　等々</title>
<link>http://shaw.cocolog-nifty.com/blog/2011/07/12424-95b8.html</link>
<description>チャイコフスキー国際コンクール、ディプロマ、ベスト・バッハ賞受賞、松村英臣を迎え...</description>
<content:encoded>&lt;p&gt;チャイコフスキー国際コンクール、ディプロマ、ベスト・バッハ賞受賞、松村英臣を迎え、開催いたします。 &lt;/p&gt;

&lt;p&gt;━━━━━━━━━━━━━━━━━━━━━━━ &lt;br /&gt;
&lt;a href=&quot;http://kpo.music.coocan.jp/concert/detail.php?id=20111204&quot;&gt;上福岡フィルハーモニー管弦楽団　特別演奏会&lt;/a&gt;&lt;br /&gt;
━━━━━━━━━━━━━━━━━━━━━━━ &lt;br /&gt;
公演日 ：2011年12月4日(日)　14:00開演（13:30開場） &lt;br /&gt;
場所　 ：ふじみ野市勤労福祉センター　ホール &lt;br /&gt;
（埼玉県 ふじみ野市／最寄り駅：東武東上線 上福岡駅） &lt;br /&gt;
ピアノ ：松村 英臣 &lt;br /&gt;
管弦楽 ：&lt;a href=&quot;http://kpo.music.coocan.jp/&quot;&gt;上福岡フィルハーモニー管弦楽団&lt;/a&gt;&lt;br /&gt;
指揮 　：芳賀 大和 &lt;br /&gt;
入場料 ：2,000円（当日は2,100円） &lt;/p&gt;

&lt;p&gt;演奏曲目： &lt;br /&gt;
W.A.Mozart Konzert für Klavier und Orchester Nr.24 c-moll, K.491 &lt;br /&gt;
M.P.Mussorgsky / 徳備康純 編 Tableaux d&#39;une exposition（展覧会の絵） &lt;br /&gt;
等々 &lt;br /&gt;
&lt;/p&gt;&lt;p&gt;【松村英臣によるモーツァルト ピアノ協奏曲第24番】 &lt;br /&gt;
W.A.モーツァルトのピアノ協奏曲第24番ハ短調K.491は、他の「モーツァルトらしい明るい曲」とは異なり、暗く情熱的な曲です。モーツァルトが生きた時代は明るい曲が人気でしたが、この暗く情熱的な曲は、モーツァルトが本当に書きたかった曲ではないでしょうか？ &lt;/p&gt;

&lt;p&gt;第1楽章のカデンツァや、第2楽章、第3楽章のアインガングは、モーツァルト自身のものは残されておらず、その他にもピアノのパートを完成させていない部分が幾つかあります。 &lt;br /&gt;
これらは、モーツァルトが自身の演奏会で即興演奏した部分であると推測されております。 &lt;br /&gt;
今回、ピアニスト松村英臣によりどのようにモーツァルトの世界が展開されるか、聞きどころです！！ &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;是非、聞きに来てください！ &lt;br /&gt;
&lt;/p&gt;</content:encoded>



<dc:creator>Ｓ．Ｗ．</dc:creator>
<dc:date>2011-07-01T20:43:08+09:00</dc:date>
</item>
<item rdf:about="http://shaw.cocolog-nifty.com/blog/2011/06/post-cb96.html">
<title>今年の出演予定</title>
<link>http://shaw.cocolog-nifty.com/blog/2011/06/post-cb96.html</link>
<description>大震災の影響で色々と演奏会が中止になりましたが、 とりあえず、現在、決まっている...</description>
<content:encoded>&lt;p&gt;大震災の影響で色々と演奏会が中止になりましたが、&lt;br /&gt;
とりあえず、現在、決まっているところを。&lt;/p&gt;&lt;p&gt;● 8/ 6(土) 上福岡七夕祭り&lt;br /&gt;
　場所：上福岡中央公園（本部ステージ）&lt;br /&gt;
　時間：18:30～19:30の時間帯&lt;br /&gt;
　演奏：&lt;a href=&quot;http://kamifuku-wind.xrea.jp/&quot;&gt;上福岡ウインドオーケストラ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;●10/ 9(日) 子ども祭り&lt;br /&gt;
　場所：ふじみ野市勤労福祉センター&lt;br /&gt;
　時間：出演時間未定&lt;br /&gt;
　演奏：&lt;a href=&quot;http://kpo.music.coocan.jp/&quot;&gt;上福岡フィルハーモニー管弦楽団&lt;/a&gt;&lt;br /&gt;
　曲目：未定（子ども達が好きそうな曲）&lt;/p&gt;

&lt;p&gt;●10/23(日) ミュージック・フェスタ&lt;br /&gt;
　場所：ふじみ野市勤労福祉センター&lt;br /&gt;
　時間：出演時間未定&lt;br /&gt;
　演奏：&lt;a href=&quot;http://kamifuku-wind.xrea.jp/&quot;&gt;上福岡ウインドオーケストラ&lt;/a&gt;&lt;br /&gt;
　曲目：未定&lt;/p&gt;

&lt;p&gt;●11/ 3(木・祝) 文化の日記念コンサート（仮）&lt;br /&gt;
　場所：ふじみ野市勤労福祉センター&lt;br /&gt;
　時間：開場未定　開演未定&lt;br /&gt;
　指揮：芳賀大和&lt;br /&gt;
　演奏：&lt;a href=&quot;http://kpo.music.coocan.jp/&quot;&gt;上福岡フィルハーモニー管弦楽団&lt;/a&gt;&lt;br /&gt;
　　3/11の大震災影響で中止となった3/13の演奏会の振り替え公演。&lt;br /&gt;
　　一部、プログラムは変更の予定。&lt;/p&gt;

&lt;p&gt;●11/27(日) 上福岡ウィンドオーケストラ 創立30周年記念コンサート&lt;br /&gt;
　場所：ふじみ野市勤労福祉センター&lt;br /&gt;
　時間：開場13:30～ 開演14:00～&lt;br /&gt;
　演奏：&lt;a href=&quot;http://kamifuku-wind.xrea.jp/&quot;&gt;上福岡ウインドオーケストラ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;●12/ 4(日) &lt;a href=&quot;http://kpo.music.coocan.jp/concert/detail.php?id=20111204&quot;&gt;上福岡フィルハーモニー管弦楽団 特別演奏会&lt;/a&gt;&lt;br /&gt;
　場所　：ふじみ野市勤労福祉センター&lt;br /&gt;
　時間　：開場13:30～ 開演14:00～&lt;br /&gt;
　指揮　：芳賀大和&lt;br /&gt;
　ピアノ：松村英臣&lt;br /&gt;
　管弦楽：&lt;a href=&quot;http://kpo.music.coocan.jp/&quot;&gt;上福岡フィルハーモニー管弦楽団&lt;/a&gt;&lt;br /&gt;
　入場料：2000円（当日券2100円）※チケットは、私の方で手配可能です。&lt;br /&gt;
　曲目　：&lt;br /&gt;
　　W.A.モーツァルト　ピアノ協奏曲24番ハ短調 Kv.491&lt;br /&gt;
　　M.P.ムソルグスキー　展覧会の絵&lt;br /&gt;
　　等&lt;br /&gt;
&lt;/p&gt;</content:encoded>


<dc:subject>音楽</dc:subject>

<dc:creator>Ｓ．Ｗ．</dc:creator>
<dc:date>2011-06-11T00:02:28+09:00</dc:date>
</item>
<item rdf:about="http://shaw.cocolog-nifty.com/blog/2011/04/post-83a5.html">
<title>暗号技術の研究</title>
<link>http://shaw.cocolog-nifty.com/blog/2011/04/post-83a5.html</link>
<description>ＡＥＳ暗号を処理するソフトウェアを作りました。 目指すところは、国際規格の完全準...</description>
<content:encoded>&lt;p&gt;ＡＥＳ暗号を処理するソフトウェアを作りました。&lt;br /&gt;
目指すところは、国際規格の完全準拠！！。&lt;br /&gt;
その為に、英文の標準類を読み漁っている最中です。&lt;/p&gt;

&lt;p&gt;とりあえず、現状は、暗号利用モードとして、ＣＢＣモードを使い、&lt;br /&gt;
暗号化ファイルは、PKCS#7の構文（Encrypted-Type）にし、&lt;br /&gt;
暗号鍵ファイルは、PKCS#8の構文で出力する仕様としてあります。&lt;/p&gt;

&lt;p&gt;暗号技術も、暗号化されたファイルも、国際的な規格に準拠！！&lt;br /&gt;
そのヴァージョンは、ここからダウンロード可能です。&lt;br /&gt;
&lt;a href=&quot;http://shaw.la.coocan.jp/aes/&quot;&gt;SSE2による高速AES暗号・復号プログラム&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;・・・しかしながら、現在のパスワードの処理方法にも、規格があった！！。&lt;/p&gt;&lt;p&gt;現在は、パスワードの文字列を、SHA-256関数によってハッシュ値化した数値を、暗号鍵に採用する方法をとっています。&lt;br /&gt;
しかしながら、PKCS#5（パスワードに基づいた暗号技術）を読んでいたところ、パスワードによる暗号にも規格があるようです。&lt;/p&gt;

&lt;p&gt;まだ、読んでいる途中なのですが、現在のままでは『辞書攻撃法』、つまり、辞書に載っている単語を片っ端から試していく暗号文攻撃法に弱い事が解りました。&lt;br /&gt;
パスワードを、辞書に載っている単語や人名を設定しただけでは、その攻撃に弱いのです。&lt;/p&gt;

&lt;p&gt;このため、PKCS#5で定義されている方法では、パスワードから暗号鍵を生成する方法として、&lt;br /&gt;
引数に&lt;br /&gt;
　・ソルト　　　　　　…　これは、乱数値とする。&lt;br /&gt;
　・繰り返し回数　…　ハッシュ関数を繰り返す回数。（推奨では1000回）&lt;br /&gt;
の二つの値が必要になります。&lt;br /&gt;
繰り返し回数までは、まだ英文の翻訳が終わっていないのですが、ソルトの存在理由としては、『辞書攻撃法』への耐性。&lt;br /&gt;
例えば、ソルトを８バイト(64bit)の数値にした場合、つまり、同じパスワードでも２の64乗通り存在する事になります。&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
・・・・・・・&lt;br /&gt;
パスワードの仕様は、ヴァージョンアップにより変更しなければならないかもしれない。&lt;br /&gt;
そして、また、互換性が失われる。しかし、セキュリティーを高める為にはしょうがない。&lt;/p&gt;

&lt;p&gt;暗号技術、勉強中です。&lt;/p&gt;

&lt;p&gt;PKCS#7のEnvloped-Data形式であれば、パスワードベースの暗号にする場合にでも、パスワードから暗号鍵を求めるアルゴリズムの識別値(oid)を指定しないといけないので、必然的にこの方法が使われることになります。&lt;/p&gt;

&lt;p&gt;PKCS#7のEncrypted-Data形式では、コンテンツ用の暗号鍵を暗号化ファイルに含まないので、暗号化鍵は外部から提供しなければならない。&lt;br /&gt;
そこで、PKCS#8の暗号鍵ファイルか、パスワードを指定できるようにしていますが、・・・&lt;br /&gt;
実は、PKCS#5によれば、PKCS#8の暗号鍵ファイルを、パスワードで保護できるようです。&lt;/p&gt;

&lt;p&gt;暗号鍵ファイルを、パスワードで保護するってことは、つまり、暗号ファイルを復号するには、その暗号鍵ファイルと、パスワードの２つの鍵が無いと復号できないって事じゃないか？&lt;br /&gt;
これ、強いな。&lt;br /&gt;
こんな事も、PKCS#5を読んでいて、気付いてしまいました。&lt;/p&gt;

&lt;p&gt;今後のヴァージョンアップに、取り入れるかもしれません。&lt;br /&gt;
&lt;/p&gt;</content:encoded>


<dc:subject>パソコン・インターネット</dc:subject>

<dc:creator>Ｓ．Ｗ．</dc:creator>
<dc:date>2011-04-15T19:07:38+09:00</dc:date>
</item>
<item rdf:about="http://shaw.cocolog-nifty.com/blog/2011/04/fmpsg015----9d3.html">
<title>FMPSG015 -いちご-　新作デモが公開されました。</title>
<link>http://shaw.cocolog-nifty.com/blog/2011/04/fmpsg015----9d3.html</link>
<description>M3-2011春にて、リリース予定！！ 今回は、久しぶりに参加しています。</description>
<content:encoded>&lt;p&gt;M3-2011春にて、リリース予定！！ &lt;/p&gt;

&lt;p&gt;今回は、久しぶりに参加しています。 &lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;iframe width=&quot;312&quot; height=&quot;176&quot; src=&quot;http://ext.nicovideo.jp/thumb/sm14098433&quot; scrolling=&quot;no&quot; style=&quot;border:solid 1px #CCC;&quot; frameborder=&quot;0&quot;&gt;&lt;a href=&quot;http://www.nicovideo.jp/watch/sm14098433&quot;&gt;【ニコニコ動画】FMPSG015 -いちご- Chiptune 系新作アルバム デモ&lt;/a&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p&gt;サークル&quot;FMPSG&quot;は、まぁ、その名前の通り、 &lt;br /&gt;
FM音源とか、PSG音源とかの愛好家とかが集まったサークル。 &lt;br /&gt;
というよりは、 &lt;br /&gt;
『半導体集積回路１個（1 chip）で、いかに音楽を表現するか！？』 &lt;br /&gt;
というのを追求サークル。 &lt;br /&gt;
&lt;/p&gt;</content:encoded>


<dc:subject>音楽</dc:subject>

<dc:creator>Ｓ．Ｗ．</dc:creator>
<dc:date>2011-04-09T01:26:17+09:00</dc:date>
</item>
<item rdf:about="http://shaw.cocolog-nifty.com/blog/2011/03/313-a7a2.html">
<title>3/13「春の音楽会」中止です。</title>
<link>http://shaw.cocolog-nifty.com/blog/2011/03/313-a7a2.html</link>
<description>3月11日(金)14時50分頃発生しました東北地方太平洋沖地震の影響により、 ふ...</description>
<content:encoded>&lt;p&gt;3月11日(金)14時50分頃発生しました東北地方太平洋沖地震の影響により、 &lt;br /&gt;
ふじみ野市内の全公共施設が安全点検のため臨時閉館となります為。 &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://kpo.music.coocan.jp/&quot;&gt;http://kpo.music.coocan.jp/&lt;/a&gt;&lt;/p&gt;</content:encoded>


<dc:subject>音楽</dc:subject>

<dc:creator>Ｓ．Ｗ．</dc:creator>
<dc:date>2011-03-12T12:26:29+09:00</dc:date>
</item>
<item rdf:about="http://shaw.cocolog-nifty.com/blog/2011/03/post-eef7.html">
<title>ふと思いつく。法的な効力を持つ電子署名について</title>
<link>http://shaw.cocolog-nifty.com/blog/2011/03/post-eef7.html</link>
<description>某出版社から送られてきた雑誌を読みながら考え事していた。 最近、私は『標準暗号メ...</description>
<content:encoded>&lt;p&gt;某出版社から送られてきた雑誌を読みながら考え事していた。 &lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
最近、私は『標準暗号メッセージ構文』を調べるために、かなり文献を漁って読んでいたのだが、その過程で『電子署名』や『電子証明書』の構文も調査できた。 &lt;br /&gt;
暗号文の標準が、&quot;PKCS#7&quot;という規格でうたわれていますが、 電子署名も、&quot;PKCS#7&quot;と、同じ規格でうたわれています。 &lt;/p&gt;

&lt;p&gt;この『電子署名』というのは、「電磁記録データ」（例えば、一太郎や、MS-WORDで作った文章、PDF文章、MS-Excelファイル等、電子機器で取り扱われるファイル）に対して、改ざんが行われていないことを証明するための、方法です。 &lt;br /&gt;
この、改ざんされていないことを証明するために、暗号技術を使うので、おなじ&quot;PKCS#7&quot;（暗号標準）という規格で定義されているのでしょう。 &lt;/p&gt;

&lt;p&gt;この、電子署名というのは、日本国においては、『電子署名及び認証業務に関する法律』によって、使い方を正しく使えば、印鑑と同等の法的効力を持つことが定められています。 &lt;br /&gt;
例えば、株式会社法でも、 電子定款には、電子署名を行うことが必要とうたわれており、電子証明書、電子署名の技術は、昨今の高度情報技術社会には必要不可欠な技術になっています。 &lt;br /&gt;
&lt;/p&gt;&lt;p&gt;さて、送られてきた雑誌のフリーソフトコーナーに、「電子判子」系のソフトが紹介されていてふと思ったのです。 &lt;br /&gt;
『あれ？　これって判子だけど、判子の画像なだけで電子署名じゃないから、印鑑と同等の法的効力は無いよな・・・』 &lt;br /&gt;
本当に、法的に効力を持つ文章にするには、どうしたら良いのだろう？ &lt;/p&gt;

&lt;p&gt;とは言っても、自己署名証明書は作ろうと思えば幾らでも作れてしまうので、自前で作った自己証明書で署名しても、法的な効力は得られないんだよな～。実際、『オレオレ証明書』等という、自前の証明書でセキュリティー通信して、問題になる事もあるようだし。 &lt;br /&gt;
自分の公開鍵を、認証局の証明書で署名して、初めて法的に有効な『電子（公開鍵）証明書』になるわけです。 &lt;/p&gt;

&lt;p&gt;うん、でも、認証局から、電子（公開鍵）を発行してもらえばいいんだよな （有料だけど） 。&lt;br /&gt;
（しかも、電子（公開鍵）にも有効期限があるので、有効期限が切れたら、再度発行してもらわないといけないけど。） &lt;br /&gt;
で、その、正式な電子（公開鍵）証明書をつかって、電子ファイルを署名すれば、法的に有効な文書になり得ると。 &lt;/p&gt;

&lt;p&gt;公開鍵証明書を発行してもらうのに金掛かるし、フリーソフトとしては、電子署名を施すソフトは作れませんですね！ &lt;/p&gt;

&lt;p&gt;まぁ、ようは、『電子（公開鍵）証明書』が、判子なわけで、 その『電子（公開鍵）証明書』という判子で、捺印された電子ファイルは、 『電子証明書』付のファイルになると。 &lt;/p&gt;

&lt;p&gt;う～ん。いわゆるオレオレ証明書で捺印するだけのソフトだったら書けるな。 &lt;br /&gt;
自己署名証明書っていっても、対になる秘密鍵と公開鍵を作って、公開鍵を秘密鍵で署名するだけだから、自己署名証明書は、対になる鍵を作れれば、いくらでも作れるし。 &lt;br /&gt;
まぁ、ウィンドウズのプロパティーで証明書をみてみると、 『このＣＡルート証明書は信頼されていません。』 って表示されるだろうけど。 &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;電子証明書の仕組みは、いずれ、気が向いたら解説するかもしれない。 &lt;br /&gt;
要約してしまえば、 &lt;/p&gt;

&lt;p&gt;■電子(公開鍵)証明書 &lt;/p&gt;

&lt;p&gt;◎認証局が、どうやって証明書を作るか？ &lt;br /&gt;
　(1) 証明書の情報（自分の情報、認証局の情報、有効期間、自分の公開鍵）のハッシュ値をとる。 &lt;br /&gt;
　(2) そのハッシュ値を、認証局の秘密鍵で暗号化して、署名値として記録する。 &lt;/p&gt;

&lt;p&gt;◎証明書が、正しいものか検証する方法 &lt;br /&gt;
　(1) 証明書の情報（自分の情報、認証局の情報、有効期間、自分の公開鍵）のハッシュ値をとる。 &lt;br /&gt;
　(2) 証明書の認証局の情報から、認証局の証明書を取得し、認証局の公開鍵で、記録された署名地を復号する。 &lt;br /&gt;
　(3) 計算されたハッシュ値と、復号された値が同一であるか調べる。 &lt;/p&gt;

&lt;p&gt;まぁ、認証局（第三者）を信頼することが前提の技術だけど。 &lt;br /&gt;
こうすることで、自分の公開鍵が正当な事が証明できます。 &lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
■電子署名 &lt;br /&gt;
◎作り方。 &lt;br /&gt;
　(1) ファイルと、署名者情報のハッシュ値をとる。 &lt;br /&gt;
　(2) ハッシュ値を、自分の秘密鍵で暗号化して、署名値として記録する。 &lt;/p&gt;

&lt;p&gt;◎ファイルが改ざんされていないか検証する方法 &lt;br /&gt;
　(1) ファイルと、署名者情報のハッシュ値をとる。 &lt;br /&gt;
　(2) 記録された署名値を、電子証明書の公開鍵で復号する。 &lt;br /&gt;
　(3) 計算されたハッシュ値と、復号された値が同一であるか調べる。 &lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
これは、対象鍵暗号という暗号技術で実現しており、 暗号に使う鍵と、復号に使う鍵が異なる暗号方式。 &lt;br /&gt;
証明書や署名では暗号に使う鍵を秘密鍵（署名する立場の人間だけが持っている）とし、 復号につかう鍵を公開鍵（署名された文書を配布する際に、こ公開鍵も配布）とする。 &lt;/p&gt;

&lt;p&gt;対象鍵の例としては、ＲＳＡ暗号という、桁数の大きい２つの素数の積を、素因数分解して２つの素数を求めることが難しい事を利用した暗号。 &lt;br /&gt;
10進数にしても、天文学的な桁数の素数が使われる。 &lt;br /&gt;
&lt;/p&gt;</content:encoded>


<dc:subject>パソコン・インターネット</dc:subject>

<dc:creator>Ｓ．Ｗ．</dc:creator>
<dc:date>2011-03-02T02:14:47+09:00</dc:date>
</item>


</rdf:RDF>

