Heim > Artikel > Betrieb und Instandhaltung > So vermeiden Sie eine schwache Verschlüsselung in der C-Sprache
Verschlüsselung bezieht sich auf die Verwendung eines speziellen Algorithmus zur Änderung der ursprünglichen Informationsdaten, sodass unbefugte Benutzer den Inhalt der Informationen immer noch nicht verstehen können, weil sie die Entschlüsselung nicht kennen Methode. Gängige Verschlüsselungsalgorithmen können hauptsächlich in symmetrische Verschlüsselung, asymmetrische Verschlüsselung und Einwegverschlüsselung unterteilt werden. In verschiedenen Szenarien werden verschiedene Verschlüsselungsalgorithmen verwendet. Wählen Sie den geeigneten Algorithmus basierend auf den Eigenschaften des Verschlüsselungsalgorithmus, wie z. B. Rechengeschwindigkeit, Sicherheit und Schlüsselverwaltungsmethoden. Sicherheit ist jedoch ein wichtiger Indikator zur Messung der Qualität des Verschlüsselungsalgorithmus. Verschlüsselung, die leicht zu knacken ist Algorithmen werden als schwache Verschlüsselungsalgorithmen bezeichnet, wie zum Beispiel der DES-Algorithmus, der mit aufwändigen Methoden in begrenzter Zeit geknackt werden kann. In diesem Artikel wird der Quellcode der JAVA-Sprache als Beispiel verwendet, um die Ursachen einer schwachen Verschlüsselung zu analysieren und sie zu reparieren.
Bei Verschlüsselungsalgorithmen, deren Angriffsresistenz schwach ist, kann es nach der Ausnutzung zu einem Verlust personenbezogener Daten und sogar zu Sachschäden kommen. Von Januar 2018 bis April 2019 gab es in CVE insgesamt zwei diesbezügliche Schwachstelleninformationen. Die Schwachstelleninformationen lauten wie folgt:
CVE | Schwachstellenübersicht |
---|---|
CVE-2018-9028 | CA Privileged AccessManager 2.x verwendet bei der Übertragung von Passwörtern eine schwache Verschlüsselung reduziert die Risiko des Passwortknackens. |
CVE-2018-6619 | in Easy Hosting Control Panel (EHCP) v0.37.12.b macht es Angreifern einfacher, Datenbankkennwörter zu knacken, indem es einen schwachen Verschlüsselungsalgorithmus ohne Salt nutzt. |
3. Beispielcode
Der unten verwendete Beispielcode stammt von Benchmark (https://www.owasp.org/index.php/Benchmark), Quelldateiname: BenchmarkTest00019.java.
Die obige Beispielcodeoperation besteht darin, den Inhalt in der Anforderung zu lesen und zu verschlüsseln und die Instanz zum Lesen der Konfigurationsdatei in Zeile 49 zu erhalten benchmarkprops
。在第50行加载配置文件,在第52行~53行读取配置文件中的属性 cryptoAlg1
,若无此属性默认使用 DESede/ECB/PKCS5Padding
给 algorithm
赋值。第54行将使用 algorithm
作为加密算法构造加密对象c。接下来准备加密的密码。第57~58行实例化了一个DES加密算法的密钥生成器。第59行指定加密对象 c 的操作模式为加密,其中 key 为密钥。第62行~76行对将请求中的输入流转换为字节数组input,在第77行进行对 input 进行加密,加密结果是字节数组 result
. Der mit dem DES-Algorithmus generierte Schlüssel ist kurz, nur 56 Bit, und die Betriebsgeschwindigkeit ist langsam. Darüber hinaus ist der DES-Algorithmus vollständig auf den Schlüssel angewiesen und anfällig für umfassende Suchangriffe.
Verwenden Sie Code Guard, um den oben genannten Beispielcode zu erkennen. Sie können den Fehler „schwache Verschlüsselung“ erkennen und die Anzeigestufe ist mittel. Der Defekt wird in Zeile 57 des Codes gemeldet, wie in Abbildung 1 dargestellt:
Abbildung 1: Erkennungsbeispiel einer schwachen Verschlüsselung
Im obigen Reparaturcode, Zeile 58 Der AES-Algorithmus wird verwendet, um den DES-Algorithmus zu ersetzen. AES kann einen Schlüssel von mindestens 128 Bit und maximal 256 Bit generieren und weist eine hohe Betriebsgeschwindigkeit und eine geringe Speichernutzung auf.
Verwenden Sie Code Guard, um den reparierten Code zu erkennen, und Sie können sehen, dass kein Fehler durch „schwache Verschlüsselung“ vorliegt. Wie in Abbildung 2 dargestellt:
In Systemen mit hohen Sicherheitsanforderungen wird empfohlen, sichere Verschlüsselungsalgorithmen zu verwenden (z. B AES, RSA) zur Verschlüsselung sensibler Daten.
Das obige ist der detaillierte Inhalt vonSo vermeiden Sie eine schwache Verschlüsselung in der C-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!