ホワイトハウスは開発者にCとC++を放棄するよう求める声明を発表した。メモリの安全性のためにRustが「選ばれた」

ホワイトハウスは開発者にCとC++を放棄するよう求める声明を発表した。メモリの安全性のためにRustが「選ばれた」

最近、ホワイトハウスの国家サイバースペース局長室(ONCD)は、「基本的な構成要素への回帰:安全なソフトウェアへの道」と題した19ページの報告書の中で、開発者に対し、Rustなどの「メモリセーフなプログラミング言語」を使用するよう呼びかけた。レポートでは、最初からメモリセーフなプログラミング言語を選択することが、安全な設計方法でソフトウェアを開発するための重要な方法であると指摘しています。

さらに、ONCDは、報告書の推奨事項はテクノロジー企業、学界、その他の機関と連携して作成されたと述べ、報告書を裏付けるためにHP、アクセンチュア、パランティアを含む複数のテクノロジー企業から意見を集めた。

レポートアドレス: https://www.whitehouse.gov/wp-content/uploads/2024/02/Final-ONCD-Technical-Report.pdf

実際、米国の公的機関が C および C++ の使用を中止するよう呼びかけたのは今回が初めてではありません。

昨年12月、米国サイバーセキュリティ・インフラ庁(CISA)などの機関は「メモリ安全性ロードマップガイド」を発行し、CとC++はメモリが安全でないプログラミング言語であると指摘し、ソフトウェア開発者にRustやJavaなど他のメモリが安全なプログラミング言語を採用するよう呼びかけた。

出典: https://www.cisa.gov/sites/default/files/2023-12/The-Case-for-Memory-Safe-Roadmaps-508c.pdf

メモリの安全性のためだけに、CとC++を捨ててRustに切り替えましょう

メモリセーフなプログラミング言語の使用を重視しているので、まずはメモリセーフティとは何かを理解しましょう。メモリの安全性とは、バッファ オーバーフローやダングリング ポインタなど、メモリ アクセスを処理する際のバグや脆弱性を防ぐことを指します。

記憶の不安定さはどれほど有害でしょうか? 2019 年に、Microsoft のセキュリティ エンジニアは、セキュリティ問題の約 70% がメモリの安全性の問題によって発生したと報告しました。 2020年に、GoogleはChromiumブラウザで見つかったバグについても同様のデータを報告しました。

プログラミング言語に関しては、C と C++ はどちらも、境界チェックなしで直接メモリ アドレスを使用した任意のポインタ演算を許可します。報告書は、一部のプログラミング言語にはメモリ安全性に関連する機能が欠けており、CやC++に代表される一部の重要なシステムに広く浸透していることを専門家が発見したと指摘した。したがって、C と C++ は「安全でない」プログラミング言語であると見なされます。

Rust は、C や C++ に匹敵するメモリセーフなプログラミング言語の典型的な例と考えられています。 Rust は安全性、特に並行性の安全性に重点を置いたシステム プログラミング言語です。関数型、命令型、汎用プログラミングパラダイムをサポートするマルチパラダイム言語であり、TensorFlow などのディープラーニングフレームワークでも優れたフロントエンド言語として使用されています。

プログラマー向け質疑応答サイト「Stack Overflow」の2021年開発者調査レポートでは、Rustが開発者の間で最も人気のあるプログラミング言語となった。 Rust がシステム プログラミング コミュニティで人気がある理由の 1 つは、メモリ関連のセキュリティ脆弱性を排除するのに役立つことです。

Rust のメモリ安全性機能は、業界で長い間検証されてきました。 2021 年 4 月、Google は Android に Rust 言語のサポートを追加すると発表しました。その理由は、C および C++ のメモリ安全性バグが、解決が最も難しいエラーの原因だからです。Google は、このようなバグを検出、修正、軽減するために多大な労力とリソースを投入し、多数のバグが Android バージョンに入り込むのを効果的に防いでいます。

しかし、こうした取り組みにもかかわらず、メモリ安全性のバグは依然として安定性の問題の主な原因であり、Android の重大なセキュリティ脆弱性の約 70% を占めています。そのため、Google はオペレーティング システム開発者向けに 3 番目のオプションとして Rust を追加しました。

ワシントン大学のコンピューターサイエンス教授であるダン・グロスマン氏は、C と C++ の危険性は何十年も前から誰もが知っており、実用的で成熟した代替手段が存在する今こそ、メモリセーフなプログラミング言語を推進するのに良い時期だと述べています。

彼は、特に組み込みシステムでは、C と C++ を一夜にして排除できるわけではないことに同意しています。しかし、Rust などの他のプログラミング言語がシステム ソフトウェアでより広く使用されるようになると、この進歩は加速すると予想されます。

C と C++ に対する公式の姿勢に賛同しない人が増えているようです。

現代の C++ はメモリ安全であり、すべてのオペレーティング システムは C または C++ でプログラムされていると信じている人もいます。 C++ はメモリ安全とは言えないとしても、現代の C++ にはより多くの「ガードレール」があり、コストは低いか無料であると考える人もいます。

メモリ安全性のために「選ばれた」Rustについては、サポートレベルがそれほど高くなく、政府システムに統合する価値がないと感じる人もいます。

Rust の他に、メモリセーフなプログラミング言語にはどのようなものがありますか?

2022年11月、国家安全保障局(NSA)は、メモリ安全とみなされるプログラミング言語の詳細を記載したサイバーセキュリティ情報シートを公開しました。

  • さび
  • 行く
  • C#
  • ジャワ
  • 迅速
  • JavaScript
  • ルビー
  • パイソン
  • デルファイ/オブジェクトパスカル
  • エイダ

上記のプログラミング言語はどれくらい人気がありますか? 2024年2月のプログラミング言語人気指数TIOBEによると、プログラミングに関しては、Pythonが1位、C#が5位、Javaが4位、JavaScriptが6位、Goが8位、Delphi/Object Pascalが12位、Swiftが16位、Rustが18位、Rubyがかろうじて20位となっています。

ご覧のとおり、NSA が選択した言語のほとんどがトップ 20 に入っていますが、Ada だけがそこになく、トップ 10 には 5 つしかありません。

出典: https://www.tiobe.com/tiobe-index/

この報告書では、ソフトウェアのセキュリティをより適切に測定することも求めています。 ONCD は、より優れたメトリクスにより、技術プロバイダーは脆弱性が問題になる前に、より適切に計画、予測、軽減できるようになると考えています。

報告書では、NASAが「成功した失敗」と分類したアポロ13号ミッションについても検証した。ミッション自体は壊滅的な失敗に終わり、3人の宇宙飛行士は即興で修理を行い、いくつかの問題を緩和して無事に帰還した。報告書には次のように記されている。「メモリセーフなコードは宇宙計画にとって極めて重要である。」人類による宇宙探査では、将来の事故を避けるために、できる限りカーネルに近いメモリセーフな言語を使用する必要があります。

世界がデジタル化されるにつれて、悪いコードが悪意を持って使用される可能性があるため、より優れたコーディングがますます重要になります。

さび

Rust は、Mozilla によって開発された汎用コンパイル型プログラミング言語です。設計原則は「安全性、並行性、実用性」であり、関数型、並行型、手続き型、オブジェクト指向のプログラミング スタイルをサポートします。

Rust 言語の最も顕著な利点は、追加のパフォーマンスの低下なしにメモリの安全性を保証できることです。従来のシステムレベルのプログラミング言語(C/C++)の開発プロセスでは、ヌルポインター、ワイルドポインター、メモリリーク、メモリ範囲外、セグメンテーション違反、データ競合、反復子障害など、さまざまなメモリエラーによるクラッシュやバグが頻繁に発生します。

メモリの問題は、プログラムの安定性とセキュリティに影響を与える大きな隠れた危険であり、開発効率に影響を与える大きな要因です。二大テクノロジー企業であるG​​oogleとMicrosoftは、自社の重要な製品プログラムにおけるセキュリティ問題の70%はメモリの問題が原因であると述べており、両社はメモリの安全性の問題を解決するためにRust言語の使用を検討している。

さらに、Rust は優れたクロスプラットフォーム機能を備え、クロスコンパイルをサポートし、組み込み環境にも適しています。

ただし、Rust 言語にはいくつかの厄介な欠点もあります。

まず、Rust には「lifetime」など特殊な構文があるため、初心者がとっつきにくい部分があります。それに比べて、PythonやJavaなどの言語はよりシンプルで、学習しやすいです。しかし、すでに C++ を知っていれば、Rust は C++ の構文を多く借用しているので、学習ははるかに簡単です。

第二に、Rust 言語のコンパイラ チェックは非常に厳格であり、開発プロセスの大部分はコンパイルの問題の解決に費やされます。ただし、コンパイルされると、開発者はメモリの安全性、メモリ リーク、その他の問題を心配する必要がなくなり、ビジネス ロジックにのみ集中できるようになります。

<<:  Microsoft の 37 ページの論文では、Sora をリバース エンジニアリングしています。どのような結論に達したのでしょうか。

>>:  能力と信頼性の両方を備えることはできますか? GPT-4やGeminiなどのマルチモーダルモデルの評価レポートはこちら

ブログ    

推薦する

Telstra はディープラーニングを使用してネットワークの課題に取り組んでいます。

テルストラは、機器の故障を早期に予測し、音声やテキストによる詐欺に対抗する方法を見つけるために、ネッ...

...

アルゴリズムの視覚化: 理解しにくいコードをゴッホの星空に描く

厳選記事 | 呉嘉楽翻訳 | 黄年校正 | フェン・チェン、ヤオ・ジアリンマイク・ボストック出典 |...

2022年の中国人工知能産業の発展状況と市場規模の分析 市場規模は3000億元を超える

人工知能業界の主要上場企業:Hikvision(002415)、iFlytek(002230)、Sa...

...

パスワードを解読する方法: 暗号ハッシュアルゴリズムの識別

Q: パスワードのビットシーケンスから暗号化アルゴリズムを識別することは可能ですか? A: 外部ソー...

XiaoIceが超自然音声技術をリリースし、シリーズA資金調達の完了を発表

7月12日、XiaoIce社は新たな超自然音声技術をリリースした。この技術により、AI 音声の自然さ...

なぜ人工知能が将来主流になるのか、これを読めば分かる

人工知能と自動化は将来のトレンドではないでしょうか?機械に人体の複雑な筋肉や動作を認識させる方法を考...

Google AIがチューリングテストに合格、ビッグモデルドクターが登場か? GPT-4は17人の医師を困惑させた奇妙な病気を診断した

人類に利益をもたらす AGI を開発する必要がある理由の 1 つ:妻は過去 5 年間、あらゆる種類の...

コンピュータービジョンとは何ですか?

映画『マトリックス リザレクション』(2021年)では、主人公のネオがコンピューター生成の世界「マト...

ロボットはペンを回したりクルミを転がしたりすることを学びました。 GPT-4では、タスクが複雑になるほどパフォーマンスが向上します

ビッグデータダイジェスト制作親愛なる友人たち、人工知能(AI)がチェス、囲碁、Dotaを征服した後、...

ゲームの背後にあるAIストーリー:小規模サンプル学習と転移学習

2019年、人間と機械のゲームバトルにおいて、Open AI Fiveが圧倒的なパフォーマンスでD...

...

...