2011-01-13 1 views
3

이 주제에 대해 읽은 적이 있지만 아직 답을 잘 모르겠습니다. 새로운 RijndaelManaged() 대신 Rijndael.Create()를 사용하는 것이 안전합니까?

당신이 Rijndael.Create()를 사용하여 암호화 알고리즘을 만들

, 당신은 유형 RijndaelManaged의 객체를 얻을 - (당신이 사람들을 VB 또는 New RijndaelManaged())이 및 new RijndaelManaged()를 호출 사이에 차이가있을 것 같지 않습니다. :)

내가 읽은 바에 따르면 Rijndael.Create() 메서드가 있으므로 향후 버전에서 변경 될 경우 특정 구현에 대해 걱정할 필요가 없습니다. 하지만 내 질문은 : 그 일이 일어날 가정하고. NET 5.0 다른 구현을 반환합니다. RijndaelManaged를 사용하여 암호화 된 항목을 SomeFutureRijndaelManaged을 사용하여 문제없이 해독 할 수 있다는 보장이 있습니까?

호환되지 않을 것이라고 상상할 수는 없지만 단지 확인하고 싶습니다. 가정이 알고리즘의 시스템 특정 버전을 제공 할 수 있도록

감사

+0

: VB는 대소 문자를 구별하지, 그래서 VB에서와 같이는 C# 생성자 호출이 작동합니다. 모든 것을 대문자로 만드는 것이 IDE입니다. –

+1

그래, 나도 알아. 그냥 나쁜 농담이야. –

답변

7

Rijndael.Create 추상화 추가 리디렉션의 레이어를 추가합니다. 실제로는 극단적으로 느리기 때문에 OID 문자열 매핑을 해결하여 결국 RijndaelManaged 클래스에 도착하도록 Crypto API를 통해 이동해야합니다. 우리는 플랫폼간에 안정성을 제공하는 대신 Windows 2000/XP/Vista/Windows에서 문제를 일으키는 것으로 나타났습니다. 또한 RijndaelManaged 클래스를 직접 인스턴스화하는 것보다 Create 메서드를 통해 개체의 인스턴스를 만드는 것이 수백 배 더 느립니다. 메모리의 데이터를 암호화/해독 할 때이 점이 큰 병 목이라는 것을 알게되었습니다.

"미래의 교정"에 관한 한 - 보안 알고리즘에는 그러한 것이 없습니다. .NET 5.0이 나올 때. 알고리즘을 작성하는 방법에 관계없이 변경 한 사항을 수용하도록 업데이트해야합니다. 응용 프로그램의 .config 파일에 <supportedRuntime />을 사용하여 .NET 버전을 잠그면 테스트하고 업데이트 한 후에만 응용 프로그램을 전환 할 수 있습니다. 비주얼 베이직 노트에 관한

+0

감사합니다. RijndaelManaged와 직접 연결하고 지원되는 Runtime 설정을 살펴 보겠습니다. –

관련 문제