2012-07-05 2 views
-1

사용자가 파일을 편집하는 시스템에 대해 enc/dec 프로세스가 설정되어 있습니다. 암호화 된 파일이 악의적으로 수정 된 경우이를 처리하고 "해독에 실패했습니다. 깨끗한 파일로 시작할 것"이라고 말하고 싶습니다. 그러나 프로그램 실행을 멈추지 않는 방식으로 예외를 처리하는 방법을 잘 모르겠습니다.암호 해독 중에 잘못된 데이터 처리 (TripleDES, .NET)

다시 말씀 드리지만, 나는 완벽하게 유효한 데이터를 해독하는 데 문제가 없습니다. 실제 데이터가 잘못되어 Bad Data 오류가 발생했습니다.이를 정상적으로 처리하는 방법에 대해 궁금합니다. 오류가 발생하면 CryptoStream은 파일을 닫을 수 없으므로 일반 텍스트 파일로 덮어 쓰거나 다른 모든 항목에 사용할 수 없습니다.

참고 : 이것은 LabView에서 사용되는 .NET 코드입니다. 코드를 여기에 붙여 넣을 수는 없습니다.

+0

특정 예외를 catch하고 catch 블록에서 처리 할 수 ​​있습니까? –

+0

. NET에서. 그러나 LabView는 다른 언어 (예 :> 언어)의 일반적인 오류 처리 메커니즘이 없으므로 약간 까다 롭습니다. 나는 이것을 지금보고있다. – BicMacinaPimpHat

+0

아, LabView 질문입니다. 도움을받을 수 없습니다. 그러나, 나는 LabView 녀석 인 누군가를 알고있다. 나는 그에게 당신의 질문을 보여줄 것입니다. –

답변

0

악의적 인 수정을 처리하는 유일한 방법은 AES-GCM과 같은 인증을 포함하는 암호화 체계를 사용하는 것입니다.이 암호화 체계는 특정 프로토콜에서 널리 사용됩니다. 암호화 된 암호문이 그냥 패딩 된 경우 데이터를 변경할 수 있으며 약간의 행운 (약 1/256) 또는 몇 번 시도해도 데이터가 유효하게 보입니다. 모든 소프트웨어가 안전하게 패드/패드 해제되지는 않습니다.

특정 예외를 처리하는 방법을 알려주는 API를 게시해야합니다.

+0

사실 나는 인증을 포함하고 있습니다. 암호화시 데이터에 대해 SHA512를 계산 한 후 나중에 성공적으로 해독 된 데이터와 비교하여 확인합니다. 변조 된 경우 프로그램 사용자에게 경고하고 데이터를 지우도록 선택했지만 여전히 암호를 해독합니다. 스마트가 아닌지 확실하지 않습니다. 사용 시나리오로 인해 실제로 보안에 대해 지나치게 염려하지 않으므로 일반 직원이 파일을 엉망으로 만들지 못하도록 막으려합니다. 그들이 프로그램에 키를 저장해야하기 때문에 그들이 정말로 그것을 원한다면, 그것을 얻을 것입니다 ... – BicMacinaPimpHat

+0

그것은 아무것도 아닌 것보다 낫지 만 우리가 그것이 올바른지 아는 전체 계획을 알아야 할 것입니다. 암호화 된 영역 밖에 저장하면 해시에 대해 일반 텍스트 문자열을 확인할 수 있으므로 정보가 유출됩니다. 독점 계획이 깨질 수있는 많은 방법이 있습니다. 별로 문제가되지 않습니다. * 깨진 경우, 얼마나 부러 졌는지입니다. –

+0

해시는 암호화 된 데이터와 별도의 파일에 저장됩니다. 누군가 Sha-512가 내 손님이되기를 원한다면. – BicMacinaPimpHat

관련 문제