암호화는 특수한 알고리즘을 사용하여 원본 정보 데이터를 변경하는 것을 말하며, 무단 사용자가 암호화된 정보를 획득하더라도 암호 해독을 모르기 때문에 정보의 내용을 이해할 수 없습니다. 방법. . 일반적인 암호화 알고리즘은 크게 대칭 암호화, 비대칭 암호화, 단방향 암호화로 나눌 수 있습니다. 다양한 암호화 알고리즘은 다양한 시나리오에서 사용됩니다. 컴퓨팅 속도, 보안, 키 관리 방법 등 암호화 알고리즘의 특성을 기반으로 적절한 알고리즘을 선택하십시오. 그러나 보안은 암호화 알고리즘의 품질을 측정하는 중요한 지표입니다. 쉽게 해독되는 암호화 알고리즘은 철저한 방법을 사용하여 제한된 시간 내에 해독될 수 있는 DES 알고리즘과 같이 약한 암호화 알고리즘이라고 합니다. 이 기사에서는 JAVA 언어 소스 코드를 예로 들어 취약한 암호화의 원인과 해결 방법을 분석합니다.
공격 저항력이 약한 암호화 알고리즘은 일단 악용되면 개인정보가 유출될 수 있으며 심지어 재산 손실까지 발생할 수 있습니다. 2018년 1월부터 2019년 4월까지 CVE에는 이와 관련된 취약점 정보가 총 2건 있었습니다. 취약점 정보는 다음과 같습니다.
CVE | Vulnerability 개요 |
---|---|
CVE-2018-9028 | CA Privileged AccessManager 2.x는 비밀번호를 전송할 때 약한 암호화를 사용합니다. 감소시킨다 비밀번호 크래킹 위험. EHCP(Easy Hosting Control Panel) v0.37.12.b의 |
CVE-2018-6619 | 을 사용하면 공격자가 솔트 없이 약한 암호화 알고리즘을 활용하여 데이터베이스 비밀번호를 더 쉽게 해독할 수 있습니다. |
3. 샘플 코드
아래에 사용된 샘플 코드는 Benchmark(https://www.owasp.org/index.php/Benchmark)에서 가져온 것입니다. 소스 파일 이름은 BenchmarkTest00019.java입니다.
위의 예제 코드 작업은 요청의 내용을 읽고 암호화한 후 49행에서 구성 파일을 읽는 인스턴스를 얻는 것입니다benchmarkprops
。在第50行加载配置文件,在第52行~53行读取配置文件中的属性 cryptoAlg1
,若无此属性默认使用 DESede/ECB/PKCS5Padding
给 algorithm
赋值。第54行将使用 algorithm
作为加密算法构造加密对象c。接下来准备加密的密码。第57~58行实例化了一个DES加密算法的密钥生成器。第59行指定加密对象 c 的操作模式为加密,其中 key 为密钥。第62行~76行对将请求中的输入流转换为字节数组input,在第77行进行对 input 进行加密,加密结果是字节数组 result
. DES 알고리즘을 사용하여 생성된 키는 56비트로 짧고 연산 속도도 느립니다. 게다가 DES 알고리즘은 전적으로 키에 의존하므로 철저한 검색 공격에 취약합니다.
Code Guard를 사용하여 위의 샘플 코드를 감지하면 "약한 암호화" 결함을 감지할 수 있으며 표시 수준은 중간입니다. 결함은 그림 1과 같이 코드의 57번째 줄에 보고됩니다.
그림 1: 약한 암호화 감지 예
위의 복구 코드에서 58번째 줄 AES 알고리즘은 DES 알고리즘을 대체하는 데 사용되며, AES는 최소 128비트, 최대 256비트의 키를 생성할 수 있으며 작업 속도가 빠르고 메모리 사용량이 적습니다.
Code Guard를 사용하여 복구된 코드를 감지하면 "약한 암호화" 결함이 없음을 확인할 수 있습니다. 그림 2에 표시된 대로:
보안 요구 사항이 높은 시스템에서는 안전한 암호화 알고리즘(예: AES, RSA)를 사용하여 민감한 데이터를 암호화합니다.
위 내용은 C 언어에서 약한 암호화를 피하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!