2014-04-01 6 views
1

WCF 프로젝트에서 AES GCM 암호화를 구현 중입니다. 읽고 검색 한 결과,이 글은 example (일등급, AESGCM) 인 것으로 나타났습니다. 이는 잘 작성되고 업데이트 된 것으로 보입니다.AES GCM IV/nonce 사용법

나는 nonce가 가능한 유일 할 것이고,이 수업의 작동 방식을 이해하고 있는지 확인하고 싶습니다.

과거에 IV를 사용했을 때 CBC 모드에서 나중에 암호 해독을 위해 저장해야했지만 첨부 된 예에서는 IV (nonce)가 저장되지 않습니다.

cipherReader.ReadBytes(NonceBitSize/8) 

을 아니면 내가 뭔가를 놓친 거지와 IV/넌스 저장해야합니다

내 질문은 암호문의 비표 부분을 수행하고 사용하여 추출?

또한 GCM은 소금을 사용해야합니까?

답변

1

링크 된 코드 부분에서 암호 텍스트 앞에 nonce가 추가됩니다. 따라서 복구가 가능합니다. nonce를 잃으면 데이터가 손실된다는 의미입니다.

의견에서 나는 위험한 아이디어를 보았습니다. 암호로 안전한 방식으로 nonce를 생성하지 않았습니다. 그런 식으로 논스를 충돌시킬 위험이 있기 때문에 이것은 좋은 생각이 아닙니다. 불필요하게 보안을 약화시킵니다.

+0

IV가 암호로 안전해야한다는 IV와 Nonce의 일반적인 구분은 아니지만 nonce에 대한 유일한 요구 사항은 재사용하지 않는다는 것입니까? 나는. 순서가 반복되지 않는다는 것을 알고있는 순서에서 다음 번호를 취하는 것은 nonce를 사용하는 알고리즘의 보안 증명으로는 충분합니다. –

+1

@Damien_The_Unbeliever 사실입니다. 그러나이 논평은 약한 내부 상태를 가진 약한 RNG를 사용한다고 제안했다. 예를 들어, 두 개의 'System.Random' 인스턴스는 동일한 시드와 약 1/int.MaxValue 확률로 출력됩니다. 이것은 공격자가 모든 int.MaxValue 가능한 시드를 시도 할 수 있기 때문에 보안을 파괴합니다. 그러므로 나는 권하고 싶다 : 암호로 강력한 RNG를 사용하면 도움이된다. – usr

+0

게다가, CodesInChaos는 이미 주석에서 이것을 언급했고, 당신은 위험에서 코드를 무시합니다. –