質問: ### 暗号の輸出規制? AndroidやiPhoneのアプリは、法的にはアメリカから輸出することになります。 この時、アメリカの法律で、暗号化の機能を実装したアプリを公開することには規制がかかるそうです。 そのため、ゲームの記録の証明や、リプレイデータの改竄対策でオリジナルの方法の暗号化を実装しようと考えましたが、この規制があることを知り諦めました......。(恐らく、単純なXOR暗号化でもこの規制に抵触すると思います) ### では、ハッシュ関数も......? ハッシュ関数は、MD5、SHA-256といったものがあり、暗号学的ハッシュ関数に分類されるものもあります。 ハッシュ関数は一方向性であり、MD5は別の入力から同じ値が出力されてしまうという問題が発生し最早安全ではなくなりましたが、出力された値から入力を得ることは(一般には)不可能です。 ゲームにエディット要素を組み込み、そのエディットデータの同一性を証明するためにSHA-256などのハッシュ関数を実装したいと考えています。 しかし、"暗号"と名がついていることもあり、これも暗号化の一種として、輸出が規制されているのではないかと考えました。 ### 知りたいこと MD5やSHA-256などの"暗号学的"ハッシュ関数は、特に法的な手続きをとることなく、AndroidやiPhoneの公開するアプリの機能として組み込めるのでしょうか?
回答: アプリの暗号に関する輸出コンプライアンスの話ですから、 あくまでも自己責任で判断をお願いします。 以下は私の個人的な解釈です。 結論:ハッシュ関数を使っているだけなら関係ありません。 輸出コンプライアンスについて判断するとき、いつもこの本を読み直しています。 スマートフォンアプリ配信の輸出管理 Kindle Unlimitedなら無料で読めます。それも嫌なら元になった記事がこれっぽいです。 HTTPS を使ってるアプリを AppStore や Android Market で配信するときの輸出手続きについて (4記事ぐらいに分かれています) これらの読んでの判断ですが、規制対象の「暗号」とはあくまでも「(復号できる)暗号化」のことであり、 一方向性の「暗号学的」ハッシュ関数を使っているだけなら関係ない、と理解しています。 「(復号できる)暗号化」の場合でも、鍵長が定められている長さより短ければ大丈夫です。 また、そもそも鍵の存在しないアルゴリズムは「暗号」扱いになりません。 (だからROT13は規制対象となる暗号ではありません)