ホワイトハウスは開発者に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 など、他のメモリセーフなプログラミング言語を採用する必要があることを強調します。このガイドの目的は、ソフトウェア開発におけるメモリの安全性の問題に対する認識を高め、潜在的なセキュリティ脆弱性を軽減するために、より信頼性の高いプログラミング言語の採用を奨励することです。 CISA は、悪意のある攻撃やデータ漏洩のリスクを軽減するのに役立つため、メモリセーフなプログラミング言語を採用することの重要性を特に強調しています。この動きは、より安全で信頼性の高い方向へのソフトウェア開発業界の発展を促進することも目的としています。
出典: 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 は「安全でない」プログラミング言語とみなされます。
C および C に対応する Rust は、メモリセーフなプログラミング言語の古典的な例とみなされます。 Rust は、安全性、特に同時実行の安全性に重点を置いたシステム プログラミング言語です。関数型、命令型、汎用プログラミングパラダイムなどのマルチパラダイム言語をサポートしており、TensorFlow などの深層学習フレームワークでも優れたフロントエンド言語として使用されています。
プログラマーの質問と回答の Web サイト 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 年、米国国家安全保障局 (NSA) は、メモリ安全とみなされるプログラミング言語の詳細を記載したサイバーセキュリティ情報シートを公開しました。
Rust
- Go
- ##C
- #Java
- Swift
- JavaScript
- Ruby
- Python
- Delphi/Object Pascal
- Ada
- 上記のプログラミング言語はどのくらい人気がありますか? 2024年2月のプログラミング言語人気指数TIOBEによると、プログラミングではPythonが1位、C#が5位、Javaが4位、JavaScriptが6位、Goが8位、Delphi/Object Pascalが12位となり、Swiftが16位、Rustが1位となった。 18位、Rubyはかろうじて20位でした。
ご覧のとおり、NSA によって選択された言語のほとんどはトップ 20 に入っていますが、Ada だけがトップ 10 に入っていません。上位 5 言語のみです。十。
#出典: https://www.tiobe.com/tiobe-index/
##レポートでは、ソフトウェア セキュリティのより適切な測定も求めています。 ONCD は次のように考えています。指標が改善されれば、テクノロジー プロバイダーは脆弱性が問題になる前に、より適切な計画を立て、予測し、軽減できるようになります。
報告書では、NASAが「成功した失敗」と分類したアポロ13号のミッションについてもレビューしています。ミッション自体は壊滅的な失敗に見舞われ、3人の宇宙飛行士は安全に帰還するために応急修理を行い、問題の一部を軽減した。報告書には次のように記載されています: メモリ セキュリティ コードは宇宙計画にとって非常に重要です。人間による宇宙探査では、将来の事故を避けるために、メモリセーフな言語、つまりカーネルにできるだけ近い言語を使用する必要があります。世界のデジタル化が進むにつれて、より優れたコーディングがますます重要になり、悪いコードが悪用される可能性があります。
Rust 言語
Rust 言語は、Mozilla が主導する汎用のコンパイル済みプログラミング言語です。設計基準は「安全性、同時実行性、実用性」であり、関数型、同時実行型、手続き型、およびオブジェクト指向のプログラミング スタイルをサポートします。
Rust 言語の最も顕著な利点は、パフォーマンスをさらに低下させることなくメモリの安全性を保証できることです。従来のシステムレベルプログラミング言語 (C/C++) の開発プロセスでは、ヌルポインタ、ワイルドポインタ、メモリリーク、メモリ範囲外、セグメンテーション違反など、さまざまなメモリエラーに起因するクラッシュやバグが頻繁に発生します。データの競合と反復、デバイスの障害など。
メモリの問題は、プログラムの安定性とセキュリティに影響を与える隠れた大きな危険であり、開発効率に影響を与える大きな要因です。 2 つの大手テクノロジー企業である Google と Microsoft は、自社の重要な製品におけるプログラム セキュリティ問題の 70% はメモリの問題によって引き起こされていると述べており、両巨人はメモリの安全性の問題を解決するために Rust 言語を使用することを検討しています。 さらに、Rust は優れたクロスプラットフォーム機能を備え、クロスコンパイルをサポートし、組み込み環境にも優しいです。 ただし、Rust 言語には厄介な欠点もいくつかあります。 まず、Rust には「ライフタイム」などの特殊な構文があるため、初心者には少しとっつきにくいです。それに比べて、Python や Java などの言語はシンプルで習得が簡単です。ただし、すでに C 言語を知っている場合は、Rust 言語を学ぶのがはるかに簡単です。Rust 言語は多くの C 構文を借用しているためです。 第二に、Rust 言語のコンパイラ チェックは非常に厳格であり、開発プロセスのほとんどはコンパイルの問題の解決に費やされます。ただし、コンパイルが完了すると、開発者はメモリの安全性、メモリ リーク、その他の問題を心配する必要がなく、ビジネス ロジックに集中するだけで済みます。
以上がホワイトハウスは開発者にCとC++を放棄するよう求める文書を発行:Rustはメモリ安全性のために「厳選」されたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLの起動が失敗する理由はたくさんあり、エラーログをチェックすることで診断できます。一般的な原因には、ポートの競合(ポート占有率をチェックして構成の変更)、許可の問題(ユーザー許可を実行するサービスを確認)、構成ファイルエラー(パラメーター設定のチェック)、データディレクトリの破損(テーブルスペースの復元)、INNODBテーブルスペースの問題(IBDATA1ファイルのチェック)、プラグインロード障害(エラーログのチェック)が含まれます。問題を解決するときは、エラーログに基づいてそれらを分析し、問題の根本原因を見つけ、問題を防ぐために定期的にデータをバックアップする習慣を開発する必要があります。

MySQLはJSONデータを返すことができます。 json_extract関数はフィールド値を抽出します。複雑なクエリについては、Where句を使用してJSONデータをフィルタリングすることを検討できますが、そのパフォーマンスへの影響に注意してください。 JSONに対するMySQLのサポートは絶えず増加しており、最新バージョンと機能に注意を払うことをお勧めします。

データベース酸属性の詳細な説明酸属性は、データベーストランザクションの信頼性と一貫性を確保するための一連のルールです。データベースシステムがトランザクションを処理する方法を定義し、システムのクラッシュ、停電、または複数のユーザーの同時アクセスの場合でも、データの整合性と精度を確保します。酸属性の概要原子性:トランザクションは不可分な単位と見なされます。どの部分も失敗し、トランザクション全体がロールバックされ、データベースは変更を保持しません。たとえば、銀行の譲渡が1つのアカウントから控除されているが別のアカウントに増加しない場合、操作全体が取り消されます。 TRANSACTION; updateaccountssetbalance = balance-100wh

LaravelEloquentモデルの検索:データベースデータを簡単に取得するEloquentormは、データベースを操作するための簡潔で理解しやすい方法を提供します。この記事では、さまざまな雄弁なモデル検索手法を詳細に紹介して、データベースからのデータを効率的に取得するのに役立ちます。 1.すべてのレコードを取得します。 ALL()メソッドを使用して、データベーステーブルですべてのレコードを取得します:useapp \ models \ post; $ post = post :: all();これにより、コレクションが返されます。 Foreach Loopまたはその他の収集方法を使用してデータにアクセスできます。

sqllimit句:クエリ結果の行数を制御します。 SQLの制限条項は、クエリによって返される行数を制限するために使用されます。これは、大規模なデータセット、パジネートされたディスプレイ、テストデータを処理する場合に非常に便利であり、クエリ効率を効果的に改善することができます。構文の基本的な構文:SelectColumn1、column2、... FromTable_nameLimitnumber_of_rows; number_of_rows:返された行の数を指定します。オフセットの構文:SelectColumn1、column2、... FromTable_nameLimitoffset、number_of_rows; offset:skip

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

MySQLプライマリキーは、データベース内の各行を一意に識別するキー属性であるため、空にすることはできません。主キーが空になる可能性がある場合、レコードを一意に識別することはできません。これにより、データの混乱が発生します。一次キーとして自己挿入整数列またはUUIDを使用する場合、効率やスペース占有などの要因を考慮し、適切なソリューションを選択する必要があります。

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。
