
These are grim economic times fellow TEDsters , grim economic times indeed . And so , I would like to cheer you up with one of the great , albeit largely unknown , commercial success stories of the past 20 years . Comparable , in its own very peculiar way , to the achievements of Microsoft or Google . And it 's an industry which has bucked the current recession with equanimity . I refer to organized crime . Now organized crime has been around for a very long time , I hear you say . And these would be wise words , indeed . But in the last two decades it has experienced an unprecedented expansion . Now accounting for roughly 15 percent of the world 's GDP . I like to call it the Global Shadow Economy , or McMafia , for short . So what triggered this extraordinary growth in cross-border crime ? Well , of course , there is globalization , technology , communications , all that stuff , which we 'll talk about a little bit later . But first , I would like to take you back to this event . The collapse of communism . All across Eastern Europe , a most momentous episode in our post-war history . Now it 's time for full disclosure . This event meant a great deal to me personally . I had started smuggling books across the iron curtain to Democratic opposition groups in Eastern Europe , like Solidarity in Poland , when I was in my teens . I then started writing about Eastern Europe , and eventually I became the BBC 's chief correspondent for the region . Which is what I was doing in 1989. And so when 425 million people finally won the right to chose their own governments I was ecstatic . But I was also a touch worried about some of the nastier things lurking behind the wall . It was n't long , for example , before ethnic nationalism reared its bloody head in Yugoslavia . And amongst the chaos , amidst the euphoria , it took me a little while to understand that some of the people who had wielded power before 1989 , in Eastern Europe , continued to do so after the revolutions there . Obviously there were characters like this . But there were also more unexpected people who played a critical role in what was going on in Eastern Europe . Like this character . Remember these guys ? They used to win the gold medals in weightlifting and wrestling , every four years in the Olympics . And they were the great celebrities of communism . With a fabulous lifestyle to go with it . The used to get great apartments in the center of town . Casual sex on tap . And they could travel to the West very freely , which was a great luxury at the time . It may come as a surprise , but they played a critical role in the emergence of the market economy in Eastern Europe . Or as I like to call them , they are the midwives of capitalism . Here are some of those same wieghtlifters after their 1989 makeover . Now in Bulgaria , this photograph was taken in Bulgaria , when communism collapsed all over Eastern Europe it was n't just communism , it was the state that collapsed as well . That means your police force was n't working . The court system was n't functioning properly . So what was a business man in the brave new world of East European capitalism going to do to make sure that his contracts would be honored ? Well , he would turn to people who were called , rather prosaically by sociologists , privatized law enforcement agencies . We prefer to know them as the mafia . And in Bulgaria , the mafia was soon joined with 14 thousand people who were sacked from their jobs in the security services between 1989 and 1991. Now , when your state is collapsing , your economy is heading south at a rate of knots , the last people you want coming on to the labor market are 14 thousand men and women whose chief skills are surveillance , are smuggling , building underground networks , and killing people . But that 's what happened all over Eastern Europe . Now , when I was working in the 1990s I spent most of the time covering the appalling conflict in Yugoslavia . And I could n't help notice that the people who were perpetrating the appalling atrocities , the paramilitary organizations , were actually the same people running the organized criminal syndicates . And I came to think that behind the violence lay a sinister criminal enterprise . And so I resolved to travel around the world examining this global criminal underworld by talking to policemen , by talking to victims , by talking to consumers of illicit goods and services . But above all else , by talking to the gangsters themselves . And the Balkans was a fabulous place to start . Why ? Well of course there was the issue of law and order collapsing . But also , as they say in the retail trade , it 's location location location . And what I noticed at the beginning of my research that the Balkans had turned into a vast transit zone for illicit goods and services coming from all over the world . Heroin , cocaine , women being trafficked into prostitution and precious minerals . And where were they heading ? The European Union , which by now was beginning to reap the benefits of globalization . Transforming it into the most affluent consumer market in history . Eventually comprising some 500 million people . And a significant minority of those 500 million people like to spend some of their leisure time and spare cash sleeping with prostitutes , sticking 50 Euro notes up their nose and employing illegal migrant laborers . Now , organized crime in a globalizing world operates in the same way as any other business . It has zones of production , like Afghanistan and Columbia . It has zones of distribution , like Mexico and the Balkans . And then , of course , it has zones of consumption , like the European Union , Japan and of course , the United States . The zones of production and distribution tend to lie in the developing world . And they are often threatened by appalling violence and bloodshed . Take Mexico for example . Six thousand people killed there in the last 18 months as a direct consequence of the cocaine trade . But what about the Democratic Republic of Congo ? Since 1998 , five million people have died there . It 's not a conflict you read about much in the newspapers . But it 's the biggest conflict on this planet since the Second World War . And why is it ? Because mafias from all around the world cooperate with local paramilitaries in order to seize the supplies of the rich mineral resources of the region . In the year 2000 , 80 percent of the world 's coltan was sourced to the killing fields of the eastern Democratic Republic of Congo . Now coltan you will find in almost every mobile phone , in almost every laptop and games console . The Cogolese war lords were selling this stuff to the mafia in exchange for weapons . And the mafia would then sell it on to Western markets . And it is this Western desire to consume that is the primary driver of international organized crime . Now , let me show you some of my friends in action , caught conveniently on film by the Italian police and smuggling duty-not-paid cigarettes . Now , cigarettes out the factory gate are very cheap . The European Union then imposes the highest taxes on them in the world . So if you can smuggle them into the E. U. there are very handsome profits to be made . And I want to show you this to demonstrate the type of resources available to these groups . This boat is worth one million Euros when it 's new . And it 's the fastest thing on European waters . From 1994 , for seven years , 20 of these boats made the trip across the Adriatic , from Montenegro to Italy , every single night . And as a consequence of this trade Britain alone lost eight billion dollars in revenue . And instead that money went to underwrite the wars in Yugoslavia and line the pockets of unscrupulous individuals . Now Italian police , when this trade started , had just two boats which could go at the same speed . And this is very important , because the only way you can catch these guys is if they run out of gas . Sometimes the gangsters would bring with them women being trafficked into prostitution . And if the police intervened , they would hurl the women into the sea so that the police had to go and save them from drowning , rather than chasing the bad guys . So I have shown you this to demonstrate how many boats , how many vessels it takes to catch one of these guys . And the answer is six vessels . And remember , 20 of these speed boats were coming across the Adriatic every single night . So what were these guys doing with all the money they were making ? Well , this is where we come to globalization because that was not just the deregulation of global trade . It was the liberalization of international financial markets . And boy did that make it easy for the money launderers . The last two decades have been the champagne era for dirty lucre . In the 1990s we saw financial centers around the world competing for their business . And there was simply no effective mechanism to prevent money laundering . And a lot of licit banks were also happy to accept deposits from very dubious sources without questions being asked . But at the heart of this , is the offshore banking network . Now these things are an essential part of the money laundering parade . And if you want to do something about illegal tax evasion and transnational organized crime , money laundering , you have to get rid of them . On a positive note , we at last have someone in the White House who has consistently spoken out against these corrosive entities . And if anyone is concerned about what I believe is the necessity for new legislation , regulation , effective regulation , I say , let 's take a look at Bernie Madoff , who is now going to be spending the rest of his life in jail . Bernie Madoff stole 65 billion dollars . That puts him up there on the Olympus of gangsters with the Colombian cartels , and the major Russian crime syndicates . But he did this for decades in the very heart of Wall Street . And no regulator picked up on it . So how many other Madoffs are there on Wall street , or in the city of London , fleecing ordinary folk , and money laundering ? Well I can tell you , it 's quite a few of them . Let me go on to the 101 of international organized crime now . And that is narcotics . Our second marijuana farm photograph for the morning . This one , however , is in central British Columbia where I photographed it . It 's one of the tens of thousands of mom-and-pop grow-ops in B. C. which ensure that over five percent of the province 's GDP is accounted for by this trade . Now I was taken by inspector Brian Cantera , of the Royal Canadian Mounted Police , to a cavernous warehouse east of Vancouver to see some of the goods which are regularly confiscated by the RCMP from the smugglers who are sending it , of course , down south to the United States where there is an insatiable market for B. C. Bud , as it 's called , in part because it 's marketed as organic , which of course goes down very well in California . ( Laughter ) ( Applause ) Now even by the police 's asmission this makes not a dent in the profits , really , of the major exporters . Since the beginning of globalization the global narcotics market has expanded enormously . There has , however , been no concomitant increase in the resources available to police forces . This , however , may all be about to change . Because something very strange is going on . The United Nations recognized earlier this , it was last month actually , that Canada has become a key area of distribution and production of ecstasy and other synthetic drugs . Interestingly , the market share of heroin and cocaine is going down because the pills are getting ever better at reproducing their highs . Now that is a game changer . Because it shifts production away from the developing world and into the Western world . When that happens it is a trend which is set to overwhelm our policing capacity in the West . The drugs policy which we 've had in place for 40 years is long overdue for a very serious rethink , in my opinion . Now , the recession . Well , organized crime has already adapted very well to the recession . Not surprising , the most opportunistic industry in the whole world . And it has no rules to its regulatory system . Except , of course , it has two business risks , arrest by law enforcement , which is , frankly , the least of their worries , and competition from other groups , i. e. a bullet in the back of the head . What they 've done is they 've shifted their operations . People do n't smoke as much dope , or visit prostitutes quite so frequently during a recession . And so instead they have invaded financial and corporate crime in a big way , but above all , two sectors , and that is counterfeit goods and cybercrime . And its been terribly successful . I would like to introduce you to Mr. Pringle . Or perhaps I should say , more accurately , Señor Pringle . I was introduced to this bit of kit by a Brazilian cybercriminal . We sat in a car on the Avenue Paulista in São Paulo , together . Hooked it up to my laptop , and within about five minutes he had penetrated the computer security system of a major Brazilian bank . It 's really not that difficult . And it 's actually much easier because the fascinating thing about cybercrime is that it 's not so much the technology . The key to cybercrime is what we call social engineering . Or to use the technical term for it , there 's one born every minute . You would not believe how easy it is to persuade people to do things with their computers which are objectively not in their interest . And it was very soon when the cybercriminals learned that the quickest way to do this , of course , the quickest way to a person 's wallet is through the promise sex and love . I expect some of you remember the I-Love-You virus , one of the very great worldwide viruses that came . I was very fortunate when the ILOVEYOU virus came out . Because the first person I received it from was an ex-girlfriend of mine . Now she harbored all sorts of sentiments and emotions towards me at the time , but love was not amongst them . ( Laughter ) And so as soon as I saw this drop into my inbox I dispatched it hastily to the recycle bin , and spared myself a very nasty infection . So , cybercrime , do watch out for it . One thing that we do know that the internet is doing is , the internet is assisting these guys . These are mosquitos who carry the malarial parasite which infests our blood when the mosy has had a free meal at our expense . Now , Artesunate is a very effective drug at destroying the parasite in the early days of infection . But over the past year or so researchers in Cambodia have discovered that what 's happening is the malarial parasite is developing a resistance . And they fear that the reason it 's developing a resistance is because Cambodians ca n't afford the drugs on the commercial market , and so they buy it from the Internet . And these pills contain only low doses of the active ingredient . Which is why things are , the parasite is beginning to develop a resistance . The reason I say this is because we have to know that organized crime impacts all sorts of areas of our lives . You do n't have to sleep with prostitutes or take drugs in order to have a relationship with organized crime . They affect our bank accounts . They affect our communications , our pension funds . They even affect the food that we eat and our governments . This is no longer an issue of Sicilians from Palermo and New York . There is no romance involved with gangsters in the 21st Century . This is a mighty industry and it creates instability and violence wherever it goes . It is a major economic force and we need to take it very , very seriously . It 's been a privilege talking to you . Thank you very much . ( Applause ) 