2011-01-22 5 views
2

.NET Framework가 SHA1 또는 다른 알고리즘을 사용하여 ViewState를 암호화한다고 들었습니다. 그래서 내가 SHA1 암호화 및 해독 알고리즘을 내가 ViewState를 무단으로 변경할 수 있다는 것을 알고 있다면 그 알고리즘을 이해하고 해독 알고리즘을 개발하면 악의적 인 사용자가 SHA1 암호화 알고리즘을 연구하여 의미있는 viewstate를 열 것입니까? 또는 SHA1 또는 다른 알고리즘은 암호화 및 암호 해독에 임의의 트릭을 사용합니까?ASP.net ViewState 암호화 및 해독

+0

SHA1은 해시 알고리즘입니다. 대부분의 경우, viewstate가 변경되지 않았는지 확인하는 데 사용될 수 있습니다 (심지어 해시에 일부 서버 측 문자열이 해시에 포함 된 경우에만). – cHao

답변

1

암호화는 키를 의미합니다. 이 키는 서버에 보관되며 클라이언트가 볼 수없는 다른 보안 문제는 없습니다. 그 열쇠를 알지 못하면 암호화 된 viewstate를 볼 수 없으며 훨씬 적은 변경도 가능합니다.

암호화가 없어도 서버는 viewstate의 해시와 서버 만 알고있는 키를 생성하도록 지시 할 수 있습니다. 이 키를 알지 못하면 여전히 viewstate를 읽을 수는 있지만 많은 노력을 기울이지 않고도 편집 할 수는 없습니다.

이제 프레임 워크가 사용하는 암호화 또는 해시 알고리즘이 무엇이든 손쉽게 변조 할 수있는 가능성이 있습니다. 하지만 그랬다면 똑같은 알고리즘이 수십 곳의 다른 장소에서 사용될 것이기 때문에 꽤 빨리 들어봤을 것입니다. (모든 사람들이 사용하는 유명한 잘 알려진 알고리즘이 있습니다.)

짧은 버전 : 만약 당신이 변조를 막으려한다면, ASP.net에 내장 된 것들은 적절하게 구성되면 꽤 잘 작동 할 것입니다.

+0

인코딩과 암호화의 차이점은 무엇입니까? – ishagoel

+0

@ishagoel : 인코딩에는 키가 포함되지 않고 쉽게 되돌릴 수 있도록 설계되었습니다 (Base64는 인코딩의 예이며 모든 사용자가 디코딩하여 볼 수 있습니다). 암호화가 아니라 그렇게 많이 사용하십시오. 올바른 키를 가지고 있다면 되돌릴 수 있습니다. 암호화 해싱은 완전히 다른 것입니다. 뒤집을 수 없도록 설계되었습니다 *. 해시로 할 수있는 대부분의 작업은 만든 데이터를 가져 와서 원래 사용했던 것과 동일한 소금을 사용하여 다시 해시 한 다음 이미 가지고있는 해시와 비교합니다. 소금을 사용하면 조작을 막기 위해 잘 작동합니다. – cHao

+0

@well 설명! 고마워. 네 대답을 받아 들였어. 좋은 하루 보내라. – ishagoel