2016-11-21 1 views
0

클라이언트 - 서버 애플리케이션에서 암호화에 AES를 사용하고 있습니다.AES 암호화 키를 C++에 안전하게 저장하는 방법은 무엇입니까?

현재 클라이언트와 서버에서 모두 하드 코딩 된 정적 대칭 키를 정의했습니다.

실행 파일을 역전/해체하여 키를 얻는 것이 너무 어려워서는 안되는 느낌입니다.

반면에 Diffie-Hellman과 같은 키 교환을 통해 키가 클라이언트의 메모리에 저장되고 어떤 방법으로도 추출 될 수 있으므로이 문제를 해결할 수있는 방법을 알지 못합니다.

나는 키를 암호화하거나 모호하게 만드는 것을 포함하여 모든 것이 안전하지 않다는 것을 모든 곳에서 읽고 있습니다. 그러나 어떻게 그것이 안전하게 이루어 집니까?

+0

비대칭 암호화 알고리즘을 사용합니다. 이는 각 부분이 다른 부분의 개인 키를 알지 못함을 의미합니다. 그것은 순수한 수학입니다. – jweyrich

+0

@jweyrich 이것은 해체를 통한 핵심 발견을 막지 않을 것입니다, 그렇죠? –

+4

@jweyrich 이렇게하면 네트워크에있는 사람이 키를 찾을 수 없지만 시스템에 액세스 할 수있는 사람은 없습니다. – user66875

답변

-3

은 128 바이트 또는 256 바이트로 고정 된 키 크기입니다. 그렇다면 키 데이터의 구조를 정의 할 수 있습니다. 바이너리 모드로 열리는 파일에 저장하십시오.

아니요 인 경우 키 크기를 파일에 저장하고 키 데이터를 저장해야합니다.

+0

OP 질문 : '하지만 어떻게 안전하게 끝낼 수 있습니까?'라는 질문에 답변하지 않았습니다. – jweyrich

6

암호는 사용자로부터 소프트웨어를 보호 할 수 없습니다.

코드를 실행할 권한이있는 사용자는 opcode를 볼 수있는 권한이 있으므로 코드의 모든 정보를 검색 할 수 있습니다.

암호화는 다른 사용자로부터 사용자를 보호 할 수 있습니다.

이제 유스 케이스를 재검토해야 할 때입니다. 우리가 여기서 실제로 달성하려는 것은 무엇입니까?

우리는 독점적 인 프로토콜 스트림을 보호하려고합니까, 아니면 사용자의 신원과 데이터를 보호합니까?

전자는 전적으로 변호사 (그리고 깊은 주머니)가 필요합니다. 후자의 경우, 잘 구현 된 공용/개인 키 암호화로 충분합니다.

관련 문제