完全消去の代替としての StreamRelay.NET.exe

乱数アルゴリズムの試用の拡張として、乱数だけを出力する「-ListRndNumberdevrandom」オプションを ver3.6.0.0 から新設した。

前段の話は、[乱数アルゴリズムの試用ツールとしてのStreamRelay.NET.exe](https://qiita.com/tomoki0sanaki/items/36df6463cafec0f93313)を参照のこと

---
### 結論

結局、ディスク/ストレージの廃棄には、専門の業者に依頼した方がいいですよ。

それと、業者に渡す前に事前に「cipher.exe」によるワイプはしておいた方がいいと思う。

---
### ディスク/ストレージ(HDD/SSD)の廃棄と完全消去

こういうのはそういう専門の業者がやっているはずだけど、こんなニュースもあったわけです。

- [2019年神奈川県HDD転売・情報流出事件](https://ja.wikipedia.org/wiki/2019%E5%B9%B4%E7%A5%9E%E5%A5%88%E5%B7%9D%E7%9C%8CHDD%E8%BB%A2%E5%A3%B2%E3%83%BB%E6%83%85%E5%A0%B1%E6%B5%81%E5%87%BA%E4%BA%8B%E4%BB%B6)

とはいえ、最終的には専門の業者にやってもらうとして、こういう事件の被害者/当事者にならないために、業者に渡す前に事前にある程度は消去しておいた方がいいかもしれない。

ということで、そのための簡易的な方法として、StreamRelay.NET.exeにも実装してみた。
という話。

---
#### 前提

以下は、ディスク/ストレージがまだ壊れていないことが前提
壊れる前にディスクを移行し廃棄するって貧乏性には難しいかもしれない(私自身が貧乏性だし・・・)

---
#### 注意事項

ワイプするドライブを間違えると大変なことになるので、そこんとこは自己責任ですよ。

---
#### 方法1(市販ツールを使う)

やはり市販ツールの方が専用なので、安心感はあるだろうね。
こういう業務(消去業者に渡す前に事前にある程度ワイプしておく)が、頻繁にあるなら市販ツールの購入も一つの有効な選択肢だと思う。

---
#### 方法2(Windows 標準の Cipher.exe を使う)

WindowsNT系列のNTFS暗号化ファイルシステムをサポートするCipher.exeにはディスクワイプ機能があるので、それを使う

1. Windowsにデータドライブとしてマウント
2. 対象のドライブをクイックフォーマットしておく
3. コマンドプロンプトから `cipher.exe /W:≪ドライブ≫:`
4. しばらく待つ

詳細は「完全消去 Cipher.exe」とかでクグればいくらでもてでくるだろう。

例えば、[Windowsでディスクの内容を完全に消去する](https://www.atmarkit.co.jp/ait/articles/0303/01/news003.html)
とか
[Windows標準コマンド「cipher」で本当にデータが消去できるのか検証してみた](https://www.softantenna.com/wp/tips/windows-cipher-verificatio/)

---
#### 方法3(UNIX/Linux の /dev/urandom を使う)

1. UNIX/Linuxにデータドライブとしてマウント
2. dd コマンドなどで、入力源を /dev/urandom として、ディスクにランダムな値を書き込む
3. しばらく待つ

詳細は「完全消去 Linux」とかでクグればいくらでもてでくるだろう。

例えば、[Linuxを利用したHDDの完全消去](https://www.mm2d.net/main/tech/linux/hdd_clear-01.html)

---
#### 方法4(sCreateFile.exe を使う)

筆者自作の「[sCreateFile.exe](http://rocketeer.dip.jp/sanaki/free/free154.htm)」というツールもランダムな値をディスク全体に書き込めるので、選択肢の末席にどうだろう。

もともと「[メルカリでSDカードの容量偽装が横行 買った128GB、中身は3GBだった 2か月後に気づくも...](http://gadgetlife2ch.blomaga.jp/articles/239830.html)」というニュースを見て、一旦ディスク全体にデータが書き込めるのかファイルを作ってみよう、という目的のツールなのだけど、ワイプにも使えると思う。

1. Windowsにデータドライブとしてマウント
2. 対象のドライブをクイックフォーマットしておく
3. コマンドプロンプトから `sCreateFile.exe ≪ドライブ≫:\a.dat -1`
4. しばらく待つ

---
#### 方法5(StreamRelay.NET.exe を使う)(本題)

ver3.6.0.0からランダムなデータだけを標準出力するオプション「-ListRndNumberdevrandom」を新設したので、それを出力ファイルにリダイレクトすれば、ディスクのワイプに使えると思う。

もともとは、StreamRelay.NET.exe では様々な方々のライブラリによって乱数アルゴリズムがいろいろと選択できたので、乱数アルゴリズムごとの性能評価のためのオプションがあり、その拡張として、ver3.6.0.0から「-ListRndNumberdevrandom」というオプションを新設した。
その前段の話は、[乱数アルゴリズムの試用ツールとしてのStreamRelay.NET.exe](https://qiita.com/tomoki0sanaki/items/36df6463cafec0f93313)を参照のこと


- オプション「**-ListRndNumberdevrandom**」は、乱数だけを標準出力するモードで、/dev/urandom の代替として機能するので、選択肢の末席に加えてくれるとありがたい。

1. Windowsにデータドライブとしてマウント
2. 対象のドライブをクイックフォーマットしておく
3. コマンドプロンプトから `StreamRelay.NET.exe -ListRndNumber 0-255,CryptoRandom -ListRndNumberdevrandom > ≪ドライブ≫:\a.dat`
4. しばらく待つ

- 上記の「CryptoRandom」のところは、`StreamRelay.NET.exe -ListRandomize` で利用可能な乱数アルゴリズムの一覧が表示されるので、好きなものを選択すればいい
- 「-verbose」オプションで、標準エラー出力に進捗割合などを表示する
- 「-ListRndNumberdevrandom」オプションでは、min-max(上記の0-255)の指定は無視され、UInt32.MinValue～UInt32.MaxValueの値の乱数を生成し、4バイト(32bit/UInt32)単位で出力する

---
### 前段

[乱数アルゴリズムの試用ツールとしてのStreamRelay.NET.exe](https://qiita.com/tomoki0sanaki/items/36df6463cafec0f93313)

---
### 目次へ戻る

[目次というか最初の一歩](http://qiita.com/tomoki0sanaki/items/85f20cbe18378e33cd6f)