What are the main advantages and disadvantages of webid compared to browserid? What are the main advantages and disadvantages of webid compared to browserid?

This question is inspired by this answer which got a number of upvotes despite being very vague on the topic of that question.

Webid is basically a fancy name for SSL client side certificates with a profile url in it.

Some topics:

Hows are compromised keys invalidated?
How does multi device/browser support work? If those result in multiple public keys, how are they linked? Is the linking required to be done for every consumer?
How is support in current browsers? Is the user interface easy enough to be understood by average users (including creation, selection, revocation from the current computer, and global revocation of an identity)?
Is there a centralized organisations which can track users? Are there decentralized organisations which can track users? How detailed can the tracking be?
How easy is it for a consumer to get the implementation right? (Read how likely is it that a lazy implementation contains security issues?)
How does it work on Internet terminals on which you don't have permissions to install software on (assuming you accept the risk of it being compromised)?

note: A lot of these questions on the WebID side are answered in the Foaf+ssl FAQ.

BrowserID versus WebID: is the distinction real?

BrowserId (detailed spec) is an experiment at Mozilla labs, is very new, not fully defined (exactly how the e-mail servers public key should be found is not specified for example) and not completely implemented (it requires browser support to be really distributed). The WebId Protocol is being developed in a W3C Incubator Group, building on the protocol formerly known as foaf+ssl. So it is also evolving. Both of these protocols were presented at the W3C Identity in the Browser Workshop at Mozilla's office in California this May 2011

Furthermore it is not clear that both projects are incompatible - or rather it is only a question of semantics if they are. One can distinguish two dimensions in which they differ: an authentication and a serialisation one.

identity verification: certificate signature verification (BrowserId) or subject public key verification (WebId/foaf+ssl)
certificate format: JSON (BrowserId) or X509 (foaf+ssl) formats for certificates

Currently BrowserId has been defined by the pair (certificate signature verification, JSON certificate) and WebID/foaf+ssl by the pair (user public key verification, X509 cert) as described in this e-mail

But there is no logical reason why one could not also have the other two combinations:

(certificate signature verification, X509 cert) - ie a BrowserId auth done with TLS
(user public key verifiction, JSON cert) - ie WebID auth done with JSON certificates.

Or one could also have both strategies for each certificate type. That is  one could verify the certificate signature first and then if needed also verify the WebID. This could be useful to get more information about the user (a RESTful attribute exchange) and it could also be useful to check that the key had not been revoked.

So the question that we are dealing with here is really: what are the advantages and disadvantages of the "pure" BrowserId authentication versus a "pure" WebID - known also as foaf+ssl - authentication. Please keep that in mind for the rest of this answer.

Comparing Pure BrowserId and WebId/foaf+ssl

Answer stating the way things are in July 2011.

Hows are compromised keys invalidated?

In WebID they are removed from the Profile page. A good user interface would make this a one click affair. The user would go to his social network after logging in - perhaps with a one time key sent to him via cell phone - and remove the compromised public key, which he could recognise by name, the computer he  generated it on, or some other other way that makes things easy to remember.

BrowserId currently uses a JSON certificate with a validity period, which the protocol currently desires to restrict to being very short term. The reason the |(JSON) certificate needs to be very short lived is because the relying party in the current BrowserID spec can only verify the cert by checking its signature with the public key of the e-mail provider. The longer the certificate is valid for the more likely it is that something could have gone wrong in the meanting - for example the users computer could have been stolen.

But if BrowserId were to be combined with WebID (ie: the JSON certificate were to contain an http(s) Subject Name) then longer lasting keys could be used: Relying Parties could verify that keys had not been compromised by checking the user's public profile.

How does multi device browser support work?

Both WebID and BrowserId can have multiple public keys.

With WebID/foaf+ssl each public key gets published in the profile page, as can be seen in "WebId creation and use in 4 minutes" video. Each device/browser can have its own certificate for the same WebID. Authentication of the user is done by verifying that the public key in the certificate matches one of the public keys publised on the WebID profile page.

BrowserId will save the key in the browser/OS keychain once that part is integrated in the browser. The Relying Party verifies a certificate by checking that the Issuer really signed the certificate, not by a byte-by-byte comparison of certificates. So any certificate can be used, as long as the signature is authentic.

If those result in multiple public keys, how are they linked?

In BrowserId the public key of the user's certificate is only used to verify that the client has the corresponding private key in the authentication process. There is no linking going on.

With WebID the different public keys can be published on the Profile page and can this be linked there. Some of those keys could be described as long lasting and so also used for signing and decryption.

Is the linking required to be done for every consumer?

In pure WebID every profile needs to publish every public key. The profile may be nothing more than the publication of that key.

BrowserID only requires the e-mail server to publish its public key.

How is support in current browsers?

All desktop browsers support X509 certificate selection since 1998 or so. (with a few exceptions like early versions of Chrome) Cell phones are more patchy. wiki page

For BrowserId to work in a decentralised way it needs browser support. This is currently missing, but it has a chance of being deployed as it has support at Mozilla labs.

Is the user interface easy enough to be understood by average users (including creation, selection, revocation from the current computer, and global revocation of an identity)?

Creation: In both this is a one click affair. With WebID X509 certificates can be generated using the html5 keygen element, and an IE ActiveX workaround. The user just needs to click  a big button - see the WebID & Browsers video or the above "webId creation and use" one. User Interfaces could be improved of course with better web designers.
Selection:

WebId: Selection is excellent on Chrome, Safari, Opera and IE but ugly - though not impossible to use in Firefox. Why they don't bother to fix that is a mystery. Please vote up bug 396441 - Improve SSL client-authentication UI. There is a lot that can be done to improve the UI, but imperfect browsers has never stopped creative web people from using it creatively.
BrowerId: selection can be designed by the web site, though this may create more security risks, and will not provide a consistent authentication UI across sites (hence a possible physching risk)

Revocation from current computer

WebID: removing of X509 certificates from the current computer is something that should be avoided, and certainly the UI for that should be improved.
BrowserId: revocation from the current computer is not defined yet as it has not been implemented.

Global revocation of identity

WebID: this just requires the Profile Page to return one of the HTTP error codes if the identity needs to be completely removed, or an HTTP redirect if the profile moves, or a semantic identity relation between the old and the new identity, or just the removal of one of the public keys from the profile if a certificate has been stolen.
BrowserId protects itself with short lived (JSON based) certificates

Is there a centralized organisations which can track users?

WebID: it can be completely decentralised. You could place your WebId on your FreedomBox and so could all your friends. You could also place it on some anonymous server if you trusted that service.
BrowserId: when the JSON certificate store is integrated with the browser - and one no longer needs to use browserid.org then each e-mail provider could participate. Since Freedom Boxes can also be e-mail providers they can also be authorities.

Are there decentralized organisations which can track users?

Examples of what that would look like?

How detailed can the tracking be?

With BrowserId the Relying Party fetches the public key of the e-mail provider. All that provider should know is that some server made a GET request. This is something that may be worth integrating into WebID. On the other hand the Relying Party ends up with an e-mail address that could be misused for spamming.

With WebID - a request by the Relying party is made on the Profile Page. This request could be done anonymously, via a proxy or even an ip-proxy.

How easy is it for a consumer to get the implementation right?

WebID over TLS requires more to set up for the relying party, including an SSL server. That server should not do the usual authentication of client side certificates. On the other hand it is more secure, since it forces TLS. There are a lot of TLS tools that have been tested over time, and that keep being tested.

BrowserId does not require TLS on the Relying Party so it is easier to setup. On the other hand there are man in the middle attacks possible if TLS is not set up.

( But at this point one should notice that there is no deep reason why BrowserID and WebID cannot both use the new proposed JSON certificate format and combine their strengths. It is quite possible to do the BrowserId )

How does it work on Internet terminals on which you don't have permissions to install software on (assuming you accept the risk of it being compromised)?

Internet terminals are always dangerous. Only crypto keys could make the risk acceptable. By completely placing the key in hardware the risk that the private key be stolen is removed.  see WebId and the Crypto Stick. Otherwise very short lived keys are a damage limitation solution if either WebID or BrowserId has to be used. Both protocols can work with short term keys.

Perhaps OpenId is better here combined with one time passwords passed by a cell phone.


SIEM and Windows Event Logs When considering what Windows event logs to incorporate into a SIEM solution, should I be looking at just the Security event logs, or all categories of event log?  How useful are the other categories in detecting and responding to security incidents?

In this day and age most commercial SIEM/SEIM/SIM/SEM/SEEM/CSIM/SCIM/SIM products ship with a large multitude of so called "canned reports". In general each of these reports will be designed to look at specific logs from specific types of systems and process those. For example, given a "Windows - Failed Authentication Attemps" report, one would assume that the EventIDs that map back to authentication events would be processed looking for FAILURE. Whereas a "Windows - Firewall Blocks" would look for EventIDs that map back to the firewall subsystem would be processed.

The real questions you should be asking yourself are these;

"What do we want to get out of a SIEM?"
"What do I want to be alerted on?"
"What reports would I like to see?"

The answer to question #1 is really all about framing the situation in your own head. So you can keep it in mind when thinking about the other 2. Once you have answered those questions you can look at the SIEM product you have and determine, "What data is required to produce that information?"

Keep in mind that his can also vary wildly depending on the specific log sources as well. For instance, you may decide that a web server that serves nothing except the contact information for a department only needs to send authentication and IIS logs, whereas you may want all logs from your domain controllers. This can also be greatly influenced by any licensing restrictions as many commercial products will license based on number of log sources and/or events per second (EPS).

Unfortunately, there is no short, clear cut answer. It all depends on what you want, and what your solution is capable of.


Different virus types of testing on a Windows VM I am a masters student in computer science, and I need to do a project with virtual machine (host and guest both are Windows 10). The project is:

Describe and experiment different methods to clean up viruses in a desktop environment of your choice.
This means that you need to infect a (virtual) system and then clean it up with tools and methods you find on the Internet. Use different viruses to experiment these.

After researching for days, the test viruses that I have already found, (mostly here) are almost the same type and dealing with them is quite simple; I have not found an answer yet for my specific question:
Where may I find test viruses with different types, such as the ones mentioned in the Wikipedia page?

Operations and functions
Stealth strategies
Vulnerabilities and infection vectors
Countermeasures

what I specifically need, is a set of test viruses with diverse functions, which I can test and verify their functions and then remove them on Virtual machine.

If you can't find any compex viruses to match your requirements, why don't you create some? Use leading malware creation programs and techniques by yourself! For example, you can use metasploit framework and many other tools to create a bunch of different well-know types of viruses, encode them, obfuscate them, pack them etc. Also, try to inject malicious code in legit applications. Creating a small fleet of custom viruses, using different techniques to trick anti-virus programs, will give you both better knowledge of malwares and far more superior results on your research.


Are SHA-2 certificates considered obsolete, or current? A guide on this site on how to make a decent Certificate Signing Request (CSR) says that I should be using SHA-2 certificates to secure a HTTPS webserver.

Are SHA-2 certificates considered obsolete, or current for TLS/SSL website certificates (as of 20th November 2015)?

If they are, what should I be using to secure TLS/SSL/HTTPS on my Apache2 webserver instead (as of 20th November 2015)?

And where can I find a authoritative source of current information concerning obsoletions of this sort?

"SHA-2" is the traditional codename for a family of six functions that includes SHA-256 and SHA-512. These functions are considered completely fine and current and non-obsolete.

There is a newer family of functions called SHA-3, but it has been formally defined only very recently, and nobody really supports them yet. Moreover, SHA-3 is not formally defined as a replacement for SHA-2, but as an alternative.

All the current fuss is about an older function called "SHA-1", not "SHA-2" (and most of the panic is greatly exaggerated).


Better techniques than url parameter encryption I'm a programmer working on an application where the only choice/vs/deadline was to implement symmetric encryption on url parameter values.  The data is insensitive in nature, but we needed to prevent sales agents from peeking on each other's leads.  (Keys are generated on session creation and are cryptographically strong.)  Sessions are expected to end frequently.

The role hierarchy was Manager--> Supervisor--> Agents.  The data structures don't currently account for these roles in a way to strictly enforce who can see what.  Getting this information from the database was NOT anywhere close to straightforward.  (Recursive Database.)

I know that this technique is way down on the list as a defence against parameter manipulation.  What would have been a better technique?

Constraints:
Role-based checking is not an option.

[Additional information]
The urls built and sent to the client before I made any changes looked like:

https://www.example.com/agent/?producerId=12345

The specific threat surface here is parameter manipulation against ?agentId=12345.
Agent ids are assigned uniquely to each agent.  So if Agent A wants to look at Agent B's stats, he could have entered agentId=22222 in order to look at that agent's quotes and current sales statistics.

Again, Role-Based checking was not an option for me:  I was unable to make changes to the database OR the persistence tier.

My solution was to use a session-created encryption key (using Java's KeyGenerator class) and encrypting the outbound urls sent to the client.  So now, the url looks like:

https://www.example.com/agent/?producerId=<ciphertext>

Now, if someone tries agentId=22222, the server will decrypt what it thinks is ciphertext and will ultimately create an invalid character sequence.

(This leaves open the possibility that an existing agentId could be found, but quite unlikely that it would be relevant to the person performing the attack.

I will stress that this question isn't about optimal security (which would be role-based checking to ensure resource access) and about trying to squeeze some security in a grey area.

The parameter encryption solution here was recommended to me by one of our security guys.  I got one takeaway I hadn't considered on this solution--broken urls--and will be using that as well as the maintenance issue created by this solution to argue for the time to enforce the access rules in a less stopgap fashion.

Good question!  Thanks for elaborating on the threat you are trying to defend against.  I have edited my answer accordingly.

Summary. Your primary defense should be access control.  You need to limit which users can view which pages.  Details below.

Access control in web applications. What you need to do is check that the user is authorized to access the data you're going to show on a page, before allowing them to see that data.  This basically comes down to access control: you want controls that limit which users can view which data, based upon some authorization policy.

It sounds like you have a sequence of pages, one for each agent:

http://www.example.com/agent/?producerId=12345
http://www.example.com/agent/?producerId=12346
http://www.example.com/agent/?producerId=12347
...

where the producerIds (agentIds) are potentially guessable or predictable.  You want to ensure that agent 12345 can view http://www.example.com/agent/?producerId=12345 but not any of the other pages.  OK.

This is a bog-standard situation, and the bog-standard defense is: access control.

To implement access control, you code the web application so that each page checks whether the user is authorized to view that page before allowing the user to view that page.  For instance, for the page listed above, the logic implementing that page would check the identity of the currently-logged in user.  If the id of the logged-in user matches the producerId of the page parameter, then you show them the information.  If the id does not match, you do not show them the information: if it is some other user, you show them an error page (with information about how to get access), or if the user has not logged in yet, you redirect them to a login page.

This won't break bookmarks.  It does not require changes to the database, changes to the persistence layer, or role-based access control.  It does require you to have a way to look up the identity of the currently logged-in user and associate that with their provider ID.  Also, if you want to allow manager and supervisors to see the data for all other agents, then you need a way to look up the currently logged-in user and determine whether they are a manager or supervisor or not.  If you want to allow only the agent's manager/supervisor to view their page (not all other managers/supervisors), then you need to have a way to determine the manager/supervisor of each agent.  These are pretty basic, minimal requirements; it is hard to see how you could avoid them.

As @symbcbean properly points out, this is a very common error frequently found in web applications.  A typical example might be a site that uses some guessable parameter value to identify a resource, and does not adequately authenticate the user.  For instance, suppose orders are assigned a sequential order number:

https://www.example.com/show_order.php?id=1234
https://www.example.com/show_order.php?id=1235
https://www.example.com/show_order.php?id=1236
...

and suppose that anyone who knows the URL can view the order.  That would be bad, because it means that anyone who knows (or guesses) the order number can view the order, even if they are not authorized to do so.  This is one of OWASP's Top Ten web application security risks: Insecure Direct Object References.  For more information, I recommend reading the resources available on OWASP.  OWASP has lots of great resources on web application security.

Other comments. Others have suggested using SSL.  While that will not prevent parameter tampering, it is a general good security practice that defends against other kinds of problems.  Using SSL is straightforward: just configure your website to use https, instead of http (and ideally, enable HSTS and set the secure bit on all cookies).

Also, it is often better to avoid storing confidential information in URL parameters, all else being equal.  You can store the confidential information in session state or in the database.


How safe are networking ACLs based on IP-address? As far as I know, a determined attacker would have no major issues in hacking the IP address of the packets contained by his (web) request.

Therefore, I cannot see how an Access Control List (such as the ones listed below) might improve the security of a server, as determined "users" can simply bypass the restriction.

Azure ACL

IIS IP security

Thank you :)

IP spoofing (what you incorrectly call "hacking the IP address of the packets") isn't easy for TCP because you should also be able to receive the response even before being able to send actual application data (like an HTTP request).

IP-based restrictions should never be the only line of defense, but it's a good idea to still use it to lock down administrative accounts when you only plan to use them from the same network location; in the unfortunate event when your credentials are compromised the attacker will also need to somehow get access to that trusted location (by compromising that machine or a router in its path to your locked down system so he can appear to come from that location and receive the reply packets) to be able to use it as a pivot to log into the locked down system using those credentials


Can my online activity be detected with this set up? Here's my situation. In the past several months, I've had my credit card information stolen twice and Instagram account hacked into. I'm hoping this is just bad luck, but I'm a little paranoid now because of how frequent this has occurred in recent months. It got me thinking about my home network setup.

I frequently work from home with a company computer. The computer is connected to my company network via a secure connection using an Aruba network device (which has hardwire and wireless capability). This device is hard wire connected to my personal home router, which in turn is hardwire connected to my personal home modem.

I rarely if ever use my work computer for personal web browsing, online purchases, social media, etc. Obviously, however, I use my personal computer and phone to connect to my personal WiFi network for these things.

With this work/home setup, is it any way possible that someone on the other end of my work network can see my online activity and/or retrieve sensitive information when I'm using my personal devices on my personal network?

work computer --> Aruba --> home router --> home modem
personal devices ------------^

It is not possible to tell with the information given. The real question becomes how that Aruba device works as Shroeder mentions. My instinct is that no, someone from your work network can not connect to anything on your home network that is not plugged in or logged into that Aruba device.

That said, run some tests:

Log into everything as you tend to use it. Reach out to a friend at work for help with this as you need someone on the work network.

1: Try to ping your friends computer. Can you see it on the corporate network? You can do this by running the command ipconfig on their computer to get the IP address and then typing "ping [ip address]" on your computer at home and seeing if it succeeds.

2: Try the same thing from the other direction. Can your friend ping your computer?

3: Find the IP address of your home computer that is not plugged into the Aruba. Can you ping it? If not, that's a good sign.

4: If you can ping it, can your work friend also ping it?

5:Find the IP of your home router (probably 192.168.0.1) and ping it from your work laptop. Can you reach it?

If you and your friend can't ping your home computer, you should be fine as far as a work "pipe" into your network. You probably have different subnets (work vs. home) and won't be able to route between them anyway unless Aruba is handling that somehow. If somehow your work friend can reach your home router (even if they can't reach anything else) they could probably exploit it and add a route to your network. Definitely make sure you are not using factory defaults on your home router and that "remote access from the internet" is disabled on your home router.


Is this implementation of PBKDF2 correct? I am preparing for a presentation and I just want to double check that I've got it right:

PBKDF2 is:

for (0,4096)
{
     data1 = HMACSHA1(data1, data2);
     data2 = HMACSHA1(data2, data1);
}
where data1 and data2 are pass and respectively salt and
HMACSHA1 = SHA1(salt+SHA1(pass+salt))

Is this correct?

Your loop is wrong in two aspects.

The length of the DK is also important
The password is reused

According to the wiki page (or you can go to the RFC if you'd like):

  DK = PBKDF2(PRF, Password, Salt, c, dkLen)

  where:

  PRF is a pseudorandom function of two parameters with output length hLen (e.g. a keyed HMAC)

  ...

  Each hLen-bit block Ti of derived key DK, is computed as follows:

  DK = T1 || T2 || ... || Tdklen/hlen

  Ti = F(Password, Salt, c, i)

  F(Password, Salt, c, i) = U1 ^ U2 ^ ... ^ Uc

  where:

  U1 = PRF(Password, Salt || INT_32_BE(i))

  U2 = PRF(Password, U1)

  ...

  Uc = PRF(Password, Uc-1)

WPA2 uses a 256 bits DK (DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)), so the process needs two blocks (Ti) to reach this since SHA1 is only 160 bits long. Furthermore, the iteration described here uses the original password for each iteration i.e. Ui = PRF(Password, Ui-1), or you are reusing modified password on each iteration in your own loop.

For a simplified version for WPA2 I would write:

DK = B1 || trunc(B2)
B1 = F(Password, SSID || INT(1))
B2 = F(Password, SSID || INT(2))

where F(P, S) is the function

for(0, 4096) {
    U = HMAC-SHA1(P, S)
    S = U
}


HP ProtectSmart In A Domain? All of our HP PCs come with this software pre-installed, I'm a bit inclined to outright remove it because:

Credential manager stores passwords by default (this has lead to user confusion, plus storing passwords drives me crazy from a security standpoint, especially when I don't know how these passwords are secured at the application later [automatically can use them when the user gets logged in, resetting their password doesn't seem to invalidate saved passwords, that worries me]).
All files should be stored on the server, hard drive encryption is useless to me. Furthermore it works with your Windows log in (they don't really go into how this works beyond that), which again, makes me nervous that it's fairly easy to circumvent if you know what you're doing. The idea is we can start storing more on laptops because we can encrypt the drive, I would rather we not from both a security and network structure standpoint.
BIOS ("pre boot security"), is just that, resetting the BIOS boot password, not really a huge deal, can be circumvented if the laptop is stolen, and doesn't require HP ProtectSmart to set it.
Sparekeys are just security holes.

These are all set by the end user on log in, and can be changed by them at a later date (so I can't make a policy to lock it down to hard drive encryption only, they can always override and create sparekeys and other terrible things), in addition it asks for the user to put in their password again upon primary configuration, so I'm pretty sure it's storing their credentials somewhere too (ugh).

To me, it seems like consumer software or software sold to business customers that don't know any better, my boss insists it's enterprise level software and wants to implement it, but I can't imagine a security conscious business running with this (BTW: we have to abide by PCI compliance). They give me a very rudimentary administrator panel, which I guess I can individually set these up by hand, but that is a lot of machines and any changes (say, key rotation? If I can even do this!) involves basically stupid amounts of work without the lack of a central management server.

Can anyone confirm/deny my suspicions about this?

HP software is klutzy to say the least.  Enterprise-level is just a catchphrase they used to sell it to your boss.  They will try to upgrade you to their management console products if you contact them about managing your end users in any way.  That might not be a bad thing if your boss is not too cheap to shell out more dough.
You might want to apply strategic pressure and make yourself an administrative way out logically by attempting to obtain other HP management software (it is 2am the intel remote management chip on the motherboard name escapes me).  You just have to cover your ass on this since for example the HP blade server as bad ass as it is even has security issues.  Yes I am reasonably sure if HP ties into your windows authentication it is a crappy implementationbecause even SMS has tricks to screwing up a profile come to think of it so make sure you document via email every single issue you are remotely concerned about.
The mcaffee software mentioned above is not going to solve your problem unless you get rid of a lot of the HP specific utilities shoved up in that OS as it stands today.  If you are in a small to midsized company you are going to spend a lot just in reconfiguration time alone.  ALL security vendors out there will say they are going to bring you into compliance, the reality is you do not need them unless you are in a time crunch because MS has spent a lot of time on this plus there are too many consulting companies dying on the vine right now.  Let your company pay you to do what they are going to outsource instead -- show them two machines clean and with your configuration only and see whether they willmgo with it or not.  Took two years of losing data and proprietary info to salesman and field engineer stupidity and a lawsuit over something we could not prove we never had in the first place before we took action.  Long story if I can elaborate further to back you up on something let me know going to konk out now...
   Hope that helps,
       iceberg


Can any private key information be exposed when signing an email? So I know that PGP encrypted email can be vulnerable to a known-plaintext attack from a known, consistant email footer or greeting (“Hello”, “Yours truly, xxx”, etc), but does the same thing apply to PGP signatures on an email?

If I always PGP sign my emails, and all my emails end with “From, [name]”, can any of my secret PGP information be exposed?

Short answer: no.

Longer answer: If your PGP encryption is vulnerable to known-plaintext attacks, then that means PGP is using an old broken cipher. Modern, non-broken crypto (with updated software) will not have vulnerabilities like this. You can encrypt or sign whatever you want and no secret key information will be revealed.


Why are data breaches like the one at Quora considered so bad? Today, I read this article that said that some hacker stole personal information of 100 million users of Quora — which allegedly is half of the total user base of Quora. This is kind of like when Facebook users' data got stolen a couple of years ago.

I have used Quora for maybe 3 years. I know that our information got stolen. But what is the big problem about that? There is no big change in my life. And (maybe) so for other people.

I am not that paranoid about the security awareness, so I don't know what is so dangerous about this kind of accident. Is the theft of personal information really such a bad accident?

Putting privacy concerns aside (as it sounds like you don't particularly care), having detailed personal information about you makes at least four things easier:

Identity theft, opening new accounts in your name with your money and/or credit on the line
Guessing password reset/security questions or impersonating you to customer service, to take over your accounts
Crafting targeted phishing emails (a.k.a. "spear phishing")
Blackmail/harassment/threats


Is there an added risk in passing session token in message body? We're working on a mobile app and are using session tokens for authentication with a back end server. Is it a security risk to pass the session token from the client to the server in the body? This isn't for authentication, but more so just because of something we're trying to accomplish in the application. The tokens are already passed around in the headers so if someone was sniffing our traffic, then having it in the body doesn't seem like any extra risk- or am I missing something?

You're right in assuming that there won't be any extra risk sending the token in the body when you're already sending it in the headers. I question why you would need to send the token in two places, but as far as sniffing traffic it won't be any easier for an attacker to read body traffic than header traffic. If you're sending the traffic over HTTP as opposed to HTTPS you're vulnerable to a man in the middle attack either way.


Security disadvantages of sending a password with GET? Other than over your shoulder peeping, if a password is sent using GET in plaintext over an encrypted connection, are there any extra security disadvantages or is it the same as POST?

No confidential data should ever be sent via GET.

The data may be leaked or stored by:

referers if you link to a different page after a login
your server logs which is an issue if these logs are ever available, for example via LFI, wrong server configurations, backups, etc.
browser histories which is an issue if multiple people use the same browser - eg in companies or in public libraries -, or even by other websites if history sniffing is an option.
proxy servers that can decrypt the requests
users sharing links

The CWE for this issue would be CWE-598.


Can we hide a constant hashed key used for AES encryption of a password? Are there any methods in java to hide a constant hashed key which is embedded in a class?
FYI, the key is used to AES encrypt a password used to authenticate a Web Service which would only take a plain text.

No. If you embed something in source code, it is available to anyone with the source code.

Under most circumstances, you want each system to have its own keys, so that two users of your software cannot attack each other. In a hosted environment, you want separation of duties between dev an operations - dev should not have the keys that operations uses to protect data, since dev's job description is to write the code not be custodians for the data.

Rarely, you will want to embed your public key to ensure that your software can communicate with your server. This is a little more flexible without hard coding it, and easier to change if not hard coded.

All that said, if you want ask a different question that talks about the problem you are trying to solve instead of just how you are trying to solve it, we can probably give you some better advice.

Since you have changed your question and have added that you are trying to send a password to a web service, I have the following advice: don't do it that way. You are inventing your own crypto protocol to authenticate, and you are planning to only protect the password. If you can use TLS, use that. If you are using SOAP, you can use WS-Security. Your custom protocol doesn't protect against password replay (I don't need the cleartext password, just the encrypted password that someone else sent), doesn't protect other messages sent to the server, and is decryptable by anyone with a copy o f your client software. And don't try to fix your protocol - there are gads of books written about how subtle flaws can destroy the security of a network protocol, and if you try to fix yours, you'll only wind up reinventing TLS (if you're lucky)


Strange bug in ModSecurity with the rule 950901 I have a classic ModSecurity configuration (apt-get...)

SecRuleEngine Off

SecPcreMatchLimit 1000
SecPcreMatchLimitRecursion 1000

SecAction "phase:1,t:none,nolog,pass, \
setvar:'tx.allowed_methods=GET HEAD POST OPTIONS', \
setvar:'tx.allowed_request_content_type=application/x-www-form-urlencoded multipart/form-data text/xml application/xml application/x-amf', \
setvar:'tx.allowed_http_versions=HTTP/0.9 HTTP/1.0 HTTP/1.1', \
setvar:'tx.restricted_extensions=.asa/ .asax/ .ascx/ .axd/ .backup/ .bak/ .bat/ .cdx/ .cer/ .cfg/ .cmd/ .com/ .config/ .conf/ .cs/ .csproj/ .csr/ .dat/ .db/ .dbf/ .dll/ .dos/ .htr/ .htw/ .ida/ .idc/ .idq/ .inc/ .ini/ .key/ .licx/ .lnk/ .log/ .mdb/ .old/ .pass/ .pdb/ .pol/ .printer/ .pwd/ .resources/ .resx/ .sql/ .sys/ .vb/ .vbs/ .vbproj/ .vsdisco/ .webinfo/ .xsd/ .xsx/', \
setvar:'tx.restricted_headers=/Proxy-Connection/ /Lock-Token/ /Content-Range/ /Translate/ /via/ /if/'"

And I get this error:

--70244300-A--
[04/Jun/2014:17:14:29 +0200] U4831X8AAAEAAFDVH5IAAAAS X.X.X.X 58274 Y.Y.Y.Y 80
--70244300-B--
GET /images/login_bg.jpg HTTP/1.1
Host: myHost.local
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://myHost.local/css/main.css
Cookie: symfony=9a09bb2c53df046aae0ed80c501c9585
Connection: keep-alive

--70244300-F--
HTTP/1.1 200 OK
Last-Modified: Wed, 05 Nov 2008 14:54:40 GMT
Accept-Ranges: bytes
Content-Length: 31429
Content-Type: image/jpeg
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: sameorigin
Connection: close

--70244300-E--

--70244300-H--
Message: Rule 7f36b7b712b0 [id "950901"][file "/etc/modsecurity/modsecurity_crs_41_sql_injection_attacks.conf"][line "77"] - Execution error - PCRE limits exceeded (-8): (null).
Apache-Handler: proxy-server
Stopwatch: 1401894869729902 23796 (- - -)
Stopwatch2: 1401894869729902 23796; combined=9162, p1=144, p2=8864, p3=3, p4=82, p5=67, sr=0, sw=2, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.6.6 (http://www.modsecurity.org/).
Server: Apache

--70244300-Z--

The strange rule:

#
# -=[ SQL Tautologies ]=-
#
SecRule REQUEST_COOKIES|REQUEST_COOKIES_NAMES|REQUEST_FILENAME|ARGS_NAMES|ARGS|XML:/* "(?i:([\s'\"`´’‘\(\)]*)?([\d\w]+)([\s'\"`´’‘\(\)]*)?(?:=|<=>|r?like|sounds\s+like|regexp)([\s'\"`´’‘\(\)]*)?\2|([\s'\"`´’‘\(\)]*)?([\d\w]+)([\s'\"`´’‘\(\)]*)?(?:!=|<=|>=|<>|<|>|\^|is\s+not|not\s+like|not\s+regexp)([\s'\"`´’‘\(\)]*)?(?!\6)([\d\w]+))" \
        "phase:2, \
        rev:'2.2.5', \
        capture, \
        multiMatch, \
        t:none, \
        t:urlDecodeUni, \
        t:replaceComments, \
        ctl:auditLogParts=+E, \
        block, \
        msg:'SQL Injection Attack', \
        id:'950901', \
        logdata:'%{TX.0}', \
        severity:'2', \
        tag:'WEB_ATTACK/SQL_INJECTION', \
        tag:'WASCTC/WASC-19', \
        tag:'OWASP_TOP_10/A1', \
        tag:'OWASP_AppSensor/CIE1', \
        tag:'PCI/6.5.2', \
        setvar:'tx.msg=%{rule.msg}', \
        setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score}, \
        setvar:tx.anomaly_score=+%{tx.critical_anomaly_score}, \
        setvar:tx.%{rule.id}-WEB_ATTACK/SQL_INJECTION-%{matched_var_name}=%{tx.0}"

I get this error for every request... Why !?

EDIT:
My SecRuleEngine is Off in my global settings BUT it's set to DetectionOnly foreach VHOST.

I haven't looked at the debug logs yet to see how these config settings work, but I think your problem is the "SecPcreMatchLimit" and "SecPcreMatchLimitRecursion" settings being enabled in your CRS_10 file(s). I've recently enabled them and see similar matches in our logs. It's about the only config settings I've changed after updating ModSec binaries.

Either try setting the numbers very high (100k-1M to start), or disable (comment the lines out) and restart Apache. (I'd recommend disabling.)


Secure erase hard drive What device/method do you usually use to securely erase a hard drive?

The situation is, we have hard drives that we want to use somewhere else, and don't want any data to get recovered later,

I can use software secure eraser, but it may take some time since I have a lot of drives.

Do you guys have any experience using hdd eraser dock?

Try the hardware based approach, such as this one. Those devices are not that expensive but solve the issue of reusing old HDDs and SSDs fast.


Paste-once or paste-and-clear I use a password manager (to be specific: pass) to store my passwords.  The interface I use most often is passmenu to put the password on my clipboard, which I can then paste in my terminal/browser/whatever.

Sometimes I'm not careful and I forgot that I have my password still on my clipboard and I paste it somewhere I shouldn't.  What I would like is to have some protection from myself and only be able to paste the password once:  after pasting the clipboard should be cleared.

Now it's probably not to hard to hack something together that does this with the standard unix tools.  Before I do so, I would like to know if I'm not reinventing something that already exists.  Also, it would be good to know if there are any password managers that have this functionality built-in?

Ps. I know that some password managers clear the clipboard after a specified time, but that's not the solution I am looking for.

I actually switched from pass to keepassx2, because it clears the clipboard after 5 seconds. Before that I just had a shell script, that I used to call pass that cleared, that clipboard 10 seconds after pass was closed.


What is the best approach to protect against BYOD? I would like to know briefly what are the best practice to protect corporate network from BYOD challenges nowadays?

Thanks a lot!

A relatively efficient way to cope with "BYOD challenges" is to do the two following things:

Ban BYOD. Employees are explicitly forbidden to use "their own devices" for work-related operations. If they have a smartphone, they may use it to listen to music, but they must not plug it into their desktop computer or store work document on it.
Make a survey with users to understand why users want to "bring their own device". When a user wants to use his tablet or laptop on his workplace, this is not just for the sake of it, but because that device offers some functionality that his official, approved desktop computer does not fulfil. Simply banning BYOD will not be effective unless you carefully analyse what the users are looking for, and is lacking from the tools you provide.

Both steps are equally important; the second step is the most often forgotten by overzealous security officers.

Otherwise, if you are really intent on allowing employees to use their own devices for their work, then "best practice" is to enforce some sort of "security suite" on the device itself, at which point the device is no longer really the user's device; it is more like a company device that was paid by the employee. This tends to lead to some disgruntlement, which cancels the alleged benefits of BYOD (BYOD is supposed to increase productivity through the feeling of comfort and empowerment that employees derive from their using their own tools; that feeling is all too easy to destroy inadvertently with an inappropriate requirement for installation of extra police software which users will resent as an intrusion).


How can I trace the IP address of person in chat? Is it possible to trace my IP address when I am chatting with others (with gtalk or Facebook)? If so, how could someone do that?

Set up a web server and send them a link to something on it. Once they click the link, their IP address will be logged in your web server's access logs.

You could also host an image on said web server and trick a user into loading it through a third party's website. Some social networking sites allow you to upload snippets of HTML including image tags.

Note, when I say "their IP address" I am referring to whatever the address is after any NAT and proxying.


Cell phone cloning and applications that use internet I recently watched a show where someone was able to clone a smartphone with the FID, IMEI or other numbers found on a phone. They were able to see the other parties text messages and call logs.

My question is this: If someone had access to these numbers from your phone would they also be able to monitor applications that use the internet such as tango, skype, whatsapp, bbm. Are those applications related to the numbers on the back of your phone in any way or are they only relevant to services provided by cell phone companies.

Is there a way to monitor these applications that does not involve software installed or your phone or can you only monitor them with spyware.

SMS and call logs use the cell network's messaging channels to send traffic. That uses the IMEI to address where the messages should go. That's why a cloned IMEI can receive duplicates.

Internet traffic uses the data channel and leverages TCP/IP. This cannot be cloned with just the IMEI.


Can malware be activated by previewing email in Outlook's Preview pane? It is common advice to not open suspicious email in order to avoid being infected by malware contained in the email.

What constitutes opening an email in Outlook? Specifically, is viewing an email in Outlook's Preview pane equivalent to opening an email? Can malware be activated by previewing email in Outlook's Preview pane? Or is the salient point that one should not open the attachments contained in the email?

Yes there have been vulnerabilities regarding the Outlook preview pane. Another one from last year here.

The advice was originally not to open attachments contained in emails, but vulnerabilities such as these mean that you can still be vulnerable just by previewing.


Data Key for Production / Test DB We are encrypting database fields for PII. For Key Generation and storing it, we are using AWS KMS. Data key we have generated using AWS KMS,for the master key we are using CMKs.
Now let's say there is only one DB field that I want to encrypt which is email.
Also, for simplicity, let's consider we have two environment test/production.
Now I have created an AES-256 encryption library with GCM Mode(let's not discuss that).
Now I have some doubts

The Data Key / Master Key, can they be same for both test/production. If not, then how will the system work. I mean every quarter we copy the complete prod database to test. Now if we do not have the same key, we will not be able to decrypt it.

We will be using HMAC for this also in separate DB column for reading purpose. For this HMAC, should we use the same data key(used in above step) or some different data key? I am almost sure that this is bad idea. So what should I do in this case. Generate two data keys from AWS and use one for AES and other for HMAC.? Or anything else.

I looked into AWS KMS, and also found your other questions. It became clear to me that your plan is to use envelope encryption, and that both previous versions of my answer were not relevant. On reflection, AWS KMS clearly also has this scenario in mind :

AWS KMS Getting Data Key using AWS Encyption SDK
AWS KMS Data Key Rotation
Envelope encryption and Wells '17 AWS KMS Envelope Encryption

You also asked a question about when to re-key the data key - On what basis to create Data Keys. The accepted answer doesn't mention any limits associated with the symmetric cipher, which may or may not be relevant depending on how much data you plan on encrypting.
So, a revised idea:

generate a new session data key at each service (re)start, and regenerate a new key at (or before):

the life of the service, or
up to the limits of the encryption cipher, or
some arbitrary time frame that you decided upon

the service would connect to KMS in the region, and store this next key using the CMK ^
the service will encrypt data symmetrically before writing to the datastore, as you have already decided in your separate post
when the limit approaches, the service will block on further submissions, re-key, and start processing submissions again
(obv. if you only have one service, then progress will be blocked during this short period)

^ alternatively, it could encrypt the new session data key numerous times, with multiple public keys that it holds, eg, test, prod, recovery, ... and store all copies in KMS - apparently KMS can encrypt up to 4KB of data :
K_for_prod = sealed_box( StaticPK_prod, K_session_data )
KMS_payload = KMS_ENCRYPT( K_for_prod | K_for_test | K_for_recover | ... )

More on sealed box() and another alternative: crypto_box()
Depending on the PII, you might wish to disallow edit and just have a superseding or versioning in your data model, with the new data having to be provided again, which would avoid this scenario. In one data model that I worked on, we basically made all PII non-mandatory, so when the user wishes to change something through the forms system, they simply provide the new data. (The submission form is not used to retrieve data - instead, the person must request the information through a totally different channel.) This may not suit you, however, in which case my proposal above would need some way, at time of edit, to recover the data key for that earlier session.
I also noticed you clarified your requirements around HMAC-SHA256 in another question - https://security.stackexchange.com/a/239550/228961 - which describes your desire to be able to search or filter on the encrypted data in the database without exposing it.


Using MD5 for malware ids: collision attack risks? It has been known since 2004 that the MD5 hash is vulnerable to collision attacks (update - not "preimage" attacks - my mistake....).  Yet it still seems that people are using it to identify malware.  E.g. reports about the new Flame malware document people going back several years to discover the same md5 signatures in archived md5 data.

How old is Flame? - Alienvault Labs

An attacker could presumably ensure that all their files matched the md5 hash of other files which they make public and which seem innocuous, so relying on md5 seems dangerous.

I don't see references to sha256 or even sha1, which have not seen (public) collision attacks.  What is the status of moving to better hashes for virus databases?

Update:  the concern I had was that if the virus db didn't also retain full copies of all the files in question (eg because some were really big or whatever), and/or if folks searching the db didn't check the full contents of the new files they're looking up with the archived files, then a new file from a malicious virus, which matched an old "innocuous" file might be mistakenly dismissed as not dangerous just based on an md5 match.  But hopefully the full files are retained and checked by anti-virus researchers, or else they would be vulnerable to this attack.

So what sorts of attacks against malware ids might make use of the ease of producing md5 collisions, and what steps are actually taken in specific hash databases and AV software to thwart them?

A quick analysis:

Threat: Somebody creates a clean file that matches a malicious file's MD5 hash.

Result: The clean file is identified as malicious, but is merely a collision. Another file that does match still exists and will always be identified as the same.

I suppose if this happens, there might be some talk about moving on. My guesses as to why we haven't:

This isn't authenticating malware, but identifying it. Inserting false positive matches has limited value. True positives will still be located.
It is presently universal. One can identify malware with only one hashing algorithm operation. If we change over, you'll have to start hashing every file with multiple algorithms unless somebody keeps a repository and can post new algorithm hashes for everything.

A false match has very limited value in that you can't do much more than try to convince somebody that they're looking at a piece of malicious software that might be a different piece of malicious software... or just a bunch of bits. Only researchers trying to learn about that particular malware could care and they should realize what's going on.

Update

It is my understanding that virus databases do not include "clean" checksums. If there is a matching MD5 entry, it is for something that you don't want on your system unless you're trying to research it. Because a section of an executable can be set aside to be filled with any old nonsense, it is possible to create a malware file which has the same MD5 sum as another innocuous file (a "collision attack").  While we don't know how to do a practical "preimage attack", the design nature of executables makes it reasonably likely that a focused attacker could create an collision attack as described on Wikipedia's MD5 page. Namely, executable structure allows one a lot of flexibility in filling inserting any data of choice that is ignored during execution. Further, one could load an otherwise non-executable file from a launcher allowing modification of any of the leading or trailing data in the file. That provides for the use of generic launchers and exceptionally easy hash collisions as the first and last bytes can be anything at all.

Since databases don't contain clean files, you won't get a false negative. You could get a false positive if somebody engineered a piece of malware with that in mind. If you were in charge of building the first malware database today, you'd use a different hash algorithm. For historical reasons and a relatively low impact of a successful collision attack, MD5 continues to march on, though it is not ideal now.


Is an RC4 encryption enough for my personal documents? In the last few weeks I wrote several proposals to the government, to my professor, etc.
I want to make a copy of this filled proposals and save them.

Instead of scanning it with my printer, making a pdf-document, writing it to an usb stick I want to use the iPhone app 'Genius Scan' and directly save the files into my google drive so that I have access to the documents from every device I am using.

I am able to encrypt the files with the app with RC4 128bit key.
I read about RC4 encryption on the internet and found out that this is not the best encrytion technique at the moment.
I don´t know how it works but is it enough to have this 'bad' encryption for my documents?
The most personal information are my address and maybe IBAN/BIC code.
Bad or good idea? Any possible ways to do it better?

RC4 is insecure

From wikipedia/rc4:

  While remarkable for its simplicity and speed in software, multiple vulnerabilities have been discovered in RC4, rendering it insecure.

It's not the most broken of ciphers (see DES), so your data is getting some protection, but not ideal. You would be better off finding something that supports AES-128 or AES-256 as those are the modern go-tos.

If the authors of that app have not bothered to update from RC4, then what else is the app going wrong? Basically, it does not speak highly of the overall quality of the app.

What's the actual risk?

The Electronic Frontier Foundation has a brilliant 5-point questionnaire for gauging your personal risk:

  What do I want to protect?
  Who do I want to protect it from?
  How bad are the consequences if I fail?
  How likely is it that I will need to protect it?
  How much trouble am I willing to go through to try to prevent potential consequences?

How much effort would it be to put it through a tool that supports AES? Is protecting this data worth the extra effort?

Any of the common zip programs found on Windows, OSX and Linux should do this, I presume iOS zip tools will too.

One closing point; if you're going to go to the trouble of choosing a strong cipher, make sure you choose a strong password to go with it. If your password is easily guessable, then it really doesn't matter which cipher you're using.


How to secure refresh token API's? I have two API's used in auth:

api/auth/newtoken: Successfully validates user (i.e. username and password check in DB) and return token (expirers in 3 days) and refreshToken.
api/auth/updatetoken: When the token is expired call this API with refreshToken and get the new token.

How can I protect the api/auth/updatetoken API? Currenlty these API's are for an Android application and it will be easy to get these API's once we decomplile the application.

What are some better approaches to secure this API?

There is no way to "protect" the API unless you control all devices which can connect to it. For an API allowing use by user owned devices connecting over the internet then you must assume anyone can send anything to it.

You have two choices here -

Don't expire the tokens and scrap the uptatetoken call.
updatetoken requires an existing valid token. If it has expired then newtoken has to be called again and the user has to reauthenticate.

Personally if there is no web browser client (and even with one - just I would give web browser clients an expiring token) I would suggest the first. The token should only sit on the clients device - stored in the device keychain - so should be secure. Meanwhile if anyone has intercepted it they could just call updatetoken themselves to stop it expiring.


Why is `cd` restricted in rbash/restricted bash? The bash manual says:

  A restricted shell behaves identically to bash with the exception that
  the following are disallowed or not performed:

  Changing directories with the cd builtin.

Why is this not allowed? What security holes does this close / What attacks does it help prevent?

By itself, this measure most probably doesn't make a lot of sense, however you have to put it aside the other limitation to understand its role, in particular (quoting the page you linked):

  Specifying command names containing slashes.
  Specifying a filename containing a slash as an argument to the . builtin command.
  Specifying a filename containing a slash as an argument to the -p option to the hash builtin command.

The goal of these limitations is to ensure that you only execute commands whose path belong to the $PATH environment variable, and in case this variable includes the current directory (.) changing the current directory to the one containing the desired binary would allow to circumvent these "slash-based" limitations.

Moreover, preventing the user to change the current directory will also prevent him from mistakenly or maliciously running a command which will have a different behavior depending on the current directory, and in particular depending on the content of the current directory (it is common for some command to seek default configuration or profile files for instance in the current directory). This brings some level of guaranty on the behavior of the command which will be run.


SSL Handshake Failing With 'Certificate Unknown' We have an application that is currently running via Http protocol. We are aiming at migrating it to Https. We have made the necessary changes and then during login to the application, I am getting a 'peer not authenticated' error message.

I am completely new to SSL world and so I google up and have captured the wireshark trace and the communication is looking as below:

  1) Client sends [SYN] to server.
  2) Server sends [SYN,ACK] to client.
  3) Client sends [ACK] to server.
  4) Client sends the message “Client
  Hello” to the server.
  5) Server sends its public key with the message
  “Server Hello, Certificate, Server Hello Done”
  6) Alert 61, Level
  Fatal, Description: Certificate Unknown // Failing here.

Request you to share your inputs on what could be going wrong. We are stuck here and not able to proceed further.

Thanks,
Pavan.

Since you have a bundle that "includes the root certificate," that seems you're using a self-signed certificate, which is (by default and by design, untrusted).

You have a couple of options:

Install the root certificate of your self signed certs into the trusted root store of the workstations that will use this. (Not really recommended because it's clunky, but it will work).
Get an actual certificate from a certificate authority.


Maximum number of Requests in HTTP keep alive connection We are running a network analyzer . And we log info which are in the HTTP request headers and HTTP response code.

Because in keep alive connection request may come without responses. I push requests to a queue and wait until response. Because my customers requires also response code I have to wait for response header.

I have a length control before I push more request to my queue, if there 10000 request waiting for response from the client I won't push request header info anymore.

Our product has been running for years on serious network traffics(10g/sec).
Now in one of the customer site I saw alarms about maximum number of request in the queue .

I am wondering if that could be a attack or something unnormal? Is there any known case about like http request spoofing?

10000 outstanding requests in a single HTTP connection is certainly evidence that something has gone wrong.  There are three likely possibilities here:

The server has partially crashed, such that it is accepting requests but no longer processing them.
The client is sending requests faster than the server can process them.
Something has changed in the server, and you are no longer able to identify the responses.

Any of these could be the result of an attack or of an ordinary malfunction; a deliberate design change is also a possibility.  You'll need to investigate further to tell which is the case.


Why does my Charter cable modem have a static ARP entry tied to a Department of Defense IP? I recently was told the username and password to get into my ISP-provided cable modem. It's a Cisco DPQ3925C.

Some poking around for unrelated purposes led me to the list of ARP entries. I didn't recognize a couple of these, so I ran whois on the IPs. Two of them are in IP space registered to the US Department of Defense.

22.99.6.1 and 22.100.208.1 are both tied to 00:01:5C:6E:00:46. The same MAC address is also tied to the default gateway the modem received from the ISP.

Both addresses remain after a reboot.

And, needless to say, I am not on a federal network and have, to my knowledge, never connected directly to one.

Normally I'd assume there's a perfectly reasonable explanation for this, but given the security climate nowadays, I'm inclined to call shenanigans. What's going on here?

My guess is that your cable modem or cable provider is using this address space internally for some purpose because the 22.0.0.0/8 space is non-routable.  From: http://blog.erratasec.com/2013/12/dod-address-space-its-not-conspiracy.html#.WPgyoHXyvrc

This sort of thing happens a lot. I (or others I trust) have seen 1.0.0.0/24, 22.0.0.0/24, and other instances of 30.0.0.0/24 used this way. I can confirm that companies use DoD address space as private addresses. Just because it's DoD doesn't mean they route to the DoD.

The reason all these address spaces are DoD is because that's really the only source of unused IPv4 addresses left. All IPv4 address ranges have been assigned. But, the DoD has been assigned 20% of the IPv4 address space, but most of it is used within the DoD, on their own private networks, and is not routable to the outside world. Thus, if you are looking for a large chunk of "private" addresses that won't suddenly one day be assigned to Akamai or Amazon (and thus, explode in your face), then DoD addresses are the way to go.

You can confirm this by trying to route some packets to these addresses.  Use traceroute, where do they go?  They should go nowhere.


Can malicious code be contained outside the filesystem on a USB drive? I've personally seen it recommended that every time a user inserts a USB thumb drive into a computer, that the thumb drive be scanned for potential malware and malicious code.

However, if all that's on the thumb drive is an empty FAT-32 or NTFS filesystem, does the threat remain? Is there a way to manipulate firmware or something along these lines on a USB thumb drive to do something more nefarious?

A USB device with "manipulated firmware" can sure do evil things. For an extreme case, see this answer: the USB device may tell to the OS "hey, I am the FireWire-to-USB converter X.Y, please download my driver from your vendor, then grant me full DMA access when I say so". Though theoretical yet, this is not science-fiction, and it sure is scary.

For more mundane setups, including some which actually occurred, see this answer.

Even if the USB device is "just" a USB drive with an honest firmware and an empty filesystem, it still has a boot sector (first sector, the one containing the partition table) which is code; but that one will be activated only if the user tries to boot his machine over USB (this worked wonders in the floppy disk era, because most machines would try booting off the floppy if present; nowadays, if almost all PC can boot off an USB drive, most will not try by default).


Car Key Security Questions I am wondering how car key security works.

Do cars keys just send a simple "lock" and "unlock" signal that works with any car from the manufacturer or any car of the same model? Or are specific keys registered to a car and then only those keys have the signal that unlocks that car?

I also have an idea for how the security should work. (Forgive me I know very little how encryption and radio signals and security works). Please tell me what you think.

Keys and cars are each given their own encryption key upon manufacture. Upon purchase of a car, the keys and cars are registered to each other.The car gets a copy of the encryption keys from the car keys and the car keys each get a copy of the car's encryption key. Then the unlocking process. Car key requests unlock from the car. Car verifies it is a registered key then asks for the special number it sent earlier (encrypted) to the key. Key sends special number back (encrypted using the key's encryption) and the car decrypts it using its copy of the car key's encryption key and verifies the numbers are the same. Then the car is unlocked.

Then the car encrypts a new special number and sends it to the key, which the key decrypts using its copy of the car's encryption key then encrypts using its own encryption keys. This new number will be used on the next unlock request. This ensures the unlock signal changes every time so that people cannot simply copy the unlock signal from the air and unlock the car.

If I was not clear on anything please specify in comments, I can provide more detail.

Remember that I have no background in computer security. I was just thinking about this after hearing about a major series of car thefts somewhere.

No. Since in usual, theres single-direction communication with the car.

So usually, each key has its own "encryption key" and a "counter". In the car, theres a list of valid encryption keys and a counter for each key.

Each time you push a button, the key will send count + 1, encrypted with the key.
The car simply encrypts count + 1 with its own encryption key and compares both.

To prevent that pushing the button without being near the car, causes the fob to stop functioning, the car will also check count + 1, count + 2, count + ..., all the way to like count + 50. If you accidentially press the key 50 times, without being near the car, the fob will usually stop functioning and you have to re-enroll that fob. Enrolling a fob is different on different wehicles, but sometimes the car re-enroll the remote when you use the associated ignition key, sometimes you have to do it yourself by using ignition key and then doing a sequence by pressing brake pedal, operating ignition lock, opening and closing doors and pushing certain buttons.

Here is a example:
https://www.youtube.com/watch?v=mG3R58-24QU

When you do this, the fob will usually send out cleartext key, or key encrypted using a "manufacturer key" and count when holding the button for longer than a few seconds or something, just to enroll the key if the car is in "programming mode".

When you have successfully opened or locked the car, the car will update its count for that associated car key, with the count that successfully unlocked/locked the car.

Think like a HOTP token.

HOWEVER, for those "keyless and go" cars where you just walk near the car to unlock it, and also for most ignition keys (immobilizer), a "challenge response" protocol is used, because in that case, theres dual direction communication with the car and key.


How can I find the origin of an IP address for a relayed IP? I have an IP address of someone who has stolen from my company, but I'm pretty sure they relayed through another computer. The IP address I have doesn't go to home or business, but to a field in the middle of nowhere. How can I find the original IP address?

I don't think they would have spoofed their IP, because I've read it's fairly difficult, and this person is only stealing $100 at a time.

I've already reported it, but I had a similar situation months ago that I also reported, and nothing came of it (theft is too small I guess). Now, this person, or several people, are stealing every other day, in small amounts, from different IP addresses each time.

My business is small and I can't handle much fraud so I need to try to find this person ASAP.

My programmers are working on changing the backend to close the gap, but this person has already taken $2500.
Thanks for any help you can give.

Short answer:  Without either a trusted place on the internet (access to an Internet Exchange [IX]), ability to subpoena ISPs for logs/records, or some other intelligence (e.g. this IP also has posted to wikipedia with information that could lead to their identity), you don't.

When one uses a relay or a VPN to obfuscate their IP, there is no way the other end can tell what the originating IP is.  All of that information is not included in the packets.  The only way to actually trace it would be to get records from the ISP of the IP they are using, and determine what other connections were active to that IP.  From there, one can begin to determine the originating IP address.

There is no such thing as "spoofing their IP" on the open internet when it comes to TCP sessions.  When one spoofs their IP, they change the packet header to indicate the packet has come from a different IP than their own.  However, this causes any return packets to go to the spoofed IP, and not the real IP.  IN the case of TCP traffic, which includes http, SSH and most protocols the attacker is likely to use, a TCP handshake could never occur.  This is because the spoofed IP will not respond to the TCP SYN (synchronize) statements, and thus no TCP socket will be created and no data can be sent.

In order to spoof an IP address on the open internet, one would have to use a BGP hack or do something of that sort -- prohibitively difficult attacks typically restricted to nation-state level cyber staff.

The question becomes:  Why does the IP address matter?  If there is a way for someone to steal, close that vulnerability and eliminate your exposure; so no matter where they come from they can't do anything malicious.


How to implement child protection firewall that cannot be bypassed? As a guardian, we wish to protect our family especially children from malicious websites.

We implemented the following technologies:

K9
Symantec client protection

But it can be surpassed with ultra surf

We're too much worried on this. Can someone kindly advise on implementing a much secure firewall?

Have you looked into using a DNS service like OpenDNS? OpenDNS has content filtering as part of their services. I'm sure there are other providers but they are the ones I'm familiar with.


How do experienced users test stateful firewall? How do experienced users test stateful firewall with TCP/IPv6?

My test case includes:

echo reply without request
tcp ack without syn

Are there any more test cases, especially with IPv6?

NAT Traversal

A method for two clients, each isolated behind separate firewalls working in NAT, can establish communication with each other, even if the connection is explicitly allowed.

UDP packets does not contain any state. When an initial UDP packet leaves the firewall with NAT, it will allow UDP traffic to be returned through the same "session".

When to clients starts mass-sending udp packets at each other (same source/dest port tuple), at some point, both firewalls will believe that they initiated the traffic, and allow traffic between the two clients, each isolated by a NAT firewall.

http://en.wikipedia.org/wiki/UDP_hole_punching

Connection Tracking

Some firewalls does not only track connections based on tcp connection state, but also the application protocol's request to i.e. send a file over irc or ftp. While this is a feature when it works as intended, it can also be used to make the firewall open up for unintended connections.

An example of this is the XSS IRC DCC attack: http://encyclopediadramatica.ch/Firefox_XPS_IRC_Attack


Is WiFi confidentiality provided by public hotspot gateways same or worse than WPA2? As I understand how most WiFi hotspots work, they require the user to authenticate on a Web page that is served by a proxy on the WiFi default gateway. After whatever authentication process (if any) the user went through on the Web page, he is then allowed to connect to the Internet through MAC address filtering. But the WiFi connection is still in the clear and subject to casual eavesdropping isn't it?

Or are there some WiFi protocols I am not aware of that would allow the user terminal to establish a new encrypted channel (à la WPA2) with the AP based on the interaction that the user had with the Web authentication process?

Edit: To clarify the reason for my inquiry is that I noticed that most WiFi clients nowadays notify the user joining such network that "An authentication is required". On a mobile phone by selecting this notification the browser will directly open the authentication Web page. So I am supposing that there's some WiFi protocol level exchange going on between the WiFi client and the AP related to this authentication step, so why not also getting a randomly generated PSK through a public key from the AP?

Security is worse and goes beyond a simple confidentiality issue.

As you stated it is indeed "subject to casual eavesdropping", but as you also noticed the legitimate user is "allowed to connect to the Internet through MAC address filtering".

An attacker can change his own MAC address to share the same one as the legitimate user. This creates a MAC address conflict, but in practice this just results in some warning messages appended to some system log file that end-users never check anyway. Connection is maintained and works for both parties simultaneously (as they share the same collision domain).

From now on, not only the attacker can eavesdrop legitimate user's data but the attacker can now impersonate him in the eyes of the hotspot (and the infrastructure and provider behind it). The attacker is usually also able to keep the access open any arbitrary time after that the legitimate user went away (this requires the attacker to simulate regular activity all along, either any random activity or simulate a certain "authentication" web page refresh, but this is easily automatable).

Most, if not all unencrypted open WiFi accesses relying on a portal suffer from such issues: hostel, paid WiFi access, public hotspot services that some ISPs push to their end-user to share their WiFi with other subscribers, etc.

From there, you have two main ways to secure this:

Either stay in the upper network layers: provide a VPN client application to the user (don't necessarily call this a VPN, from a commercial point-of-view anything will do: "WiFi-Access", etc.). Instead of using a web page the user will use its client software to authenticate itself and "open" the WiFi access (in practice the unencrypted WiFi provides access to a VPN server, itself providing access to the Internet to authenticated clients).
Or you fix the problem in the lower layers: provide end-user either a PSK "WiFi password" (hostels case for instance), or instead of providing them an VPN client application provide them certificates that will be used to connect to your hotspots (ISPs case for instance). From there a more secure channel will be established between the end-user and the acces-point, allowing the user to securely authenticate to the hotspot's captive page.

There is no way here to, as you suggested, create a security token at an higher layer (the application layer, here the browser) to use it to secure a lower layer (the data link layer, here the WiFi connection). You implement security either at one or the other layer.


ASLR Randomization and different regions Essentially my question is, why ASLR doesn't randomize text, bss and data regions of the process? Also in the newer version of kernels (such as Linux kernel version 3.x) along with process base, libraries and stack addresses, are the heap addresses also randomized?

why ASLR doesn't randomize text, bss and data regions of the process?

It does. The base address of the module is randomised, and therefore the virtual address of all sections will be randomised. However, the relative virtual address of sections from base must remain static, as most memory-access instructions work by relative offsets. Otherwise you'd need to generate fixups for every mov that crosses section boundaries (e.g. an instruction in .text that reads from .data).

It just wouldn't bring any real benefit, would cause lots of problems, and could be easily bypassed by reading known instructions in the current section (fixups are applied in memory).

  Also in the newer version of kernels (such as Linux kernel version 3.x) along with process base, libraries and stack addresses, are the heap addresses also randomized?

Yes. Each heap's virtual base address is random, and heap allocations are performed within that heap as normal.


generation of keys for U2F When I buy an U2F device, say a Yubikey smart-card, does the vendor hardcode on it a private key that will be later used in a challenge-response mechanism by the user, or do they only put in there some kind of 'seed', which is later used to create a private key when I plug the device in my computer?

In the first case, how likely is a scenario where vendor is compromised and leaks my private key? in the second, is it mathematically possible known the seed to reconstruct my private key?

If instead I completely misunderstood how it works, could you please correct me?

lots of confusion here... but that's normal :)

Reminder: Each time a user enrolls a FIDO U2F device (FIDO U2F USB security key, FIDO U2F NFC card, FIDO U2F BLE device), a new key pair is needed and created.
Inside FIDO U2F Specifications, there is a section called "7. Allowing for Inexpensive U2F Devices" (http://gg.gg/4eny2) describing how a manufacturer is allowed to wrap every newly created users keys from an initial built-in secret. Yubico (like many others) made the decision to follow this path. The advantage is that the device can deal with an infinite number of keypairs since they are not really stored inside the device, they are created from information "hidden"/wrapped inside keyhandles that were originally supposed to be purely random index attached to generated keys. A first problem is that specifications don't say anything about how manufacturer can wrap keys so a manufacturer can use a totally broken and non-secure wrapping method and still be "FIDO U2F" certified. Another major issue with this choice is that even with a secure wrapping method, if a manufacturer is forced by an agency like the NSA for example to give this list of initial secrets or if an insider decided to take this list of these secrets that are built-in inside their products... well... all users private keys don't belong to users only anymore... meaning that a third-party can rebuild all users keys from all these products just from the public keyhandle that are stored on the server side and exchanged with the browser... "What could possibly go wrong?" (c)
As Far as I know, Yubico personalization don't let you change these built-in secrets, this software is made for other non-FIDO U2F related features. * sigh *
There are solutions like FIDO U2F compatible products from Ledger.co (first disclaimer: they are friends) that are wrapping keys but nuilt-in tools let the user change an initial seed to change the built-in secret.
Some other manufacturers (second disclaimer: like NEOWAVE, the company I am working for) don't allow this kind of key wrapping. Here is a visual illustration to show the difference between wrapping and non-wrapping : http://www.neowave.fr/pleaseno/key_wrapping_versus_stored_isolation.jpg

I hope it is more clear now :)


What are the proper steps for "quarantining" Malware? I am writing a powershell script that effectively quarantines a computer after malware is detected on the system. So far I have the script disconnecting the ethernet adapters to ensure the device can't communicate with the internet. Next the script launches a full anti virus scan. Is this enough to successfully quarantine malware or should I be doing more? Maybe disjoining the active directory domain?

If you have the malware executable / exploit / doc with macro / ... , then what you want to ensure is that nobody opens it. For this it is enough if you remove the extension. Anyway a good way to store samples is e.g.: a password protected .zip file with the password 'infected'.

If you don't have the sample yet, then yes, disable its connection for sure (not just the internet, the whole networking - imagine a ransomware getting access to a network share). That should be enough for a computer quarantine. Anti-virus scan can help, but if it is a yet unknown or modified sample it can't ensure the cleaning. Find out what kind of malware it is and after you are sure that it is disabled, you can enable the internet connection.


How do fake emailers work? Our University recently had a case where some notorious fellows used a fake emailing service to send an email to all students on behalf of the administration. Although most good email services (like Gmail?) can warn us that the mail is likely a phishing attempt, many users not educated in security may fall in this trap.

My understanding of emails (I am no pro, so pardon me if there are flaws) was that if I need to use something like Telnet to send fake emails with a local email service (on LAN), it would be anyways possible, but I would need to enabling some kind of 'relay' to be able to do so for services like Gmail.

My question here: how is this fake emailer (or any other) doing this? I am not looking for theory on email. Maybe some security guys could have a look at the page's source and give clearer details.

E-mail spoofing is possible because Simple Mail Transfer Protocol (SMTP), the main protocol used in sending e-mail, does not include an authentication mechanism. The MAIL FROM:  header has got, by default, no checks to see that the sending system is authorized to send on behalf of that address.This means you can send an email and instead if using your real email address in the MAIL FROM header you specify some other address.

The only way of making sure an email is legitemately coming from a certain person is by using GPG/PGP. Pretty Good Privacy (PGP) is a data encryption and decryption computer program that provides cryptographic privacy and authentication for data communication. PGP is often used for signing, encrypting, and decrypting texts, e-mails, files, directories, and whole disk partitions and to increase the security of e-mail communications.


Protected excel sheet is unprotected without permission in google spreadsheet I created an Excel spreadsheet using Microsoft Excel 2013 with password protected cells (only particular cells. Other cells can be edited).

When I open this spreadsheet in Google spreadsheet, I am able to edit all the fields which are password protected.

How do I maintain the protection from Excel to a Google spreadsheet?

You can't. The password protection is only designed to prevent edits by mistake.
This is a type of DRM protection, where you use rules to decide who can read or write to data.

If you open the file with a software which does not care about the rules, the password protection will be bypassed.
Thats why Adobe have encryption so if you protect your document against Printing, then Adobe encrypts the document so it cannot be opened with anything else than Adobe.

I guess you created a form in Excel, and you want to be able to give out this form to untrusted people to fill in without they being able to change the form itself.
I would then suggest using Google Forms to create your application instead. You can use DocAppender or such addons to create documents out of the applicants replies.


MAC/IP address hiding I am doing some experiments with wireless protocols on ns-3. What I want to ask is how can I hide MAC address/IP address, because I need it for my experiments? Is it possible to use encryption on these addresses when broadcasting?

No, in order for network traffic to be handled correctly, it needs to have MAC and IP addresses. Encrypting these would prevent switches and routers from sending responses to the broadcasts back to the broadcaster.

However, you can use a VPN, which will allow you to connect to a different network, with a different IP address, but an outside observer will only be able to see the IP address on the IPsec traffic, not the IP address of the network you connect to.

On a side note, you can also change your MAC address on a per-network basis. While this doesn't encrypt the MAC, it will prevent MAC address tracking between networks.


Is it possible to track the email sent via BCC List using firewall or network security software? I want to know whether is it possible to know the conversation/email sent via BCC can be identified by admin in some corporate companies?

I have heard that email sent from BCC cannot be identified, and I want to know how this BCC feature actually works.

This is a very broad question, depending on your setup.

If you use SSL from your PC to your mailserver (wich is not administrated by the same guys) and your connection is secure, they can't see anything about your mail, except for the size.

If you use unencrypted communication with your mailserver or the mailserver is administrated by the same guys it looks worse. They could intercept the traffic from your pc to the server and simply read the whole  request from your mailclient to the server.
In this request there are many mail-headers including the BCC-line of the mail, so they could view each recipient's address in plain text. On wikipedia there is a really good example of how such a request looks, sadly without BCC. But you can imagine the BCC line exactly like the CC line, there is no difference (except the leading 'B' of course).

Even using mail encryption (S\MIME, PGP) won't help because only the content of the mail gets encrypted, not the headers.

Conclusion:

The only way to send a mail without the IT-Stuff knowing the recipient is to use a third-party mailserver (like gmail, yahoo etc.) with active SSL/TLS. But even here you have to be careful: On a company-pc you might have a SSL certificate from the company installed wich allows th IT stuff to perform a man-in-the-middle attack on your communication without a security warning.


What kind of cache-related attacks exists on the Web? What kind of cache-related attacks exists in modern Web world? The only one I'm aware of is Cache Poisoning. Is there anything else I should be worrying about?

There is a lot going on in the infrastructure that you shouldn't be worried about,  so long as you keep these systems up to date.  Browsers, proxies and other systems have gotten really smart over the years and if you asked this same question 10 years ago I would have given you a completely different answer.

DNS Cache Poisoning is a very serious vulnerability,  but so many of these have been found that its really difficult to preform this attack on a modern DNS server.

DNS Cache poisoning has a very similar impact to ARP table poisoning.  At the end of the day a table is just a type of cache.

Did you know that web browsers will encrypt cached copies of all HTTPS content?   That is really nice.  HTTP proxies are unable to cache this content so that is a good thing as long as you use https.  However the cache used by HTTP proxies can be poisoned using HTTP Response Splitting which can be a serious problem.


WannaCry - block callback IP/domain? While new variants of Wannacry has sprung up, the old variant is still lurking around corners and I am not sure whether the following callback IPs and domains should be blocked as per typical ransomware playbooks/runbooks, since they now double as a kill switch to a sinkhole:

Domains:

iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com
ifferfsodp9ifjaposdfjhgosurijfaewrwergwea.com
iuqerfsodp9ifjaposdfjhgosurijfaewrwergweb.com
iuqssfsodp9ifjaposdfjhgosurijfaewrwergwea.com
ayylmaotjhsstasdfasdfasdfasdfasdfasdfasdf.com

IPs

144.217.254.3
144.217.74.156
184.168.221.43
217.182.141.137
217.182.172.139
52.57.88.48
54.153.0.145
79.137.66.14

Should the above be blocked? Or allowed to communicate to act as kill switch?

(This question is different from How is the “WannaCry” Malware spreading and how should users defend themselves from it? as the typical response is to block all C&C domains/IPs, but in this case, I'm not certain since the flawed C&C acted as a kill switch)

source

To act as a kill switch they must connect.

So the safest way to do it is probably to respond for them: when one of there domain/IP is requested, fake the answer.


When in Firefox I type web.whatsapp.com for whatsapp web, I get a browser re-direct.

That is concerning and could be an indicator for malware (adware) or a man-in-the-middle attack.

  Anybody knows some good approach about cleaning this sort of stuff from the sytem?

Since you have only been giving generic information about what's going on I can only redirect you to a generic answer on how to deal with a compromised server.

  Here are some suspicious connections on netsat -tulpan output:

tcp 0 0 192.168.1.2:50465 198.252.206.25:80 ESTABLISHED 4556/firefox
(...)

There is nothing inherently suspicious about the presented output. What you are seeing are several open TCP connections which is absolutely normal for an active browser session. The target ports 80 and 443 indicate that you are probably communicating with web services.

You can lookup the IP addresses online or perform a reverse DNS query, for example via the host(1) command, to find out more about the servers you are connected to. For example:

$ host 198.252.206.25
25.206.252.198.in-addr.arpa domain name pointer stackoverflow.com.

As you can see the first IP seems to belong to stackoverflow. That said, if you assume you have been compromised you should also be aware that all analysis from within the affected system is unreliable.


Samsung SSD 840 Evo Disk-Encryption My question relates to the hardware encryption of samsungs 840 Evo SSD (maybe also other models):

The theory:
Samsung specifies that their SSD encrypts each data with AES by default. So if I choose a HDD password in my bios, I can protect my whole disk (instead of encrypting e.g. my personal data folder later).
If I understood it correctly, then using this hdd password, does not change the performance of the ssd, because the encryption happens anyway (with or without the hdd password). The only difference is that I have to enter my password when the BIOS starts.

This seems a pretty good security feature, because all data are protected (protecting e.g. against thiefs) and there is no perfomance gap.

Unfortunately, I do not find any information or tests confirming samsung's claim.
Is it really so simple to use? Are there disadvantages?

And by the way? What is the relation to trusted computing? To be honest, I only heard bad things about this topic.

I have not found information like this either, and I'm not sure it's available.  I recently used one of these disks with the harddrive password enabled. The AES encryption on these disks is this simple to use and performs excellently.

But there's no way to verify that it's actually working.  It is black box encryption.

A while back I answered a similar question about this kind of encryption on spinning disks:

Unlock hard drive vs full-disk encryption

  This is black-box encryption
  It's black-box because although they claim to use AES128, there's no reasonable way to verify it. And although they claim to do it properly, there's no way to inspect their implementation.

  A few years ago I sent them a simple question... if all the drives ship from the factory with encryption turned on, then how do they seed their random key?

  I never got an answer and I never heard anyone provide a reasonable explanation. For all we know, all the keys on all the drives are identical. Unless you have a method to bypass the drive electronics to read the raw, encrypted platters, you will never know. Even if you execute a ATA SE "secure erase" function to delete the key, you don't know how the new key is being generated.


RSS Feeds: restrict access "We are a bunch of journalists and we share much of the information via e-mails. This has become tedious now. Hence we found out a way to share, by just having to share our private blog posts via RSS(achieved through token OAuth.) But now there is a new problem. Not all private posts are the same. I want only a specific group of people to see a specific set of feeds not all. So I started to encrypt that part of the feed required by a specific group, by a specific key, the key being shared my all those members part of that group. Since a group has the key to decrypt only a part of the feed, the information in the other part is safe. Now there seems to be a new problem, a person might be a part of two groups, that means he needs to have both the keys to decrypt it, that means the decryption is two times slower and we have to send two keys securely. Is there a way out of this problem. Can this be somehow achieved through PKI?"

(This is something I encountered while trying to solve a problem. If you are interested see http://groups.drupal.org/node/9719 )

NOTE:Imported from https://stackoverflow.com/questions/14502756/rss-feed-restricted-access

This isn't about encryption, this is about finding an application that does what you want. Encryption is just a tool to secure information, and so is PKI, but it's only one way to go about it. In fact, encryption is not really ideal for what you are trying to do, as you are in essence using encryption in place of account management.  What you need is an application where you say which data is for which groups and it goes and does it for you. As for encryption it's unlikely you'd need encryption of data at rest, so just use SSL.

Unless you really are paranoid about data security  I suggest you use web-based collaboration tools like evernote or the like, that way someone else handles the dirty work and you just handle the content.


How does YubiKey protects it's secret key? From what I understand, a YubiKey stores a secret key which can be used to generate passwords to enter a server.

How does a YubiKey protect it's secret key?

If it is plugged into an infected computer, wouldn't the secret key be compromised?

Also, is it possible for a computer virus to "infect" a YubiKey?

If it is plugged into an infected computer, wouldn't the secret key be compromised?

The yubikey stores the key on its internal storage media -- the exact mechanism varies depending on the type of key. When yubikey is plugged into a computer, it is recognized as a USB keyboard. Pressing the sole button on the yubikey will send a string of characters containing your one-time password, just as if they were typed via a USB keyboard. The manufacturer assures that the secret key used to generate one-time passwords can never be read off of the device, regardless of the software installed on the computer it's plugged into.

  Also, is it possible for a computer virus to "infect" a YubiKey?

Everything is possible, but would be very hard considering the limited functionality of a yubikey.


Should I obfuscate/disguise (file) names in certificate exams? I have 0 experience taking exams for security certificates. When I'm taking an exam for something like OSCP, should I obfuscate/disguise my files and names (like naming a file update.sh) to make it harder for "future testers and auditors" to find like a criminal would, or just make them obvious (naming a file exploit.sh) for the examiner(s) to understand my reports more easily, or does the naming of my files and folders (and variables and functions) not matter at all?

The OSCP certification is not about criminal activity. You're excepted to write a detailed report explaining exactly what you did. Hence there is no need to hide anything. If you are sneaky and cause backdoors to be left behind on pentests or red team engagements you are actively lowering the security posture of the systems you are testing which is bad.