2024年6月にリリースされた ColdFusion 2023 Update 8 / 2021 Update 14では、暗号アルゴリズムのデフォルトが変更されました。
これまでデフォルトのアルゴリズムは「CFMX_COMPAT」でした。CFMX_COMPATはColdFusion MX およびそれ以前から使用されていたアルゴリズムであり、もっとも安全性の低いものでした。
今回のUpdateから別のアルゴリズムがデフォルトに変更されますので、暗号アルゴリズムを使用している以下の8つの関数(暗号化・複合化の4つの関数、ハッシュ関数、3つの乱数処理関数)を使用している場合は、Update 8を適用した後に、実行結果が異なったりエラーが発生する可能性があります。
デフォルトのアルゴリズムが、これまでの「CFMX_COMPAT」から「AES(AES/CBC/PKCS5Padding)」に変更されました。
<cfset str1="あいうえお"> <cfset enckey="enckeyword"> <cfset encrypted=encrypt(str1, enckey)> 暗号化された文字:<cfoutput>#encrypted#</cfoutput><br /> <cfset decrypted=decrypt(encrypted, enckey)> 複合化された文字:<cfoutput>#decrypted#</cfoutput><br />
Update 7まで
Update 8から
※エラーが発生するのは、CFMX_COMPATアルゴリズムでは任意の文字列をキーに指定できたのに対し、それ以外のアルゴリズムではGenerateSecretKey関数を使ってアルゴリズムに合ったキーを用意する必要があるためです
デフォルトのアルゴリズムが、これまでの「CFMX_COMPAT」から「SHA-256」に変更されました。そのためこれまでのCFMX_COMPATで生成されたハッシュされた値をDB内に保存して、その値を比較している処理などでは、Update8からはハッシュされた値が異なるため注意が必要です。
<cfset str1="あいうえお"> <cfset hashed1=hash(str1)> <cfset hashed2=hash(str1, "CFMX_COMPAT")> <cfset hashed3=hash(str1, "SHA-256")> ハッシュされた文字:<br /> 指定なし:<cfoutput>#hashed1#</cfoutput><br /> CFMX_COMPAT:<cfoutput>#hashed2#</cfoutput><br /> SHA-256:<cfoutput>#hashed3#</cfoutput><br />
Update 7まで
Update 8から
乱数生成の処理で使用されるデフォルトのアルゴリズムも「CFMX_COMPAT」から、より高いランダム性である「SHA1PRNG」に変更されました。もし、RandRangeを使用してシードを固定し、Randで同じ乱数値を生成している場合は、使用するアルゴリズムが変更されるため、シード値や生成される乱数値が異なりますので注意してください。
<strong>指定なし</strong><br /> <cfset randomize(12345)><!--- 乱数固定シード値 ---> <cfloop index="i" from="1" to="3"> <cfoutput>#i#回目: #rand()#</cfoutput><br /> </cfloop> <strong>CFMX_COMPAT</strong><br /> <cfset randomize(12345,"CFMX_COMPAT")><!--- 乱数固定シード値 ---> <cfloop index="i" from="1" to="3"> <cfoutput>#i#回目: #rand("CFMX_COMPAT")#</cfoutput><br /> </cfloop> <strong>SHA1PRNG</strong><br /> <cfset randomize(12345,"SHA1PRNG")><!--- 乱数固定シード値 ---> <cfloop index="i" from="1" to="3"> <cfoutput>#i#回目: #rand("SHA1PRNG")#</cfoutput><br /> </cfloop>
Update 7まで
Update 8から
Update 8を適用することによって、既存の処理に影響が生じる場合は、以下のいずれかの方法にて対応を行ってください。
-Dcoldfusion.encryption.useCFMX_COMPATAsDefault=TRUE
』を指定することで、Update 8以降でもデフォルトアルゴリズムをCFMX_COMPATに戻すことができます。
ハッシュ処理や乱数処理は、それぞれプログラムコード内にCFMX_COMPATをアルゴリズムとして明示している箇所がありますので、そちらを確認してください
記事公開日:2024年06月13日
最終更新日:2024年06月13日
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.
Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.