2009-08-14 3 views
0

다음과 같은 상황이 있습니다. 우리는 우리가 설정 한 중앙 구성 저장소에서 데이터베이스 연결 세부 정보를 검색 할 수있는 공통 라이브러리를 가지고 있습니다. 각 응용 프로그램은 데이터베이스로 작업 할 때이 라이브러리를 사용합니다.응용 프로그램을 확인하는 방법은 그것이 말하는 응용 프로그램입니까?

기본적으로 저장 프로 시저를 호출하고 "나는 {xyz} 응용 프로그램입니다. 연결해야합니다"라고 말하면 응용 프로그램 기본 데이터베이스 (서버, 인스턴스, 데이터베이스, 사용자 및 암호).

응용 프로그램 {xyz}만이 {xyz} 데이터베이스의 암호를 검색 할 수 있도록 잠금을 해제하는 방법 (각 응용 프로그램에 대한 데이터베이스 세부 정보 목록이 있습니다 ... 암호를 보호해야합니다) ?

답변

1

내 머리 꼭대기에서 PKI를 시도해보십시오.

+0

PKI는 작은 제목이 아닙니다. 이 부분을 확장 할 수 있습니까? –

+0

나는 암호 메스 퍼에있는 새잎보다 작지만, 마음 속에있는 것은 이런 식이다. 그것이 다소 개략적이지만, imho는 효과가있을 수 있습니다. 이이 응용 프로그램의 소스에 액세스 할 수있는 가정을 기반으로하고, 바이너리를 직접 구축되어 1. 2. 당신과 함께 개인 키 3. 삽입 공개 키와 유지 키 - 쌍을 생성 각 응용 프로그램 인스턴스 4. 응용 프로그램이 DB에 액세스하려고 할 때마다 타임 스탬프를 사용하여 서명 된 문자열을 생성합니다. 5. 요청을 받으면 개인 키로 서명을 교차 확인하십시오. – Everyone

3

일반적인 방법은 앱마다 다른 설정 저장소를 사용하고 각 앱에 설정 저장소에 연결할 다른 사용자/비밀번호를 지정하는 것입니다.

누군가가 앱을 변경하고 앱 X의 사용자/비밀번호를 앱 Y의 값으로 대체하는 것을 막지는 못하지만, 특히이 데이터를 설정으로 제공하는 대신 컴파일 할 때 좀 더 안전합니다. 파일.

정말 안전하려면 저장소에 대한 보안 연결을 먼저 만들어야합니다 (따라서이 기능을 지원하는 DB 드라이버가 필요합니다). 이 연결은 응용 프로그램마다 고유하고 확인 가능한 보안 키를 사용하여 만들어야합니다 (아무도 복사 할 수 없습니다). 실행 파일을 해시로 보호해야합니다 (앱은 자체 해시를 어떻게 든 계산하여 각 앱의 유효한 해시 목록을 서버에 보냅니다).

모두가 모호한 옵션으로 켜기 만하면되는 것이 쉽지 않습니다. 보안에 대해 많은 것을 배우고 데이터 교환을 안전하게해야합니다. 안전하지 않은 장소에 앱을 안전하게 설치하고 무결성을 확인하고 런타임에 첨부 할 수있는 디버거 및 가상 머신에서 실행될 수있는 디버거로부터 코드를 보호하는 방법이 필요합니다.

+0

다중 구성 저장소는 옵션이 아닙니다. 이 시스템의 모든 목적은 모든 것을 집중화하여 400 가지의 다른 것들을 관리 할 필요가 없습니다. –

+0

글쎄, 만약 당신이 데이터베이스에 행 수준의 인증을 가지고, 당신은 그것을 사용할 수 있습니다. 그렇지 않으면 config에 사용자와 비밀번호도 저장하고 사용자 이름과 (해쉬 된) 비밀번호가 일치하는 행만 반환합니다. –

+0

일반적인 경우 security! = comfort. 무언가를 안전하게 만들면 사용하기가 어려워지고 정확하게 설정하기가 어렵습니다. –

0

하나의 가능성은 암호를 데이터베이스에 암호화 된 형식으로 보관하고 보안 키로 허용 된 응용 프로그램에 암호화 키를 전달합니다. 그러면 암호화 키가있는 응용 프로그램 만 실제로 암호를 얻을 수 있고 다른 암호는 얻을 수 없습니다.

+0

사소한 세부 사항 : "암호화 된 양식"및 "암호화 키"를 의미합니다. 해시는 되돌릴 수 없으므로 해시를 생성하는 데 사용되는 텍스트로 해시를 다시 변환 할 방법이 없습니다. –

+0

Dave에게 감사의 말을 전합니다. 해시는 일방적 인 기능입니다. 나는 그렇지 않으면 암호화와 암호 해독을 말해야했다. – rayimag

1

악성 프로그램으로부터 자신을 보호하려고합니까? 그리고이 응용 프로그램이 연결되는 중앙 데이터베이스입니까? 그렇다면 데이터베이스와 애플리케이션 사이의 중간 계층을 고려해야합니다.

위의 내용에 대한 답변의 내용에 따라 귀하의 사례에 해당하는지 잘 모르겠지만이 질문과 유사한 사례가있는 것 같습니다. 및 수행에 대한 책임을 각 응용 프로그램을

Securing your Data Layer in a C# Application

0

간단한/가장 간단한 방법은 암호화 된 형식으로 암호를 저장하는 것입니다 (최근 PerlMonks에 걸쳐 입증 된 바와 같이 일반 텍스트로 암호를 저장은, 어쨌든 다만 보통 나쁜)의 자신의 암호 암호화/해독. 그런 다음 앱이 다른 앱의 비밀번호를 검색했는지 여부는 문제가되지 않습니다. 여전히 비밀번호를 해독 할 수 없기 때문입니다.

관련 문제