Programing

모호함을 통한 보안이 왜 나쁜 생각입니까?

lottogame 2020. 11. 13. 07:42
반응형

모호함을 통한 보안이 왜 나쁜 생각입니까?


최근에 모든 DB 연결이 base 64 인코딩, md5sum 및 기타 다양한 기술을 포함하여 다양한 방식으로 가려진 루틴에 의해 관리되는 시스템을 발견했습니다.

나뿐입니까, 아니면 과잉입니까? 대안은 무엇입니까?


모호함을 통한 보안은 당신의 돈을 나무 밑에 파 묻는 것입니다. 그것을 안전하게 만드는 유일한 방법은 그것이 거기에 있다는 것을 아무도 모른다는 것입니다. 진정한 보안은 금고에있는 자물쇠 나 조합 뒤에 두는 것입니다. 안전을 보장하는 이유는 당신 외에는 아무도 들어갈 수 없기 때문에 금고를 길모퉁이에 둘 수 있습니다 .

아래 댓글에서 @ ThomasPadron-McCarty가 언급했듯이 :

누군가가 암호를 발견하면 간단하게 암호를 변경할 수 있습니다. 누군가가 그 위치를 찾으면 돈을 파서 다른 곳으로 옮겨야하는데 훨씬 더 많은 작업이 필요합니다. 그리고 프로그램에서 모호한 보안을 사용하는 경우 프로그램을 다시 작성해야합니다.


모호함을 통한 보안은 종종 모호함이 주요 보안 수단으로 사용되고 있음을 암시하기 때문에 나쁘다고 할 수 있습니다. 모호함이 발견되기 전까지는 괜찮지 만 누군가 특정 모호함을 해결하면 시스템이 다시 취약 해집니다. 공격자의 지속성을 고려할 때 이는 보안이 전혀없는 것과 같습니다.

모호성은 적절한 보안 기술의 대안으로 사용해서는 안됩니다.

복사를 방지하기 위해 소스 코드를 숨기는 수단으로서의 모호함은 또 다른 주제입니다. 나는 그 주제에 차라리 분열되어 있습니다. 나는 당신이 왜 그렇게하고 싶어하는지 이해할 수 있습니다. 개인적으로 나는 그것이 원하는 상황에 처한 적이 없습니다.


모호함을 통한 보안은 흥미로운 주제입니다. 효과적인 보안의 대체품으로 (올바르게) 악성입니다. 암호화의 일반적인 원칙은 메시지를 알 수 없지만 내용은 알 수 없다는 것입니다. 암호화 알고리즘은 일반적으로 널리 게시되고 수학자에 의해 분석되며 시간이 지나면 유효성에 대한 확신이 쌓이지 만 효과가 있다는 보장은 없습니다.

어떤 사람들은 자신의 암호화 알고리즘을 숨기지 만 이는 그러한 알고리즘이 동일한 조사를 거치지 않았기 때문에 위험한 관행으로 간주됩니다. 상당한 예산과 수학자 인력을 보유한 NSA와 같은 조직 만이 이러한 접근 방식을 벗어날 수 있습니다.

최근 몇 년간 더 흥미로운 발전 중 하나는 스테 가노 그래피 의 위험 이었는데, 이는 관행이 이미지, 사운드 파일 또는 기타 매체에 메시지를 숨기는 것입니다. 스테가 분석의 가장 큰 문제는 메시지가 있는지 여부를 식별하여 모호함을 통해 보안을 만드는 것입니다.

작년에 저는 연구원들이 스테 가노 그래피 채널의 용량을 계산 한다는 이야기를 보았습니다. 하지만 이것에 대해 정말 흥미로운 점은 다음과 같습니다.

이러한 방식으로 스테고 채널을 연구하면 반 직관적 인 결과가 발생합니다. 예를 들어 특정 상황에서 숨겨진 데이터를 찾는 알고리즘의 수를 두 배로 늘리면 스테 가노 그래피 채널의 용량이 증가 할 수 있습니다.

즉, 메시지를 식별하는 데 사용하는 알고리즘이 많을수록 효과가 떨어 지므로 모호함을 통한 보안에 대한 일반적인 비판에 어긋납니다.

흥미로운 것들.


이것이 나쁜 생각 인 주된 이유는 근본적인 문제를 해결하지 않고 단지 숨기려고하기 때문입니다. 조만간 문제가 발견 될 것입니다.

또한 추가 암호화는 추가 오버 헤드를 발생시킵니다.

마지막으로 (체크섬 사용과 같은) 과도한 모호성은 유지 관리를 악몽으로 만듭니다.

더 나은 보안 대안은 인젝션 공격을 방지하기 위해 강제 입력과 같은 코드의 잠재적 인 약점을 제거하는 것입니다.


한 가지 요소는 보안 침해로부터 복구 할 수있는 능력입니다. 누군가 귀하의 암호를 발견하면 재설정하십시오. 그러나 누군가 당신의 모호한 계획을 폭로하면 당신은 푹 빠져 있습니다.


이 모든 사람들이 동의하는 것처럼 모호함을 사용하는 것은 보안이 아니라 시간을 사는 것입니다. 괜찮은 보안 시스템을 구현 한 다음 모호한 레이어를 추가하는 것이 여전히 유용합니다. 내일 누군가가 ssh 서비스에서 즉시 패치 할 수없는 탁월한 균열 / 구멍을 발견했다고 가정 해 보겠습니다.

원칙적으로 저는 사내에서 구현했습니다 ... 모든 공용 서버는 필요한 포트 (http / https) 만 노출하고 그 이상은 없습니다. 그런 다음 하나의 공용 서버는 모호한 높은 번호의 포트에서 인터넷에 ssh를 노출하고 포트 검색 트리거 설정을 통해이를 찾으려고하는 모든 IP를 차단합니다.

모호성은 보안 세계에서 그 자리를 차지하지만 첫 번째이자 마지막 방어선은 아닙니다. 위의 예에서는 비표준 ssh 서비스 포트를 검색하는 데 시간을 소비하지 않기 때문에 ssh에 대한 스크립트 / 봇 공격이 발생하지 않습니다. 보안이 개입하여 차단합니다.


사용 가능한 모든 형태의 보안은 실제로 모호성을 통한 보안 형태입니다. 각 방법은 복잡성이 증가하고 더 나은 보안을 제공하지만 모두 암호화 된 데이터를 복원하기 위해 일부 알고리즘과 하나 이상의 키에 의존합니다. 대부분의 경우 "모호함을 통한 보안"은 누군가가 가장 간단하고 해킹하기 쉬운 알고리즘 중 하나를 선택할 때입니다.

캐릭터 이동과 같은 알고리즘은 구현하기 쉽고 크랙하기 쉽기 때문에 나쁜 생각입니다. 아무것도없는 것보다 낫지 만, 기껏해야 데이터를 쉽게 읽을 수 없게하는 것을 멈출뿐입니다.

인터넷에는 사용 가능한 모든 암호화 방법과 강점과 약점에 대해 교육하는 데 사용할 수있는 훌륭한 리소스가 있습니다.


보안은 사람들이 아는 것, 자신이 누구인지, 무엇을 가지고 있는지에 따라 사람들을 출입시키는 것입니다. 현재 생체 인식은 당신이 누구인지 찾는 데 좋지 않으며 항상 문제가있을 것입니다 (심각한 사고를당한 사람의 지문 판독기, 위조 된 지문 등). 따라서 실제로 보안의 대부분은 무언가를 난독 화하는 것입니다.

좋은 보안은 비밀로 유지해야하는 물건을 최소한으로 유지하는 것입니다. 적절하게 암호화 된 AES 채널이있는 경우 악의적 인 사람이 암호를 제외한 모든 채널을 볼 수 있도록 허용하면 안전합니다. 즉, 공격 할 수있는 영역이 훨씬 더 작으며 암호 보안에 집중할 수 있습니다. (사소한 것은 아닙니다.)

In order to do that, you have to have confidence in everything but the password. This normally means using industry-standard crypto that numerous experts have looked at. Anybody can create a cipher they can't break, but not everybody can make a cipher Bruce Schneier can't break. Since there's a thorough lack of theoretical foundations for cipher security, the security of a cipher is determined by having a lot of very smart and knowledgeable people try to come up with attacks, even if they're not practical (attacks on ciphers always get better, never worse). This means the crypto algorithm needs to be widely known. I have very strong confidence in the Advanced Encryption Standard, and almost none in a proprietary algorithm Joe wrote and obfuscated.

However, there's been problems with implementations of crypto algorithms. It's easy to inadvertantly leave holes whereby the key can be found, or other mischief done. It happened with an alternate signature field for PGP, and weaknesses with SSL implemented on Debian Linux. It's even happened to OpenBSD, which is probably the most secure operating system readily available (I think it's up to two exploits in ten years). Therefore, these should be done by a reputable company, and I'd feel better if the implementations were open source. (Closed source won't stop a determined attacker, but it'll make it harder for random good guys to find holes to be closed.)

Therefore, if I wanted security, I'd try to have my system as reliable as possible, which means as open as possible except for the password.

Layering security by obscurity on top of an already secure system might help some, but if the system's secure it won't be necessary, and if it's insecure the best thing is to make it secure. Think of obscurity like the less reputable forms of "alternative medicine" - it is very unlikely to help much, and while it's unlikely to hurt much by itself it may make the patient less likely to see a competent doctor or computer security specialist, whichever.

Lastly, I'd like to make a completely unsolicited and disinterested plug for Bruce Schneier's blog, as nothing more than an interested reader. I've learned a lot about security from it.


One of the best ways of evaluating, testing or improving a security product is to have it banged on by a large, clever peer group.

Products that rely for their security on being a "black box" can't have the benefit of this kind of test. Of course, being a "black box" always invites the suspicion (often justified) that they wouldn't stand up to that kind of scrutiny anyway.


I argued in one case that password protection is really security through obscurity. The only security I can think of that wouldn't be STO is some sort of biometric security.

Besides that bit of semantics and nit picking, STO (Security through obscurity) is obviously bad in any case where you need real security. However, there might be cases where it doesn't matter. I'll often XOR pad a text file i don't want anyone reading. But I don't really care if they do, i'd just prefer that it not be read. In that case, it doesn't matter, and an XOR pad is a perfect example of an easy to find out STO.


It is almost never a good idea. It is the same to say, is it a good idea to drive without seatbelt? Of course you can find some cases where it fits, but the anwser due to experience seems obvious.


Weak encryption will only deter the least motivated hackers, so it isn't valueless, it just isn't very valuable, especially when strong encryption, like AES, is available.

Security through obscurity is based on the assumption that you are smart and your users are stupid. If that assumption is based on arrogance, and not empirical data, then your users- and hackers-- will determine how to invoke the hidden method, bring up the unlinked page, decompile and extract the plain text password from the .dll, etc.

That said, providing comprehensive meta-data to users is not a good idea, and obscuring is perfectly valid technique as long as you back it up with encryption, authorization, authentication and all those other principles of security.


If the OS is Windows, look at using the Data Protection API (DPAPI). It is not security by obscurity, and is a good way to store login credentials for an unattended process. As pretty much everyone is saying here, security through obscurity doesn't give you much protection.

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

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


The one point I have to add which hasn't been touched on yet is the incredible ability of the internet to smash security through obscurity.

As has been shown time and time again, if your only defense is that "nobody knows the back door/bug/exploit is there", then all it takes is for one person to stumble across it and, within minutes, hundreds of people will know. The next day, pretty much everyone who wants to know, will. Ouch.

참고URL : https://stackoverflow.com/questions/533965/why-is-security-through-obscurity-a-bad-idea

반응형