2013-05-26 2 views
0

내 응용 프로그램은 GUI에 IP 주소와 암호를 표시합니다. 암호는 주기적으로 (연결되는 새 사람마다) 바뀌며 연결하는 사람이 한 번만 사용하여 올바른 장치에 연결하고 있는지 확인합니다. 예를 들어, 서로 옆에있는 두 명의 친구가 내 앱을 사용하려고합니다.이 앱은 서버의 비밀번호를보고 주변에있는 앱을 사용하여 실수로 다른 사람과 연결하지 않도록합니다.암호 보안에 대해 걱정해야합니까?

사용자는 다른 장치와 "페어링"할 수도 있습니다.이 경우 사용자는 암호를 한 번 묻는 메시지가 나타나고 서버 사용자는 페어링 프로세스를 확인한 다음 다시 암호가 필요하지 않습니다. 나는 무작위로 생성 된 새로운 암호와 다른 사용자의 MAC 주소를 데이터베이스에 보관하여이 작업을 수행합니다.

현재 내 앱에 비밀번호를 저장하고 비교하려면 String을 사용합니다. 나는 암호를 저장하는 char 배열을 사용하면 메모리에 암호를 유지하는 인턴 풀에 대해 걱정할 필요가 없으므로 보안을 위해 더 낫다고 읽었습니다.

제 경우에는 정말로 이런 종류의 보안에 대해 걱정할 필요가 있습니까? 나는 어떤 사용자 민감한 정보도 다루지 않고있다, 나는 안전망을 가지고있는 것을 좋아했다.

질문 : 어쨌든 String으로 변환하지 않고 Swing GUI의 char 배열에 암호를 어떻게 표시합니까?

+0

부차적 인 질문에 답하려면 다음과 같이하십시오. 글 머리 기호, 별표 또는 다른 점을 표시하여 암호를 나타내거나 아무 것도 표시하지 않습니다. 보안에 민감한 내용의 실제 내용을 표시하면 안됩니다. – AJMansfield

답변

1

IMHO, 문자 배열을 사용하면 더 나은 보안을 느낄 수 있습니다. 누군가 컴퓨터와 메모리에 실제로 액세스 할 수있는 경우 String 또는 char 배열을 사용하여 큰 차이를 만들지는 않습니다.

질문에 대답하려면. 문제는 인턴 된 문자열의 풀이 아닙니다. 왜냐하면 임의로 생성 된 문자열을 인턴 트하지 않기 때문입니다. 문제는 STring이 변경 가능하지 않으므로 내용을 재설정하지 않아도 가비지 수집 될 때까지 메모리에 보관된다는 것입니다. char 배열의 모든 요소는 더 이상 필요하지 않으면 0으로 재설정 할 수 있습니다.

암호를 String으로 변환하지 않고 표시하는 방법은 예를 들어 JComponent에 직접 각 문자를 그릴 수 있습니다. 그러나 암호를 화면에 표시 할 준비가되면 암호가 메모리에 숨겨져 있다는 생각은 나에게 모순입니다.

+0

"그러나 암호를 화면에 표시 할 준비가되면 암호가 메모리에 숨겨져 있다고 생각하면 내게 모순이됩니다." 이것은 내 마음을 통과 한 것입니다. – Logan

1

보안의 주요 목적은 권한 에스컬레이션을 피하는 것입니다. 기본적으로 각 프로세스에는 허용되는 일련의 작업이 있습니다. 하나의 리소스에 대한 액세스 권한을 가진 사람이 다른 리소스에 액세스 할 수 없도록해야합니다.

귀하의 경우, 주요 질문은 "암호에 대한 액세스 권한으로 프로그램을 얻으시겠습니까?"입니다. 주 응용 프로그램에 이미 모든 관련 정보가 표시된 경우 악성 프로세스 (메모리 공간에 액세스 할 수 있음)가 암호를 알아내어 얻을 수있는 것이 있습니까?

온라인 프로세스로 작업하는 경우 대답은 예일 수 있습니다. 누군가의 말을 붙잡기 Dropbox 암호는 이미 로컬 컴퓨터에 대한 광범위한 액세스 권한이 있어도 가치가 있습니다. 그러나 로컬 응용 프로그램에 대해 말하면 암호를 알아 내서 얻을 가능성이 거의 없습니다.

관련 문제