x,yを任意の置換とし秘密に保ちます。aをバイナリ配列とします。  
この時次の処理をします。

  1. z=xyx^-1
  2. y=z
  3. a^=a[z]

このようにして生成された出力aは次の出力の推測が難しいでしょうか？  
またこの乱数はストリーム暗号に使えますか？

<https://gist.github.com/anang0g0/d6be8c3a21be68f6895f10d06ae48938>
CC BY-SA 4.0
2019-08-01T01:58:31.987
57090
2019-08-10T02:02:26.763
2019-08-01T04:37:46.673
35325
35325
question
アルゴリズム
私の作った乱数はストリーム暗号に使えますか？
乱数や暗号は自前で考えるとたいてい穴があるものしかできないので、既成のものを使われるほうがよいです。

勉強したいのであれば、入門書としてまず「暗号技術入門(ISBN 4797382228)」を読んでみてはいかがでしょうか

* * *

具体的な欠陥を1つ示しておきます。

a==a[Z]になると、a^a[Z]は0となります。以後生成される数列は0となります。^a==a[Z]となっても同様です。

これは特定の初期値で起きる問題ではありません。

* * *

適当なパラメータで試して見ましたが、生成した値の0/1の個数に大きな偏りがありました。

あと、初期値または実行中に、x
yの同じ位置に同値で周期の短い置換があると、生成される乱数の該当位置にもパターンが生じます。初期値の制約があるのであれば記載されてなければいけませんし、初期値に問題が無くとも実行中にこうならない証明が必要ですが、全く触れられていません。

乱数の数学的性質を明らかにすることと、必要な統計的性質を満たすことを示すのも、発明者の仕事です。
CC BY-SA 4.0
2019-08-08T15:37:43.133
57257
2019-08-10T02:02:26.763
2019-08-10T02:02:26.763
5793
5793
57090
answer