2010-06-27 3 views
0

app.config에 사용자 이름과 암호를 저장해야합니다. Rijndael 알고리즘을 사용하여이 값을 암호화하고 싶습니다. 어디에서 un와 pw를 해독 할 수있는 키와 IV를 저장해야합니까? 다른 사용자가있는 다른 서버에 응용 프로그램을 배포해야합니다.Rijndael에 IV 및 키 저장

+0

@IUnknownPointer : 정말

코드는 다음과 같은 것입니까? 무엇처럼? –

답변

1

web.config 또는 app.config 파일 암호화는 일반적으로 RSA 또는 DPAPI 암호화로 수행됩니다.

귀하의 소송에서 귀하에게 적합한 지 확실하지 않은 경우, 애플리케이션 사용자가 관리자가 아닌 경우에만 효과적입니다.

http://msdn.microsoft.com/en-us/library/ff647398.aspx

+0

DPAPI는 아마도 하드웨어 장치를 사용하지 않고 수행 할 수있는 최상의 방법 일 것입니다. RSA는 도움이되지 않습니다. –

+0

키를 내보낼 수 있도록 허용하여 여러 서버에서 RSA 암호화를 사용할 수 있지만 여기서는 좋은 해결책이 아닙니다. –

0

분명히 어셈블리에 저장하지 마십시오. 일리노이를 비교적 단순하게 보면 비밀을 포기할 것입니다. 심지어 obsfuciating, 약간의 여분의 보안을 제공 할 것입니다.

가장 쉬운 방법은 다른 서버에서 OS \ 파일 시스템 보안을 사용하여 키 파일에 대한 읽기 액세스를 제어하는 ​​것입니다.

0

웹을 통해 액세스 할 수없는 위치의 텍스트 파일에 이상적으로 액세스가 엄격한 로컬 파일 시스템을 통해서만 가능합니다. 앱을 배포해야하는 경우

, 당신은이 캐고 방지 할 수

가상 디렉터리에 대한 키 및 기타 개인 정보

  • C:\MyApp\www을 위해 다음과 같은 구조

    • C:\MyApp를 사용할 수 있습니다 눈 (또는 웹 서버 버그)을 사용하여 데이터에 액세스하십시오. 기계에 물리적으로 접근 할 때만 잠재적으로이를 나타낼 수 있으며 일반적으로 더 잘 제어 할 수 있습니다.

  • 0

    어떻게 할 컴퓨터 키 암호화를 사용하는 방법에 대해? (내가 아는 한)이 작업을 수행하는 쉬운 방법은 없지만 리플렉션을 사용하여 프레임 워크에 해킹 할 수 있습니다. 컴퓨터 키가 컴퓨터에 저장되어 있지 않거나 부분적으로 만 저장되어 있습니다. ASP.NET에서 '각 응용 프로그램에 대해 고유 한 키 생성'을 구성하면 응용 프로그램의 경로가 키를 파생시키는 데 사용됩니다.

    private static MethodInfo _cookieEncryptMethod; 
    private static MethodInfo _cookieDecryptMethod; 
    
    public static string MachineKeyEncrypt(string data) 
    { 
        if (_cookieEncryptMethod == null) 
        { 
         _cookieEncryptMethod = Type.GetType("System.Web.Security.CookieProtectionHelper").GetMethod("Encode", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.InvokeMethod); 
        } 
    
        var dataBytes = Encoding.UTF8.GetBytes(data); 
    
        return (string) _cookieEncryptMethod.Invoke(null, new object[] { CookieProtection.All, dataBytes, dataBytes.Length }); 
    } 
    
    public static string MachineKeyDecrypt(string source) 
    { 
        if (_cookieDecryptMethod == null) 
        { 
         _cookieDecryptMethod = Type.GetType("System.Web.Security.CookieProtectionHelper").GetMethod("Decode", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.InvokeMethod); 
        } 
    
        var data = (byte[]) _cookieDecryptMethod.Invoke(null, new object[] { CookieProtection.All, source }); 
    
        return Encoding.UTF8.GetString(data); 
    }