2016-10-18 1 views
0

가능할 지 모르겠습니다.코드 내부의 문자열 암호화 (JAPH)

시나리오 :

는 내 코드 내부의 키 스토어에 대한 마스터 키가 있습니다. 나는 또한 디 컴파일에 내 "비밀"을 보호해야

private static final char[] pwd = "password".toCharArray(); 

처럼 뭔가. 적어도 다음과 같은 것을 시도하십시오. JAPH

비밀번호를 안전하고 읽을 수 없도록 만드는 것은 불가능하지만 적어도 가능한 한 많이 만들고 싶습니다.

+0

맞습니다. 비밀번호를 입력 할 수있는 유일한 안전한 장소는 사람의 뇌입니다. 그러나 비트 단위로 16 진수로 변환하거나 base64 인코딩 (또는 그 조합)으로 변환하면 읽기가 더 어려워 질 수 있습니다. 특정 파일 생성 날짜에 대한 bytewise XOR은 또 다른 아이디어이지만, 이것은 깨지기 쉬운 것일 수 있습니다. –

답변

1

첫 번째 방법은 비밀 번호를 분리 된 파일로 배포하고 런타임에 Properties API를 통해 읽는 것입니다. 쉽고 간단합니다. base64 인코딩을 추가하면 스크립트 키즈로부터 보호됩니다. 게시 소스 코드는 암호 저장 방법 만 보여줍니다. 물론 코드와 파일의 누출은 여전히 ​​문제입니다.

두 번째 방법은 매우 유사합니다. 암호를 환경 변수로 저장하고 System.env을 통해 읽습니다. 이 경우 암호를 알고 공격자가 OS에 액세스하여 암호를 읽어야합니다. 그러면 조금 더 복잡해집니다.

세 번째 방법은 2 단계 암호입니다. 두 번째 방법을 사용하여 저장하는 첫 번째 비밀번호는 기본 비밀번호가 포함 된 AES 암호화 된 파일의 비밀번호입니다.

우리 프로젝트에서는 두 번째 방법을 사용합니다. 그것은 코드 유출 (어떻게 든)이 누출되면 암호를 노출시키는 우리를 보호합니다. 그러나 누군가가 서버 보안을 깨면 ... 그러면 유출 된 암호보다 훨씬 심각한 문제가 발생할 것입니다.

ps. 조금 더 세게 만들기 위해 Honey Encription으로 게임을 시도 할 수 있습니다. 공격자는 자신이 유효한 암호를 가지고 있는지 또는 단지 보이는 것만 알 수 없습니다.