This is a topic that all of us struggle with, including myself. As a supervisor of a group of very talented coders, I have had to address issues within my group and also within the organization as it affects my group. As a supervisor, I am fully aware that my staff "talks about me" behind my back, which is perfectly acceptable to me. They have a right to rant about the boss, particularly if I've got it coming! We have an open-door policy, and if I've done something that bothers any of my staff, they know that they can talk to me about it and I won't freak out. Frankly, I don't ever take it personally. And as long as you know that you are a good worker and a good person, isn't that all that really matters??
First of all, gossip, negativity and bad attitudes have no place in a professional office. It takes only one unhappy person with a poor attitude to poison the entire environment. Your supervisor should address this immediately, without any retaliation towards you or anyone else who is having difficulty with the so-called politics. There is a difference between office politics (such as culture and work ethic) and poor attitudes. You have a right to be safe and respected at your job. If your supervisor doesn't address it, then take it to her boss or the HR department. That kind of behavior is unacceptable.
What I have found to be successful is to allow my staff the flexibility and responsibility to handle these kinds of situations (gossip, back-biting) on their own. We've found that most of the time, it's lack of communication that gives everyone the wrong idea about an often innocent comment or behavior. I've told my staff many times that I am not their mommy, referee or therapist. Because you say that you have difficulty speaking up, you may want to rehearse with a friend or spouse, but I can almost guarantee if you let your feelings and position known, in a professional and clear manner, you will see an improvement in how people treat you and respect you, and you may learn that you misinterpreted something. If not, at least you've opened up the lines of communication. Part of being a good coder is being able to communicate in a direct manner. It's a skill that can be developed, as well as being a useful skill for all areas of your life.
It speaks well of you that you've identified this as an issue. You say that you're "difficult", so perhaps you are unwittingly contributing to the situation. You are the only one with the power to change yourself, your situation and the way that others percieve you.
You may wish to seek the advice of a counselor or therapist, for some strategies on how to get your point across. It may help to examine the reasons why you're having difficulty. I would also be happy to chat with you about some of the strategies that have worked in my office.
Good luck!